discourse-legacysite-perl/site/common/static/js/main.js

204 lines
6.5 KiB
JavaScript
Raw Permalink Normal View History

2024-06-17 12:27:49 +00:00
$(document).ready(function() {
/* IE Hacks */
/**
* documentMode is an IE-only property
* http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
*/
var msie = document.documentMode;
if (msie < 9) { /* code for IE < 9 */
$('body').addClass('ie8');
}
/* Gallery */
if ( $('.swiper-content .swiper-slide').length > 0 ) {
/* Swiper Content */
var doLoop = true;
if ( $('.swiper-content .swiper-slide').length == 1 ) {
doLoop = false;
$('.slideshow-controller .btn').addClass('disabled');
}
var contentSwiper = $('.swiper-content').swiper({
loop: doLoop,
visibilityFullFit: false,
watchActiveIndex: true,
keyboardControl: true,
/* Auto Height */
calculateHeight: true,
/* Apply CSS for width and/or height */
initialized: function() {
setContentSize();
sliderButtonPosition();
},
onSlideChangeStart: function(){
updateNavPosition();
navSwiper.swipeTo( contentSwiper.activeLoopIndex );
sliderIndexUpdate( contentSwiper.activeLoopIndex );
},
onSlideChangeEnd: function(){
setContentSize();
sliderButtonPosition();
/* sliderButtonPosition(); */
}
});
var navSwiper = $('.swiper-nav').swiper({
slidesPerView: 'auto',
loop: doLoop,
visibilityFullFit: false,
watchActiveIndex: true,
keyboardControl: true,
centeredSlides: true,
/*Auto Height*/
calculateHeight: true,
/*Thumbnails Clicks*/
onSlideClick: function(){
navSwiper.swipeTo( navSwiper.clickedSlideLoopIndex );
contentSwiper.swipeTo( navSwiper.clickedSlideLoopIndex );
}
});
$('.swiper-button-next').click( function() {
navSwiper.swipeNext();
contentSwiper.swipeNext();
});
$('.swiper-button-prev').click( function() {
navSwiper.swipePrev();
contentSwiper.swipePrev();
});
$('.btn-next').click(function(){
$('.swiper-button-next').click();
});
$('.btn-prev').click(function(){
$('.swiper-button-prev').click();
});
setContentSize();
sliderButtonPosition();
$(window).resize(function(){
setContentSize();
sliderButtonPosition();
});
}
function setContentSize() {
var captionHeight = $('.swiper-content .swiper-slide-active .caption').height();
var newHeight = $('.swiper-content .swiper-slide-active img').height() + captionHeight + 21;
$('.swiper-content, .swiper-content .swiper-wrapper, .swiper-content .swiper-slide-active').css({
height: newHeight
});
}
function updateNavPosition(){
$('.swiper-nav .active-nav').removeClass('active-nav');
var activeNav = $('.swiper-nav .swiper-slide').eq(contentSwiper.activeIndex).addClass('active-nav');
if (!activeNav.hasClass('swiper-slide-visible')) {
if (activeNav.index()>navSwiper.activeIndex) {
var thumbsPerNav = Math.floor(navSwiper.width/activeNav.width())-1;
navSwiper.swipeTo(activeNav.index()-thumbsPerNav);
}
else {
navSwiper.swipeTo(activeNav.index());
}
}
}
function sliderIndexUpdate( index ) {
$('.slideshow-controller .index span').text( index + 1);
}
function sliderButtonPosition() {
if ( $(window).width() > 500 ) {
var caption = $('.swiper-content .swiper-slide-active .caption');
if ( caption.length > 0 && caption.text().length > 0 ) {
var captionHeight = $('.swiper-content').find('.swiper-slide-active .caption').height();
var btnHeight = $('.slideshow-controller').height();
var diff = captionHeight - btnHeight;
if ( captionHeight > 0 ) {
var margin = ( captionHeight + 10 ) * -1 + 'px';
var height = captionHeight + 45 + 'px';
$('.slideshow-controller').css({ 'margin-top' : margin, 'height' : height }, 300);
}
else {
$('.slideshow-controller').removeAttr('style');
}
}
else {
$('.slideshow-controller').removeAttr('style');
}
}
else {
$('.slideshow-controller').removeAttr('style');
}
}
if ( $('.widget .region-list').length > 0 ) {
regionSublist();
}
/* set selected menu */
var oMenu = {
articles: 'news|features|lifestyle|opinion|interviews|tech|articles',
photos: 'photos',
videos: 'videos',
races: 'calendar|races|rd_aids',
coaching: 'coaching|coaches',
gravel: 'gravel',
podcast: 'podcast',
training: 'training',
bikefit: 'bike_fit|fit_calculator',
products: 'products',
local: 'local-listings|runshops|triclubs|retailers|fitters'
};
var uri = window.location.href.replace(/(.*).com\//, '');
var prefix = uri.substring(0, uri.search(/\//)).toLowerCase();
if (prefix == '') { prefix = uri.replace(/.html/, ''); }
if (prefix != '') {
var selected;
for (var i in oMenu) {
if (oMenu[i].search(prefix) != -1) {
selected = i;
break;
}
}
if (selected) $('#menu a[rel=' + selected + ']').parent().addClass('selected');
}
/* trigger subcategory */
$('select[name=subcat]').change(function() {
window.location = $(this).val();
})
})
function regionSublist() {
$('.widget .list-item').click(function(){
$('.widget .list-item span').text('+');
if ( $(this).find('.sublist').css('display') !== 'none' ) {
$('.widget .sublist').hide();
}
else {
$('.widget .sublist').hide();
$(this).find('.sublist').show();
$(this).find('span').text('-');
}
})
}
function copyFromTemplate() {
$('.copytpl').each( function(){
var template = $(this).attr('data-tpl');
$( '.' + template + ':eq(0)' ).clone().insertAfter( $(this) );
$(this).remove();
});
}