';
for (i = 0; i <= _.getDotCount(); i += 1) {
dotString += '
' + _.options.customPaging.call(this, _, i) + '
';
}
dotString += '
';
_.$dots = $(dotString).appendTo(
_.options.appendDots);
_.$dots.find('li').first().addClass(
'slick-active');
}
};
Slick.prototype.buildOut = function() {
var _ = this;
_.$slides = _.$slider.children(_.options.slide +
':not(.slick-cloned)').addClass(
'slick-slide');
_.slideCount = _.$slides.length;
_.$slides.each(function(index, element) {
$(element).attr("index",index);
});
_.$slidesCache = _.$slides;
_.$slider.addClass('slick-slider');
_.$slideTrack = (_.slideCount === 0) ?
$('').appendTo(_.$slider) :
_.$slides.wrapAll('').parent();
_.$list = _.$slideTrack.wrap(
'').parent();
_.$slideTrack.css('opacity', 0);
if (_.options.centerMode === true) {
_.options.slidesToScroll = 1;
}
$('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');
_.setupInfinite();
_.buildArrows();
_.buildDots();
_.updateDots();
if (_.options.accessibility === true) {
_.$list.prop('tabIndex', 0);
}
_.setSlideClasses(typeof this.currentSlide === 'number' ? this.currentSlide : 0);
if (_.options.draggable === true) {
_.$list.addClass('draggable');
}
};
Slick.prototype.checkResponsive = function() {
var _ = this,
breakpoint, targetBreakpoint, respondToWidth;
var sliderWidth = _.$slider.width();
var windowWidth = window.innerWidth || $(window).width();
if (_.respondTo === "window") {
respondToWidth = windowWidth;
} else if (_.respondTo === "slider") {
respondToWidth = sliderWidth;
} else if (_.respondTo === "min") {
respondToWidth = Math.min(windowWidth, sliderWidth);
}
if (_.originalSettings.responsive && _.originalSettings
.responsive.length > -1 && _.originalSettings.responsive !== null) {
targetBreakpoint = null;
for (breakpoint in _.breakpoints) {
if (_.breakpoints.hasOwnProperty(breakpoint)) {
if (respondToWidth < _.breakpoints[breakpoint]) {
targetBreakpoint = _.breakpoints[breakpoint];
}
}
}
if (targetBreakpoint !== null) {
if (_.activeBreakpoint !== null) {
if (targetBreakpoint !== _.activeBreakpoint) {
_.activeBreakpoint =
targetBreakpoint;
_.options = $.extend({}, _.originalSettings,
_.breakpointSettings[
targetBreakpoint]);
_.refresh();
}
} else {
_.activeBreakpoint = targetBreakpoint;
_.options = $.extend({}, _.originalSettings,
_.breakpointSettings[
targetBreakpoint]);
_.refresh();
}
} else {
if (_.activeBreakpoint !== null) {
_.activeBreakpoint = null;
_.options = _.originalSettings;
_.refresh();
}
}
}
};
Slick.prototype.changeSlide = function(event, dontAnimate) {
var _ = this,
$target = $(event.target),
indexOffset, slideOffset, unevenOffset,navigables, prevNavigable;
// If target is a link, prevent default action.
$target.is('a') && event.preventDefault();
unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;
switch (event.data.message) {
case 'previous':
slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
if (_.slideCount > _.options.slidesToShow) {
_.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
}
break;
case 'next':
slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
if (_.slideCount > _.options.slidesToShow) {
_.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
}
break;
case 'index':
var index = event.data.index === 0 ? 0 :
event.data.index || $(event.target).parent().index() * _.options.slidesToScroll;
navigables = _.getNavigableIndexes();
prevNavigable = 0;
if(navigables[index] && navigables[index] === index) {
if(index > navigables[navigables.length -1]){
index = navigables[navigables.length -1];
} else {
for(var n in navigables) {
if(index < navigables[n]) {
index = prevNavigable;
break;
}
prevNavigable = navigables[n];
}
}
}
_.slideHandler(index, false, dontAnimate);
default:
return;
}
};
Slick.prototype.clickHandler = function(event) {
var _ = this;
if(_.shouldClick === false) {
event.stopImmediatePropagation();
event.stopPropagation();
event.preventDefault();
}
}
Slick.prototype.destroy = function() {
var _ = this;
_.autoPlayClear();
_.touchObject = {};
$('.slick-cloned', _.$slider).remove();
if (_.$dots) {
_.$dots.remove();
}
if (_.$prevArrow && (typeof _.options.prevArrow !== 'object')) {
_.$prevArrow.remove();
}
if (_.$nextArrow && (typeof _.options.nextArrow !== 'object')) {
_.$nextArrow.remove();
}
if (_.$slides.parent().hasClass('slick-track')) {
_.$slides.unwrap().unwrap();
}
_.$slides.removeClass(
'slick-slide slick-active slick-center slick-visible')
.removeAttr('index')
.css({
position: '',
left: '',
top: '',
zIndex: '',
opacity: '',
width: ''
});
_.$slider.removeClass('slick-slider');
_.$slider.removeClass('slick-initialized');
_.$list.off('.slick');
$(window).off('.slick-' + _.instanceUid);
$(document).off('.slick-' + _.instanceUid);
};
Slick.prototype.disableTransition = function(slide) {
var _ = this,
transition = {};
transition[_.transitionType] = "";
if (_.options.fade === false) {
_.$slideTrack.css(transition);
} else {
_.$slides.eq(slide).css(transition);
}
};
Slick.prototype.fadeSlide = function(oldSlide, slideIndex, callback) {
var _ = this;
if (_.cssTransitions === false) {
_.$slides.eq(slideIndex).css({
zIndex: 1000
});
_.$slides.eq(slideIndex).animate({
opacity: 1
}, _.options.speed, _.options.easing, callback);
_.$slides.eq(oldSlide).animate({
opacity: 0
}, _.options.speed, _.options.easing);
} else {
_.applyTransition(slideIndex);
_.applyTransition(oldSlide);
_.$slides.eq(slideIndex).css({
opacity: 1,
zIndex: 1000
});
_.$slides.eq(oldSlide).css({
opacity: 0
});
if (callback) {
setTimeout(function() {
_.disableTransition(slideIndex);
_.disableTransition(oldSlide);
callback.call();
}, _.options.speed);
}
}
};
Slick.prototype.filterSlides = function(filter) {
var _ = this;
if (filter !== null) {
_.unload();
_.$slideTrack.children(this.options.slide).detach();
_.$slidesCache.filter(filter).appendTo(_.$slideTrack);
_.reinit();
}
};
Slick.prototype.getCurrent = function() {
var _ = this;
return _.currentSlide;
};
Slick.prototype.getDotCount = function() {
var _ = this;
var breakPoint = 0;
var counter = 0;
var pagerQty = 0;
if(_.options.infinite === true) {
pagerQty = Math.ceil(_.slideCount / _.options.slidesToScroll);
} else {
while (breakPoint < _.slideCount){
++pagerQty;
breakPoint = counter + _.options.slidesToShow;
counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
}
}
return pagerQty - 1;
};
Slick.prototype.getLeft = function(slideIndex) {
var _ = this,
targetLeft,
verticalHeight,
verticalOffset = 0,
slideWidth,
targetSlide;
_.slideOffset = 0;
verticalHeight = _.$slides.first().outerHeight();
if (_.options.infinite === true) {
if (_.slideCount > _.options.slidesToShow) {
_.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
verticalOffset = (verticalHeight * _.options.slidesToShow) * -1;
}
if (_.slideCount % _.options.slidesToScroll !== 0) {
if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
if(slideIndex > _.slideCount) {
_.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;
verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
} else {
_.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
}
}
}
} else {
if(slideIndex + _.options.slidesToShow > _.slideCount) {
_.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
}
}
if (_.slideCount <= _.options.slidesToShow){
_.slideOffset = 0;
verticalOffset = 0;
}
if (_.options.centerMode === true && _.options.infinite === true) {
_.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
} else if (_.options.centerMode === true) {
_.slideOffset = 0;
_.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
}
if (_.options.vertical === false) {
targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
} else {
targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
}
if (_.options.variableWidth === true) {
if(_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
} else {
targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);
}
targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
if (_.options.centerMode === true) {
if(_.options.infinite === false) {
targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
} else {
targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);
}
targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
}
}
// 1680
return targetLeft;
};
Slick.prototype.getNavigableIndexes = function() {
var _ = this;
var breakPoint = 0;
var counter = 0;
var indexes = [];
while (breakPoint < _.slideCount){
indexes.push(breakPoint);
breakPoint = counter + _.options.slidesToScroll;
counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
}
return indexes;
};
Slick.prototype.getSlideCount = function() {
var _ = this, slidesTraversed;
if(_.options.swipeToSlide === true) {
var swipedSlide = null;
_.$slideTrack.find('.slick-slide').each(function(index, slide){
if (slide.offsetLeft + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {
swipedSlide = slide;
return false;
}
});
slidesTraversed = Math.abs($(swipedSlide).attr('index') - _.currentSlide);
return slidesTraversed;
} else {
return _.options.slidesToScroll;
}
};
Slick.prototype.init = function() {
var _ = this;
if (!$(_.$slider).hasClass('slick-initialized')) {
$(_.$slider).addClass('slick-initialized');
_.buildOut();
_.setProps();
_.startLoad();
_.loadSlider();
_.initializeEvents();
_.updateArrows();
_.updateDots();
}
if (_.options.onInit !== null) {
_.options.onInit.call(this, _);
}
};
Slick.prototype.initArrowEvents = function() {
var _ = this;
if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
_.$prevArrow.on('click.slick', {
message: 'previous'
}, _.changeSlide);
_.$nextArrow.on('click.slick', {
message: 'next'
}, _.changeSlide);
}
};
Slick.prototype.initDotEvents = function() {
var _ = this;
if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
$('li', _.$dots).on('click.slick', {
message: 'index'
}, _.changeSlide);
}
if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.options.autoplay === true) {
$('li', _.$dots)
.on('mouseenter.slick', function(){
_.paused = true;
_.autoPlayClear();
})
.on('mouseleave.slick', function(){
_.paused = false;
_.autoPlay();
});
}
};
Slick.prototype.initializeEvents = function() {
var _ = this;
_.initArrowEvents();
_.initDotEvents();
_.$list.on('touchstart.slick mousedown.slick', {
action: 'start'
}, _.swipeHandler);
_.$list.on('touchmove.slick mousemove.slick', {
action: 'move'
}, _.swipeHandler);
_.$list.on('touchend.slick mouseup.slick', {
action: 'end'
}, _.swipeHandler);
_.$list.on('touchcancel.slick mouseleave.slick', {
action: 'end'
}, _.swipeHandler);
_.$list.on('click.slick', _.clickHandler);
if (_.options.pauseOnHover === true && _.options.autoplay === true) {
_.$list.on('mouseenter.slick', function(){
_.paused = true;
_.autoPlayClear();
});
_.$list.on('mouseleave.slick', function(){
_.paused = false;
_.autoPlay();
});
}
if(_.options.accessibility === true) {
_.$list.on('keydown.slick', _.keyHandler);
}
if(_.options.focusOnSelect === true) {
$(_.options.slide, _.$slideTrack).on('click.slick', _.selectHandler);
}
$(window).on('orientationchange.slick.slick-' + _.instanceUid, function() {
_.checkResponsive();
_.setPosition();
});
$(window).on('resize.slick.slick-' + _.instanceUid, function() {
if ($(window).width() !== _.windowWidth) {
clearTimeout(_.windowDelay);
_.windowDelay = window.setTimeout(function() {
_.windowWidth = $(window).width();
_.checkResponsive();
_.setPosition();
}, 50);
}
});
$('*[draggable!=true]', _.$slideTrack).on('dragstart', function(e){ e.preventDefault(); })
$(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
$(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition);
};
Slick.prototype.initUI = function() {
var _ = this;
if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
_.$prevArrow.show();
_.$nextArrow.show();
}
if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
_.$dots.show();
}
if (_.options.autoplay === true) {
_.autoPlay();
}
};
Slick.prototype.keyHandler = function(event) {
var _ = this;
if (event.keyCode === 37 && _.options.accessibility === true) {
_.changeSlide({
data: {
message: 'previous'
}
});
} else if (event.keyCode === 39 && _.options.accessibility === true) {
_.changeSlide({
data: {
message: 'next'
}
});
}
};
Slick.prototype.lazyLoad = function() {
var _ = this,
loadRange, cloneRange, rangeStart, rangeEnd;
function loadImages(imagesScope) {
$('img[data-lazy]', imagesScope).each(function() {
var image = $(this),
imageSource = $(this).attr('data-lazy');
image
.load(function() { image.animate({ opacity: 1 }, 200); })
.css({ opacity: 0 })
.attr('src', imageSource)
.removeAttr('data-lazy')
.removeClass('slick-loading');
});
}
if (_.options.centerMode === true) {
if (_.options.infinite === true) {
rangeStart = _.currentSlide + (_.options.slidesToShow/2 + 1);
rangeEnd = rangeStart + _.options.slidesToShow + 2;
} else {
rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow/2 + 1));
rangeEnd = 2 + (_.options.slidesToShow/2 + 1) + _.currentSlide;
}
} else {
rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
rangeEnd = rangeStart + _.options.slidesToShow;
if (_.options.fade === true ) {
if(rangeStart > 0) rangeStart--;
if(rangeEnd <= _.slideCount) rangeEnd++;
}
}
loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
loadImages(loadRange);
if (_.slideCount <= _.options.slidesToShow){
cloneRange = _.$slider.find('.slick-slide')
loadImages(cloneRange)
}else
if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);
loadImages(cloneRange)
} else if (_.currentSlide === 0) {
cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);
loadImages(cloneRange);
}
};
Slick.prototype.loadSlider = function() {
var _ = this;
_.setPosition();
_.$slideTrack.css({
opacity: 1
});
_.$slider.removeClass('slick-loading');
_.initUI();
if (_.options.lazyLoad === 'progressive') {
_.progressiveLazyLoad();
}
};
Slick.prototype.postSlide = function(index) {
var _ = this;
if (_.options.onAfterChange !== null) {
_.options.onAfterChange.call(this, _, index);
}
_.animating = false;
_.setPosition();
_.swipeLeft = null;
if (_.options.autoplay === true && _.paused === false) {
_.autoPlay();
}
};
Slick.prototype.progressiveLazyLoad = function() {
var _ = this,
imgCount, targetImage;
imgCount = $('img[data-lazy]', _.$slider).length;
if (imgCount > 0) {
targetImage = $('img[data-lazy]', _.$slider).first();
targetImage.attr('src', targetImage.attr('data-lazy')).removeClass('slick-loading').load(function() {
targetImage.removeAttr('data-lazy');
_.progressiveLazyLoad();
})
.error(function () {
targetImage.removeAttr('data-lazy');
_.progressiveLazyLoad();
});
}
};
Slick.prototype.refresh = function() {
var _ = this,
currentSlide = _.currentSlide;
_.destroy();
$.extend(_, _.initials);
_.init();
_.changeSlide({
data: {
message: 'index',
index: currentSlide,
}
}, true);
};
Slick.prototype.reinit = function() {
var _ = this;
_.$slides = _.$slideTrack.children(_.options.slide).addClass(
'slick-slide');
_.slideCount = _.$slides.length;
if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
_.currentSlide = _.currentSlide - _.options.slidesToScroll;
}
if (_.slideCount <= _.options.slidesToShow) {
_.currentSlide = 0;
}
_.setProps();
_.setupInfinite();
_.buildArrows();
_.updateArrows();
_.initArrowEvents();
_.buildDots();
_.updateDots();
_.initDotEvents();
if(_.options.focusOnSelect === true) {
$(_.options.slide, _.$slideTrack).on('click.slick', _.selectHandler);
}
_.setSlideClasses(0);
_.setPosition();
if (_.options.onReInit !== null) {
_.options.onReInit.call(this, _);
}
};
Slick.prototype.removeSlide = function(index, removeBefore, removeAll) {
var _ = this;
if (typeof(index) === 'boolean') {
removeBefore = index;
index = removeBefore === true ? 0 : _.slideCount - 1;
} else {
index = removeBefore === true ? --index : index;
}
if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
return false;
}
_.unload();
if(removeAll === true) {
_.$slideTrack.children().remove();
} else {
_.$slideTrack.children(this.options.slide).eq(index).remove();
}
_.$slides = _.$slideTrack.children(this.options.slide);
_.$slideTrack.children(this.options.slide).detach();
_.$slideTrack.append(_.$slides);
_.$slidesCache = _.$slides;
_.reinit();
};
Slick.prototype.setCSS = function(position) {
var _ = this,
positionProps = {}, x, y;
if (_.options.rtl === true) {
position = -position;
}
x = _.positionProp == 'left' ? position + 'px' : '0px';
y = _.positionProp == 'top' ? position + 'px' : '0px';
positionProps[_.positionProp] = position;
if (_.transformsEnabled === false) {
_.$slideTrack.css(positionProps);
} else {
positionProps = {};
if (_.cssTransitions === false) {
positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
_.$slideTrack.css(positionProps);
} else {
positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
_.$slideTrack.css(positionProps);
}
}
};
Slick.prototype.setDimensions = function() {
var _ = this;
if (_.options.vertical === false) {
if (_.options.centerMode === true) {
_.$list.css({
padding: ('0px ' + _.options.centerPadding)
});
}
} else {
_.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
if (_.options.centerMode === true) {
_.$list.css({
padding: (_.options.centerPadding + ' 0px')
});
}
}
_.listWidth = _.$list.width();
_.listHeight = _.$list.height();
if(_.options.vertical === false && _.options.variableWidth === false) {
_.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
_.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));
} else if (_.options.variableWidth === true) {
var trackWidth = 0;
_.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
_.$slideTrack.children('.slick-slide').each(function(){
trackWidth += Math.ceil($(this).outerWidth(true));
});
_.$slideTrack.width(Math.ceil(trackWidth) + 1);
} else {
_.slideWidth = Math.ceil(_.listWidth);
_.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));
}
var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);
};
Slick.prototype.setFade = function() {
var _ = this,
targetLeft;
_.$slides.each(function(index, element) {
targetLeft = (_.slideWidth * index) * -1;
if (_.options.rtl === true) {
$(element).css({
position: 'relative',
right: targetLeft,
top: 0,
zIndex: 800,
opacity: 0
});
} else {
$(element).css({
position: 'relative',
left: targetLeft,
top: 0,
zIndex: 800,
opacity: 0
});
}
});
_.$slides.eq(_.currentSlide).css({
zIndex: 900,
opacity: 1
});
};
Slick.prototype.setHeight = function() {
var _ = this;
if(_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
_.$list.css('height', targetHeight);
}
};
Slick.prototype.setPosition = function() {
var _ = this;
_.setDimensions();
_.setHeight();
if (_.options.fade === false) {
_.setCSS(_.getLeft(_.currentSlide));
} else {
_.setFade();
}
if (_.options.onSetPosition !== null) {
_.options.onSetPosition.call(this, _);
}
};
Slick.prototype.setProps = function() {
var _ = this,
bodyStyle = document.body.style;
_.positionProp = _.options.vertical === true ? 'top' : 'left';
if (_.positionProp === 'top') {
_.$slider.addClass('slick-vertical');
} else {
_.$slider.removeClass('slick-vertical');
}
if (bodyStyle.WebkitTransition !== undefined ||
bodyStyle.MozTransition !== undefined ||
bodyStyle.msTransition !== undefined) {
if(_.options.useCSS === true) {
_.cssTransitions = true;
}
}
if (bodyStyle.OTransform !== undefined) {
_.animType = 'OTransform';
_.transformType = "-o-transform";
_.transitionType = 'OTransition';
if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
}
if (bodyStyle.MozTransform !== undefined) {
_.animType = 'MozTransform';
_.transformType = "-moz-transform";
_.transitionType = 'MozTransition';
if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
}
if (bodyStyle.webkitTransform !== undefined) {
_.animType = 'webkitTransform';
_.transformType = "-webkit-transform";
_.transitionType = 'webkitTransition';
if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
}
if (bodyStyle.msTransform !== undefined) {
_.animType = 'msTransform';
_.transformType = "-ms-transform";
_.transitionType = 'msTransition';
if (bodyStyle.msTransform === undefined) _.animType = false;
}
if (bodyStyle.transform !== undefined && _.animType !== false) {
_.animType = 'transform';
_.transformType = "transform";
_.transitionType = 'transition';
}
_.transformsEnabled = (_.animType !== null && _.animType !== false);
};
Slick.prototype.setSlideClasses = function(index) {
var _ = this,
centerOffset, allSlides, indexOffset, remainder;
_.$slider.find('.slick-slide').removeClass('slick-active').removeClass('slick-center');
allSlides = _.$slider.find('.slick-slide');
if (_.options.centerMode === true) {
centerOffset = Math.floor(_.options.slidesToShow / 2);
if(_.options.infinite === true) {
if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
_.$slides.slice(index - centerOffset, index + centerOffset + 1).addClass('slick-active');
} else {
indexOffset = _.options.slidesToShow + index;
allSlides.slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2).addClass('slick-active');
}
if (index === 0) {
allSlides.eq(allSlides.length - 1 - _.options.slidesToShow).addClass('slick-center');
} else if (index === _.slideCount - 1) {
allSlides.eq(_.options.slidesToShow).addClass('slick-center');
}
}
_.$slides.eq(index).addClass('slick-center');
} else {
if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {
_.$slides.slice(index, index + _.options.slidesToShow).addClass('slick-active');
} else if ( allSlides.length <= _.options.slidesToShow ) {
allSlides.addClass('slick-active');
} else {
remainder = _.slideCount%_.options.slidesToShow;
indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
if(_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {
allSlides.slice(indexOffset-(_.options.slidesToShow-remainder), indexOffset + remainder).addClass('slick-active');
} else {
allSlides.slice(indexOffset, indexOffset + _.options.slidesToShow).addClass('slick-active');
}
}
}
if (_.options.lazyLoad === 'ondemand') {
_.lazyLoad();
}
};
Slick.prototype.setupInfinite = function() {
var _ = this,
i, slideIndex, infiniteCount;
if (_.options.fade === true) {
_.options.centerMode = false;
}
if (_.options.infinite === true && _.options.fade === false) {
slideIndex = null;
if (_.slideCount > _.options.slidesToShow) {
if (_.options.centerMode === true) {
infiniteCount = _.options.slidesToShow + 1;
} else {
infiniteCount = _.options.slidesToShow;
}
for (i = _.slideCount; i > (_.slideCount -
infiniteCount); i -= 1) {
slideIndex = i - 1;
$(_.$slides[slideIndex]).clone(true).attr('id', '')
.attr('index', slideIndex-_.slideCount)
.prependTo(_.$slideTrack).addClass('slick-cloned');
}
for (i = 0; i < infiniteCount; i += 1) {
slideIndex = i;
$(_.$slides[slideIndex]).clone(true).attr('id', '')
.attr('index', slideIndex+_.slideCount)
.appendTo(_.$slideTrack).addClass('slick-cloned');
}
_.$slideTrack.find('.slick-cloned').find('[id]').each(function() {
$(this).attr('id', '');
});
}
}
};
Slick.prototype.selectHandler = function(event) {
var _ = this;
var index = parseInt($(event.target).parents('.slick-slide').attr("index"));
if(!index) index = 0;
if(_.slideCount <= _.options.slidesToShow){
_.$slider.find('.slick-slide').removeClass('slick-active');
_.$slides.eq(index).addClass('slick-active');
if(_.options.centerMode === true) {
_.$slider.find('.slick-slide').removeClass('slick-center');
_.$slides.eq(index).addClass('slick-center');
}
_.asNavFor(index);
return;
}
_.slideHandler(index);
};
Slick.prototype.slideHandler = function(index,sync,dontAnimate) {
var targetSlide, animSlide, oldSlide, slideLeft, unevenOffset, targetLeft = null,
_ = this;
sync = sync || false;
if (_.animating === true && _.options.waitForAnimate === true) {
return;
}
if (_.options.fade === true && _.currentSlide === index) {
return;
}
if (_.slideCount <= _.options.slidesToShow) {
return;
}
if (sync === false) {
_.asNavFor(index);
}
targetSlide = index;
targetLeft = _.getLeft(targetSlide);
slideLeft = _.getLeft(_.currentSlide);
_.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;
if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
if(_.options.fade === false) {
targetSlide = _.currentSlide;
if(dontAnimate!==true) {
_.animateSlide(slideLeft, function() {
_.postSlide(targetSlide);
});
} else {
_.postSlide(targetSlide);
}
}
return;
} else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
if(_.options.fade === false) {
targetSlide = _.currentSlide;
if(dontAnimate!==true) {
_.animateSlide(slideLeft, function() {
_.postSlide(targetSlide);
});
} else {
_.postSlide(targetSlide);
}
}
return;
}
if (_.options.autoplay === true) {
clearInterval(_.autoPlayTimer);
}
if (targetSlide < 0) {
if (_.slideCount % _.options.slidesToScroll !== 0) {
animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
} else {
animSlide = _.slideCount + targetSlide;
}
} else if (targetSlide >= _.slideCount) {
if (_.slideCount % _.options.slidesToScroll !== 0) {
animSlide = 0;
} else {
animSlide = targetSlide - _.slideCount;
}
} else {
animSlide = targetSlide;
}
_.animating = true;
if (_.options.onBeforeChange !== null && index !== _.currentSlide) {
_.options.onBeforeChange.call(this, _, _.currentSlide, animSlide);
}
oldSlide = _.currentSlide;
_.currentSlide = animSlide;
_.setSlideClasses(_.currentSlide);
_.updateDots();
_.updateArrows();
if (_.options.fade === true) {
if(dontAnimate!==true) {
_.fadeSlide(oldSlide,animSlide, function() {
_.postSlide(animSlide);
});
} else {
_.postSlide(animSlide);
}
return;
}
if(dontAnimate!==true) {
_.animateSlide(targetLeft, function() {
_.postSlide(animSlide);
});
} else {
_.postSlide(animSlide);
}
};
Slick.prototype.startLoad = function() {
var _ = this;
if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
_.$prevArrow.hide();
_.$nextArrow.hide();
}
if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
_.$dots.hide();
}
_.$slider.addClass('slick-loading');
};
Slick.prototype.swipeDirection = function() {
var xDist, yDist, r, swipeAngle, _ = this;
xDist = _.touchObject.startX - _.touchObject.curX;
yDist = _.touchObject.startY - _.touchObject.curY;
r = Math.atan2(yDist, xDist);
swipeAngle = Math.round(r * 180 / Math.PI);
if (swipeAngle < 0) {
swipeAngle = 360 - Math.abs(swipeAngle);
}
if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
return (_.options.rtl === false ? 'left' : 'right');
}
if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
return (_.options.rtl === false ? 'left' : 'right');
}
if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
return (_.options.rtl === false ? 'right' : 'left');
}
return 'vertical';
};
Slick.prototype.swipeEnd = function(event) {
var _ = this, slideCount;
_.dragging = false;
_.shouldClick = (_.touchObject.swipeLength > 10) ? false : true;
if (_.touchObject.curX === undefined) {
return false;
}
if (_.touchObject.swipeLength >= _.touchObject.minSwipe) {
switch (_.swipeDirection()) {
case 'left':
_.slideHandler(_.currentSlide + _.getSlideCount());
_.currentDirection = 0;
_.touchObject = {};
break;
case 'right':
_.slideHandler(_.currentSlide - _.getSlideCount());
_.currentDirection = 1;
_.touchObject = {};
break;
}
} else {
if(_.touchObject.startX !== _.touchObject.curX) {
_.slideHandler(_.currentSlide);
_.touchObject = {};
}
}
};
Slick.prototype.swipeHandler = function(event) {
var _ = this;
if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
return;
} else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
return;
}
_.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
event.originalEvent.touches.length : 1;
_.touchObject.minSwipe = _.listWidth / _.options
.touchThreshold;
switch (event.data.action) {
case 'start':
_.swipeStart(event);
break;
case 'move':
_.swipeMove(event);
break;
case 'end':
_.swipeEnd(event);
break;
}
};
Slick.prototype.swipeMove = function(event) {
var _ = this,
curLeft, swipeDirection, positionOffset, touches;
touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
if (!_.dragging || touches && touches.length !== 1) {
return false;
}
curLeft = _.getLeft(_.currentSlide);
_.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
_.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;
_.touchObject.swipeLength = Math.round(Math.sqrt(
Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
swipeDirection = _.swipeDirection();
if (swipeDirection === 'vertical') {
return;
}
if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
event.preventDefault();
}
positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
if (_.options.vertical === false) {
_.swipeLeft = curLeft + _.touchObject.swipeLength * positionOffset;
} else {
_.swipeLeft = curLeft + (_.touchObject
.swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
}
if (_.options.fade === true || _.options.touchMove === false) {
return false;
}
if (_.animating === true) {
_.swipeLeft = null;
return false;
}
_.setCSS(_.swipeLeft);
};
Slick.prototype.swipeStart = function(event) {
var _ = this,
touches;
if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
_.touchObject = {};
return false;
}
if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
touches = event.originalEvent.touches[0];
}
_.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
_.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;
_.dragging = true;
};
Slick.prototype.unfilterSlides = function() {
var _ = this;
if (_.$slidesCache !== null) {
_.unload();
_.$slideTrack.children(this.options.slide).detach();
_.$slidesCache.appendTo(_.$slideTrack);
_.reinit();
}
};
Slick.prototype.unload = function() {
var _ = this;
$('.slick-cloned', _.$slider).remove();
if (_.$dots) {
_.$dots.remove();
}
if (_.$prevArrow && (typeof _.options.prevArrow !== 'object')) {
_.$prevArrow.remove();
}
if (_.$nextArrow && (typeof _.options.nextArrow !== 'object')) {
_.$nextArrow.remove();
}
_.$slides.removeClass(
'slick-slide slick-active slick-visible').css('width', '');
};
Slick.prototype.updateArrows = function() {
var _ = this, centerOffset;
centerOffset = Math.floor(_.options.slidesToShow / 2)
if (_.options.arrows === true && _.options.infinite !==
true && _.slideCount > _.options.slidesToShow) {
_.$prevArrow.removeClass('slick-disabled');
_.$nextArrow.removeClass('slick-disabled');
if (_.currentSlide === 0) {
_.$prevArrow.addClass('slick-disabled');
_.$nextArrow.removeClass('slick-disabled');
} else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
_.$nextArrow.addClass('slick-disabled');
_.$prevArrow.removeClass('slick-disabled');
} else if (_.currentSlide > _.slideCount - _.options.slidesToShow + centerOffset && _.options.centerMode === true) {
_.$nextArrow.addClass('slick-disabled');
_.$prevArrow.removeClass('slick-disabled');
}
}
};
Slick.prototype.updateDots = function() {
var _ = this;
if (_.$dots !== null) {
_.$dots.find('li').removeClass('slick-active');
_.$dots.find('li').eq(Math.floor(_.currentSlide / _.options.slidesToScroll)).addClass('slick-active');
}
};
$.fn.slick = function(options) {
var _ = this;
return _.each(function(index, element) {
element.slick = new Slick(element, options);
});
};
$.fn.slickAdd = function(slide, slideIndex, addBefore) {
var _ = this;
return _.each(function(index, element) {
element.slick.addSlide(slide, slideIndex, addBefore);
});
};
$.fn.slickCurrentSlide = function() {
var _ = this;
return _.get(0).slick.getCurrent();
};
$.fn.slickFilter = function(filter) {
var _ = this;
return _.each(function(index, element) {
element.slick.filterSlides(filter);
});
};
$.fn.slickGoTo = function(slide, dontAnimate) {
var _ = this;
return _.each(function(index, element) {
element.slick.changeSlide({
data: {
message: 'index',
index: parseInt(slide)
}
}, dontAnimate);
});
};
$.fn.slickNext = function() {
var _ = this;
return _.each(function(index, element) {
element.slick.changeSlide({
data: {
message: 'next'
}
});
});
};
$.fn.slickPause = function() {
var _ = this;
return _.each(function(index, element) {
element.slick.autoPlayClear();
element.slick.paused = true;
});
};
$.fn.slickPlay = function() {
var _ = this;
return _.each(function(index, element) {
element.slick.paused = false;
element.slick.autoPlay();
});
};
$.fn.slickPrev = function() {
var _ = this;
return _.each(function(index, element) {
element.slick.changeSlide({
data: {
message: 'previous'
}
});
});
};
$.fn.slickRemove = function(slideIndex, removeBefore) {
var _ = this;
return _.each(function(index, element) {
element.slick.removeSlide(slideIndex, removeBefore);
});
};
$.fn.slickRemoveAll = function() {
var _ = this;
return _.each(function(index, element) {
element.slick.removeSlide(null, null, true);
});
};
$.fn.slickGetOption = function(option) {
var _ = this;
return _.get(0).slick.options[option];
};
$.fn.slickSetOption = function(option, value, refresh) {
var _ = this;
return _.each(function(index, element) {
element.slick.options[option] = value;
if (refresh === true) {
element.slick.unload();
element.slick.reinit();
}
});
};
$.fn.slickUnfilter = function() {
var _ = this;
return _.each(function(index, element) {
element.slick.unfilterSlides();
});
};
$.fn.unslick = function() {
var _ = this;
return _.each(function(index, element) {
if (element.slick) {
element.slick.destroy();
}
});
};
$.fn.getSlick = function() {
var s = null;
var _ = this;
_.each(function(index, element) {
s = element.slick;
});
return s;
};
}));
/* Ende slick */
/* Start foundation.core.min */
!function(t){function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var e={};n.m=t,n.c=e,n.i=function(t){return t},n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=6)}([function(t,n){t.exports=jQuery},function(t,n,e){"use strict";function i(){return"rtl"===u()("html").attr("dir")}function r(t,n){return t=t||6,Math.round(Math.pow(36,t+1)-Math.random()*Math.pow(36,t)).toString(36).slice(1)+(n?"-"+n:"")}function o(t){var n,e={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend"},i=document.createElement("div");for(var r in e)void 0!==i.style[r]&&(n=e[r]);return n||(n=setTimeout(function(){t.triggerHandler("transitionend",[t])},1),"transitionend")}e.d(n,"a",function(){return i}),e.d(n,"b",function(){return r}),e.d(n,"c",function(){return o});var a=e(0),u=e.n(a)},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i=e(0),r=e.n(i),o=e(3),a=e(1),u=e(4);o.a.addToJquery(r.a),o.a.rtl=a.a,o.a.GetYoDigits=a.b,o.a.transitionend=a.c,o.a.Plugin=u.a,window.Foundation=o.a},function(t,n,e){"use strict";function i(t){if(void 0===Function.prototype.name){var n=/function\s([^(]{1,})\(/,e=n.exec(t.toString());return e&&e.length>1?e[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function r(t){return"true"===t||"false"!==t&&(isNaN(1*t)?t:parseFloat(t))}function o(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}e.d(n,"a",function(){return l});var a=e(0),u=e.n(a),s=e(1),c=e(5),l={version:"6.4.3",_plugins:{},_uuids:[],plugin:function(t,n){var e=n||i(t),r=o(e);this._plugins[r]=this[e]=t},registerPlugin:function(t,n){var r=n?o(n):i(t.constructor).toLowerCase();t.uuid=e.i(s.b)(6,r),t.$element.attr("data-"+r)||t.$element.attr("data-"+r,t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf."+r),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var n=o(i(t.$element.data("zfPlugin").constructor));this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-"+n).removeData("zfPlugin").trigger("destroyed.zf."+n);for(var e in t)t[e]=null},reInit:function(t){var n=t instanceof u.a;try{if(n)t.each(function(){u()(this).data("zfPlugin")._init()});else{var e=typeof t,i=this;({object:function(t){t.forEach(function(t){t=o(t),u()("[data-"+t+"]").foundation("_init")})},string:function(){t=o(t),u()("[data-"+t+"]").foundation("_init")},undefined:function(){this.object(Object.keys(i._plugins))}})[e](t)}}catch(t){console.error(t)}finally{return t}},reflow:function(t,n){void 0===n?n=Object.keys(this._plugins):"string"==typeof n&&(n=[n]);var e=this;u.a.each(n,function(n,i){var o=e._plugins[i];u()(t).find("[data-"+i+"]").addBack("[data-"+i+"]").each(function(){var t=u()(this),n={};if(t.data("zfPlugin"))return void console.warn("Tried to initialize "+i+" on an element that already has a Foundation plugin.");t.attr("data-options")&&t.attr("data-options").split(";").forEach(function(t,e){var i=t.split(":").map(function(t){return t.trim()});i[0]&&(n[i[0]]=r(i[1]))});try{t.data("zfPlugin",new o(u()(this),n))}catch(t){console.error(t)}finally{return}})})},getFnName:i,addToJquery:function(t){var n=function(n){var e=typeof n,r=t(".no-js");if(r.length&&r.removeClass("no-js"),"undefined"===e)c.a._init(),l.reflow(this);else{if("string"!==e)throw new TypeError("We're sorry, "+e+" is not a valid parameter. You must use a string representing the method you wish to invoke.");var o=Array.prototype.slice.call(arguments,1),a=this.data("zfPlugin");if(void 0===a||void 0===a[n])throw new ReferenceError("We're sorry, '"+n+"' is not an available method for "+(a?i(a):"this element")+".");1===this.length?a[n].apply(a,o):this.each(function(e,i){a[n].apply(t(i).data("zfPlugin"),o)})}return this};return t.fn.foundation=n,t}};l.util={throttle:function(t,n){var e=null;return function(){var i=this,r=arguments;null===e&&(e=setTimeout(function(){t.apply(i,r),e=null},n))}}},window.Foundation=l,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],n=0;n').appendTo(document.head);var n,e=o()(".foundation-mq").css("font-family");n=i(e);for(var r in n)n.hasOwnProperty(r)&&t.queries.push({name:r,value:"only screen and (min-width: "+n[r]+")"});this.current=this._getCurrentSize(),this._watcher()},atLeast:function(t){var n=this.get(t);return!!n&&a(n).matches},is:function(t){return t=t.trim().split(" "),t.length>1&&"only"===t[1]?t[0]===this._getCurrentSize():this.atLeast(t[0])},get:function(t){for(var n in this.queries)if(this.queries.hasOwnProperty(n)){var e=this.queries[n];if(t===e.name)return e.value}return null},_getCurrentSize:function(){for(var t,n=0;n').appendTo(document.head);var t,n=u()(".foundation-mq").css("font-family");t=r(n);for(var i in t)t.hasOwnProperty(i)&&e.queries.push({name:i,value:"only screen and (min-width: "+t[i]+")"});this.current=this._getCurrentSize(),this._watcher()},atLeast:function(e){var t=this.get(e);return!!t&&o(t).matches},is:function(e){return e=e.trim().split(" "),e.length>1&&"only"===e[1]?e[0]===this._getCurrentSize():this.atLeast(e[0])},get:function(e){for(var t in this.queries)if(this.queries.hasOwnProperty(t)){var n=this.queries[t];if(e===n.name)return n.value}return null},_getCurrentSize:function(){for(var e,t=0;t a", function (e) {
e.preventDefault();
e.stopPropagation();
// --- Termine des Tages anzeigen
//Schlie�en
if ($(this).parent().hasClass(options.detailsOpenedClass)) {
$(this).parent().removeClass(options.detailsOpenedClass).addClass(options.detailsClosedClass);
} else {
// Alle ge�ffneten Details schlie�en
base.$el.find('.' + options.detailsOpenedClass).removeClass(options.detailsOpenedClass);
$(this).parent().removeClass(options.detailsClosedClass).addClass(options.detailsOpenedClass);
}
});
//Klick auf Zur�ckbutton
base.$el.on("click touchstart", options.prevButton, function (e) {
e.preventDefault();
e.stopPropagation();
base.loadCalendar($(this).data('href'));
});
//Klick auf Vorbutton
base.$el.on("click touchstart", options.nextButton, function (e) {
e.preventDefault();
e.stopPropagation();
base.loadCalendar($(this).data('href'));
});
};
// --- N�chsten Monat laden
//1. Fadeout
//2. Container leeren und wieder bef�llen
//3. Fadein
//4. Focus auf das erste zu fokussierende Element setzen
base.loadCalendar = function (href) {
if (typeof options.beforeInit === 'function') {
base.options.beforeInit.call($(this), base.$el);
}
base.$el.fadeTo(options.duration, 0, function () {
base.$el.load(href, function () {
base.$el.fadeTo(options.duration, 1, function () {
base.addA11y();
if (typeof options.afterInit === 'function') {
base.options.afterInit.call($(this), base.$el);
}
});
});
});
};
//Focus setzen
base.addA11y = function (elem) {
elem = elem || base.$el;
var focusElements = elem.find('input,textarea,select,a,button').not(':hidden');
focusElements[0].focus();
};
// Run initializer
base.init();
};
$.gsb.calendar.defaultOptions = {
nextButton: '.next > a',
prevButton: '.prev > a',
fadeDuration: 400,
detailsOpenedClass: 'opened',
detailsClosedClass: 'closed',
beforeInit: undefined, //Vor Monatswechsel
afterInit: undefined //Nach Monatswechsel
};
//gsb Calendar
$.fn.gsb_calendar = function (options) {
return this.each(function () {
new $.gsb.calendar(this, options);
});
};
})(jQuery);
/* Ende gsb_calendar */
/* Start gsb_responsiveListener */
/*!
* @name responsiveListener
* @author @anuebel/pespeloe
* Licensed under the MIT license
*
* Callback function je Breakpoint
* */
;
(function ($) {
if (!$.gsb) {
$.gsb = {};
}
;
$.gsb.responsiveListener = function (pluginBase) {
var base = this;
this.base = base;
this.pluginBase = pluginBase;
// Add a reverse reference to the DOM object
this.base.breakpoints = [];
this.base.breakpointSettings = [];
this.base.activeBreakpoint = null;
this.base.windowWidth = 0;
base.init = function () {
//Da die Lib keine eigenen Options hat, Options vom Plugin holen
base.options = pluginBase.options;
base.originalOptions = base.options;
this.base.options = base.options;
this.base.originalOptions = base.originalOptions;
base.initResponsive();
base.checkResponsive();
if (base.options.respondToEvents === true) {
base.initEvents();
}
};
/**
* Initialisiert die Events.
*/
$.gsb.responsiveListener.prototype.initEvents = function () {
var $window = $(window),
onResize = function onResize() {
if ($(window).width() !== base.windowWidth) {
clearTimeout(base.windowDelay);
base.windowDelay = window.setTimeout(function () {
base.windowWidth = $(window).width();
base.checkResponsive();
}, 100);
}
};
$window.on('resize', onResize);
$window.on('orientationchange', function () {
base.checkResponsive();
});
};
// Run initializer
base.init();
};
/**
* Initialisiert die Datenstrukturen fuer die responsiven Ueberpruefungen.
*/
$.gsb.responsiveListener.prototype.initResponsive = function () {
var breakpoint,
responsiveSettings = this.base.options.responsive || null;
if (responsiveSettings && responsiveSettings.length > -1) {
for (breakpoint in responsiveSettings) {
if (responsiveSettings.hasOwnProperty(breakpoint)) {
this.base.breakpoints.push(responsiveSettings[breakpoint].breakpoint);
this.base.breakpointSettings[responsiveSettings[breakpoint].breakpoint] = responsiveSettings[breakpoint];
}
}
this.base.breakpoints.sort(function (a, b) {
return b - a;
});
}
};
/**
* Ueberprueft, ob eine Aenderung der Einstellungen durchgefuehrt werden muss. Dies ist dann der Fall, wenn
* sich die Breite des Viewports(window-Objekt) geaendert hat und mindestens einen der angegebenen Breakpoints
* unterschreitet. Ausschlaggebend fuer die Aenderungen ist der letzte konfigurierte Breakpoint, dessen Breite
* unterschritten wird.
*
*/
$.gsb.responsiveListener.prototype.checkResponsive = function () {
var breakpoint,
targetBreakpoint,
respondToWidth = window.innerWidth || $(window).width();
if (this.base.originalOptions.responsive && this.base.originalOptions.responsive.length > -1) {
targetBreakpoint = null;
if (this.base.activeBreakpoint !== null && respondToWidth >= this.base.breakpoints[0]) {
this.base.activeBreakpoint = null;
this.pluginBase.options = this.base.originalOptions;
}
for (breakpoint in this.base.breakpoints) {
if (this.base.breakpoints.hasOwnProperty(breakpoint)) {
if (respondToWidth < this.base.breakpoints[breakpoint]) {
targetBreakpoint = this.base.breakpoints[breakpoint];
this.base.highestResolution = false;
}
}
}
if (this.base.highestResolution) {
return;
}
if (targetBreakpoint !== null) {
if (this.base.activeBreakpoint !== null) {
if (targetBreakpoint !== this.base.activeBreakpoint) {
this.base.activeBreakpoint = targetBreakpoint;
this.pluginBase.options = $.extend({}, this.base.originalOptions, this.base.breakpointSettings[targetBreakpoint]);
this.base.triggerRefresh();
}
} else {
this.base.activeBreakpoint = targetBreakpoint;
this.pluginBase.options = $.extend({}, this.base.originalOptions, this.base.breakpointSettings[targetBreakpoint]);
this.base.triggerRefresh();
}
} else {
if (this.base.activeBreakpoint !== null) {
this.base.activeBreakpoint = null;
this.base.options = this.base.originalOptions;
this.base.triggerRefresh();
} else {
this.base.highestResolution = true;
this.base.triggerRefresh();
}
}
} else if (this.base.originalOptions.onRefresh && this.base.originalOptions.onRefresh.length > -1) {
if (this.base.highestResolution) {
return;
}
this.base.triggerRefresh();
this.base.highestResolution = true;
}
};
/**
* Loest die Aktualisierung des Scripts aus.
*/
$.gsb.responsiveListener.prototype.triggerRefresh = function () {
if (typeof this.pluginBase.options.onRefresh === 'function') {
this.pluginBase.options.onRefresh.call(this.pluginBase);
}
};
$.fn.gsb_responsiveListener = function (pluginBase) {
return this.each(function () {
return new $.gsb.responsiveListener(pluginBase);
});
};
})(jQuery);
/* Ende gsb_responsiveListener */
/* Start gsb_navigation */
/*!
* Licensed under the MIT license
* --GSBDocStart
* @module gsb_navigation
* @version 1.1.0
* @see {@link http://semver.org|Semantic Versioning}
* @author pespeloe
*
* @desc Das Addon dient der Darstellung des Flyout-Menüs auf der Seite
*
* @requires jQuery >= 1.11.1, gsb_responsiveListener
*
* @init
* $('#navPrimary').gsb_navigation();
*--GSBDocEnd
* */
;
(function ($) {
if (!$.gsb) {
$.gsb = {};
}
;
$.gsb.navigation = function (el, options) {
// To avoid scope issues, use 'base' instead of 'this'
// to reference this class from internal events and functions.
var base = this;
// Access to jQuery and DOM versions of element
base.$el = $(el);
base.el = el;
// Add a reverse reference to the DOM object
base.$el.data("gsb.navigation", base);
base.init = function () {
//base.myFunctionParam = myFunctionParam;
base.options = $.extend({}, $.gsb.navigation.defaultOptions, options);
base.delegateTo = "#" + base.$el.attr("id") + base.options.hoverItem;
base.$el.gsb_responsiveListener(base);
};
/**
* @method _largeNavigation
* @desc Setzt Event-Listener (mouseenter / mouseleave) auf die hover-Items und blendet die untergeordneten Container ein oder aus
*/
//desktop navigation
base._largeNavigation = function () {
$(base.delegateTo).each(function () {
var li = $(this),
sub = li.find('li a'),
ctrl = li.find('a').not(sub);
li.find('a').on('focusin', function (e) {
//console.log(e.type, e.target)
li.find(base.options.displayItem).css({ height: '' });
li.trigger('mouseenter', [!$(e.target).is(ctrl) || $(base.delegateTo).find(e.target).length]);
li.siblings('.hovered').trigger('mouseleave');
});
li.find("a:first, a:last").blur(function (e) {
li.find(base.options.displayItem).css({ height: 0 });
});
});
$(base.delegateTo).on("mouseenter mouseleave", function (e, fromWithin) {
e.stopImmediatePropagation();
var $box = $(this).find(base.options.displayItem).show().stop(),
$height = $box.data('gsb.navigation.fullHeight'),
$root = $(this),
$relatedTarget = $(base.delegateTo).find(e.relatedTarget);
if (!$height) {
$height = $box.outerHeight();
$box.data('gsb.navigation.fullHeight', $height);
}
if (e.type === "mouseenter") {
if (!fromWithin && !$relatedTarget.length) {
$box.addClass("on").css({ height: 0, opacity: 0 }).animate({
height: $height,
opacity: 1
}, {
duration: base.options.animSpeed
});
} else {
$box.addClass("on").css({ height: $height, opacity: 1 });
}
$root.addClass("hovered");
// log debug
gsb.log("gsb.navigation: Add root class 'hovered' for nav node '" + $root.find('h3 > a').text() + "'");
} else {
if (!fromWithin && !$relatedTarget.length) {
$box.removeClass("on").css({ height: $height, opacity: 1, display: 'none' }).animate({
height: 0,
opacity: 0
}, {
duration: base.options.animSpeed
});
} else {
$box.removeClass("on").css({ height: 0, opacity: 0, display: 'block' });
}
$root.removeClass("hovered");
// log debug
gsb.log("gsb.navigation: Remove root class 'hovered' for nav node '" + $root.find('h3 > a').text() + "'");
}
});
// Fix for iPad
base.$el.find(base.options.navTouchElement).on("touchstart", function (e) {
var $box = $(this).find(base.options.displayItem).stop(),
$root = $(this).children("div");
if ($(this).parent().parent().hasClass("hovered")) {
e.preventDefault();
}
});
},
// Run initializer
base.init();
};
/**
* @typedef defaultOptions
* @type {object}
* @property {object} options - Default Options des Scripts
* @property {string} [options.navTouchElement] Elemente welche eine Sonderbehandlung für toch brauchen - eigentlich nur notwendig wenn ein a x-Ebenen tiefer ist
* @property {string} [options.displayItem] Welcher Container soll eingeblendet werden bei hover/focus
* @property {string} [options.hoverItem] Auf welche Elemente soll der Event-Listener für mouseeenter gesetzt werden
* @property {string} [options.animSpeed] Dauer des Fade-Effekts beim einblenden
*/
$.gsb.navigation.defaultOptions = {
navTouchElement: "h3 > a",
displayItem: ".menu-box",
hoverItem: "> ul > li",
animSpeed: 500,
respondToEvents: true,
onRefresh: function onRefresh() {
this._largeNavigation();
},
responsive: [{
breakpoint: 1024,
onRefresh: function onRefresh() {
//nothing to do for medium/small
}
}]
};
//Search Reset
$.fn.gsb_navigation = function (options) {
return this.each(function () {
new $.gsb.navigation(this, options);
});
};
})(jQuery);
/* Ende gsb_navigation */
/* Start gsb_subNavigation */
/**
* @name gsb_subNavigation
* @version 0.0.1
* @see {@link http://semver.org|Semantic Versioning}
* @author pespeloe
*
* @desc Modulbeschreibung (TODO)
*
* @requires {@link external:jQuery, responsiveListener}
*
* @example
* Beispielaufruf (TODO)
*/
;
(function ($) {
if (!$.gsb) {
$.gsb = {};
}
$.gsb.subNavigation = function (el, options) {
// To avoid scope issues, use 'base' instead of 'this'
// to reference this class from internal events and functions.
var base = this;
// Access to jQuery and DOM versions of element
base.$el = $(el);
base.el = el;
// Add a reverse reference to the DOM object
base.$el.data("gsb.subNavigation", base);
base.init = function () {
base.options = $.extend({}, $.gsb.subNavigation.defaultOptions, options);
base.$el.gsb_responsiveListener(base);
};
$.gsb.subNavigation.prototype.initMenu = function () {
var numElements = base.$el.data('subnavigation-num-elements'),
numMinElements = base.$el.data('subnavigation-num-min-elements');
function fetchAndInitMenu() {
$.get(base.options.menuHtml, function (data) {
base.button = $('');
base.button.wrap('');
base.$el.find(base.options.buttonPosition).prepend(base.button.parent('li'));
base.navigationContainer = $('');
base.navigationContainer.addClass('c-submenu is--closed').append(base.initializeSubmenu(data));
if (window.location.pathname.includes("/EN"))
var menuname="Menu"
else
var menuname="Menü"
var closeButton = $('
' + menuname + '
');
closeButton.on('click', function (e) {
e.preventDefault();
e.stopPropagation();
base.button.trigger('click');
base.button.focus();
});
base.navigationContainer.prepend(closeButton);
/**
* Fügt das Menü an der jeweils passenden Stelle ein.
* Beim Einfügepunkt wird zwischen Start- und Unterseiten unterschieden:
* Startseite: $('.home .fullContent .content').first()
* Unterseite: $('#content')
*/
function prependMenu() {
var $content = $('#content');
base.$submenuWrapper = $('');
$content.prepend(base.$submenuWrapper);
console.log("Prepend the burger menu to ", base.$submenuWrapper);
base.$submenuWrapper.prepend(base.navigationContainer);
}
prependMenu();
base.addClickFunction();
base.checkScrollbars();
});
}
if (Number.isInteger(numMinElements) && Number.isInteger(numMinElements)) {
if (numElements > numMinElements) {
fetchAndInitMenu();
}
} else {
fetchAndInitMenu();
}
};
$.gsb.subNavigation.prototype.addClickFunction = function () {
base.button.on("click", function (e) {
e.preventDefault();
e.stopPropagation();
if (base.$submenuWrapper.hasClass('c-submenu-wrapper--opened')) {
base.$submenuWrapper.removeClass('c-submenu-wrapper--opened');
} else {
base.$submenuWrapper.addClass('c-submenu-wrapper--opened');
}
if (base.toggle($(this)) == 'opened') {
$(this).find('img').attr('src', base.options.menuOpenerActive).attr('alt', base.options.menuOpenerAltTextActive);
} else {
$(this).find('img').attr('src', base.options.menuOpener).attr('alt', base.options.menuOpenerAltText);
}
if (base.toggle(base.navigationContainer) == 'opened') {
base.addA11y(base.navigationContainer);
}
});
};
$.gsb.subNavigation.prototype.initializeSubmenu = function (data) {
data = $(data);
//Button zum öffnen hinzufügen
data.find('li').each(function () {
var listItem = $(this);
if (listItem.find('> ul').length > 0) {
var button = $('');
button.insertAfter(listItem.find('> a'));
}
});
data.on('click', '.c-submenu__btn', function (e) {
e.preventDefault();
e.stopPropagation();
if (base.toggle($(this)) == 'opened') {
$(this).attr('title', base.options.subMenuButtonOpenedTitle);
} else {
$(this).attr('title', base.options.subMenuButtonTitle);
}
base.toggle($(this).next());
base.checkScrollbars();
});
data.find('ul').addClass('is--closed');
var active = data.find('#nn-' + $('body').data('nn'));
var activeLink = active.find('> a');
if (activeLink.length > 0) {
$('' + activeLink.text() + '').addClass(activeLink.prop('class')).insertAfter(activeLink);
if (active.parents('ul').prev().length > 0) {
base.toggle(active.parents('ul').prev().attr('title', base.options.subMenuButtonOpenedTitle));
base.toggle(active.parents('ul'));
}
activeLink.remove();
}
return data;
};
$.gsb.subNavigation.prototype.toggle = function (elem) {
if (elem.attr('class').indexOf('opened') > -1) {
elem.attr('class', elem.attr('class').replace(/--opened/g, '--closed'));
return 'closed';
} else {
elem.attr('class', elem.attr('class').replace(/--closed/g, '--opened'));
return 'opened';
}
};
$.gsb.subNavigation.prototype.checkScrollbars = function () {
if (base.navigationContainer.find('> ul').outerHeight() > base.$submenuWrapper.parent().outerHeight()) {
base.navigationContainer.addClass('scrollable').css({
'overflow-y': 'scroll',
'height': base.navigationContainer.parent().outerHeight()
});
} else if (!(base.navigationContainer.find('> ul').outerHeight() === base.$submenuWrapper.parent().outerHeight())) {
base.navigationContainer.removeAttr('style');
}
};
$.gsb.subNavigation.prototype.unInitMenu = function () {
if (typeof base.button !== "undefined") {
base.button.remove();
base.navigationContainer.remove();
}
};
$.gsb.subNavigation.prototype.addA11y = function (elem) {
elem = elem || base.$el;
var focusElements = elem.find('button,a,input,textarea,select');
focusElements[0].focus();
focusElements.last().keydown(function (e) {
if (e.keyCode === 9) {
e.preventDefault();
focusElements[0].focus();
} else if (e.keyCode === 13) {
return true;
}
});
};
// Run initializer
base.init();
};
$.gsb.subNavigation.defaultOptions = {
buttonPosition: '.c-breadcrumb-slider', // prepend
menuOpener: image_url_burger_menu_blue,
menuOpenerActive: image_url_burger_menu_blue,
menuOpenerAltText: typeof SHOW_MORE == 'undefined' ? 'Ausblenden' : SHOW_MORE,
menuOpenerAltTextActive: typeof SHOW_LESS == 'undefined' ? 'Ausblenden' : SHOW_LESS,
subMenuButtonTitle: typeof SHOW_MORE == 'undefined' ? 'Ausblenden' : SHOW_MORE,
subMenuButtonOpenedTitle: typeof SHOW_LESS == 'undefined' ? 'Ausblenden' : SHOW_LESS,
subMenuAural: typeof SUBMENU == 'undefined' ? 'Zusätzliche Navigationsmöglichkeit' : SUBMENU,
menuClose: image_url_close_w,
menuHtml: json_url_subMenu,
respondToEvents: true,
onRefresh: function onRefresh() {
this.initMenu();
},
responsive: []
};
$.fn.gsb_subNavigation = function (options) {
return this.each(function () {
new $.gsb.subNavigation(this, options);
});
};
})(jQuery);
/* Ende gsb_subNavigation */
/* Start gsb_subNavigationMobile */
/**
* @name gsb_subNavigation
* @version 0.0.1
* @see {@link http://semver.org|Semantic Versioning}
* @author pespeloe
*
* @desc Modulbeschreibung (TODO)
*
* @requires {@link external:jQuery, responsiveListener}
*
* @example
* Beispielaufruf (TODO)
*/
;
(function ($) {
if (!$.gsb) {
$.gsb = {};
}
$.gsb.subNavigationMobile = function (el, options) {
// To avoid scope issues, use 'base' instead of 'this'
// to reference this class from internal events and functions.
var base = this;
// Access to jQuery and DOM versions of element
base.$el = $(el);
base.el = el;
// Add a reverse reference to the DOM object
base.$el.data("gsb.subNavigationMobile", base);
base.init = function () {
base.options = $.extend({}, $.gsb.subNavigationMobile.defaultOptions, options);
base.$el.gsb_responsiveListener(base);
};
$.gsb.subNavigationMobile.prototype.initMenu = function () {
$.get(base.options.menuHtml, function (data) {
base.navigationContainer = $('');
base.navigationContainer.addClass('c-submenu is--closed').append(base.initializeSubmenu(data));
if (window.location.pathname.includes("/EN"))
var menuname="Menu"
else
var menuname="Menü"
var closeButton = $('
' + menuname + '
');
closeButton.on('click', function (e) {
e.preventDefault();
e.stopPropagation();
base.button.trigger('click');
base.button.focus();
});
base.navigationContainer.prepend(closeButton);
console.log("Prepend the burger menu to ", base.options.prependMenuTo);
$(base.options.prependMenuTo).prepend(base.navigationContainer);
base.button = $('');
base.button.wrap('');
base.$el.find(base.options.buttonPosition).append(base.button.parent('div'));
base.addClickFunction();
base.checkScrollbars();
});
};
$.gsb.subNavigationMobile.prototype.addClickFunction = function () {
base.button.on("click", function (e) {
e.preventDefault();
e.stopPropagation();
if (base.toggle($(this)) == 'opened') {
$(this).find('img').attr('src', base.options.menuOpenerActive).attr('alt', base.options.menuOpenerAltTextActive);
} else {
$(this).find('img').attr('src', base.options.menuOpener).attr('alt', base.options.menuOpenerAltText);
}
if (base.toggle(base.navigationContainer) == 'opened') {
base.addA11y(base.navigationContainer);
}
});
};
$.gsb.subNavigationMobile.prototype.initializeSubmenu = function (data) {
data = $(data);
//Button zum öffnen hinzufügen
data.find('li').each(function () {
var listItem = $(this);
if (listItem.find('> ul').length > 0) {
var button = $('');
button.insertAfter(listItem.find('> a'));
}
});
data.on('click', '.c-submenu__btn', function (e) {
e.preventDefault();
e.stopPropagation();
if (base.toggle($(this)) == 'opened') {
$(this).attr('title', base.options.subMenuButtonOpenedTitle);
} else {
$(this).attr('title', base.options.subMenuButtonTitle);
}
base.toggle($(this).next());
base.checkScrollbars();
});
data.find('ul').addClass('is--closed');
var active = data.find('#nn-' + $('body').data('nn'));
var activeLink = active.find('> a');
if (activeLink.length > 0) {
$('' + activeLink.text() + '').addClass(activeLink.prop('class')).insertAfter(activeLink);
if (active.parents('ul').prev().length > 0) {
base.toggle(active.parents('ul').prev().attr('title', base.options.subMenuButtonOpenedTitle));
base.toggle(active.parents('ul'));
}
activeLink.remove();
}
return data;
};
$.gsb.subNavigationMobile.prototype.toggle = function (elem) {
if (elem.attr('class').indexOf('opened') > -1) {
elem.attr('class', elem.attr('class').replace(/--opened/g, '--closed'));
return 'closed';
} else {
elem.attr('class', elem.attr('class').replace(/--closed/g, '--opened'));
return 'opened';
}
};
$.gsb.subNavigationMobile.prototype.checkScrollbars = function () {
if (base.navigationContainer.find('> ul').outerHeight() > base.navigationContainer.parent().outerHeight()) {
base.navigationContainer.addClass('scrollable').css({
'overflow-y': 'scroll',
'height': base.navigationContainer.parent().outerHeight()
});
} else if (!(base.navigationContainer.find('> ul').outerHeight() == base.navigationContainer.parent().outerHeight())) {
base.navigationContainer.removeAttr('style');
}
};
$.gsb.subNavigationMobile.prototype.unInitMenu = function () {
if (typeof base.button !== "undefined") {
base.button.remove();
base.navigationContainer.remove();
}
};
$.gsb.subNavigationMobile.prototype.addA11y = function (elem) {
elem = elem || base.$el;
var focusElements = elem.find('button,a,input,textarea,select');
focusElements[0].focus();
focusElements.last().keydown(function (e) {
if (e.keyCode === 9) {
e.preventDefault();
focusElements[0].focus();
} else if (e.keyCode === 13) {
return true;
}
});
};
// Run initializer
base.init();
};
$.gsb.subNavigationMobile.defaultOptions = {
buttonPosition: '.c-breadcrumb-slider', // append
menuOpener: image_url_burger_menu_blue,
menuOpenerActive: image_url_burger_menu_blue,
menuOpenerAltText: typeof SHOW_MORE == 'undefined' ? 'Ausblenden' : SHOW_MORE,
menuOpenerAltTextActive: typeof SHOW_LESS == 'undefined' ? 'Ausblenden' : SHOW_LESS,
subMenuButtonTitle: typeof SHOW_MORE == 'undefined' ? 'Ausblenden' : SHOW_MORE,
subMenuButtonOpenedTitle: typeof SHOW_LESS == 'undefined' ? 'Ausblenden' : SHOW_LESS,
subMenuAural: typeof SUBMENU == 'undefined' ? 'Zusätzliche Navigationsmöglichkeit' : SUBMENU,
menuClose: image_url_close_w,
menuHtml: json_url_subMenuMobile,
prependMenuTo: '#main',
respondToEvents: true,
onRefresh: function onRefresh() {
this.unInitMenu();
},
responsive: [{
breakpoint: 1022,
onRefresh: function onRefresh() {
this.initMenu();
}
}]
};
$.fn.gsb_subNavigationMobile = function (options) {
return this.each(function () {
new $.gsb.subNavigationMobile(this, options);
});
};
})(jQuery);
/* Ende gsb_subNavigationMobile */
/* Start gsb_slideshow */
/*!
* --GSBDocStart
* @module gsb_slideshow
* @version 1.0.0
* @see {@link http://kenwheeler.github.io/slick/}
* @author anuebel
*
* @desc GSB-Wrapper-Plugin fuer slick.js.
* Slideshow auf Basis von Slick
*
* @option
* nextButtonImage: Das Hintergrundbild fuer den aktiven weiter-Link der Navigation(default: null)
* nextButtonInactiveImage: Das Hintergrundbild fuer den inaktiven weiter-Link der Navigation(default: null)
* nextTitle: Das title-Attribut fuer den aktiven weiter-Link der Navigation
* (default: SLIDER_NEXT bzw. 'Nächste Seite')
* nextTitleInactive: Das title-Attribut fuer den inaktiven weiter-Link der Navigation
* (default: SLIDER_NEXT_INACTIVE bzw. 'Keine nächste Seite')
* prevButtonImage: Das Hintergrundbild fuer den aktiven zurueck-Link der Navigation(default: null)
* prevButtonInactiveImage: Das Hintergrundbild fuer den aktiven zurueck-Link der Navigation(default: null)
* prevTitle: Das title-Attribut fuer den aktiven zurueck-Link der Navigation
* (default: SLIDER_BACK bzw. 'Vorherige Seite')
* prevTitleInactive: Das title-Attribut fuer den aktiven zurueck-Link der Navigation
* (default: SLIDER_BACK_INACTIVE bzw. 'Keine vorherige Seite')
* playButtonImagePlaying: Das Hintergrundbild fuer den Playbutton im abspielenden Zustand(default: null)
* playButtonImagePaused: Das Hintergrundbild fuer den Playbutton im pausierten Zustand(default: null)
* playButtonAltTextPlaying: Das alt-Attribut fuer den Playbutton im abspielenden Zustand
* (default: SLIDER_PLAY bzw. 'Animation starten')
* playButtonAltTextPaused: Das alt-Attribut fuer den Playbutton im pausierten Zustand
* (default: SLIDER_PAUSE bzw. 'Animation stoppen')
* slickOptions: native Optionen fuer das Slick Plugin(default: null, siehe Doku oben)
* slickOptions.gsb.playButton: Soll ein Playbutton angelegt werden(default: true), an dieser Stelle
* hinterlegt, um responsiven Reinitialisierungmechanismus von Slick zu nutzen
*
* s. auch http://kenwheeler.github.io/slick/
*
* @init
* // stage slider
* var $stage = $('#stage').find('.stage-container');
* $stage.gsb_Slideshow({
* containerElement : '.teaser',
* pagination : true,
* autoplay : true,
* autoSpeed : 9000,
* pauseOnHover : true,
* nextButtonImage : image_url_next,
* prevButtonImage : image_url_back,
* prevButtonInactiveImage : image_url_back_g,
* nextButtonInactiveImage : image_url_next_g,
* playButtonImagePaused : image_url_play,
* playButtonImagePlaying : image_url_paused,
* slickOptions: {
* arrows: false,
* fade: false,
* nextArrow: $stage.parent().find('.next'),
* prevArrow: $stage.parent().find('.prev'),
* responsive: [
* {
* breakpoint: 600,
* settings: {
* gsb: {
* playButton: false
* },
* autoplay : false,
* arrows: true
* }
* }
* ]
* }
* });
* // carousel slider
* var $carousel = $('.startseite').find('.teaser-switcher .karussell');
* $carousel.gsb_Slideshow({
* containerElement : '.teaser',
* autoplay : false,
* pagination: true,
* nextButtonImage : image_url_next,
* prevButtonImage : image_url_back,
* prevButtonInactiveImage : image_url_back_g,
* nextButtonInactiveImage: image_url_next_g,
* slickOptions: {
* slidesToShow: 5,
* slidesToScroll: 5,
* fade: false,
* nextArrow: $carousel.parent().find('.next'),
* prevArrow: $carousel.parent().find('.prev'),
* responsive: [
* {
* breakpoint: 1023,
* settings: {
* slidesToShow: 3,
* slidesToScroll: 3
* }
* },
* {
* breakpoint: 610,
* settings: {
* slidesToShow: 2,
* slidesToScroll: 2
* }
* },
* {
* breakpoint: 440,
* settings: {
* slidesToShow: 1,
* slidesToScroll: 1
* }
* }
* ]
* }
* });
* // gallery slider
* $('.galleryBox').gsb_Slideshow({
* slideshowControls : true,
* generateButtonContainer : false,
* autoplay : false,
* pagination: false,
* nextButtonImage : image_url_next,
* prevButtonImage : image_url_back,
* prevButtonInactiveImage : image_url_back_g,
* nextButtonInactiveImage : image_url_next_g,
* slickOptions: {
* adaptiveHeight: true,
* fade: false
* }
* });
*--GSBDocEnd
*/
/*global jQuery, console, SLIDER_NEXT, SLIDER_NEXT_INACTIVE, SLIDER_BACK, SLIDER_BACK_INACTIVE */
;
(function ($) {
'use strict';
if (!$.gsb) {
$.gsb = {};
}
$.gsb.Slideshow = function (el, options) {
var base = this;
base.$el = $(el);
base.el = el;
base.$el.data("gsb.Slideshow", base);
//noinspection JSUnusedGlobalSymbols
base.defaultSlickOptions = {
slide: '.slide',
fade: true,
infinite: false,
draggable: false,
adaptiveHeight: false,
onBeforeChange: function onBeforeChange(slick) {
//ohne diese Anweisung kann die Höhenberechnung fehlschlagen
//die "falschen" Elemente werden in updateTabindex wieder verborgen
slick.$slides.find('video, object').show();
},
onAfterChange: function onAfterChange(slick) {
base.updateNavigation(slick);
base.updateTabindex(slick);
},
onInit: function onInit(slick) {
var slideshowPluginInstance = slick.$slider.data('gsb.Slideshow');
var onSlickInit = slideshowPluginInstance.options.onSlickInit;
if (typeof onSlickInit == 'function') {
onSlickInit.call(slick, slick);
}
base.updateNavigation(slick);
base.initMultimedia();
base.updateTabindex(slick);
base.$el.trigger('init.slideshow.gsb');
},
// gsb Namespace zur Nutzung des responsiven Reinitialisierungsmechanismus
gsb: {
playButton: true
}
};
base.initMultimedia = function initMultimedia() {
if (typeof $.fn.gsb_Multimedia == "function") {
base.$el.find('video, audio').gsb_Multimedia();
}
};
base.updateTabindex = function updateTabindex(slick) {
//Barrierefreiheit/Tabbing workaround
var focusableItems = 'a, [tabindex], textarea, input, select, button, video, object',
buggedItems = 'video, object';
slick.$slides.not('.slick-active').find(focusableItems).attr('tabindex', -1).end().find(buggedItems).hide();
slick.$slides.filter('.slick-active').find(focusableItems).attr('tabindex', 0).end().find(buggedItems).show();
};
base.updateNavigationArrow = function ($arrow, activeImage, inactiveImage, activeArrowButtonTitle, inactiveArrowButtonTitle) {
if ($arrow) {
var $arrowButton = $arrow.is('button') ? $arrow : $arrow.find('button'),
$arrowImage = $arrow.find('img');
if ($arrow.hasClass('slick-disabled')) {
$arrowButton.attr('disabled', '');
$arrowButton.attr('title', inactiveArrowButtonTitle);
$arrowImage.attr('src', inactiveImage);
$arrowImage.attr('alt', '');
} else {
$arrowButton.removeAttr('disabled');
$arrowButton.attr('title', activeArrowButtonTitle);
$arrowImage.attr('src', activeImage);
$arrowImage.attr('alt', activeArrowButtonTitle);
}
}
};
/**
* Fuehrt Manipulationen an der HTML-Struktur der Navigation durch. Dazu gehoeren u.a. die Aktualisierung der
* Bilder und die Nachruestung von Elementen, die fuer die Barrierefreiheit relevant sind.
* @param slick das Slick-Objekt, das Informationen ueber den Zustand des Karussells enthaelt.
*/
base.updateNavigation = function (slick) {
base.updateNavigationArrow(slick.$prevArrow, base.options.prevButtonImage, base.options.prevButtonInactiveImage, base.options.prevTitle, base.options.prevTitleInactive);
base.updateNavigationArrow(slick.$nextArrow, base.options.nextButtonImage, base.options.nextButtonInactiveImage, base.options.nextTitle, base.options.nextTitleInactive);
};
/**
* Einige der fuer das alte Slideshow-Plugin definierten Optionen werden auf die korrespondierenden
* Slick-Optionen gemapt. Beispiel: pagination->dots
*
* Wird eine Legacy-Option in options gefunden, so wird sie dort geloescht und unter dem gemappten Namen in den
* slickOptions registriert.
*
* @param slickOptions die Optionen, die an Slick uebergeben werden
* @param options die Optionen, die an dieses Plugin uebergeben wurden
*/
base.handleLegacyOptions = function (slickOptions, options) {
$.each($.gsb.Slideshow.slickOptionsForLegacyOptions, function (legacyOption, mappedSlickOption) {
if (options.hasOwnProperty(legacyOption)) {
var savedValue = options[legacyOption];
delete options[legacyOption];
slickOptions[mappedSlickOption] = savedValue;
}
});
};
/**
* Initialisiert die Navigationspfeile. Diese duerfen erst nach einem etwaigen Austausch des HTML ermittelt werden,
* da sie ggf. mit ersetzt werden. In diesem Fall wuerden ansonsten die nachgeladene Pfeile nicht
* initialisiert.
* @param slickOptions die Optionen, die an Slick uebergeben werden
*/
base.handleNavigationArrows = function (slickOptions) {
var navigationArrowOptions = {
nextArrow: base.$el.find('.next'),
prevArrow: base.$el.find('.prev')
};
return $.extend({}, navigationArrowOptions, slickOptions);
};
/**
* Initialisiert den Playbutton, der zum Starten und Stoppen des Autoplay-Modus benutzt wird.
*
* Aufgrund des responsiven Reinitialisierungsmechanismus von Slick wird die Eigenschaft createPlayButton ueber
* ein gsb-Objekt in den Slick-Options zur Verfuegung gestellt.
* @param slickOptions die Optionen, die an Slick uebergeben werden
*/
base.handlePlayButton = function (slickOptions) {
(function (existingOnInit) {
slickOptions.onInit = function (slick) {
// das zuvor konfigurierte onInit-Callback aufrufen
existingOnInit.call(slick, slick);
var initializedSlickOptions = slick.options;
function shouldCreatePlayButton() {
var playButtonImagesAreConfigured = base.options.playButtonImagePlaying !== null && base.options.playButtonImagePaused !== null,
createPlayButton = initializedSlickOptions.gsb.playButton;
return createPlayButton && playButtonImagesAreConfigured;
}
function preventPlay() {
slick.paused = true;
slick.autoPlayClear();
}
var $existingPlayButton = base.$el.parent().find('.navigation button.playbutton'),
playButtonExists = $existingPlayButton.length;
if (shouldCreatePlayButton() && !playButtonExists) {
var slideshowStartsPlaying = initializedSlickOptions.autoplay,
initialClassForPlayButton = slideshowStartsPlaying && 'playbutton-playing' || 'playbutton-paused',
initialTitleAttrForPlayButton = slideshowStartsPlaying && base.options.playButtonAltTextPlaying || base.options.playButtonAltTextPaused,
initialSrcAttrForPlayButtonImage = slideshowStartsPlaying && base.options.playButtonImagePlaying || base.options.playButtonImagePaused,
initialAltAttrForPlayButtonImage = slideshowStartsPlaying && base.options.playButtonAltTextPlaying || base.options.playButtonAltTextPaused,
$playButton = $(''),
playButtonImage = $playButton.find('img');
base.$el.parent().find('.navigation').append($playButton);
$playButton.click(function () {
if ($playButton.is('.playbutton-playing')) {
$playButton.removeClass().addClass('playbutton-paused').attr('title', base.options.playButtonAltTextPaused);
playButtonImage.attr('src', base.options.playButtonImagePaused).attr('alt', base.options.playButtonAltTextPaused);
base.$el.slickPause();
slick.$list.on('mouseleave.slick', preventPlay);
} else {
$playButton.removeClass().addClass('playbutton-playing').attr('title', base.options.playButtonAltTextPlaying);
playButtonImage.attr('src', base.options.playButtonImagePlaying).attr('alt', base.options.playButtonAltTextPlaying);
base.$el.slickPlay();
slick.$list.off('mouseleave.slick', preventPlay);
}
});
} else if (!shouldCreatePlayButton() && playButtonExists) {
$existingPlayButton.remove();
}
};
})(slickOptions.onInit);
return slickOptions;
};
base.init = function () {
base.options = $.extend({}, $.gsb.Slideshow.defaultOptions, options);
var allElementsUrl = base.$el.data('href'),
initSlick = function initSlick() {
var rawSlickOptions = base.options.slickOptions;
delete rawSlickOptions.onInit;
var slickOptions = $.extend({}, base.defaultSlickOptions, rawSlickOptions);
base.handleLegacyOptions(slickOptions, base.options);
slickOptions = base.handleNavigationArrows(slickOptions);
slickOptions = base.handlePlayButton(slickOptions);
base.$el.slick(slickOptions);
},
onReceiveAllElements = function onReceiveAllElements(data) {
base.$el.html(data);
initSlick();
};
if (allElementsUrl) {
$.get(allElementsUrl, onReceiveAllElements);
} else {
initSlick();
}
};
base.init();
};
/**
* Die Standard-Optionen fuer das Plugin
*/
$.gsb.Slideshow.defaultOptions = {
nextButtonImage: null,
nextButtonInactiveImage: null,
nextTitle: typeof NEXT == 'undefined' ? 'Nächste Seite' : NEXT,
nextTitleInactive: typeof NEXT_INACTIVE == 'undefined' ? 'Keine nächste Seite' : NEXT_INACTIVE,
prevButtonImage: null,
prevButtonInactiveImage: null,
prevTitle: typeof BACK == 'undefined' ? 'Vorherige Seite' : BACK,
prevTitleInactive: typeof BACK_INACTIVE == 'undefined' ? 'Keine vorherige Seite' : BACK_INACTIVE,
playButtonImagePaused: null,
playButtonImagePlaying: null,
playButtonAltTextPaused: typeof PLAY == 'undefined' ? 'Animation starten' : PLAY,
playButtonAltTextPlaying: typeof PAUSE == 'undefined' ? 'Animation stoppen' : PAUSE,
paginationTitle: typeof PAGE == 'undefined' ? 'Seite' : PAGE,
slickOptions: null
};
/**
* Das Mapping von alten Optionen fuer das gsb_slideshow.js Plugin auf Slick-Optionen
* @see #handleLegacyOptions
*/
$.gsb.Slideshow.slickOptionsForLegacyOptions = {
containerElement: 'slide',
elementsToSlide: 'slidesToShow',
autoplay: 'autoplay',
autoSpeed: 'autoplaySpeed',
pagination: 'dots',
pauseOnHover: 'pauseOnHover'
};
$.fn.gsb_Slideshow = function (options) {
return this.each(function () {
return new $.gsb.Slideshow(this, options);
});
};
})(jQuery);
/* Ende gsb_slideshow */
/* Start gsb_tooltip */
/*!
* --GSBDocStart
* @module gsb_tooltip
* @version 1.0.0
* @see {@link http://foundation.zurb.com/docs/components/tooltips.html}
* @author anuebel
*
* @desc GSB-Wrapper-Plugin fuer Foundation Tooltip-Plugin. Arbeitet als Polyfill, um von Foundation benoetigte
* data-Attribute und Klassen hinzuzufuegen.
* Das Addon arbeitet als Bindeglied zwischen HTML-Elementen und dem Foundation Tooltip Plugin
*
* @option
* tooltipPosition: Die Position des Tooltips(top,bottom(default),left,right)
* tooltipCorners: Layoutmodus des Tooltip(''(default), 'radius', 'round')
* tooltipFoundationOptions: native Optionen fuer das Foundation Plugin(undefined(default), siehe Doku oben)
*
* @requires modernizr(wegen Foundation)
* @requires foundation
* @requires foundation-tooltip
*
* s. auch http://foundation.zurb.com/docs/components/tooltips.html
*
* @init
* // tooltips for abbreviations
* $('abbr').gsb_tooltip();
* $('acronym').gsb_tooltip();
*--GSBDocEnd
*/
;(function ($) {
'use strict';
if (!$.gsb) {
$.gsb = {};
}
$.gsb.tooltip = function (el, options) {
var base = this;
base.$el = $(el);
base.el = el;
base.$el.data("gsb.tooltip", base);
base.init = function () {
base.options = $.extend({}, $.gsb.tooltip.defaultOptions, options);
base.$el.addClass('has-tip tip-' + base.options.tooltipPosition + ' ' + base.options.tooltipCorners).attr('data-tooltip', '').attr('aria-haspopup', 'true');
// native Optionen des Foundation Plugins durchreichen
if (base.options.tooltipFoundationOptions) {
var serializedFoundationOptions = JSON.stringify(base.options.tooltipFoundationOptions);
base.$el.attr('data-options', serializedFoundationOptions);
}
};
base.init();
};
$.gsb.tooltip.defaultOptions = {
tooltipPosition: 'bottom',
tooltipCorners: '',
tooltipFoundationOptions: undefined
};
$.fn.gsb_tooltip = function (options) {
return this.each(function () {
new $.gsb.tooltip(this, options);
});
};
})(jQuery);
/* Ende gsb_tooltip */
/* Start gsb_toggle */
/**
* --GSBDocStart
* @module gsb_toggle
* @version 1.5.4
* @see {@link http://semver.org|Semantic Versioning}
* @author pespeloe
*
* @desc Dieses Modul erstellt in der Default-Konfiguration eine Accordion in small und ein Tab-Modul in large
* Über die einzelnen Optionen kann auch nur ein Tab oder nur ein Accordion erstellt werden. Mit der Klasse "active-control"
* kann festgelegt werden, welcher Tab/Accordion bei der Initialisierung geöffnet sein soll.
* Wenn der Inhalt der Tabs nachgeladen werden soll, muss im Template ein data-href Attribut vorhanden sein. Gleiches Vorgehen
* wie bei dem Modul gsb_Sldeshow.
* Fest definiert sind die Klassen
* "tabs-container" -> Klasse für den Wrapper des einzelnen Tabs
* "heading" -> Element was für die Steuerung als Accordion dient
* "tabs-list" -> Wrapper der Steuerelemente als Tab
* "active-control" -> Aktuell ausgewählter Tab/Accordion
* "inactive-control" -> inaktiver Tab/Accordion
* "gsb-toggle" -> Klasse des "Gesamt-Wrappers"
*
* @example
* HTML: Velocity
*
*
* JS: init
* $('.tabaccordion').gsb_toggle({options});
*
* @requires {@link external:jQuery}
* @requires gsb_responsiveListener
*
* @init
* // toggle for footer - small
* $("#siteInfo").find('.smallAccordion').gsb_toggle({
* onRefresh: function() {
* this.uninitAccordion();
* },
* responsive: [{
* breakpoint: 600,
* onRefresh: function() {
* this.initialize();
* this.refreshAccordion();
* },
* tab: false,
* accordion: true
* }]
* });
*--GSBDocEnd
* */
;
(function ($) {
if (!$.gsb) {
$.gsb = {};
}
;
$.gsb.toggle = function (el, options) {
// Access to $ and DOM versions of element
var base = this;
base.$el = $(el);
base.el = el;
this.base = base;
// Add a reverse reference to the DOM object
base.$el.data("gsb.toggle", base);
base.init = function () {
this.base.options = $.extend({}, $.gsb.toggle.defaultOptions, options);
var _ = this.base;
if (_.options.accordion && _.options.richTextAccordion) {
_.addRichtextContainer();
} else {
if (base.$el.data('href')) {
$.get(base.$el.data('href'), function (data) {
base.$el.html(data);
base.$el.gsb_responsiveListener(_);
});
} else {
base.$el.gsb_responsiveListener(_);
}
}
};
// Run initializer
base.init();
};
/**
* @typedef defaultOptions
* @type {object}
* @property {object} options - Default Options des Scripts
* @property {boolean} [options.tab=true] - Aktiviert / Deaktiviert die Tab-Funktion
* @property {string} [options.tabControls='.tabs-list > li a'] - Steuerungselemente fuer die Tab-Darstellung
* @property {boolean} [options.accordion=true] - Aktiviert / Deaktiviert die Accordion-Funktion
* @property {boolean} [options.richTextAccordion=false] - Aktiviert / Deaktiviert die Richtext-Accordion-Funktion -> nur wenn Option accordion true ist. ACHTUNG: Es ist nur ein Richtext-Accordion pro Seite möglich!
* @property {boolean} [options.accordionCloseOther=true] - Immer nur ein Accordion geöffnet lassen
* @property {boolean} [options.accordionPanelHeight=false] - Berechnet die Höhe des aufzuklappenden Elements (das aufzuklappenden Element darf nicht per CSS auf display non gesetzt sein)
* @property {jQuery} [options.accordionElementToOpen=null] - Öffnet ein Element welches nicht in der eigentlich vorgegebenen Struktur ist
* @property {boolean} [options.autoplay=false] - Autoplay für Tab aktivieren
* @property {string} [options.playButtonImagePaused=null] - Icon welches im stop Zustand angezeigt werden soll (nur wenn autoplay true)
* @property {string} [options.playButtonImagePlaying=null] - Icon welches im play Zustand angezeigt werden soll (nur wenn autoplay true)
* @property {string} [options.playButtonAltTextPaused=null] - Alttext welcher im stop Zustand angezeigt werden soll (nur wenn autoplay true)
* @property {string} [options.playButtonAltTextPlaying=null] - Alttext welcher im play Zustand angezeigt werden soll (nur wenn autoplay true)
* @property {string} [options.accordionHeadingTitleClosed=null] - Title welcher angezeigt werden soll, wenn ein AccordionElement geschlossen ist
* @property {string} [options.accordionHeadingTitleOpened=null] - Title welcher angezeigt werden soll, wenn ein AccordionElement geöffnet ist
* @property {int} [options.autoSpeed=5000] - Nach welcher Zeit soll der Tab gewechselt werden? (nur wenn autoplay true)
* @property {boolean} [options.playOnLoad=false] - Direkt nach laden der Seite autoplay starten (nur wenn autoplay true)
* @property {boolean} [options.pauseOnHover=true] - Wenn hover ueber Bild oder Tab autoplay stoppen (nur wenn autoplay true)
* @property {boolean} [options.changeOnHover=false] - Wenn hover ueber Bild oder Tab autoplay stoppen (nur wenn autoplay true)
* @property {boolean} [options.allOpen=false] - Alle Accordion-Elemente direkt geöffnet
* @property {boolean} [options.animateTab=false] - Animation für den wechsel der Tabs
*/
$.gsb.toggle.defaultOptions = {
tab: true,
tabControls: "> .tabs-list > li a",
elements: '> .tabs-container > div',
accordion: true,
richTextAccordion: false,
accordionCloseOther: true,
accordionPanelHeight: false,
accordionElementToOpen: null,
accordionElementsStopPropagation: '',
autoplay: false,
playButtonImagePaused: null,
playButtonImagePlaying: null,
playButtonAltTextPaused: typeof PLAY == 'undefined' ? 'Animation starten' : PLAY,
playButtonAltTextPlaying: typeof PAUSE == 'undefined' ? 'Animation stoppen' : PAUSE,
accordionHeadingTitleClosed: null,
accordionHeadingTitleOpened: null,
autoSpeed: '5000',
playOnLoad: false,
pauseOnHover: true,
changeOnHover: false,
allOpen: false,
animateTab: false,
respondToEvents: true,
onRefresh: function onRefresh() {
this.initialize();
this.refreshTab();
},
responsive: [{
breakpoint: 600,
onRefresh: function onRefresh() {
this.initialize();
this.autoplayStop();
this.$el.off("mouseenter mouseleave");
this.refreshAccordion();
},
autoplay: false
}]
};
/**
* @method initialize
* @desc Initialisierung des Scripts
*/
$.gsb.toggle.prototype.initialize = function () {
var _ = this.base;
if (!_.$el.hasClass('gsb-toggle')) {
_.$el.addClass('gsb-toggle');
_.addClasses();
_.addClickfunction();
}
if (_.options.autoplay) {
_.autoplay();
}
};
/**
* @method addClasses
* @desc Zugehörigkeit der Überschriften festlegen
*/
$.gsb.toggle.prototype.addClasses = function () {
var _ = this.base;
if (_.options.tab === true) {
//Angabe welcher Tab aktiv gesetzt werden soll
var activeTabIndex = $.inArray(_.$el.find(_.options.tabControls + '.active-control').get(0), _.$el.find(_.options.tabControls));
if (activeTabIndex == -1) {
activeTabIndex = 0;
}
_.$el.find(_.options.tabControls).each(function (index) {
if (!$(this).is('a') || $(this).find('>a').length == 0) {
$(this).prop("tabindex", 0);
}
$(this).addClass('switch-panel' + index);
if (index === activeTabIndex) {
$(this).addClass("active-control");
} else {
$(this).addClass("inactive-control");
}
});
_.$el.find(_.options.elements).each(function (index) {
$(this).addClass('switch-panel' + index);
if (index === activeTabIndex) {
$(this).addClass("panel-opened");
} else {
$(this).addClass("panel-closed");
}
});
}
if (_.options.accordion === true) {
// Accorion hat bei start geöffnete Elemente
var hasOpendElements = false;
if (_.$el.find("> .tabs-container > .active-control").length > 0) {
hasOpendElements = true;
}
_.$el.find("> .tabs-container > .heading").each(function () {
if (!$(this).is('button') || !$(this).is('a')) {
if (_.options.accordionPanelHeight) {
var height = 0;
$(this).next().find(">").each(function () {
height += $(this).outerHeight(true);
});
$(this).next().height(height);
}
$(this).prop("tabindex", 0);
if (_.options.allOpen && !_.options.tab) {
$(this).next().show();
$(this).addClass('active-control');
} else if (hasOpendElements) {
if (!$(this).hasClass("active-control")) {
$(this).addClass("inactive-control");
$(this).next().hide();
} else {
$(this).next().show();
}
} else {
$(this).addClass("inactive-control");
$(this).next().hide();
}
}
_.changeAccordionHeadingTitle($(this));
});
}
};
/**
* @method addClickfunction
* @desc Click Events hinzufügen
*/
$.gsb.toggle.prototype.addClickfunction = function () {
var _ = this.base;
// Accordion
if (_.options.accordion === true) {
_.$el.on('click keydown', "> .tabs-container > .heading", function (e) {
if (e.type === 'click' || e.which == 13) {
e.preventDefault();
e.stopPropagation();
_.clickedElem = $(this);
_.changeStateAccordion();
}
}).find(_.options.accordionElementsStopPropagation).on('click keydown', function (e) {
e.stopPropagation();
});
}
if (_.options.tab === true) {
// Autoplay muss deaktiviert sein, da die Events focusin und focusout im Firefox derzeit nocht nicht implementiert
// sind bzw. noch bugs enthalten
if (_.options.changeOnHover && !_.options.autoplay) {
_.$el.on('mouseenter focus touchend', _.options.tabControls, function (e) {
var panelClass;
e.preventDefault();
e.stopPropagation();
panelClass = String($(this).attr('class').match(/switch-panel\d+/));
if (!e.relatedTarget || $(e.relatedTarget).is('.' + panelClass)) {
console.log('e.relatedTarget: ', e.relatedTarget);
return;
}
_.clickedElem = $(this);
_.changeStateTab();
});
// Seitenwechsel für click unterdrücken
_.$el.on('click', _.options.tabControls, function (e) {
e.preventDefault();
e.stopPropagation();
});
} else {
_.$el.on('click keydown', _.options.tabControls, function (e) {
if (e.type === 'click' || e.which == 13) {
e.preventDefault();
e.stopPropagation();
_.clickedElem = $(this);
_.changeStateTab();
}
});
_.$el.on('focusin', "> .tabs-container > .heading:not(:eq(0))", function (e) {
var panelClass;
if (e.relatedTarget && !_.$el.find(_.options.tabControls).filter(e.relatedTarget).length) {
console.log(e.relatedTarget);
panelClass = String($(this).next().attr('class').match(/switch-panel\d+/));
_.$el.find(_.options.tabControls).filter('.' + panelClass).focus();
}
}).on('focusin', "> .tabs-container > .heading:eq(0)", function (e) {
var panelClass,
tabControls = _.$el.find(_.options.tabControls),
placeholder;
if (e.relatedTarget && !$(e.relatedTarget).is(tabControls)) {
console.log(e.relatedTarget);
panelClass = String($(this).next().attr('class').match(/switch-panel\d+/));
tabControls.filter('.' + panelClass).focus();
} else if ($(e.relatedTarget).is(tabControls.last())) {
$("").css({ visibility: 'none', height: 0, width: 0, margin: 0, padding: 0, outline: 0 }).blur(function (e) {
$(this).remove();
}).appendTo(_.$el.find('> .tabs-container')).focus();
}
});
}
}
};
/**
* @method changeStateAccordion
* @param {Object} elem - Geklicktes Element
* @desc Passt den title des headingElements je Status an (geöffnet/geschlossen)
*/
$.gsb.toggle.prototype.changeAccordionHeadingTitle = function (elem) {
var _ = this.base;
if (elem.hasClass('active-control') && _.options.accordionHeadingTitleOpened) {
elem.attr('title', _.options.accordionHeadingTitleOpened);
} else if (!elem.hasClass('active-control') && _.options.accordionHeadingTitleClosed) {
elem.attr('title', _.options.accordionHeadingTitleClosed);
}
};
/**
* @method changeStateAccordion
* @desc Open-/Close-States Accordion
*/
$.gsb.toggle.prototype.changeStateAccordion = function () {
var _ = this.base;
var contentElement;
if (_.options.accordionElementToOpen) {
contentElement = $(_.options.accordionElementToOpen);
} else {
contentElement = _.clickedElem.next();
}
if (_.clickedElem.hasClass('inactive-control')) {
if (_.options.accordionCloseOther && !_.options.accordionElementToOpen) {
_.animationAccordion(_.clickedElem.parent().find('> .active-control').next(), "close");
_.$el.find('.tabs-container > .active-control').removeClass('active-control').addClass('inactive-control');
}
_.clickedElem.attr('aria-expanded', 'true');
_.clickedElem.attr('aria-selected', 'true');
_.clickedElem.removeClass('inactive-control').addClass('active-control');
_.animationAccordion(contentElement, "open");
contentElement.attr('aria-hidden', 'false');
} else {
_.clickedElem.attr('aria-expanded', 'false');
_.clickedElem.attr('aria-selected', 'false');
_.clickedElem.removeClass('active-control').addClass('inactive-control');
_.animationAccordion(contentElement, "close");
contentElement.attr('aria-hidden', 'true');
}
_.changeAccordionHeadingTitle(_.clickedElem);
};
/**
* @method changeStateTab
* @desc Open-/Close-States Tab
*/
$.gsb.toggle.prototype.changeStateTab = function () {
var _ = this.base;
var panelToOpen = _.$el.find('> .tabs-container > .' + _.getSwitchPanelClass(_.clickedElem));
if (_.clickedElem.hasClass('inactive-control')) {
var panelToClose = _.$el.find('.panel-opened');
// "Alles auf 0 zurücksetzen"
_.$el.find('[aria-hidden=false]').attr('aria-hidden', 'true');
_.$el.find('[aria-selected=true]').attr('aria-selected', 'false');
var ariaControl = _.clickedElem.attr('aria-controls');
_.$el.find('#' + ariaControl).attr('aria-hidden', 'false');
_.clickedElem.attr('aria-selected', 'true');
panelToClose.removeClass('panel-opened').addClass('panel-closed');
_.$el.find('> .tabs-container >.active-control, > .tabs-list .active-control ').removeClass('active-control').addClass('inactive-control');
_.clickedElem.removeClass('inactive-control');
/* var panelToOpen = _.$el.find('> .tabs-container > .' + _.getSwitchPanelClass(_.clickedElem));*/
panelToOpen.removeClass('panel-closed').addClass('panel-opened');
_.clickedElem.addClass('active-control');
_.animationTab(panelToClose, panelToOpen);
}
panelToOpen.prev('.heading').trigger('focus');
};
/**
* @method animationAccordion
* @desc Animation für OpenClose des Accordions
*
* @param elem {Object} Element welches animiert werden soll
* @param type Art der Animation - {string} open / close
*/
$.gsb.toggle.prototype.animationAccordion = function (elem, type) {
var _ = this.base;
if (type === 'open') {
elem.slideDown(400, function () {
if (_.options.accordionElementToOpen) {
_.addA11y(elem);
}
});
} else {
elem.slideUp();
}
};
/**
* @method animationTab
* @desc Animation für OpenClose des Tabs
*
* @param panelToClose {Object} Element welches animiert werden soll (ausblenden)
* @param panelToOpen {Object} Element welches animiert werden soll (einblenden)
*/
$.gsb.toggle.prototype.animationTab = function (panelToClose, panelToOpen) {
var _ = this.base;
if (_.options.animateTab) {
panelToClose.fadeOut("slow", function () {
panelToOpen.fadeIn("slow");
});
} else {
panelToClose.hide();
panelToOpen.show();
}
};
/**
* @method autoplay
* @desc Autoplay
*/
$.gsb.toggle.prototype.autoplay = function () {
var _ = this.base;
if (_.$el.find('> button').length === 0) {
var button = document.createElement('button');
button.className = 'paused';
var image = document.createElement('img');
image.src = _.options.playButtonImagePlaying;
image.alt = _.options.playButtonAltTextPlaying;
playbutton = _.$el.append($(button).append(image));
}
_.playbutton = _.$el.find('button.paused');
_.playbutton.on('click autoplayStart', function (e) {
e.preventDefault();
e.stopPropagation();
if (_.playbutton.hasClass('paused')) {
$(this).removeClass('paused').addClass('played');
_.autoplayStart();
_.changeStatePlayPause(_.options.playButtonImagePlaying, _.options.playButtonAltTextPlaying);
_.isPaused = false;
if (e.type != "autoplayStart") {
//Damit nach Starten des Autoplays nicht nochmal autoplayStart von mouseleave aufgerufen wir
_.isClicked = true;
}
} else {
$(this).addClass('paused').removeClass('played');
_.autoplayStop();
_.changeStatePlayPause(_.options.playButtonImagePaused, _.options.playButtonAltTextPaused);
_.isPaused = true;
}
});
// Stop bei Hover
if (_.options.pauseOnHover) {
_.$el.on("mouseenter mouseleave", function (e) {
if (!_.isPaused) {
if (e.type == 'mouseenter') {
_.autoplayStop();
} else {
if (_.playbutton.hasClass('played') && !_.isClicked) {
_.autoplayStart();
}
_.isClicked = false;
}
}
});
}
//play bei start
if (_.options.playOnLoad) {
_.playbutton.trigger("autoplayStart");
}
};
/**
* @method autoplayStart
* @desc Autoplay start
*/
$.gsb.toggle.prototype.autoplayStart = function () {
var _ = this.base;
_.rotation = setInterval(function () {
var lastTab = _.getSwitchPanelClass(_.$el.find('.tabs-list > li').last());
//Wenn letzter Tab, wieder beim ersten anfangen
if (_.$el.find('.tabs-list .active-control').hasClass(lastTab[0])) {
_.$el.find('.tabs-list > li').first().click();
} else {
_.$el.find('.tabs-list .active-control').next().click();
}
}, _.options.autoSpeed);
};
/**
* @method autoplayStop
* @desc Autoplay stop
*/
$.gsb.toggle.prototype.autoplayStop = function () {
var _ = this.base;
clearInterval(_.rotation);
};
/**
* @method refreshTab
* @desc Refresh Tab
*/
$.gsb.toggle.prototype.refreshTab = function () {
console.log("refreshTab");
var _ = this.base;
if (_.options.tab) {
_.$el.find('.tabs-container').removeAttr('multiselectable');
_.$el.find('.tabs-container').removeAttr('role');
_.$el.find('.heading').each(function () {
$(this).removeAttr('aria-expanded');
});
// Autoplay muss deaktiviert sein, da die Events focusin und focusout im Firefox derzeit nocht nicht implementiert
// sind bzw. noch bugs enthalten
if (_.options.changeOnHover && !_.options.autoplay) {
_.$el.on('mouseenter focus', _.options.tabControls, function (e) {
_.clickedElem = $(this);
_.changeStateTab();
});
}
_.$el.find('.panel-closed').hide();
_.$el.find('.panel-opened').show();
}
};
/**
* @method refreshAccordion
* @desc Refresh Accordion
*/
$.gsb.toggle.prototype.refreshAccordion = function () {
console.log("refreshAccordion");
var _ = this.base;
if (_.options.accordion) {
_.$el.find('.tabs-container').attr('role', 'tablist');
if (!_.options.accordionCloseOther) {
_.$el.find('.tabs-container').attr('multiselectable', 'true');
}
_.$el.find('.heading').each(function () {
$(this).attr('aria-expanded', 'false');
$(this).hasClass('inactive-control') ? $(this).next().hide() : "";
});
}
};
/**
* @method changeStatePlayPause
* @param {string} imgsrc - Imagesource-Link
* @param {string} alt - Alt-Text des Images
* @desc Bild tauschen für Play/Pausebutton
*/
$.gsb.toggle.prototype.changeStatePlayPause = function (imgsrc, imgalt) {
var _ = this.base;
var image = _.playbutton.find('img');
image.prop("alt", imgalt).prop("src", imgsrc);
};
/**
* @method getSwitchPanelClass
* @param {Object} elem - geklicktes Element (durchgereicht von changeState oder autoplayStart)
* @desc Liefert die switch-panel Klasse des geklickten Elements
*/
$.gsb.toggle.prototype.getSwitchPanelClass = function (elem) {
var panelClass = $.grep(elem.prop('class').split(" "), function (value) {
return value.indexOf('switch-panel') > -1;
});
return panelClass;
};
/**
* @method uninitAccordion
* @desc Destroy Accordion
*/
$.gsb.toggle.prototype.uninitAccordion = function () {
var _ = this.base;
if (_.$el.hasClass('gsb-toggle')) {
_.$el.off();
_.$el.removeClass('gsb-toggle');
_.$el.find('> .tabs-container > .heading').removeClass('active-control inactive-control').removeAttr("tabindex").next().removeAttr("style");
}
};
/**
* @method addA11y
* @desc setzt den focus auf das erste fokussierbare Element
* @param elem {jQuery} Element welches nach fokussierbaren Elementen durchsucht wird. Ist mindestens ein Element vorhanden,
* wird der Fokus gesetzt
* @param tabPanel {jQuery} Element auf welches gesprungen werden soll, wenn im TabContainer keiner fokussierbaren Element vorhanden sind
*/
$.gsb.toggle.prototype.addA11y = function (elem, tabPanel) {
var _ = this.base;
elem = elem || _.$el;
var focusElements = elem.find('input,textarea,select,a,button').not(':hidden');
if (focusElements.length) {
focusElements[0].focus();
focusElements.last().keydown(function (e) {});
}
};
/**
* @method addRichtextContainer
* @desc Sucht im z.B. Content nach Elementen mit den Klasse startaccordion, endaccordion und accordionheadline und
* baut die für gsb_toggle benötigte Struktur um diese Elemente
*
* Wenn alle benötigten Elemente eingebaut wurden, ruft sich das Script auf '.richtext-accordion' mit der Option
* richTextAccordion nochmal selbst auf
*/
$.gsb.toggle.prototype.addRichtextContainer = function () {
var _ = this.base;
_.$el.find('.startaccordion').each(function () {
$(this).nextUntil('.endaccordion').addBack().add($(this).find('~.endaccordion').first()).wrapAll('');
var wrapper = $(this).parent();
wrapper.find('.startaccordion, .accordionheadline').addClass('heading');
wrapper.find('.heading').each(function () {
$(this).nextUntil('.heading').wrapAll('');
});
wrapper.find('.heading').last().nextUntil('.accordionend').add(wrapper.find('.accordionend')).wrapAll('');
wrapper.wrap('');
});
_.$el.removeData('gsb.toggle');
_.$el.find('.richtext-accordion').gsb_toggle($.extend({}, _.options, { richTextAccordion: false }));
};
$.fn.gsb_toggle = function (options) {
return this.each(function () {
new $.gsb.toggle(this, options);
});
};
})(jQuery);
/* Ende gsb_toggle */
/* Start gsb_maxHeight */
/*!
* @name maxHeight
* @author @pespeloe
* Licensed under the MIT license
*
* Container per Javascript auf die Höhe des höchsten
* Containers setzen
* */
;
(function ($) {
if (!$.gsb) {
$.gsb = {};
}
;
$.gsb.maxHeight = function (el, options) {
// To avoid scope issues, use 'base' instead of 'this'
// to reference this class from internal events and functions.
var base = this;
// Access to jQuery and DOM versions of element
base.$el = $(el);
base.el = el;
// Add a reverse reference to the DOM object
base.$el.data("gsb.maxHeight", base);
base.init = function () {
base.options = $.extend({}, $.gsb.maxHeight.defaultOptions, options);
if (base.options.triggerFromOutside) {
base.checkOptions(base);
}
$(window).on('resize load', function () {
// um sicher zu sein das alle Bilder und somit alle Container
// die entgültige Höhe haben
if (typeof base.options.beforeInit === 'function') {
base.options.beforeInit.call($(this), base.$el);
}
base.checkOptions(base);
if (typeof base.options.afterInit === 'function') {
base.options.afterInit.call($(this), base.$el, $items);
}
});
};
$.gsb.maxHeight.prototype.checkOptions = function (base) {
if (base.options.elementsPerRow == null) {
var $items = base.$el.find(base.options.boxes);
if ($items.length > 0) {
$items.css('height', 'auto');
base.setHeight($items);
}
} else if (base.options.elementsPerRow > 1) {
var items = [];
base.$el.find(base.options.boxes).each(function (index) {
items.push(this);
if ((index + 1) % base.options.elementsPerRow == 0) {
base.setHeight($(items));
items = [];
}
});
}
};
$.gsb.maxHeight.prototype.setHeight = function ($items) {
var maxHeight = 0,
maxHeightAbsoluteContainer = 0,
maxHeightAdjacentElement = 0;
$items.each(function () {
var itemHeight = parseInt($(this).outerHeight());
var moreButton;
if (base.options.absoluteElements !== undefined) {
moreButton = parseInt($(this).find(base.options.absoluteElements).outerHeight(true));
if (moreButton > maxHeightAbsoluteContainer) maxHeightAbsoluteContainer = moreButton;
}
if (base.options.adjacentElements !== undefined) {
heightAdjacentElement = parseInt($(this).parent().find(base.options.adjacentElements).outerHeight(true));
if (heightAdjacentElement > maxHeightAdjacentElement) maxHeightAdjacentElement = heightAdjacentElement;
}
if (itemHeight > maxHeight) maxHeight = itemHeight;
});
$items.each(function () {
if (base.options.adjacentElements !== undefined && $(this).parent().find(base.options.adjacentElements).length == 0) {
$(this).css("height", maxHeight + maxHeightAbsoluteContainer + maxHeightAdjacentElement);
} else {
$(this).css("height", maxHeight + maxHeightAbsoluteContainer);
}
});
};
// Run initializer
base.init();
};
$.gsb.maxHeight.defaultOptions = {
boxes: '.slick-slide',
elementsPerRow: null,
absoluteElements: undefined,
triggerFromOutside: false,
beforeInit: undefined,
afterInit: undefined,
adjacentElements: undefined
};
//Search Reset
$.fn.gsb_maxHeight = function (options) {
return this.each(function () {
new $.gsb.maxHeight(this, options);
});
};
})(jQuery);
/* Ende gsb_maxHeight */
/* Start gsb_print */
/*!
* --GSBDocStart
* @module gsb_print
* @version 1.0.0
* @see {@link http://semver.org|Semantic Versioning}
* @author sbaecker
*
* @desc GSB-Plugin zum autom. Leeren von Text-Input-Feldern
* Das Addon fügt einen Link "Seite drucken" in eine vorhandene Liste ein
*
* @example
*
*
* @init
* $('#navFunctions').gsb_printlink();
*
* @requires jQuery >= 1.11.1, gsb_responsiveListener
*--GSBDocEnd
*/
;
(function ($) {
if (!$.gsb) {
$.gsb = {};
}
;
$.gsb.printlink = function (el, options) {
// To avoid scope issues, use 'base' instead of 'this'
// to reference this class from internal events and functions.
var base = this;
var printInited = false;
// Access to $ and DOM versions of element
base.$el = $(el);
base.el = el;
// Add a reverse reference to the DOM object
base.$el.data("gsb.printlink", base);
base.init = function () {
base.options = $.extend({}, $.gsb.printlink.defaultOptions, options);
//Initialization Code
base.$el.gsb_responsiveListener(base);
};
base._printlink = function () {
if (!base.$el.length) {
return;
}
if ($('#' + base.options.printlink_id).length == 0) {
pattern = $('