
/**
 * Google Preview
 *
 * @author Ryan Chase
 * @version 1.0
 * @url http://www.blastam.com/blog/index.php/2013/03/how-to-track-downloads-in-google-analytics-v2
 */
document.addEventListener('DOMContentLoaded', function(event) {
  var filetypes = /\.(zip|exe|dmg|pdf|doc.*|xls.*|ppt.*|mp3|txt|rar|wma|mov|avi|wmv|flv|wav)$/i;

  document.querySelector('a').addEventListener('click', function(event) {
    var track = true,
      href = this.href,
      isThisDomain = href.match(document.domain.split('.').reverse()[1] + '.' + document.domain.split('.').reverse()[0]);

    if(!href.match(/^javascript:/i)) {
      var elEv = [];
      elEv.value = 0, elEv.non_i = false;
      if(href.match(/^mailto\:/i)) {
        elEv.category = "email";
        elEv.action = "click";
        elEv.label = href.replace(/^mailto\:/i, '');
        elEv.loc = href;
      } else if(href.match(filetypes)) {
        var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
        elEv.category = "download";
        elEv.action = "click-" + extension[0];
        elEv.label = href.replace(/ /g, "-");
        elEv.loc = href;
      } else if(href.match(/^https?\:/i) && !isThisDomain) {
        elEv.category = "external";
        elEv.action = "click";
        elEv.label = href.replace(/^https?\:\/\//i, '');
        elEv.non_i = true;
        elEv.loc = href;
      } else if(href.match(/^tel\:/i)) {
        elEv.category = "telephone";
        elEv.action = "click";
        elEv.label = href.replace(/^tel\:/i, '');
        elEv.loc = href;
      } else track = false;

      if(track) {
        ga('send', 'event', elEv.category.toLowerCase(), elEv.action.toLowerCase(), elEv.label.toLowerCase(), elEv.value, {'nonInteraction': elEv.non_i});
      }
    }
  });
});

// jQuery RoyalSlider plugin. (c) Dmitry Semenov http://dimsemenov.com
// jquery.royalslider v9.5.9
(function(l){function v(b,e){var d,a=this,c=window.navigator,g=c.userAgent.toLowerCase();a.uid=l.rsModules.uid++;a.ns=".rs"+a.uid;var f=document.createElement("div").style,h=["webkit","Moz","ms","O"],k="",m=0;for(d=0;d<h.length;d++){var p=h[d];!k&&p+"Transform"in f&&(k=p);p=p.toLowerCase();window.requestAnimationFrame||(window.requestAnimationFrame=window[p+"RequestAnimationFrame"],window.cancelAnimationFrame=window[p+"CancelAnimationFrame"]||window[p+"CancelRequestAnimationFrame"])}window.requestAnimationFrame||
(window.requestAnimationFrame=function(a,b){var c=(new Date).getTime(),d=Math.max(0,16-(c-m)),f=window.setTimeout(function(){a(c+d)},d);m=c+d;return f});window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)});a.isIPAD=g.match(/(ipad)/);a.isIOS=a.isIPAD||g.match(/(iphone|ipod)/);d=function(a){a=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||0>a.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||
[];return{browser:a[1]||"",version:a[2]||"0"}}(g);h={};d.browser&&(h[d.browser]=!0,h.version=d.version);h.chrome&&(h.webkit=!0);a._browser=h;a.isAndroid=-1<g.indexOf("android");a.slider=l(b);a.ev=l(a);a._doc=l(document);a.st=l.extend({},l.fn.royalSlider.defaults,e);a._currAnimSpeed=a.st.transitionSpeed;a._minPosOffset=0;!a.st.allowCSS3||h.webkit&&!a.st.allowCSS3OnWebkit||(d=k+(k?"T":"t"),a._useCSS3Transitions=d+"ransform"in f&&d+"ransition"in f,a._useCSS3Transitions&&(a._use3dTransform=k+(k?"P":"p")+
"erspective"in f));k=k.toLowerCase();a._vendorPref="-"+k+"-";a._slidesHorizontal="vertical"===a.st.slidesOrientation?!1:!0;a._reorderProp=a._slidesHorizontal?"left":"top";a._sizeProp=a._slidesHorizontal?"width":"height";a._prevNavItemId=-1;a._isMove="fade"===a.st.transitionType?!1:!0;a._isMove||(a.st.sliderDrag=!1,a._fadeZIndex=10);a._opacityCSS="z-index:0; display:none; opacity:0;";a._newSlideId=0;a._sPosition=0;a._nextSlidePos=0;l.each(l.rsModules,function(b,c){"uid"!==b&&c.call(a)});a.slides=[];
a._idCount=0;(a.st.slides?l(a.st.slides):a.slider.children().detach()).each(function(){a._parseNode(this,!0)});a.st.randomizeSlides&&a.slides.sort(function(){return.5-Math.random()});a.numSlides=a.slides.length;a._refreshNumPreloadImages();a.st.startSlideId?a.st.startSlideId>a.numSlides-1&&(a.st.startSlideId=a.numSlides-1):a.st.startSlideId=0;a._newSlideId=a.staticSlideId=a.currSlideId=a._realId=a.st.startSlideId;a.currSlide=a.slides[a.currSlideId];a._accelerationPos=0;a.pointerMultitouch=!1;a.slider.addClass((a._slidesHorizontal?
"rsHor":"rsVer")+(a._isMove?"":" rsFade"));f='<div class="rsOverflow"><div class="rsContainer">';a.slidesSpacing=a.st.slidesSpacing;a._slideSize=(a._slidesHorizontal?a.slider.width():a.slider.height())+a.st.slidesSpacing;a._preload=0<a._numPreloadImages;1>=a.numSlides&&(a._loop=!1);a._loopHelpers=a._loop&&a._isMove?2===a.numSlides?1:2:0;a._maxImages=6>a.numSlides?a.numSlides:6;a._currBlockIndex=0;a._idOffset=0;a.slidesJQ=[];for(d=0;d<a.numSlides;d++)a.slidesJQ.push(l('<div style="'+(a._isMove?"":
d!==a.currSlideId?a._opacityCSS:"z-index:0;")+'" class="rsSlide "></div>'));a._sliderOverflow=f=l(f+"</div></div>");k=function(b,c,d,f,e){a._downEvent=b+c;a._moveEvent=b+d;a._upEvent=b+f;e&&(a._cancelEvent=b+e)};d=c.pointerEnabled;a.pointerEnabled=d||c.msPointerEnabled;a.pointerEnabled?(a.hasTouch=!1,a._lastItemFriction=.2,a.pointerMultitouch=1<c[(d?"m":"msM")+"axTouchPoints"],d?k("pointer","down","move","up","cancel"):k("MSPointer","Down","Move","Up","Cancel")):(a.isIOS?a._downEvent=a._moveEvent=
a._upEvent=a._cancelEvent="":k("mouse","down","move","up"),"ontouchstart"in window||"createTouch"in document?(a.hasTouch=!0,a._downEvent+=" touchstart",a._moveEvent+=" touchmove",a._upEvent+=" touchend",a._cancelEvent+=" touchcancel",a._lastItemFriction=.5,a.st.sliderTouch&&(a._hasDrag=!0)):(a.hasTouch=!1,a._lastItemFriction=.2));a.st.sliderDrag&&(a._hasDrag=!0,h.msie||h.opera?a._grabCursor=a._grabbingCursor="move":h.mozilla?(a._grabCursor="-moz-grab",a._grabbingCursor="-moz-grabbing"):h.webkit&&
-1!=c.platform.indexOf("Mac")&&(a._grabCursor="-webkit-grab",a._grabbingCursor="-webkit-grabbing"),a._setGrabCursor());a.slider.html(f);a._controlsContainer=a.st.controlsInside?a._sliderOverflow:a.slider;a._slidesContainer=a._sliderOverflow.children(".rsContainer");a.pointerEnabled&&a._slidesContainer.css((d?"":"-ms-")+"touch-action",a._slidesHorizontal?"pan-y":"pan-x");a._preloader=l('<div class="rsPreloader"></div>');c=a._slidesContainer.children(".rsSlide");a._currHolder=a.slidesJQ[a.currSlideId];
a._selectedSlideHolder=0;a._eventCallbacks={dragStart:function(b){a._onDragStart(b)},dragStartThumb:function(b){a._onDragStart(b,!0)},touchmoveFix:function(){}};a._useCSS3Transitions?(a._TP="transition-property",a._TD="transition-duration",a._TTF="transition-timing-function",a._yProp=a._xProp=a._vendorPref+"transform",a._use3dTransform?(h.webkit&&!h.chrome&&a.slider.addClass("rsWebkit3d"),a._tPref1="translate3d(",a._tPref2="px, ",a._tPref3="px, 0px)"):(a._tPref1="translate(",a._tPref2="px, ",a._tPref3=
"px)"),a._isMove?a._slidesContainer[a._vendorPref+a._TP]=a._vendorPref+"transform":(h={},h[a._vendorPref+a._TP]="opacity",h[a._vendorPref+a._TD]=a.st.transitionSpeed+"ms",h[a._vendorPref+a._TTF]=a.st.css3easeInOut,c.css(h))):(a._xProp="left",a._yProp="top");a._slidesHorizontal&&a.slider.css("touch-action","pan-y");var n;l(window).on("resize"+a.ns,function(){n&&clearTimeout(n);n=setTimeout(function(){a.updateSliderSize()},50)});a.ev.trigger("rsAfterPropsSetup");a.updateSliderSize();a.st.keyboardNavEnabled&&
a._bindKeyboardNav();a.st.arrowsNavHideOnTouch&&(a.hasTouch||a.pointerMultitouch)&&(a.st.arrowsNav=!1);a.st.arrowsNav&&(c=a._controlsContainer,l('<div class="rsArrow rsArrowLeft"><div class="rsArrowIcn"></div></div><div class="rsArrow rsArrowRight"><div class="rsArrowIcn"></div></div>').appendTo(c),a._arrowLeft=c.children(".rsArrowLeft").click(function(b){b.preventDefault();a.prev()}),a._arrowRight=c.children(".rsArrowRight").click(function(b){b.preventDefault();a.next()}),a.st.arrowsNavAutoHide&&
!a.hasTouch&&(a._arrowLeft.addClass("rsHidden"),a._arrowRight.addClass("rsHidden"),c.one("mousemove.arrowshover",function(){a._arrowLeft.removeClass("rsHidden");a._arrowRight.removeClass("rsHidden")}),c.hover(function(){a._arrowsAutoHideLocked||(a._arrowLeft.removeClass("rsHidden"),a._arrowRight.removeClass("rsHidden"))},function(){a._arrowsAutoHideLocked||(a._arrowLeft.addClass("rsHidden"),a._arrowRight.addClass("rsHidden"))})),a.ev.on("rsOnUpdateNav",function(){a._updateArrowsNav()}),a._updateArrowsNav());
a.hasTouch&&a.st.sliderTouch||!a.hasTouch&&a.st.sliderDrag?(a._bindPassiveEvent(a._slidesContainer[0],a._downEvent,a._eventCallbacks.dragStart,!1),a._bindPassiveEvent(a.slider[0],a._moveEvent,a._eventCallbacks.touchmoveFix,!1)):a.dragSuccess=!1;var r=["rsPlayBtnIcon","rsPlayBtn","rsCloseVideoBtn","rsCloseVideoIcn"];a._slidesContainer.click(function(b){if(!a.dragSuccess){var c=l(b.target).attr("class");if(-1!==l.inArray(c,r)&&a.toggleVideo())return!1;if(a.st.navigateByClick&&!a._blockActions){if(l(b.target).closest(".rsNoDrag",
a._currHolder).length)return!0;a._mouseNext(b)}a.ev.trigger("rsSlideClick",b)}}).on("click.rs","a",function(b){if(a.dragSuccess)return!1;a._blockActions=!0;setTimeout(function(){a._blockActions=!1},3)});a.ev.trigger("rsAfterInit")}l.rsModules||(l.rsModules={uid:0});v.prototype={constructor:v,_mouseNext:function(b){b=b[this._slidesHorizontal?"pageX":"pageY"]-this._sliderOffset;b>=this._nextSlidePos?this.next():0>b&&this.prev()},_refreshNumPreloadImages:function(){var b=this.st.numImagesToPreload;if(this._loop=
this.st.loop)2===this.numSlides?(this._loop=!1,this.st.loopRewind=!0):2>this.numSlides&&(this.st.loopRewind=this._loop=!1);this._loop&&0<b&&(4>=this.numSlides?b=1:this.st.numImagesToPreload>(this.numSlides-1)/2&&(b=Math.floor((this.numSlides-1)/2)));this._numPreloadImages=b},_parseNode:function(b,e){function d(b,d){d?c.images.push(b.attr(d)):c.images.push(b.text());if(g){g=!1;c.caption="src"===d?b.attr("alt"):b.contents();c.image=c.images[0];c.videoURL=b.attr("data-rsVideo");var f=b.attr("data-rsw"),
e=b.attr("data-rsh");"undefined"!==typeof f&&!1!==f&&"undefined"!==typeof e&&!1!==e?(c.iW=parseInt(f,10),c.iH=parseInt(e,10)):a.st.imgWidth&&a.st.imgHeight&&(c.iW=a.st.imgWidth,c.iH=a.st.imgHeight)}}var a=this,c={},g=!0;b=l(b);a._currContent=b;a.ev.trigger("rsBeforeParseNode",[b,c]);if(!c.stopParsing){b=a._currContent;c.id=a._idCount;c.contentAdded=!1;a._idCount++;c.images=[];c.isBig=!1;if(!c.hasCover){if(b.hasClass("rsImg")){var f=b;var h=!0}else f=b.find(".rsImg"),f.length&&(h=!0);h?(c.bigImage=
f.eq(0).attr("data-rsBigImg"),f.each(function(){var a=l(this);a.is("a")?d(a,"href"):a.is("img")?d(a,"src"):d(a)})):b.is("img")&&(b.addClass("rsImg rsMainSlideImage"),d(b,"src"))}f=b.find(".rsCaption");f.length&&(c.caption=f.remove());c.content=b;a.ev.trigger("rsAfterParseNode",[b,c]);e&&a.slides.push(c);0===c.images.length&&(c.isLoaded=!0,c.isRendered=!1,c.isLoading=!1,c.images=null);return c}},_bindKeyboardNav:function(){var b=this,e,d,a=function(a){37===a?b.prev():39===a&&b.next()};b._doc.on("keydown"+
b.ns,function(c){if(!b.st.keyboardNavEnabled)return!0;if(!(b._isDragging||(d=c.keyCode,37!==d&&39!==d||e))){if(document.activeElement&&/(INPUT|SELECT|TEXTAREA)/i.test(document.activeElement.tagName))return!0;b.isFullscreen&&c.preventDefault();a(d);e=setInterval(function(){a(d)},700)}}).on("keyup"+b.ns,function(a){e&&(clearInterval(e),e=null)})},goTo:function(b,e){b!==this.currSlideId&&this._moveTo(b,this.st.transitionSpeed,!0,!e)},destroy:function(b){this.ev.trigger("rsBeforeDestroy");this._doc.off("keydown"+
this.ns+" keyup"+this.ns);this._eventCallbacks.dragMove&&(this._unbindPassiveEvent(document,this._moveEvent,this._eventCallbacks.dragMove,!0),this._unbindPassiveEvent(document,this._upEvent,this._eventCallbacks.dragRelease,!0));this._eventCallbacks.downEvent&&(this._unbindPassiveEvent(this._slidesContainer[0],this._downEvent,this._eventCallbacks.dragStart,!1),this._unbindPassiveEvent(this.slider[0],this._moveEvent,this._eventCallbacks.touchmoveFix,!1));this._slidesContainer.off(this._downEvent+" click");
this.slider.data("royalSlider",null);l.removeData(this.slider,"royalSlider");l(window).off("resize"+this.ns);this.loadingTimeout&&clearTimeout(this.loadingTimeout);b&&this.slider.remove();this.ev=this.slider=this.slides=null},_updateBlocksContent:function(b,e){function d(d,e,g){d.isAdded?(a(e,d),c(e,d)):(g||(g=f.slidesJQ[e]),d.holder?g=d.holder:(g=f.slidesJQ[e]=l(g),d.holder=g),d.appendOnLoaded=!1,c(e,d,g),a(e,d),f._addBlockToContainer(d,g,b),d.isAdded=!0)}function a(a,c){c.contentAdded||(f.setItemHtml(c,
b),b||(c.contentAdded=!0))}function c(a,b,c){f._isMove&&(c||(c=f.slidesJQ[a]),c.css(f._reorderProp,(a+f._idOffset+x)*f._slideSize))}function g(a){if(m){if(a>p-1)return g(a-p);if(0>a)return g(p+a)}return a}var f=this,h,k,m=f._loop,p=f.numSlides;if(!isNaN(e))return g(e);var n=f.currSlideId,r=b?Math.abs(f._prevSlideId-f.currSlideId)>=f.numSlides-1?0:1:f._numPreloadImages,t=Math.min(2,r),w=!1,u=!1;for(k=n;k<n+1+t;k++){var q=g(k);if((h=f.slides[q])&&(!h.isAdded||!h.positionSet)){w=!0;break}}for(k=n-1;k>
n-1-t;k--)if(q=g(k),(h=f.slides[q])&&(!h.isAdded||!h.positionSet)){u=!0;break}if(w)for(k=n;k<n+r+1;k++){q=g(k);var x=Math.floor((f._realId-(n-k))/f.numSlides)*f.numSlides;(h=f.slides[q])&&d(h,q)}if(u)for(k=n-1;k>n-1-r;k--)q=g(k),x=Math.floor((f._realId-(n-k))/p)*p,(h=f.slides[q])&&d(h,q);if(!b)for(t=g(n-r),n=g(n+r),r=t>n?0:t,k=0;k<p;k++)t>n&&k>t-1||!(k<r||k>n)||(h=f.slides[k])&&h.holder&&(h.holder.detach(),h.isAdded=!1)},setItemHtml:function(b,e){var d=this,a=function(){if(!b.images)b.isRendered=
!0,b.isLoaded=!0,b.isLoading=!1,f(!0);else if(!b.isLoading){if(b.content.hasClass("rsImg")){var a=b.content;var e=!0}else a=b.content.find(".rsImg:not(img)");a&&!a.is("img")&&a.each(function(){var a=l(this),c='<img class="rsImg" src="'+(a.is("a")?a.attr("href"):a.text())+'" />';e?b.content=l(c):a.replaceWith(c)});a=e?b.content:b.content.find("img.rsImg");k();a.eq(0).addClass("rsMainSlideImage");b.iW&&b.iH&&(b.isLoaded||d._resizeImage(b),f());b.isLoading=!0;if(b.isBig)l("<img />").on("load.rs error.rs",
function(a){l(this).off("load.rs error.rs");c([this],!0)}).attr("src",b.image);else{b.loaded=[];b.numStartedLoad=0;a=function(a){l(this).off("load.rs error.rs");b.loaded.push(this);b.loaded.length===b.numStartedLoad&&c(b.loaded,!1)};for(var g=0;g<b.images.length;g++){var h=l("<img />");b.numStartedLoad++;h.on("load.rs error.rs",a).attr("src",b.images[g])}}}},c=function(a,c){if(a.length){var d=a[0];if(c!==b.isBig)(d=b.holder.children())&&1<d.length&&m();else if(b.iW&&b.iH)g();else if(b.iW=d.width,
b.iH=d.height,b.iW&&b.iH)g();else{var e=new Image;e.onload=function(){e.width?(b.iW=e.width,b.iH=e.height,g()):setTimeout(function(){e.width&&(b.iW=e.width,b.iH=e.height);g()},1E3)};e.src=d.src}}else g()},g=function(){b.isLoaded=!0;b.isLoading=!1;f();m();h()},f=function(){if(!b.isAppended&&d.ev){var a=d.st.visibleNearby,c=b.id-d._newSlideId;e||b.appendOnLoaded||!d.st.fadeinLoadedSlide||0!==c&&(!(a||d._isAnimating||d._isDragging)||-1!==c&&1!==c)||(a={visibility:"visible",opacity:0},a[d._vendorPref+
"transition"]="opacity 400ms ease-in-out",b.content.css(a),setTimeout(function(){b.content.css("opacity",1)},16));b.holder.find(".rsPreloader").length?b.holder.append(b.content):b.holder.html(b.content);b.isAppended=!0;b.isLoaded&&(d._resizeImage(b),h());b.sizeReady||(b.sizeReady=!0,setTimeout(function(){d.ev.trigger("rsMaybeSizeReady",b)},100))}},h=function(){!b.loadedTriggered&&d.ev&&(b.isLoaded=b.loadedTriggered=!0,b.holder.trigger("rsAfterContentSet"),d.ev.trigger("rsAfterContentSet",b))},k=function(){d.st.usePreloader&&
b.holder.html(d._preloader.clone())},m=function(a){d.st.usePreloader&&(a=b.holder.find(".rsPreloader"),a.length&&a.remove())};b.isLoaded?f():e?!d._isMove&&b.images&&b.iW&&b.iH?a():(b.holder.isWaiting=!0,k(),b.holder.slideId=-99):a()},_addBlockToContainer:function(b,e,d){this._slidesContainer.append(b.holder);b.appendOnLoaded=!1},_onDragStart:function(b,e){var d=this,a="touchstart"===b.type;d._isTouchGesture=a;d.ev.trigger("rsDragStart");if(l(b.target).closest(".rsNoDrag",d._currHolder).length)return d.dragSuccess=
!1,!0;!e&&d._isAnimating&&(d._wasAnimating=!0,d._stopAnimation());d.dragSuccess=!1;if(d._isDragging)a&&(d._multipleTouches=!0);else{a&&(d._multipleTouches=!1);d._setGrabbingCursor();if(a){var c=b.touches;if(c&&0<c.length){var g=c[0];1<c.length&&(d._multipleTouches=!0)}else return}else g=b;d._isDragging=!0;d._eventCallbacks.dragMove&&(d._unbindPassiveEvent(document,d._moveEvent,d._eventCallbacks.dragMove,!0),d._unbindPassiveEvent(document,d._upEvent,d._eventCallbacks.dragRelease,!0));d._eventCallbacks.dragMove=
function(a){d._onDragMove(a,e)};d._eventCallbacks.dragRelease=function(a){d._onDragRelease(a,e)};d._bindPassiveEvent(document,d._moveEvent,d._eventCallbacks.dragMove,!0);d._bindPassiveEvent(document,d._upEvent,d._eventCallbacks.dragRelease,!0);d._currMoveAxis="";d._hasMoved=!1;d._pageX=g.pageX;d._pageY=g.pageY;d._startPagePos=d._accelerationPos=(e?d._thumbsHorizontal:d._slidesHorizontal)?g.pageX:g.pageY;d._horDir=0;d._verDir=0;d._currRenderPosition=e?d._thumbsPosition:d._sPosition;d._startTime=(new Date).getTime();
if(a)d._sliderOverflow.on(d._cancelEvent,function(a){d._onDragRelease(a,e)})}},_renderMovement:function(b,e){if(this._checkedAxis){var d=this._renderMoveTime,a=b.pageX-this._pageX,c=b.pageY-this._pageY,g=this._currRenderPosition+a,f=this._currRenderPosition+c,h=e?this._thumbsHorizontal:this._slidesHorizontal;g=h?g:f;f=this._currMoveAxis;this._hasMoved=!0;this._pageX=b.pageX;this._pageY=b.pageY;"x"===f&&0!==a?this._horDir=0<a?1:-1:"y"===f&&0!==c&&(this._verDir=0<c?1:-1);f=h?this._pageX:this._pageY;
a=h?a:c;e?g>this._thumbsMinPosition?g=this._currRenderPosition+a*this._lastItemFriction:g<this._thumbsMaxPosition&&(g=this._currRenderPosition+a*this._lastItemFriction):this._loop||(0>=this.currSlideId&&0<f-this._startPagePos&&(g=this._currRenderPosition+a*this._lastItemFriction),this.currSlideId>=this.numSlides-1&&0>f-this._startPagePos&&(g=this._currRenderPosition+a*this._lastItemFriction));this._currRenderPosition=g;200<d-this._startTime&&(this._startTime=d,this._accelerationPos=f);e?this._setThumbsPosition(this._currRenderPosition):
this._isMove&&this._setPosition(this._currRenderPosition)}},_onDragMove:function(b,e){var d=this,a="touchmove"===b.type;if(!d._isTouchGesture||a){if(a){if(d._lockAxis)return;var c=b.touches;if(c){if(1<c.length)return;var g=c[0]}else return}else g=b;d._hasMoved||(d._useCSS3Transitions&&(e?d._thumbsContainer:d._slidesContainer).css(d._vendorPref+d._TD,"0s"),function h(){d._isDragging&&(d._animFrame=requestAnimationFrame(h),d._renderMoveEvent&&d._renderMovement(d._renderMoveEvent,e))}());if(d._checkedAxis)b.preventDefault(),
d._renderMoveTime=(new Date).getTime(),d._renderMoveEvent=g;else if(c=e?d._thumbsHorizontal:d._slidesHorizontal,g=Math.abs(g.pageX-d._pageX)-Math.abs(g.pageY-d._pageY)-(c?-7:7),7<g){if(c)b.preventDefault(),d._currMoveAxis="x";else if(a){d._completeGesture(b);return}d._checkedAxis=!0}else if(-7>g){if(!c)b.preventDefault(),d._currMoveAxis="y";else if(a){d._completeGesture(b);return}d._checkedAxis=!0}}},_completeGesture:function(b,e){this._lockAxis=!0;this._hasMoved=this._isDragging=!1;this._onDragRelease(b)},
_onDragRelease:function(b,e){function d(a){return 100>a?100:500<a?500:a}function a(a,b){if(c._isMove||e)u=(-c._realId-c._idOffset)*c._slideSize,g=Math.abs(c._sPosition-u),c._currAnimSpeed=g/b,a&&(c._currAnimSpeed+=250),c._currAnimSpeed=d(c._currAnimSpeed),c._animateTo(u,!1)}var c=this,g;var f=-1<b.type.indexOf("touch");if(!c._isTouchGesture||f)if(c._isTouchGesture=!1,c.ev.trigger("rsDragRelease"),c._renderMoveEvent=null,c._isDragging=!1,c._lockAxis=!1,c._checkedAxis=!1,c._renderMoveTime=0,cancelAnimationFrame(c._animFrame),
c._hasMoved&&(e?c._setThumbsPosition(c._currRenderPosition):c._isMove&&c._setPosition(c._currRenderPosition)),c._eventCallbacks.dragMove&&(c._unbindPassiveEvent(document,c._moveEvent,c._eventCallbacks.dragMove,!0),c._unbindPassiveEvent(document,c._upEvent,c._eventCallbacks.dragRelease,!0)),f&&c._sliderOverflow.off(c._cancelEvent),c._setGrabCursor(),!c._hasMoved&&!c._multipleTouches&&e&&c._thumbsEnabled){var h=l(b.target).closest(".rsNavItem");h.length&&c.goTo(h.index())}else{h=e?c._thumbsHorizontal:
c._slidesHorizontal;if(!c._hasMoved||"y"===c._currMoveAxis&&h||"x"===c._currMoveAxis&&!h)if(!e&&c._wasAnimating){c._wasAnimating=!1;if(c.st.navigateByClick){c._mouseNext(b);c.dragSuccess=!0;return}c.dragSuccess=!0}else{c._wasAnimating=!1;c.dragSuccess=!1;return}else c.dragSuccess=!0;c._wasAnimating=!1;c._currMoveAxis="";var k=c.st.minSlideOffset;f=f?b.changedTouches[0]:b;var m=h?f.pageX:f.pageY,p=c._startPagePos,n=c.currSlideId,r=c.numSlides,t=h?c._horDir:c._verDir,v=c._loop;f=m-c._accelerationPos;
h=(new Date).getTime()-c._startTime;h=Math.abs(f)/h;if(0===t||1>=r)a(!0,h);else{if(!v&&!e)if(0>=n){if(0<t){a(!0,h);return}}else if(n>=r-1&&0>t){a(!0,h);return}if(e){var u=c._thumbsPosition;if(u>c._thumbsMinPosition)u=c._thumbsMinPosition;else if(u<c._thumbsMaxPosition)u=c._thumbsMaxPosition;else{m=h*h/.006;var q=-c._thumbsPosition;p=c._thumbsContainerSize-c._thumbsViewportSize+c._thumbsPosition;0<f&&m>q?(q+=c._thumbsViewportSize/(15/(m/h*.003)),h=h*q/m,m=q):0>f&&m>p&&(p+=c._thumbsViewportSize/(15/
(m/h*.003)),h=h*p/m,m=p);q=Math.max(Math.round(h/.003),50);u+=m*(0>f?-1:1);if(u>c._thumbsMinPosition){c._animateThumbsTo(u,q,!0,c._thumbsMinPosition,200);return}if(u<c._thumbsMaxPosition){c._animateThumbsTo(u,q,!0,c._thumbsMaxPosition,200);return}}c._animateThumbsTo(u,q,!0)}else q=function(a){var b=Math.floor(a/c._slideSize);a-b*c._slideSize>k&&b++;return b},p+k<m?0>t?a(!1,h):(q=q(m-p),c._moveTo(c.currSlideId-q,d(Math.abs(c._sPosition-(-c._realId-c._idOffset+q)*c._slideSize)/h),!1,!0,!0)):p-k>m?0<
t?a(!1,h):(q=q(p-m),c._moveTo(c.currSlideId+q,d(Math.abs(c._sPosition-(-c._realId-c._idOffset-q)*c._slideSize)/h),!1,!0,!0)):a(!1,h)}}},_setPosition:function(b){b=this._sPosition=b;this._useCSS3Transitions?this._slidesContainer.css(this._xProp,this._tPref1+(this._slidesHorizontal?b+this._tPref2+0:0+this._tPref2+b)+this._tPref3):this._slidesContainer.css(this._slidesHorizontal?this._xProp:this._yProp,b)},updateSliderSize:function(b){if(this.slider){if(this.st.autoScaleSlider){var e=this.st.autoScaleSliderWidth,
d=this.st.autoScaleSliderHeight;if(this.st.autoScaleHeight){var a=this.slider.width();a!=this.width&&(this.slider.css("height",d/e*a),a=this.slider.width());var c=this.slider.height()}else c=this.slider.height(),c!=this.height&&(this.slider.css("width",e/d*c),c=this.slider.height()),a=this.slider.width()}else a=this.slider.width(),c=this.slider.height();if(b||a!=this.width||c!=this.height){this.width=a;this.height=c;this._wrapWidth=a;this._wrapHeight=c;this.ev.trigger("rsBeforeSizeSet");this.ev.trigger("rsAfterSizePropSet");
this._sliderOverflow.css({width:this._wrapWidth,height:this._wrapHeight});this._slideSize=(this._slidesHorizontal?this._wrapWidth:this._wrapHeight)+this.st.slidesSpacing;this._imagePadding=this.st.imageScalePadding;for(a=0;a<this.slides.length;a++)b=this.slides[a],b.positionSet=!1,b&&b.images&&b.isLoaded&&(b.isRendered=!1,this._resizeImage(b));if(this._cloneHolders)for(a=0;a<this._cloneHolders.length;a++)b=this._cloneHolders[a],b.holder.css(this._reorderProp,(b.id+this._idOffset)*this._slideSize);
this._updateBlocksContent();this._isMove&&(this._useCSS3Transitions&&this._slidesContainer.css(this._vendorPref+"transition-duration","0s"),this._setPosition((-this._realId-this._idOffset)*this._slideSize));this.ev.trigger("rsOnUpdateNav")}this._sliderOffset=this._sliderOverflow.offset();this._sliderOffset=this._sliderOffset[this._reorderProp]}},appendSlide:function(b,e){var d=this._parseNode(b);if(isNaN(e)||e>this.numSlides)e=this.numSlides;this.slides.splice(e,0,d);this.slidesJQ.splice(e,0,l('<div style="'+
(this._isMove?"position:absolute;":this._opacityCSS)+'" class="rsSlide"></div>'));e<=this.currSlideId&&this.currSlideId++;this.ev.trigger("rsOnAppendSlide",[d,e]);this._refreshSlides(e);e===this.currSlideId&&this.ev.trigger("rsAfterSlideChange")},removeSlide:function(b){var e=this.slides[b];e&&(e.holder&&e.holder.remove(),b<this.currSlideId&&this.currSlideId--,this.slides.splice(b,1),this.slidesJQ.splice(b,1),this.ev.trigger("rsOnRemoveSlide",[b]),this._refreshSlides(b),b===this.currSlideId&&this.ev.trigger("rsAfterSlideChange"))},
_refreshSlides:function(b){var e=this;b=e.numSlides;b=0>=e._realId?0:Math.floor(e._realId/b);e.numSlides=e.slides.length;0===e.numSlides?(e.currSlideId=e._idOffset=e._realId=0,e.currSlide=e._oldHolder=null):e._realId=b*e.numSlides+e.currSlideId;for(b=0;b<e.numSlides;b++)e.slides[b].id=b;e.currSlide=e.slides[e.currSlideId];e._currHolder=e.slidesJQ[e.currSlideId];e.currSlideId>=e.numSlides?e.goTo(e.numSlides-1):0>e.currSlideId&&e.goTo(0);e._refreshNumPreloadImages();e._isMove&&e._slidesContainer.css(e._vendorPref+
e._TD,"0ms");e._refreshSlidesTimeout&&clearTimeout(e._refreshSlidesTimeout);e._refreshSlidesTimeout=setTimeout(function(){e._isMove&&e._setPosition((-e._realId-e._idOffset)*e._slideSize);e._updateBlocksContent();e._isMove||e._currHolder.css({display:"block",opacity:1})},14);e.ev.trigger("rsOnUpdateNav")},_setGrabCursor:function(){this._hasDrag&&this._isMove&&(this._grabCursor?this._sliderOverflow.css("cursor",this._grabCursor):(this._sliderOverflow.removeClass("grabbing-cursor"),this._sliderOverflow.addClass("grab-cursor")))},
_setGrabbingCursor:function(){this._hasDrag&&this._isMove&&(this._grabbingCursor?this._sliderOverflow.css("cursor",this._grabbingCursor):(this._sliderOverflow.removeClass("grab-cursor"),this._sliderOverflow.addClass("grabbing-cursor")))},next:function(b){this._moveTo("next",this.st.transitionSpeed,!0,!b)},prev:function(b){this._moveTo("prev",this.st.transitionSpeed,!0,!b)},_moveTo:function(b,e,d,a,c){var g=this;g.ev.trigger("rsBeforeMove",[b,a]);var f="next"===b?g.currSlideId+1:"prev"===b?g.currSlideId-
1:b=parseInt(b,10);if(!g._loop){if(0>f){g._doBackAndForthAnim("left",!a);return}if(f>=g.numSlides){g._doBackAndForthAnim("right",!a);return}}g._isAnimating&&(g._stopAnimation(!0),d=!1);var h=f-g.currSlideId;f=g._prevSlideId=g.currSlideId;var k=g.currSlideId+h;a=g._realId;var m;g._loop?(k=g._updateBlocksContent(!1,k),a+=h):a=k;g._newSlideId=k;g._oldHolder=g.slidesJQ[g.currSlideId];g._realId=a;g.currSlideId=g._newSlideId;g.currSlide=g.slides[g.currSlideId];g._currHolder=g.slidesJQ[g.currSlideId];k=
g.st.slidesDiff;var l=0<h;h=Math.abs(h);var n=Math.floor(f/g._numPreloadImages),r=Math.floor((f+(l?k:-k))/g._numPreloadImages);n=(l?Math.max(n,r):Math.min(n,r))*g._numPreloadImages+(l?g._numPreloadImages-1:0);n>g.numSlides-1?n=g.numSlides-1:0>n&&(n=0);f=l?n-f:f-n;f>g._numPreloadImages&&(f=g._numPreloadImages);if(h>f+k)for(g._idOffset+=(h-(f+k))*(l?-1:1),e*=1.4,f=0;f<g.numSlides;f++)g.slides[f].positionSet=!1;g._currAnimSpeed=e;g._updateBlocksContent(!0);c||(m=!0);var t=(-a-g._idOffset)*g._slideSize;
m?setTimeout(function(){g._isWorking=!1;g._animateTo(t,b,!1,d);g.ev.trigger("rsOnUpdateNav")},0):(g._animateTo(t,b,!1,d),g.ev.trigger("rsOnUpdateNav"))},_updateArrowsNav:function(){this.st.arrowsNav&&(1>=this.numSlides?(this._arrowLeft.css("display","none"),this._arrowRight.css("display","none")):(this._arrowLeft.css("display","block"),this._arrowRight.css("display","block"),this._loop||this.st.loopRewind||(0===this.currSlideId?this._arrowLeft.addClass("rsArrowDisabled"):this._arrowLeft.removeClass("rsArrowDisabled"),
this.currSlideId===this.numSlides-1?this._arrowRight.addClass("rsArrowDisabled"):this._arrowRight.removeClass("rsArrowDisabled"))))},_animateTo:function(b,e,d,a,c){function g(){var a;k&&(a=k.data("rsTimeout"))&&(k!==m&&k.css({opacity:0,display:"none",zIndex:0}),clearTimeout(a),k.data("rsTimeout",""));if(a=m.data("rsTimeout"))clearTimeout(a),m.data("rsTimeout","")}var f=this,h={};isNaN(f._currAnimSpeed)&&(f._currAnimSpeed=400);f._sPosition=f._currRenderPosition=b;f.ev.trigger("rsBeforeAnimStart");
if(f._useCSS3Transitions)if(f._isMove)f._currAnimSpeed=parseInt(f._currAnimSpeed,10),d=f._vendorPref+f._TTF,h[f._vendorPref+f._TD]=f._currAnimSpeed+"ms",h[d]=a?l.rsCSS3Easing[f.st.easeInOut]:l.rsCSS3Easing[f.st.easeOut],f._slidesContainer.css(h),a||!f.hasTouch?setTimeout(function(){f._setPosition(b)},5):f._setPosition(b);else{f._currAnimSpeed=f.st.transitionSpeed;var k=f._oldHolder;var m=f._currHolder;m.data("rsTimeout")&&m.css("opacity",0);g();k&&k.data("rsTimeout",setTimeout(function(){h[f._vendorPref+
f._TD]="0ms";h.zIndex=0;h.display="none";k.data("rsTimeout","");k.css(h);setTimeout(function(){k.css("opacity",0)},16)},f._currAnimSpeed+60));h.display="block";h.zIndex=f._fadeZIndex;h.opacity=0;h[f._vendorPref+f._TD]="0ms";h[f._vendorPref+f._TTF]=l.rsCSS3Easing[f.st.easeInOut];m.css(h);m.data("rsTimeout",setTimeout(function(){m.css(f._vendorPref+f._TD,f._currAnimSpeed+"ms");m.data("rsTimeout",setTimeout(function(){m.css("opacity",1);m.data("rsTimeout","")},20))},20))}else f._isMove?(h[f._slidesHorizontal?
f._xProp:f._yProp]=b+"px",f._slidesContainer.animate(h,f._currAnimSpeed,a?f.st.easeInOut:f.st.easeOut)):(k=f._oldHolder,m=f._currHolder,m.stop(!0,!0).css({opacity:0,display:"block",zIndex:f._fadeZIndex}),f._currAnimSpeed=f.st.transitionSpeed,m.animate({opacity:1},f._currAnimSpeed,f.st.easeInOut),g(),k&&k.data("rsTimeout",setTimeout(function(){k.stop(!0,!0).css({opacity:0,display:"none",zIndex:0})},f._currAnimSpeed+60)));f._isAnimating=!0;f.loadingTimeout&&clearTimeout(f.loadingTimeout);f.loadingTimeout=
c?setTimeout(function(){f.loadingTimeout=null;c.call()},f._currAnimSpeed+60):setTimeout(function(){f.loadingTimeout=null;f._animationComplete(e)},f._currAnimSpeed+60)},_stopAnimation:function(b){this._isAnimating=!1;clearTimeout(this.loadingTimeout);if(this._isMove)if(!this._useCSS3Transitions)this._slidesContainer.stop(!0),this._sPosition=parseInt(this._slidesContainer.css(this._slidesHorizontal?this._xProp:this._yProp),10);else{if(!b){b=this._sPosition;var e=this._currRenderPosition=this._getTransformProp();
this._slidesContainer.css(this._vendorPref+this._TD,"0ms");b!==e&&this._setPosition(e)}}else 20<this._fadeZIndex?this._fadeZIndex=10:this._fadeZIndex++},_getTransformProp:function(){var b=window.getComputedStyle(this._slidesContainer.get(0),null).getPropertyValue(this._vendorPref+"transform").replace(/^matrix\(/i,"").split(/, |\)$/g),e=0===b[0].indexOf("matrix3d");return parseInt(b[this._slidesHorizontal?e?12:4:e?13:5],10)},_getCSS3Prop:function(b,e){return this._useCSS3Transitions?this._tPref1+(e?
b+this._tPref2+0:0+this._tPref2+b)+this._tPref3:b},_animationComplete:function(b){this._isMove||(this._currHolder.css("z-index",0),this._fadeZIndex=10);this._isAnimating=!1;this.staticSlideId=this.currSlideId;this._updateBlocksContent();this._slidesMoved=!1;this.ev.trigger("rsAfterSlideChange")},_doBackAndForthAnim:function(b,e){var d=this,a=(-d._realId-d._idOffset)*d._slideSize;if(0!==d.numSlides&&!d._isAnimating)if(d.st.loopRewind)d.goTo("left"===b?d.numSlides-1:0,e);else if(d._isMove){d._currAnimSpeed=
200;var c=function(){d._isAnimating=!1};d._animateTo(a+("left"===b?30:-30),"",!1,!0,function(){d._isAnimating=!1;d._animateTo(a,"",!1,!0,c)})}},_detectPassiveSupport:function(){var b=this;if(!b._passiveChecked){b._passiveChecked=!0;b._passiveParam=!1;try{var e=Object.defineProperty({},"passive",{get:function(){b._passiveParam={passive:!1}}});window.addEventListener("testPassive",null,e);window.removeEventListener("testPassive",null,e)}catch(d){}}},_bindPassiveEvent:function(b,e,d,a){this._detectPassiveSupport();
e=e.split(" ");for(var c=0;c<e.length;c++)e[c]&&2<e[c].length&&b.addEventListener(e[c],d,a?this._passiveParam:!1)},_unbindPassiveEvent:function(b,e,d,a){this._detectPassiveSupport();e=e.split(" ");for(var c=0;c<e.length;c++)e[c]&&2<e[c].length&&b.removeEventListener(e[c],d,a?this._passiveParam:!1)},_resizeImage:function(b,e){if(!b.isRendered){var d=b.content,a="rsMainSlideImage",c=l.isFunction(this.st.imageAlignCenter)?this.st.imageAlignCenter(b):this.st.imageAlignCenter,g=l.isFunction(this.st.imageScaleMode)?
this.st.imageScaleMode(b):this.st.imageScaleMode;if(b.videoURL)if(a="rsVideoContainer","fill"!==g)var f=!0;else{var h=d;h.hasClass(a)||(h=h.find("."+a));h.css({width:"100%",height:"100%"});a="rsMainSlideImage"}d.hasClass(a)||(d=d.find("."+a));if(d){var k=b.iW,m=b.iH;b.isRendered=!0;if("none"!==g||c){a="fill"!==g?this._imagePadding:0;h=this._wrapWidth-2*a;var p=this._wrapHeight-2*a,n={};"fit-if-smaller"===g&&(k>h||m>p)&&(g="fit");if("fill"===g||"fit"===g){var r=h/k;var t=p/m;r="fill"==g?r>t?r:t:"fit"==
g?r<t?r:t:1;k=Math.ceil(k*r,10);m=Math.ceil(m*r,10)}"none"!==g&&(n.width=k,n.height=m,f&&d.find(".rsImg").css({width:"100%",height:"100%"}));c&&(n.marginLeft=Math.floor((h-k)/2)+a,n.marginTop=Math.floor((p-m)/2)+a);d.css(n)}}}}};l.rsProto=v.prototype;l.fn.royalSlider=function(b){var e=arguments;return this.each(function(){var d=l(this);if("object"!==typeof b&&b){if((d=d.data("royalSlider"))&&d[b])return d[b].apply(d,Array.prototype.slice.call(e,1))}else d.data("royalSlider")||d.data("royalSlider",
new v(d,b))})};l.fn.royalSlider.defaults={slidesSpacing:8,startSlideId:0,loop:!1,loopRewind:!1,numImagesToPreload:4,fadeinLoadedSlide:!0,slidesOrientation:"horizontal",transitionType:"move",transitionSpeed:600,controlNavigation:"bullets",controlsInside:!0,arrowsNav:!0,arrowsNavAutoHide:!0,navigateByClick:!0,randomizeSlides:!1,sliderDrag:!0,sliderTouch:!0,keyboardNavEnabled:!1,fadeInAfterLoaded:!0,allowCSS3:!0,allowCSS3OnWebkit:!0,addActiveClass:!1,autoHeight:!1,easeOut:"easeOutSine",easeInOut:"easeInOutSine",
minSlideOffset:10,imageScaleMode:"fit-if-smaller",imageAlignCenter:!0,imageScalePadding:4,usePreloader:!0,autoScaleSlider:!1,autoScaleSliderWidth:800,autoScaleSliderHeight:400,autoScaleHeight:!0,arrowsNavHideOnTouch:!1,globalCaption:!1,slidesDiff:2};l.rsCSS3Easing={easeOutSine:"cubic-bezier(0.390, 0.575, 0.565, 1.000)",easeInOutSine:"cubic-bezier(0.445, 0.050, 0.550, 0.950)"};l.extend(jQuery.easing,{easeInOutSine:function(b,e,d,a,c){return-a/2*(Math.cos(Math.PI*e/c)-1)+d},easeOutSine:function(b,e,
d,a,c){return a*Math.sin(e/c*(Math.PI/2))+d},easeOutCubic:function(b,e,d,a,c){return a*((e=e/c-1)*e*e+1)+d}})})(jQuery,window);
// jquery.rs.bullets v1.0.1
(function(c){c.extend(c.rsProto,{_initBullets:function(){var a=this;"bullets"===a.st.controlNavigation&&(a.ev.one("rsAfterPropsSetup",function(){a._controlNavEnabled=!0;a.slider.addClass("rsWithBullets");for(var b='<div class="rsNav rsBullets">',e=0;e<a.numSlides;e++)b+='<div class="rsNavItem rsBullet"><span></span></div>';a._controlNav=b=c(b+"</div>");a._controlNavItems=b.appendTo(a.slider).children();a._controlNav.on("click.rs",".rsNavItem",function(b){a._thumbsDrag||a.goTo(c(this).index())})}),
a.ev.on("rsOnAppendSlide",function(b,c,d){d>=a.numSlides?a._controlNav.append('<div class="rsNavItem rsBullet"><span></span></div>'):a._controlNavItems.eq(d).before('<div class="rsNavItem rsBullet"><span></span></div>');a._controlNavItems=a._controlNav.children()}),a.ev.on("rsOnRemoveSlide",function(b,c){var d=a._controlNavItems.eq(c);d&&d.length&&(d.remove(),a._controlNavItems=a._controlNav.children())}),a.ev.on("rsOnUpdateNav",function(){var b=a.currSlideId;a._prevNavItem&&a._prevNavItem.removeClass("rsNavSelected");
b=a._controlNavItems.eq(b);b.addClass("rsNavSelected");a._prevNavItem=b}))}});c.rsModules.bullets=c.rsProto._initBullets})(jQuery);// jquery.rs.thumbnails v1.0.9
(function(g){g.extend(g.rsProto,{_initThumbs:function(){var a=this;"thumbnails"===a.st.controlNavigation&&(a._thumbsDefaults={drag:!0,touch:!0,orientation:"horizontal",navigation:!0,arrows:!0,arrowLeft:null,arrowRight:null,spacing:4,arrowsAutoHide:!1,appendSpan:!1,transitionSpeed:600,autoCenter:!0,fitInViewport:!0,firstMargin:!0,paddingTop:0,paddingBottom:0},a.st.thumbs=g.extend({},a._thumbsDefaults,a.st.thumbs),a._firstThumbMoved=!0,!1===a.st.thumbs.firstMargin?a.st.thumbs.firstMargin=0:!0===a.st.thumbs.firstMargin&&
(a.st.thumbs.firstMargin=a.st.thumbs.spacing),a.ev.on("rsBeforeParseNode",function(a,b,c){b=g(b);c.thumbnail=b.find(".rsTmb").remove();c.thumbnail.length?c.thumbnail=g(document.createElement("div")).append(c.thumbnail).html():(c.thumbnail=b.attr("data-rsTmb"),c.thumbnail||(c.thumbnail=b.find(".rsImg").attr("data-rsTmb")),c.thumbnail=c.thumbnail?'<img src="'+c.thumbnail+'"/>':"")}),a.ev.one("rsAfterPropsSetup",function(){a._createThumbs()}),a._prevNavItem=null,a.ev.on("rsOnUpdateNav",function(){var d=
g(a._controlNavItems[a.currSlideId]);d!==a._prevNavItem&&(a._prevNavItem&&(a._prevNavItem.removeClass("rsNavSelected"),a._prevNavItem=null),a._thumbsNavigation&&a._setCurrentThumb(a.currSlideId),a._prevNavItem=d.addClass("rsNavSelected"))}),a.ev.on("rsOnAppendSlide",function(d,b,c){d="<div"+a._thumbsMargin+' class="rsNavItem rsThumb">'+a._addThumbHTML+b.thumbnail+"</div>";a._useCSS3Transitions&&a._thumbsContainer.css(a._vendorPref+"transition-duration","0ms");c>=a.numSlides?a._thumbsContainer.append(d):
a._controlNavItems.eq(c).before(d);a._controlNavItems=a._thumbsContainer.children();a.updateThumbsSize(!0)}),a.ev.on("rsOnRemoveSlide",function(d,b){var c=a._controlNavItems.eq(b);c&&(a._useCSS3Transitions&&a._thumbsContainer.css(a._vendorPref+"transition-duration","0ms"),c.remove(),a._controlNavItems=a._thumbsContainer.children(),a.updateThumbsSize(!0))}))},_createThumbs:function(){var a=this,d="rsThumbs",b=a.st.thumbs,c="",f,e=b.spacing;a._controlNavEnabled=!0;a._thumbsHorizontal="vertical"===b.orientation?
!1:!0;a._thumbsMargin=f=e?' style="margin-'+(a._thumbsHorizontal?"right":"bottom")+":"+e+'px;"':"";a._thumbsPosition=0;a._isThumbsAnimating=!1;a._thumbsDrag=!1;a._thumbsNavigation=!1;a._thumbsArrows=b.arrows&&b.navigation;var h=a._thumbsHorizontal?"Hor":"Ver";a.slider.addClass("rsWithThumbs rsWithThumbs"+h);c+='<div class="rsNav rsThumbs rsThumbs'+h+'"><div class="'+d+'Container">';a._addThumbHTML=b.appendSpan?'<span class="thumbIco"></span>':"";for(var k=0;k<a.numSlides;k++)h=a.slides[k],c+="<div"+
f+' class="rsNavItem rsThumb">'+h.thumbnail+a._addThumbHTML+"</div>";c=g(c+"</div></div>");f={};b.paddingTop&&(f[a._thumbsHorizontal?"paddingTop":"paddingLeft"]=b.paddingTop);b.paddingBottom&&(f[a._thumbsHorizontal?"paddingBottom":"paddingRight"]=b.paddingBottom);c.css(f);a._thumbsContainer=g(c).find("."+d+"Container");a._thumbsArrows&&(d+="Arrow",b.arrowLeft?a._thumbsArrowLeft=b.arrowLeft:(a._thumbsArrowLeft=g('<div class="'+d+" "+d+'Left"><div class="'+d+'Icn"></div></div>'),c.append(a._thumbsArrowLeft)),
b.arrowRight?a._thumbsArrowRight=b.arrowRight:(a._thumbsArrowRight=g('<div class="'+d+" "+d+'Right"><div class="'+d+'Icn"></div></div>'),c.append(a._thumbsArrowRight)),a._thumbsArrowLeft.click(function(){var b=(Math.floor(a._thumbsPosition/a._thumbSize)+a._visibleThumbsPerView)*a._thumbSize+a.st.thumbs.firstMargin;a._animateThumbsTo(b>a._thumbsMinPosition?a._thumbsMinPosition:b)}),a._thumbsArrowRight.click(function(){var b=(Math.floor(a._thumbsPosition/a._thumbSize)-a._visibleThumbsPerView)*a._thumbSize+
a.st.thumbs.firstMargin;a._animateThumbsTo(b<a._thumbsMaxPosition?a._thumbsMaxPosition:b)}),b.arrowsAutoHide&&!a.hasTouch&&(a._thumbsArrowLeft.css("opacity",0),a._thumbsArrowRight.css("opacity",0),c.one("mousemove.rsarrowshover",function(){a._thumbsNavigation&&(a._thumbsArrowLeft.css("opacity",1),a._thumbsArrowRight.css("opacity",1))}),c.hover(function(){a._thumbsNavigation&&(a._thumbsArrowLeft.css("opacity",1),a._thumbsArrowRight.css("opacity",1))},function(){a._thumbsNavigation&&(a._thumbsArrowLeft.css("opacity",
0),a._thumbsArrowRight.css("opacity",0))})));a._controlNav=c;a._controlNavItems=a._thumbsContainer.children();a.msEnabled&&a.st.thumbs.navigation&&a._thumbsContainer.css("-ms-touch-action",a._thumbsHorizontal?"pan-y":"pan-x");a.slider.append(c);a._thumbsEnabled=!0;a._thumbsSpacing=e;b.navigation&&a._useCSS3Transitions&&a._thumbsContainer.css(a._vendorPref+"transition-property",a._vendorPref+"transform");a._controlNav.on("click.rs",".rsNavItem",function(b){a._thumbsDrag||a.goTo(g(this).index())});
a.ev.off("rsBeforeSizeSet.thumbs").on("rsBeforeSizeSet.thumbs",function(){a._realWrapSize=a._thumbsHorizontal?a._wrapHeight:a._wrapWidth;a.updateThumbsSize(!0)});a.ev.off("rsAutoHeightChange.thumbs").on("rsAutoHeightChange.thumbs",function(b,c){a.updateThumbsSize(!0,c)})},updateThumbsSize:function(a,d){var b=this._controlNavItems.first(),c={},f=this._controlNavItems.length;this._thumbSize=(this._thumbsHorizontal?b.outerWidth():b.outerHeight())+this._thumbsSpacing;this._thumbsContainerSize=f*this._thumbSize-
this._thumbsSpacing;c[this._thumbsHorizontal?"width":"height"]=this._thumbsContainerSize+this._thumbsSpacing;this._thumbsViewportSize=this._thumbsHorizontal?this._controlNav.width():void 0!==d?d:this._controlNav.height();this._thumbsEnabled&&(this.isFullscreen||this.st.thumbs.fitInViewport)&&(this._thumbsHorizontal?this._wrapHeight=this._realWrapSize-this._controlNav.outerHeight():this._wrapWidth=this._realWrapSize-this._controlNav.outerWidth());this._thumbsViewportSize&&(this._thumbsMaxPosition=
-(this._thumbsContainerSize-this._thumbsViewportSize)-this.st.thumbs.firstMargin,this._thumbsMinPosition=this.st.thumbs.firstMargin,this._visibleThumbsPerView=Math.floor(this._thumbsViewportSize/this._thumbSize),this._thumbsContainerSize<this._thumbsViewportSize?(this.st.thumbs.autoCenter?this._setThumbsPosition((this._thumbsViewportSize-this._thumbsContainerSize)/2):this._setThumbsPosition(this._thumbsMinPosition),this.st.thumbs.arrows&&this._thumbsArrowLeft&&(this._thumbsArrowLeft.addClass("rsThumbsArrowDisabled"),
this._thumbsArrowRight.addClass("rsThumbsArrowDisabled")),this._thumbsDrag=this._thumbsNavigation=!1,this._unbindPassiveEvent(this._controlNav[0],this._downEvent,this._eventCallbacks.dragStartThumb,!1)):this.st.thumbs.navigation&&!this._thumbsNavigation&&(this._thumbsNavigation=!0,!this.hasTouch&&this.st.thumbs.drag||this.hasTouch&&this.st.thumbs.touch)&&(this._thumbsDrag=!0,this._bindPassiveEvent(this._controlNav[0],this._downEvent,this._eventCallbacks.dragStartThumb,!1)),this._thumbsContainer.css(c),
a&&d&&this._setCurrentThumb(this.currSlideId,!0))},setThumbsOrientation:function(a,d){this._thumbsEnabled&&(this.st.thumbs.orientation=a,this._controlNav.remove(),this.slider.removeClass("rsWithThumbsHor rsWithThumbsVer"),this._createThumbs(),this._unbindPassiveEvent(this._controlNav[0],this._downEvent,this._eventCallbacks.dragStartThumb,!1),d||this.updateSliderSize(!0))},_setThumbsPosition:function(a){this._thumbsPosition=a;this._useCSS3Transitions?this._thumbsContainer.css(this._xProp,this._tPref1+
(this._thumbsHorizontal?a+this._tPref2+0:0+this._tPref2+a)+this._tPref3):this._thumbsContainer.css(this._thumbsHorizontal?this._xProp:this._yProp,a)},_animateThumbsTo:function(a,d,b,c,f){var e=this;if(e._thumbsNavigation){d||(d=e.st.thumbs.transitionSpeed);e._thumbsPosition=a;e._thumbsAnimTimeout&&clearTimeout(e._thumbsAnimTimeout);e._isThumbsAnimating&&(e._useCSS3Transitions||e._thumbsContainer.stop(),b=!0);var h={};e._isThumbsAnimating=!0;e._useCSS3Transitions?(h[e._vendorPref+"transition-duration"]=
d+"ms",h[e._vendorPref+"transition-timing-function"]=b?g.rsCSS3Easing[e.st.easeOut]:g.rsCSS3Easing[e.st.easeInOut],e._thumbsContainer.css(h),e._setThumbsPosition(a)):(h[e._thumbsHorizontal?e._xProp:e._yProp]=a+"px",e._thumbsContainer.animate(h,d,b?"easeOutCubic":e.st.easeInOut));c&&(e._thumbsPosition=c);e._updateThumbsArrows();e._thumbsAnimTimeout=setTimeout(function(){e._isThumbsAnimating=!1;f&&(e._animateThumbsTo(c,f,!0),f=null)},d)}},_updateThumbsArrows:function(){this._thumbsArrows&&(this._thumbsPosition===
this._thumbsMinPosition?this._thumbsArrowLeft.addClass("rsThumbsArrowDisabled"):this._thumbsArrowLeft.removeClass("rsThumbsArrowDisabled"),this._thumbsPosition===this._thumbsMaxPosition?this._thumbsArrowRight.addClass("rsThumbsArrowDisabled"):this._thumbsArrowRight.removeClass("rsThumbsArrowDisabled"))},_setCurrentThumb:function(a,d){var b=0,c=a*this._thumbSize+2*this._thumbSize-this._thumbsSpacing+this._thumbsMinPosition;if(this._thumbsNavigation){this._firstThumbMoved&&(d=!0,this._firstThumbMoved=
!1);if(c+this._thumbsPosition>this._thumbsViewportSize){a===this.numSlides-1&&(b=1);var f=-a+this._visibleThumbsPerView-2+b;f=f*this._thumbSize+this._thumbsViewportSize%this._thumbSize+this._thumbsSpacing-this._thumbsMinPosition}else 0!==a?(a-1)*this._thumbSize<=-this._thumbsPosition+this._thumbsMinPosition&&a-1<=this.numSlides-this._visibleThumbsPerView&&(f=(-a+1)*this._thumbSize+this._thumbsMinPosition):f=this._thumbsMinPosition;f!==this._thumbsPosition&&(b=void 0===f?this._thumbsPosition:f,b>this._thumbsMinPosition?
this._setThumbsPosition(this._thumbsMinPosition):b<this._thumbsMaxPosition?this._setThumbsPosition(this._thumbsMaxPosition):void 0!==f&&(d?this._setThumbsPosition(f):this._animateThumbsTo(f)));this._updateThumbsArrows()}}});g.rsModules.thumbnails=g.rsProto._initThumbs})(jQuery);// jquery.rs.tabs v1.0.2
(function(e){e.extend(e.rsProto,{_initTabs:function(){var a=this;"tabs"===a.st.controlNavigation&&(a.ev.on("rsBeforeParseNode",function(a,d,b){d=e(d);b.thumbnail=d.find(".rsTmb").remove();b.thumbnail.length?b.thumbnail=e(document.createElement("div")).append(b.thumbnail).html():(b.thumbnail=d.attr("data-rsTmb"),b.thumbnail||(b.thumbnail=d.find(".rsImg").attr("data-rsTmb")),b.thumbnail=b.thumbnail?'<img src="'+b.thumbnail+'"/>':"")}),a.ev.one("rsAfterPropsSetup",function(){a._createTabs()}),a.ev.on("rsOnAppendSlide",
function(c,d,b){b>=a.numSlides?a._controlNav.append('<div class="rsNavItem rsTab">'+d.thumbnail+"</div>"):a._controlNavItems.eq(b).before('<div class="rsNavItem rsTab">'+item.thumbnail+"</div>");a._controlNavItems=a._controlNav.children()}),a.ev.on("rsOnRemoveSlide",function(c,d){var b=a._controlNavItems.eq(d);b&&(b.remove(),a._controlNavItems=a._controlNav.children())}),a.ev.on("rsOnUpdateNav",function(){var c=a.currSlideId;a._prevNavItem&&a._prevNavItem.removeClass("rsNavSelected");c=a._controlNavItems.eq(c);
c.addClass("rsNavSelected");a._prevNavItem=c}))},_createTabs:function(){var a=this;a._controlNavEnabled=!0;var c='<div class="rsNav rsTabs">';for(var d=0;d<a.numSlides;d++)c+='<div class="rsNavItem rsTab">'+a.slides[d].thumbnail+"</div>";c=e(c+"</div>");a._controlNav=c;a._controlNavItems=c.children(".rsNavItem");a.slider.append(c);a._controlNav.click(function(b){b=e(b.target).closest(".rsNavItem");b.length&&a.goTo(b.index())})}});e.rsModules.tabs=e.rsProto._initTabs})(jQuery);// jquery.rs.fullscreen v1.0.6
(function(c){c.extend(c.rsProto,{_initFullscreen:function(){var a=this;a._fullscreenDefaults={enabled:!1,keyboardNav:!0,buttonFS:!0,nativeFS:!1,doubleTap:!0};a.st.fullscreen=c.extend({},a._fullscreenDefaults,a.st.fullscreen);if(a.st.fullscreen.enabled)a.ev.one("rsBeforeSizeSet",function(){a._setupFullscreen()})},_setupFullscreen:function(){var a=this;a._fsKeyboard=!a.st.keyboardNavEnabled&&a.st.fullscreen.keyboardNav;if(a.st.fullscreen.nativeFS){var b={supportsFullScreen:!1,isFullScreen:function(){return!1},
requestFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",prefix:""},d=["webkit","moz","o","ms","khtml"];if("undefined"!=typeof document.cancelFullScreen)b.supportsFullScreen=!0;else for(var e=0,f=d.length;e<f;e++)if(b.prefix=d[e],"undefined"!=typeof document[b.prefix+"CancelFullScreen"]){b.supportsFullScreen=!0;break}b.supportsFullScreen?(a.nativeFS=!0,b.fullScreenEventName=b.prefix+"fullscreenchange"+a.ns,b.isFullScreen=function(){switch(this.prefix){case "":return document.fullScreen;
case "webkit":return document.webkitIsFullScreen;default:return document[this.prefix+"FullScreen"]}},b.requestFullScreen=function(a){return""===this.prefix?a.requestFullScreen():a[this.prefix+"RequestFullScreen"]()},b.cancelFullScreen=function(a){return""===this.prefix?document.cancelFullScreen():document[this.prefix+"CancelFullScreen"]()},a._fullScreenApi=b):a._fullScreenApi=!1}a.st.fullscreen.buttonFS&&(a._fsBtn=c('<div class="rsFullscreenBtn"><div class="rsFullscreenIcn"></div></div>').appendTo(a._controlsContainer).on("click.rs",
function(){a.isFullscreen?a.exitFullscreen():a.enterFullscreen()}))},enterFullscreen:function(a){var b=this;if(b._fullScreenApi)if(a)b._fullScreenApi.requestFullScreen(c("html")[0]);else{b._doc.on(b._fullScreenApi.fullScreenEventName,function(a){b._fullScreenApi.isFullScreen()?b.enterFullscreen(!0):b.exitFullscreen(!0)});b._fullScreenApi.requestFullScreen(c("html")[0]);return}if(!b._isFullscreenUpdating){b._isFullscreenUpdating=!0;b._doc.on("keyup"+b.ns+"fullscreen",function(a){27===a.keyCode&&b.exitFullscreen()});
b._fsKeyboard&&b._bindKeyboardNav();a=c(window);b._fsScrollTopOnEnter=a.scrollTop();b._fsScrollLeftOnEnter=a.scrollLeft();b._htmlStyle=c("html").attr("style");b._bodyStyle=c("body").attr("style");b._sliderStyle=b.slider.attr("style");c("body, html").css({overflow:"hidden",height:"100%",width:"100%",margin:"0",padding:"0"});b.slider.addClass("rsFullscreen");var d;for(d=0;d<b.numSlides;d++)a=b.slides[d],a.isRendered=!1,a.bigImage&&(a.isBig=!0,a.isMedLoaded=a.isLoaded,a.isMedLoading=a.isLoading,a.medImage=
a.image,a.medIW=a.iW,a.medIH=a.iH,a.slideId=-99,a.bigImage!==a.medImage&&(a.sizeType="big"),a.isLoaded=a.isBigLoaded,a.isLoading=!1,a.image=a.bigImage,a.images[0]=a.bigImage,a.iW=a.bigIW,a.iH=a.bigIH,a.isAppended=a.contentAdded=!1,b._updateItemSrc(a));b.isFullscreen=!0;b._isFullscreenUpdating=!1;b.updateSliderSize();b.ev.trigger("rsEnterFullscreen")}},exitFullscreen:function(a){var b=this;if(b._fullScreenApi){if(!a){b._fullScreenApi.cancelFullScreen(c("html")[0]);return}b._doc.off(b._fullScreenApi.fullScreenEventName)}if(!b._isFullscreenUpdating){b._isFullscreenUpdating=
!0;b._doc.off("keyup"+b.ns+"fullscreen");b._fsKeyboard&&b._doc.off("keydown"+b.ns);c("html").attr("style",b._htmlStyle||"");c("body").attr("style",b._bodyStyle||"");var d;for(d=0;d<b.numSlides;d++)a=b.slides[d],a.isRendered=!1,a.bigImage&&(a.isBig=!1,a.slideId=-99,a.isBigLoaded=a.isLoaded,a.isBigLoading=a.isLoading,a.bigImage=a.image,a.bigIW=a.iW,a.bigIH=a.iH,a.isLoaded=a.isMedLoaded,a.isLoading=!1,a.image=a.medImage,a.images[0]=a.medImage,a.iW=a.medIW,a.iH=a.medIH,a.isAppended=a.contentAdded=!1,
b._updateItemSrc(a,!0),a.bigImage!==a.medImage&&(a.sizeType="med"));b.isFullscreen=!1;a=c(window);a.scrollTop(b._fsScrollTopOnEnter);a.scrollLeft(b._fsScrollLeftOnEnter);b._isFullscreenUpdating=!1;b.slider.removeClass("rsFullscreen");b.updateSliderSize();setTimeout(function(){b.updateSliderSize()},1);b.ev.trigger("rsExitFullscreen")}},_updateItemSrc:function(a,b){var d=a.isLoaded||a.isLoading?'<img class="rsImg rsMainSlideImage" src="'+a.image+'"/>':'<a class="rsImg rsMainSlideImage" href="'+a.image+
'"></a>';a.content.hasClass("rsImg")?a.content=c(d):a.content.find(".rsImg").eq(0).replaceWith(d);a.isLoaded||a.isLoading||!a.holder||a.holder.html(a.content)}});c.rsModules.fullscreen=c.rsProto._initFullscreen})(jQuery);// jquery.rs.autoplay v1.0.5
(function(b){b.extend(b.rsProto,{_initAutoplay:function(){var a=this,d;a._autoPlayDefaults={enabled:!1,stopAtAction:!0,pauseOnHover:!0,delay:2E3};!a.st.autoPlay&&a.st.autoplay&&(a.st.autoPlay=a.st.autoplay);a.st.autoPlay=b.extend({},a._autoPlayDefaults,a.st.autoPlay);a.st.autoPlay.enabled&&(a.ev.on("rsBeforeParseNode",function(a,c,f){c=b(c);if(d=c.attr("data-rsDelay"))f.customDelay=parseInt(d,10)}),a.ev.one("rsAfterInit",function(){a._setupAutoPlay()}),a.ev.on("rsBeforeDestroy",function(){a.stopAutoPlay();
a.slider.off("mouseenter mouseleave");b(window).off("blur"+a.ns+" focus"+a.ns)}))},_setupAutoPlay:function(){var a=this;a.startAutoPlay();a.ev.on("rsAfterContentSet",function(b,e){a._isDragging||a._isAnimating||!a._autoPlayEnabled||e!==a.currSlide||a._play()});a.ev.on("rsDragRelease",function(){a._autoPlayEnabled&&a._autoPlayPaused&&(a._autoPlayPaused=!1,a._play())});a.ev.on("rsAfterSlideChange",function(){a._autoPlayEnabled&&a._autoPlayPaused&&(a._autoPlayPaused=!1,a.currSlide.isLoaded&&a._play())});
a.ev.on("rsDragStart",function(){a._autoPlayEnabled&&(a.st.autoPlay.stopAtAction?a.stopAutoPlay():(a._autoPlayPaused=!0,a._pause()))});a.ev.on("rsBeforeMove",function(b,e,c){a._autoPlayEnabled&&(c&&a.st.autoPlay.stopAtAction?a.stopAutoPlay():(a._autoPlayPaused=!0,a._pause()))});a._pausedByVideo=!1;a.ev.on("rsVideoStop",function(){a._autoPlayEnabled&&(a._pausedByVideo=!1,a._play())});a.ev.on("rsVideoPlay",function(){a._autoPlayEnabled&&(a._autoPlayPaused=!1,a._pause(),a._pausedByVideo=!0)});b(window).on("blur"+
a.ns,function(){a._autoPlayEnabled&&(a._autoPlayPaused=!0,a._pause())}).on("focus"+a.ns,function(){a._autoPlayEnabled&&a._autoPlayPaused&&(a._autoPlayPaused=!1,a._play())});a.st.autoPlay.pauseOnHover&&(a._pausedByHover=!1,a.slider.hover(function(){a._autoPlayEnabled&&(a._autoPlayPaused=!1,a._pause(),a._pausedByHover=!0)},function(){a._autoPlayEnabled&&(a._pausedByHover=!1,a._play())}))},toggleAutoPlay:function(){this._autoPlayEnabled?this.stopAutoPlay():this.startAutoPlay()},startAutoPlay:function(){this._autoPlayEnabled=
!0;this.currSlide.isLoaded&&this._play()},stopAutoPlay:function(){this._pausedByVideo=this._pausedByHover=this._autoPlayPaused=this._autoPlayEnabled=!1;this._pause()},_play:function(){var a=this;a._pausedByHover||a._pausedByVideo||(a._autoPlayRunning=!0,a._autoPlayTimeout&&clearTimeout(a._autoPlayTimeout),a._autoPlayTimeout=setTimeout(function(){if(!a._loop&&!a.st.loopRewind){var b=!0;a.st.loopRewind=!0}a.next(!0);b&&(a.st.loopRewind=!1)},a.currSlide.customDelay?a.currSlide.customDelay:a.st.autoPlay.delay))},
_pause:function(){this._pausedByHover||this._pausedByVideo||(this._autoPlayRunning=!1,this._autoPlayTimeout&&(clearTimeout(this._autoPlayTimeout),this._autoPlayTimeout=null))}});b.rsModules.autoplay=b.rsProto._initAutoplay})(jQuery);// jquery.rs.video v1.1.3
(function(f){f.extend(f.rsProto,{_initVideo:function(){var a=this;a._videoDefaults={autoHideArrows:!0,autoHideControlNav:!1,autoHideBlocks:!1,autoHideCaption:!1,disableCSS3inFF:!0,youTubeCode:'<iframe src="https://www.youtube.com/embed/%id%?rel=1&showinfo=0&autoplay=1&wmode=transparent" frameborder="no"></iframe>',vimeoCode:'<iframe src="https://player.vimeo.com/video/%id%?byline=0&portrait=0&autoplay=1" frameborder="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'};a.st.video=
f.extend({},a._videoDefaults,a.st.video);a.ev.on("rsBeforeSizeSet",function(){a._isVideoPlaying&&setTimeout(function(){var b=a._currHolder;b=b.hasClass("rsVideoContainer")?b:b.find(".rsVideoContainer");a._videoFrameHolder&&a._videoFrameHolder.css({width:b.width(),height:b.height()})},32)});var d=a._browser.mozilla;a.ev.on("rsAfterParseNode",function(b,c,e){b=f(c);if(e.videoURL){a.st.video.disableCSS3inFF&&d&&(a._useCSS3Transitions=a._use3dTransform=!1);c=f('<div class="rsVideoContainer"></div>');
var g=f('<div class="rsBtnCenterer"><div class="rsPlayBtn"><div class="rsPlayBtnIcon"></div></div></div>');b.hasClass("rsImg")?e.content=c.append(b).append(g):e.content.find(".rsImg").wrap(c).after(g)}});a.ev.on("rsAfterSlideChange",function(){a.stopVideo()})},toggleVideo:function(){return this._isVideoPlaying?this.stopVideo():this.playVideo()},playVideo:function(){var a=this;if(!a._isVideoPlaying){var d=a.currSlide;if(!d.videoURL)return!1;a._playingVideoSlide=d;var b=a._currVideoContent=d.content;
d=d.videoURL;var c;if(d.match(/youtu\.be/i)||d.match(/youtube\.com/i)){var e=/^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&\?]*).*/;(e=d.match(e))&&11==e[2].length&&(c=e[2]);void 0!==c&&(a._videoFrameHolder=a.st.video.youTubeCode.replace("%id%",c))}else d.match(/vimeo\.com/i)&&(e=/(www\.)?vimeo.com\/(\d+)($|\/)/,(e=d.match(e))&&(c=e[2]),void 0!==c&&(a._videoFrameHolder=a.st.video.vimeoCode.replace("%id%",c)));a.videoObj=f(a._videoFrameHolder);a.ev.trigger("rsOnCreateVideoElement",[d]);a.videoObj.length&&
(a._videoFrameHolder=f('<div class="rsVideoFrameHolder"><div class="rsPreloader"></div><div class="rsCloseVideoBtn"><div class="rsCloseVideoIcn"></div></div></div>'),a._videoFrameHolder.find(".rsPreloader").after(a.videoObj),b=b.hasClass("rsVideoContainer")?b:b.find(".rsVideoContainer"),a._videoFrameHolder.css({width:b.width(),height:b.height()}).find(".rsCloseVideoBtn").off("click.rsv").on("click.rsv",function(b){a.stopVideo();b.preventDefault();b.stopPropagation();return!1}),b.append(a._videoFrameHolder),
a.isIPAD&&b.addClass("rsIOSVideo"),a._toggleHiddenClass(!1),setTimeout(function(){a._videoFrameHolder.addClass("rsVideoActive")},10),a.ev.trigger("rsVideoPlay"),a._isVideoPlaying=!0);return!0}return!1},stopVideo:function(){var a=this;return a._isVideoPlaying?(a.isIPAD&&a.slider.find(".rsCloseVideoBtn").remove(),a._toggleHiddenClass(!0),setTimeout(function(){a.ev.trigger("rsOnDestroyVideoElement",[a.videoObj]);var d=a._videoFrameHolder.find("iframe");if(d.length)try{d.attr("src","")}catch(b){}a._videoFrameHolder.remove();
a._videoFrameHolder=null},16),a.ev.trigger("rsVideoStop"),a._isVideoPlaying=!1,!0):!1},_toggleHiddenClass:function(a,d){var b=[],c=this.st.video;c.autoHideArrows&&(this._arrowLeft&&(b.push(this._arrowLeft,this._arrowRight),this._arrowsAutoHideLocked=!a),this._fsBtn&&b.push(this._fsBtn));c.autoHideControlNav&&this._controlNav&&b.push(this._controlNav);c.autoHideBlocks&&this._playingVideoSlide.animBlocks&&b.push(this._playingVideoSlide.animBlocks);c.autoHideCaption&&this.globalCaption&&b.push(this.globalCaption);
this.slider[a?"removeClass":"addClass"]("rsVideoPlaying");if(b.length)for(c=0;c<b.length;c++)a?b[c].removeClass("rsHidden"):b[c].addClass("rsHidden")}});f.rsModules.video=f.rsProto._initVideo})(jQuery);// jquery.rs.animated-blocks v1.0.7
(function(k){k.extend(k.rsProto,{_initAnimatedBlocks:function(){function m(){var f=a.currSlide;if(a.currSlide&&a.currSlide.isLoaded&&a._slideWithBlocks!==f){if(0<a._animatedBlockTimeouts.length){for(b=0;b<a._animatedBlockTimeouts.length;b++)clearTimeout(a._animatedBlockTimeouts[b]);a._animatedBlockTimeouts=[]}if(0<a._blockAnimProps.length){var g;for(b=0;b<a._blockAnimProps.length;b++)if(g=a._blockAnimProps[b])a._useCSS3Transitions?(g.block.css(a._vendorPref+a._TD,"0s"),g.block.css(g.css)):g.block.stop(!0).css(g.css),
a._slideWithBlocks=null,f.animBlocksDisplayed=!1;a._blockAnimProps=[]}f.animBlocks&&(f.animBlocksDisplayed=!0,a._slideWithBlocks=f,a._animateBlocks(f.animBlocks))}}var a=this,b;a._blockDefaults={fadeEffect:!0,moveEffect:"top",moveOffset:20,speed:400,easing:"easeOutSine",delay:200};a.st.block=k.extend({},a._blockDefaults,a.st.block);a._blockAnimProps=[];a._animatedBlockTimeouts=[];a.ev.on("rsAfterInit",function(){m()});a.ev.on("rsBeforeParseNode",function(a,b,d){b=k(b);d.animBlocks=b.find(".rsABlock").css("display",
"none");d.animBlocks.length||(b.hasClass("rsABlock")?d.animBlocks=b.css("display","none"):d.animBlocks=!1)});a.ev.on("rsAfterContentSet",function(b,g){g.id===a.slides[a.currSlideId].id&&setTimeout(function(){m()},a.st.fadeinLoadedSlide?300:0)});a.ev.on("rsAfterSlideChange",function(){m()})},_updateAnimBlockProps:function(k,a){setTimeout(function(){k.css(a)},6)},_animateBlocks:function(m){var a=this,b,f,g,d,h,e,n;a._animatedBlockTimeouts=[];m.each(function(m){b=k(this);f={};g={};d=null;var c=b.attr("data-move-offset");
c=c?parseInt(c,10):a.st.block.moveOffset;if(0<c&&((e=b.data("move-effect"))?(e=e.toLowerCase(),"none"===e?e=!1:"left"!==e&&"top"!==e&&"bottom"!==e&&"right"!==e&&(e=a.st.block.moveEffect,"none"===e&&(e=!1))):e=a.st.block.moveEffect,e&&"none"!==e)){var p="right"===e||"left"===e?!0:!1;n=!1;if(a._useCSS3Transitions){var l=0;h=a._xProp}else p?isNaN(parseInt(b.css("right"),10))?h="left":(h="right",n=!0):isNaN(parseInt(b.css("bottom"),10))?h="top":(h="bottom",n=!0),h="margin-"+h,n&&(c=-c),a._useCSS3Transitions?
l=parseInt(b.css(h),10):(l=b.data("rs-start-move-prop"),void 0===l&&(l=parseInt(b.css(h),10),isNaN(l)&&(l=0),b.data("rs-start-move-prop",l)));g[h]=a._getCSS3Prop("top"===e||"left"===e?l-c:l+c,p);f[h]=a._getCSS3Prop(l,p)}c=b.attr("data-fade-effect");if(!c)c=a.st.block.fadeEffect;else if("none"===c.toLowerCase()||"false"===c.toLowerCase())c=!1;c&&(g.opacity=0,f.opacity=1);if(c||e)d={},d.hasFade=!!c,e&&(d.moveProp=h,d.hasMove=!0),d.speed=b.data("speed"),isNaN(d.speed)&&(d.speed=a.st.block.speed),d.easing=
b.data("easing"),d.easing||(d.easing=a.st.block.easing),d.css3Easing=k.rsCSS3Easing[d.easing],d.delay=b.data("delay"),isNaN(d.delay)&&(d.delay=a.st.block.delay*m);c={};a._useCSS3Transitions&&(c[a._vendorPref+a._TD]="0ms");c.moveProp=f.moveProp;c.opacity=f.opacity;c.display="none";a._blockAnimProps.push({block:b,css:c});a._updateAnimBlockProps(b,g);a._animatedBlockTimeouts.push(setTimeout(function(b,d,c,e){return function(){b.css("display","block");if(c){var f={};if(a._useCSS3Transitions){var g="";
c.hasMove&&(g+=c.moveProp);c.hasFade&&(c.hasMove&&(g+=", "),g+="opacity");f[a._vendorPref+a._TP]=g;f[a._vendorPref+a._TD]=c.speed+"ms";f[a._vendorPref+a._TTF]=c.css3Easing;b.css(f);setTimeout(function(){b.css(d)},24)}else setTimeout(function(){b.animate(d,c.speed,c.easing)},16)}delete a._animatedBlockTimeouts[e]}}(b,f,d,m),6>=d.delay?12:d.delay))})}});k.rsModules.animatedBlocks=k.rsProto._initAnimatedBlocks})(jQuery);// jquery.rs.auto-height v1.0.3
(function(b){b.extend(b.rsProto,{_initAutoHeight:function(){var a=this;if(a.st.autoHeight){var b,c,e,f=!0,d=function(d){e=a.slides[a.currSlideId];(b=e.holder)&&(c=b.height())&&void 0!==c&&c>(a.st.minAutoHeight||30)&&(a._wrapHeight=c,a._useCSS3Transitions||!d?a._sliderOverflow.css("height",c):a._sliderOverflow.stop(!0,!0).animate({height:c},a.st.transitionSpeed),a.ev.trigger("rsAutoHeightChange",c),f&&(a._useCSS3Transitions&&setTimeout(function(){a._sliderOverflow.css(a._vendorPref+"transition","height "+
a.st.transitionSpeed+"ms ease-in-out")},16),f=!1))};a.ev.on("rsMaybeSizeReady.rsAutoHeight",function(a,b){e===b&&d()});a.ev.on("rsAfterContentSet.rsAutoHeight",function(a,b){e===b&&d()});a.slider.addClass("rsAutoHeight");a.ev.one("rsAfterInit",function(){setTimeout(function(){d(!1);setTimeout(function(){a.slider.append('<div style="clear:both; float: none;"></div>')},16)},16)});a.ev.on("rsBeforeAnimStart",function(){d(!0)});a.ev.on("rsBeforeSizeSet",function(){setTimeout(function(){d(!1)},16)})}}});
b.rsModules.autoHeight=b.rsProto._initAutoHeight})(jQuery);// jquery.rs.global-caption v1.0.1
(function(b){b.extend(b.rsProto,{_initGlobalCaption:function(){var a=this;a.st.globalCaption&&(a.ev.on("rsAfterInit",function(){a.globalCaption=b('<div class="rsGCaption"></div>').appendTo(a.st.globalCaptionInside?a._sliderOverflow:a.slider);a.globalCaption.html(a.currSlide.caption||"")}),a.ev.on("rsBeforeAnimStart",function(){a.globalCaption.html(a.currSlide.caption||"")}))}});b.rsModules.globalCaption=b.rsProto._initGlobalCaption})(jQuery);// jquery.rs.active-class v1.0.1
(function(c){c.rsProto._initActiveClass=function(){var b,a=this;if(a.st.addActiveClass)a.ev.on("rsOnUpdateNav",function(){b&&clearTimeout(b);b=setTimeout(function(){a._oldHolder&&a._oldHolder.removeClass("rsActiveSlide");a._currHolder&&a._currHolder.addClass("rsActiveSlide");b=null},50)})};c.rsModules.activeClass=c.rsProto._initActiveClass})(jQuery);
// jquery.rs.deeplinking v1.0.6 + jQuery hashchange plugin v1.3 Copyright (c) 2010 Ben Alman
(function(b){b.extend(b.rsProto,{_initDeeplinking:function(){var a=this,h,d,f;a._hashDefaults={enabled:!1,change:!1,prefix:""};a.st.deeplinking=b.extend({},a._hashDefaults,a.st.deeplinking);if(a.st.deeplinking.enabled){var e=a.st.deeplinking.change,c=a.st.deeplinking.prefix,k="#"+c,g=function(){var a=window.location.hash;return a&&0<a.indexOf(c)&&(a=parseInt(a.substring(k.length),10),0<=a)?a-1:-1},l=g();-1!==l&&(a.st.startSlideId=l);e&&(b(window).on("hashchange"+a.ns,function(b){h||(b=g(),0>b||(b>
a.numSlides-1&&(b=a.numSlides-1),a.goTo(b)))}),a.ev.on("rsBeforeAnimStart",function(){d&&clearTimeout(d);f&&clearTimeout(f)}),a.ev.on("rsAfterSlideChange",function(){d&&clearTimeout(d);f&&clearTimeout(f);f=setTimeout(function(){h=!0;window.location.replace((""+window.location).split("#")[0]+k+(a.currSlideId+1));d=setTimeout(function(){h=!1;d=null},60)},400)}));a.ev.on("rsBeforeDestroy",function(){d=f=null;e&&b(window).off("hashchange"+a.ns)})}}});b.rsModules.deeplinking=b.rsProto._initDeeplinking})(jQuery);
(function(b,a,h){function d(a){a=a||location.href;return"#"+a.replace(/^[^#]*#?(.*)$/,"$1")}"$:nomunge";var f=document,e=b.event.special,c=f.documentMode,k="onhashchange"in a&&(c===h||7<c);b.fn.hashchange=function(a){return a?this.bind("hashchange",a):this.trigger("hashchange")};b.fn.hashchange.delay=50;e.hashchange=b.extend(e.hashchange,{setup:function(){if(k)return!1;b(g.start)},teardown:function(){if(k)return!1;b(g.stop)}});var g=function(){function l(){var f=d(),e=p(g);f!==g?(m(g=f,e),b(a).trigger("hashchange")):
e!==g&&(location.href=location.href.replace(/#.*/,"")+e);c=setTimeout(l,b.fn.hashchange.delay)}var e={},c,g=d(),n=function(a){return a},m=n,p=n;e.start=function(){c||l()};e.stop=function(){c&&clearTimeout(c);c=h};a.attachEvent&&!a.addEventListener&&!k&&function(){var a,c;e.start=function(){a||(c=(c=b.fn.hashchange.src)&&c+d(),a=b('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){c||m(d());l()}).attr("src",c||"javascript:0").insertAfter("body")[0].contentWindow,f.onpropertychange=
function(){try{"title"===event.propertyName&&(a.document.title=f.title)}catch(q){}})};e.stop=n;p=function(){return d(a.location.href)};m=function(c,e){var d=a.document,g=b.fn.hashchange.domain;c!==e&&(d.title=f.title,d.open(),g&&d.write('<script>document.domain="'+g+'"\x3c/script>'),d.close(),a.location.hash=c)}}();return e}()})(jQuery,this);// jquery.rs.visible-nearby v1.0.2
(function(d){d.rsProto._initVisibleNearby=function(){var a=this;a.st.visibleNearby&&a.st.visibleNearby.enabled&&(a._vnDefaults={enabled:!0,centerArea:.6,center:!0,breakpoint:0,breakpointCenterArea:.8,hiddenOverflow:!0,navigateByCenterClick:!1},a.st.visibleNearby=d.extend({},a._vnDefaults,a.st.visibleNearby),a.ev.one("rsAfterPropsSetup",function(){a._sliderVisibleNearbyWrap=a._sliderOverflow.css("overflow","visible").wrap('<div class="rsVisibleNearbyWrap"></div>').parent();a.st.visibleNearby.hiddenOverflow||
a._sliderVisibleNearbyWrap.css("overflow","visible");a._controlsContainer=a.st.controlsInside?a._sliderVisibleNearbyWrap:a.slider}),a.ev.on("rsAfterSizePropSet",function(){var c=a.st.visibleNearby;var b=c.breakpoint&&a.width<c.breakpoint?c.breakpointCenterArea:c.centerArea;a._slidesHorizontal?(a._wrapWidth*=b,a._sliderVisibleNearbyWrap.css({height:a._wrapHeight,width:a._wrapWidth/b}),a._minPosOffset=a._wrapWidth*(1-b)/2/b):(a._wrapHeight*=b,a._sliderVisibleNearbyWrap.css({height:a._wrapHeight/b,width:a._wrapWidth}),
a._minPosOffset=a._wrapHeight*(1-b)/2/b);c.navigateByCenterClick||(a._nextSlidePos=a._slidesHorizontal?a._wrapWidth:a._wrapHeight);c.center&&a._sliderOverflow.css("margin-"+(a._slidesHorizontal?"left":"top"),a._minPosOffset)}))};d.rsModules.visibleNearby=d.rsProto._initVisibleNearby})(jQuery);
/**
 * Zieht den Slider auf 100% der Höhe des Viewports auf
 *
 * @param sliderInstance
 * @param contentUid
 */
function sc27RoyalSliderInitFullHeight(sliderInstance, contentUid) {

  var sliderObject = sliderInstance.data('royalSlider');


  /**
   * Abbruch, sofern Funktion nicht aktiviert
   */

  if (sliderObject.st.sc27Fullheight !== true) {
    return;
  }


  /**
   * Einstellungen anpassen
   */

  sliderObject.st.imageScaleMode = 'fill';
  sliderObject.st.arrowsNavAutoHide = false;
  sliderObject.st.autoScaleSlider = false;
  sliderObject.st.autoHeight = false;
  sliderObject.st.imageAlignCenter = true;


  /**
   * CSS-Klasse ergaenzen anpassen
   */

  $('#royalslider-' + contentUid).addClass('fullheight');


  /**
   * Höhe des Sliders auf 100 Prozent der Viewporthöhe festlegen
   */

  $('#royalslider-' + contentUid).css('height', '100vh');


  /**
   * Größenanpassung von RoyalSlider durchführen lassen
   */

  sliderObject.updateSliderSize(true);

}


/**
 * Uebertraegt das Overlqay aus dem aktuellen Slide in ein globales HTML-Element
 * (ermoeglicht dadurch das Overlay unterhalb des Sliders anzeigen zu lassen)
 *
 * @param sliderInstance
 * @param contentUid
 */
function sc27RoyalSliderAddOverlayFromCurrentSlide(sliderInstance, contentUid) {

  var sliderObject = sliderInstance.data('royalSlider');

  var currSlideId = sliderObject.currSlideId;
  var slideObject = sliderObject.slides[currSlideId];

  if (typeof slideObject !== 'object') {
    return;
  }

  var slideContent = slideObject.content[0];


  /**
   * Inhalt aus aktuellem Slide in anderes HTML-Element uebernehmen (z.B. unterhalb des eigentlichen Sliders, aber im gleichen TYPO3-Inhaltselement)
   */

  var slideOverlayContent = $(slideContent).find('.infoBlock').html();
  $('.royalslider-' + contentUid + '-overlay-external').html(slideOverlayContent);


  /**
   * Overlay-Farbe des aktuellen Slide ermitteln und in globalen Slider uebernehmen
   */

  var attrDataOverlayColor = $(slideContent).attr('data-overlaycolor');
  attrDataOverlayColor = parseInt(attrDataOverlayColor);

  $('.royalslider-' + contentUid + '-overlay-external').attr('data-slide-overlaycolor', attrDataOverlayColor);

}


/**
 * Overlay des aktuellen Slide automatisch in separates HTML-Element einbringen
 * @param sliderInstance
 * @param contentUid
 */
function sc27RoyalSliderInitExternalOverlay(sliderInstance, contentUid) {

  var sliderObject = sliderInstance.data('royalSlider');


  /**
   * Abbruch, sofern Funktion nicht aktiviert
   */

  if (sliderObject.st.sc27OverlayExternal !== true) {
    return;
  }


  /**
   * CSS-Klasse ergaenzen anpassen
   */

  $('#royalslider-' + contentUid).addClass('overlayExternal');


  /**
   * Neues, leeres HTML-Element unterhalb des eigentlichen Sliders positionieren
   */

  var sliderOverlayExternalElement = $('<div class="royalslider-overlay-external royalslider-' + contentUid + '-overlay-external"></div>');
  $(sliderOverlayExternalElement).insertAfter('#c' + contentUid + ' .tx-sc27-royalslider');


  var sliderFirstSlideProcessed = false;
  sliderObject.ev.on('rsAfterContentSet', function (e, slideObject) {

    if (!sliderFirstSlideProcessed) {
      sliderFirstSlideProcessed = true;
      sc27RoyalSliderAddOverlayFromCurrentSlide(sliderInstance, contentUid);
    }

  });

  sliderObject.ev.on('rsAfterSlideChange', function (event) {
    sc27RoyalSliderAddOverlayFromCurrentSlide(sliderInstance, contentUid);
  });

}


/**
 * Ueberfuehrt Informationen aus dem aktuellen Slide in den globalen Slider
 * (ermoeglicht dadurch beispielsweise CSS-spezifische Anpassungen an ausserhalb des aktuellen Slides
 * liegenden HTML-Elementen (z.B. Navigationselementen), je nach verwendeter Ueberlagerungsfarbe des jeweils aktuellen Slide)
 *
 * @param sliderInstance
 * @param contentUid
 * @param slideCount
 */
function sc27RoyalSliderAddAdditionalDataFromCurrentSlide(sliderInstance, contentUid, slideCount) {

  var sliderObject = sliderInstance.data('royalSlider');

  var currSlideId = sliderObject.currSlideId;
  var slideObject = sliderObject.slides[currSlideId];

  if (typeof slideObject !== 'object') {
    return;
  }

  var slideContent = slideObject.content[0];


  /**
   * Overlay-Farbe des aktuellen Slide ermitteln und in globalen Slider uebernehmen
   */

  var attrDataOverlayColor = $(slideContent).attr('data-overlaycolor');
  attrDataOverlayColor = parseInt(attrDataOverlayColor);

  $('#royalslider-' + parseInt(contentUid)).attr('data-slide-overlaycolor', attrDataOverlayColor);


  /**
   * Test: Inhalt aus aktuellem Slide in anderes HTML-Element (z.B. unterhalb des Slide(r)s uebernehmen
   */

  // var slideOverlayContent = $(slideContent).find('.infoBlock').html();
  // $('.page-area-content').html( slideOverlayContent );

}


/**
 * Nimmt weitere Anpassungen am Slider vor
 *
 * @param sliderInstance Slider-Instanz
 * @param contentUid UID des Inhaltselements des Sliders
 * @param sliderrCount Anzahl Slides
 */
function sc27RoyalSliderAddAdditionalData(sliderInstance, contentUid, slideCount) {

  /**
   * Kennzeichnung hinzufuegen, ob Slider mehrere Slides enthaelt
   */

  sliderInstance.find('.rsBullets').wrap('<div class="rsBulletsOuter"><div class="rsBulletsInner"></div></div>').parent();

  if (slideCount > 1) {
    $('#royalslider-' + contentUid).attr('data-multislide', '1');
  }


  /**
   * Informationen von aktuellem Slide-HTML-Element in globales Slider-HTML-Element uebernehmen
   * Z.B. Ueberlagerungsfarbe (wird bei jedem Sliderwechsel und bei erstmaliger Anzeige ersten Slides ausgefuehrt)
   */

  var sliderObject = sliderInstance.data('royalSlider');

  var sliderFirstSlideProcessed = false;
  sliderObject.ev.on('rsAfterContentSet', function (e, slideObject) {

    if (!sliderFirstSlideProcessed) {
      sliderFirstSlideProcessed = true;
      sc27RoyalSliderAddAdditionalDataFromCurrentSlide(sliderInstance, contentUid, slideCount);
    }

  });

  sliderObject.ev.on('rsAfterSlideChange', function (event) {
    sc27RoyalSliderAddAdditionalDataFromCurrentSlide(sliderInstance, contentUid, slideCount);
  });

}


/**
 * Eventuell bereits initialisierte Parallax-Scrolling-Methoden updaten lassen
 */
function sc27RoyalSliderUpdateParallax() {

  if (typeof ($.stellar) == 'function') {
    $.stellar('refresh');
  }

}


/**
 * Initialisiert das Abspielen von Hintergrundvideos
 *
 * @param sliderObject Royal Slider-Objekt
 */
function sc27RoyalSliderInitBackgroundVideo(sliderObject) {

  /**
   * Video - Bei Initialisierung auch Videoplayer im ersten Slide erzeugen
   */

  var i = 0;

  /*
  for (i = 0; i < sliderObject.numSlides; i++) {
    var slideObject = sliderObject.slides[i];
    sc27RoyalSliderBackgroundVideoCreate(slideObject);
  }
  */

  // Video-Player im ersten Slide initialisieren (sofern notwendig)
  var slideObject = sliderObject.slides[0];
  sc27RoyalSliderBackgroundVideoCreate(slideObject);


  /**
   * Video - Vor Slidewechsel Videoplayer im jeweils naechsten Slide erzeugen
   */

  sliderObject.ev.on('rsBeforeMove', function (event, type, userAction) {

    // before any transition start (including after drag release)
    // "type" - can be "next", "prev", or ID of slide to move
    // userAction (Boolean) - defines if action is triggered by user (e.g. will be false if movement is triggered by autoPlay)

    nextSlideId = type;

    if (type == 'next') {

      if ((sliderObject.currSlideId + 1) == sliderObject.numSlides) {
        nextSlideId = 0;
      } else {
        nextSlideId = sliderObject.currSlideId + 1;
      }

    } else if (type == 'prev') {

      if (sliderObject.currSlideId > 0) {
        nextSlideId = sliderObject.currSlideId - 1;
      } else {
        nextSlideId = sliderObject.numSlides - 1;
      }

    }


    /**
     * Naechsten Slide vorbereiten, sofern dieser Hintergrundvideo enthaelt
     */

    var slideObject = sliderObject.slides[nextSlideId];

    sc27RoyalSliderBackgroundVideoCreate(slideObject, sliderObject, nextSlideId, sliderObject.currSlideId);

  });


  /**
   * Groesse von Videos bei Groessenanpassungen ebenfalls anpassen
   */

  /*
  sliderObject.ev.on('rsBeforeSizeSet', function (event, type, userAction) {

    var videElement = sliderObject.currSlide.content;
    var videInstance = videElement.data('vide');

    if (typeof $(videInstance) == 'object') {
      $(videInstance).resize();
    }

  });
  });
  */


  /**
   * Groessenaenderungen des Browserfensters an Vide-Player weiterreichen
   */

  /*
  $(window).on('debouncedresize throttledresize', function (e) {

    console.log('Trying to resize Vide ...');

    var videElement = sliderObject.currSlide.content;
    var videInstance = videElement.data('vide');

    console.log( $(videInstance) );

    if (typeof $(videInstance) == 'object') {
      console.log('Rezising ...');
      $(videInstance).resize();
    }

  });
  */

}


/**
 * Fotos gegen fuer aktuelle Aufloesung geeignete Variante ersetzen
 *
 * @param contentUid UID des Inhaltselements des Sliders
 */
function sc27RoyalSliderSetResponsiveImages(contentUid) {

  var displayPixelRatio = !!window.devicePixelRatio ? window.devicePixelRatio : 1;
  displayPixelRatio = parseInt(displayPixelRatio);

  var maxScreenDimension = Math.max(window.screen.availWidth, window.screen.availHeight);

  // Standardaufloesung fuer Fotos
  var responsiveSize = 'xl';

  // Breakpoints zusammenstellen
  var gridBreakpoints = {
    xl: (typeof pageConfig.grid.breakpoints.xl !== 'undefined') ? pageConfig.grid.breakpoints.xl : 1500,
    lg: (typeof pageConfig.grid.breakpoints.lg !== 'undefined') ? pageConfig.grid.breakpoints.lg : 1200,
    md: (typeof pageConfig.grid.breakpoints.md !== 'undefined') ? pageConfig.grid.breakpoints.md : 992,
    sm: (typeof pageConfig.grid.breakpoints.sm !== 'undefined') ? pageConfig.grid.breakpoints.sm : 768,
    xs: (typeof pageConfig.grid.breakpoints.xs !== 'undefined') ? pageConfig.grid.breakpoints.xs : 0
  };

  // Zielgröße des Fotos ermitteln
  if (maxScreenDimension < gridBreakpoints.sm) {
    responsiveSize = (displayPixelRatio == 1) ? 'xs' : 'sm';
  } else if (maxScreenDimension < gridBreakpoints.md) {
    responsiveSize = (displayPixelRatio == 1) ? 'sm' : 'md';
  } else if (maxScreenDimension < gridBreakpoints.lg) {
    responsiveSize = (displayPixelRatio == 1) ? 'md' : 'lg';
  } else if (maxScreenDimension >= gridBreakpoints.xl) {
    responsiveSize = 'xl';
  }

  // Keine weitere Aktion notwendig, sofern Zielgröße bereits größter responsiver Auflösung entspricht
  if (responsiveSize == 'xl') {
    return;
  }

  // Fotos anhand ermittelter Zielgröße austauschen
  $('#royalslider-' + parseInt(contentUid) + ' a.rsImg').each(function (key, value) {

    var imageUrl = $(this).is('[data-responsive-image-' + responsiveSize + ']');

    if (imageUrl != '') {
      $(this).attr('href', $(this).attr('data-responsive-image-' + responsiveSize));
    }

  });

}


/**
 * Prueft, ob das aktuelle Geraet ein Mobilgeraet ist
 *
 * @returns boolean
 */
function sc27RoyalSliderIsMobileDevice() {

  var userAgent = navigator.userAgent || navigator.vendor || window.opera;

  return (/Android|iPad|iPhone|iPod|BlackBerry|IEMobile|webOS/.test(userAgent) && !window.MSStream);

}


/**
 * Erzeugt das Videoelement für den angegebenen Slide
 *
 * @param slideObject Royal Slider-Slide-Objekt (einzelner Slide)
 * @param sliderObject Royal Slider-Slider-Objekt (gesamter Slider)
 * @param nextSlideId ID des nächsten Slide
 * @param prevSlideId ID des vorherigen Slide
 */
function sc27RoyalSliderBackgroundVideoCreate(slideObject, sliderObject, nextSlideId, prevSlideId) {

  if (sc27RoyalSliderIsMobileDevice()) {
    // Ueberspringe Video-Erzeugung auf mobilen Geraeten
    return;
  }

  if (typeof slideObject.content == 'undefined') {
    return;
  }


  /**
   * Video-Player bereits erzeugt, dann Video direkt abspielen, etc.
   */

  var video = $(slideObject.content).find('video');

  if ($(video).length > 0) {

    /**
     * Video-Player bereits vorhanden, dann Video abspielen
     */

    video = $(video)[0];
    video.play();


    /**
     * Video in vorherigem Slide pausieren
     */

    // console.log('Next slide id: ' + nextSlideId);
    // console.log('Previous slide id: ' + prevSlideId);

    if ((prevSlideId !== 'undefined') && (prevSlideId != nextSlideId)) {

      // console.log('Versuche vorheriges Video in Slide ' + prevSlideId + ' anzuhalten ...');

      var prevSlide = sliderObject.slides[prevSlideId];
      var prevVideoElement = $(prevSlide.content).find('video');

      if ($(prevVideoElement).length > 0) {
        prevVideoElement[0].pause();
        // console.log('Vorheriges Video in Slide ' + prevSlideId + ' wurde angehalten ...');
      }

    }

    return;

  }


  /**
   * Video-Player initialisieren
   */

  var videoElement = $(slideObject.content).find('.rsBackgroundVideo').slice(0, 1);
  var videoUrl = $(videoElement).data('video-url');

  if (typeof videoUrl == 'undefined') {
    // Keine Video-URL angegeben
    return;
  }

  var imageUrl = $(videoElement).data('image-url');

  if (typeof imageUrl == 'undefined') {
    imageUrl = '';
  }

  if (videoUrl !== '') {

    // console.log('initializing video on slide ...');

    var nextSlideContentElement = $(slideObject.content);

    /*
    $(nextSlideContentElement).find('.rsBackgroundVideoWrapper').vide(
      {
        mp4: videoUrl,
        webm: '',
        ogv: ''
      },
      {
        autoplay: true,
        posterType: 'custom',
        volume: 0,
        muted: true,
        loop: true,
        resizing: false,
        bgColor: '#fff',
        wrapperZIndex: 15
      });
    */


    /**
     * Video-Player erzeugen
     */

    var videoElement = document.createElement('video');

    videoElement.autoplay = false;
    videoElement.muted = true;
    videoElement.loop = true;

    videoElement.style.display = 'block';
    videoElement.style.position = 'absolute';
    videoElement.style.top = '50%';
    videoElement.style.left = '50%';
    videoElement.style.minWidth = '100%';
    videoElement.style.minHeight = '100%';
    videoElement.style.width = 'auto';
    videoElement.style.height = 'auto';
    videoElement.style.transform = 'translate(-50%, -50%)';
    videoElement.style.objectFit = 'cover';

    var sourceElement = document.createElement("source");
    sourceElement.src = videoUrl;
    videoElement.appendChild(sourceElement);

    $(nextSlideContentElement).find('.rsBackgroundVideoWrapper').append(videoElement);
    $(nextSlideContentElement).find('.rsBackgroundVideoWrapper').css('width', '100%');
    $(nextSlideContentElement).find('.rsBackgroundVideoWrapper').css('height', '100%');


    /**
     * Video abspielen
     */

    videoElement.play();

  }

}

/**
 * Parallax-Effekt auf Container anwenden
 * @param htmlElement
 */
function sc27FceContainerParallaxInit(htmlElement) {

  $(htmlElement).addClass('jarallax');


  /**
   * Parallax-Effekt erzeugen
   */

  jarallax(htmlElement, {
    speed: 0.5,
  });


  /**
   * Bei Größenänderung des Browsers Parallax-Effekt neu erzeugen lassen
   * (berücksichtigt dadurch indirekt ggf. verändertes Hintergrundfoto)
   */

  $(window).on('debouncedresize', function () {

    $(htmlElement).each(function () {
      jarallax(this, 'destroy');
      sc27FceContainerParallaxInit(htmlElement);
    });

  });

}


$(window).on('load', function () {

  /**
   * Parallax-Effekt anwenden
   */

  if (!jQuery.browser.mobile) {

    $('.parallax-container').each(function () {
      sc27FceContainerParallaxInit(this);
    })

  }

});

jQuery(document).ready(function () {

    /**
     * Extension "ke_search"
     */

    $('.tx-kesearch-pi1 .kesearch_pagebrowser ul').addClass('pagination');
    // $('.tx-kesearch-pi1 .kesearch_pagebrowser a').wrap('<li></li>');
    $('.tx-kesearch-pi1 .kesearch_pagebrowser a.current').parent().addClass('active');

    $('.tx-kesearch-pi1 .kesearch_pagebrowser li').addClass('page-item');
    $('.tx-kesearch-pi1 .kesearch_pagebrowser li > a').addClass('page-link');

});

jQuery(document).ready(function () {

  /**
   * Extension "news"
   */

  $('.f3-widget-paginator').addClass('pagination');
  $('.f3-widget-paginator li.current').addClass('active').wrapInner('<a href="#"></a>');
  $('.f3-widget-paginator li.previous, .f3-widget-paginator li.next').remove();

  // $('.news-list .page-navigation > p').wrap('<div class="pagination-info"></div>');
  // $('.news-list .pagination-info > p').contents().unwrap();

});

jQuery(document).ready(function () {

    /**
     * Extension "powermail"
     */

        // Bootstrap-Klassen hinzufuegen
    $('fieldset.powermail_fieldset').not('.float-left, .float-right').each(function (i) {
        $(this).wrap('<div class="well"></div>');
    });

    $('fieldset.powermail_fieldset.float-left').each(function (i) {
        $(this).removeClass('float-left');
        $(this).wrap('<div class="well float-left"></div>');
    });

    $('fieldset.powermail_fieldset.float-right').each(function (i) {
        $(this).removeClass('float-right');
        $(this).wrap('<div class="well float-right"></div>');
    });

    $('.powermail_fieldwrap').addClass('row form-group');
    $('.powermail_fieldwrap_type_text').wrapInner('<div class="col-12"></div>');

    $('.powermail_input, .powermail_textarea, .powermail_select').addClass('form-control');

    // Input, Select
    $('.powermail_fieldwrap_type_input, .powermail_fieldwrap_type_date, .powermail_fieldwrap_type_select, .powermail_fieldwrap_type_check:not(.nolabel), .powermail_fieldwrap_type_radio').find('.powermail_label').addClass('col-md-5 control-label');
    $('.powermail_fieldwrap_type_input, .powermail_fieldwrap_type_date, .powermail_fieldwrap_type_select, .powermail_fieldwrap_type_check:not(.nolabel), .powermail_fieldwrap_type_radio').find('.powermail_field').addClass('col-md-7');

    $('.powermail_fieldwrap.nolabel, .powermail_fieldwrap.fullwidth').find('.powermail_label').addClass('col-md-12 control-label');
    $('.powermail_fieldwrap.nolabel, .powermail_fieldwrap.fullwidth').find('.powermail_field').addClass('col-md-12');

    // Textarea, File, Check (.powermail_fieldwrap_type_radio), Radio Button (.powermail_fieldwrap_type_radio), Seiteninhalt
    $('.powermail_fieldwrap_type_textarea, .powermail_fieldwrap_type_file').find('.powermail_label').addClass('col-md-12 control-label');
    $('.powermail_fieldwrap_type_textarea, .powermail_fieldwrap_type_file, .powermail_fieldwrap_type_content').find('.powermail_field').addClass('col-md-12');

    // Buttons
    $('.powermail_submit').wrap('<div class="col-12"></div>');
    $('.powermail_submit').addClass('btn btn-primary');
    $('.powermail_submit').removeClass('form-control');


    // Hinweismeldungen formatieren
    $('.powermail_message').addClass('alert');
    $('.powermail_message_error').addClass('alert-danger');
    $('.powermail_message_ok').addClass('alert-success');
    $('.powermail_message_info').addClass('alert-info');


    /**
     * Powermail - 2-spaltig
     */

    $('.tx-powermail form.col2').each(function () {

        var pagesContainer = $(this).find('.form-pages');

        $('<div class="row form-pages-row"><div class="col-lg-6 form-pages-col1"></div><div class="col-lg-6 form-pages-col2"></div></div>').prependTo(pagesContainer);

        var pagesCol1 = $(this).find('.form-pages-col1');
        var pagesCol2 = $(this).find('.form-pages-col2');

        $(this).find('.float-left').each(function () {
            $(this).appendTo(pagesCol1);
        });

        $(this).find('.float-right').each(function () {
            $(this).appendTo(pagesCol2);
        });


        $(this).find('.float-left').each(function (i) {
            $(this).removeClass('float-left');
        });

        $(this).find('.float-right').each(function (i) {
            $(this).removeClass('float-right');
        });

    });

});

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Popper=t()}(this,function(){"use strict";var n="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,i=function(){for(var e=["Edge","Trident","Firefox"],t=0;t<e.length;t+=1)if(n&&0<=navigator.userAgent.indexOf(e[t]))return 1;return 0}();var o=n&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},i))}};function r(e){return e&&"[object Function]"==={}.toString.call(e)}function c(e,t){if(1!==e.nodeType)return[];e=e.ownerDocument.defaultView.getComputedStyle(e,null);return t?e[t]:e}function f(e){return"HTML"===e.nodeName?e:e.parentNode||e.host}function u(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=c(e),n=t.overflow,i=t.overflowX,t=t.overflowY;return/(auto|scroll|overlay)/.test(n+t+i)?e:u(f(e))}function d(e){return e&&e.referenceNode?e.referenceNode:e}var t=n&&!(!window.MSInputMethodContext||!document.documentMode),a=n&&/MSIE 10/.test(navigator.userAgent);function h(e){return 11===e?t:10!==e&&t||a}function p(e){if(!e)return document.documentElement;for(var t=h(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===c(n,"position")?p(n):n:(e?e.ownerDocument:document).documentElement}function s(e){return null!==e.parentNode?s(e.parentNode):e}function g(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?e:t,o=n?t:e,n=document.createRange();n.setStart(i,0),n.setEnd(o,0);n=n.commonAncestorContainer;if(e!==n&&t!==n||i.contains(o))return"BODY"===(o=(i=n).nodeName)||"HTML"!==o&&p(i.firstElementChild)!==i?p(n):n;n=s(e);return n.host?g(n.host,t):g(e,s(t).host)}function m(e,t){var n="top"===(1<arguments.length&&void 0!==t?t:"top")?"scrollTop":"scrollLeft",t=e.nodeName;if("BODY"!==t&&"HTML"!==t)return e[n];t=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||t)[n]}function l(e,t){var n="x"===t?"Left":"Top",t="Left"==n?"Right":"Bottom";return parseFloat(e["border"+n+"Width"])+parseFloat(e["border"+t+"Width"])}function v(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],h(10)?parseInt(n["offset"+e])+parseInt(i["margin"+("Height"===e?"Top":"Left")])+parseInt(i["margin"+("Height"===e?"Bottom":"Right")]):0)}function y(e){var t=e.body,n=e.documentElement,e=h(10)&&getComputedStyle(n);return{height:v("Height",t,n,e),width:v("Width",t,n,e)}}var e=function(e,t,n){return t&&_(e.prototype,t),n&&_(e,n),e};function _(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var w=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e};function E(e){return w({},e,{right:e.left+e.width,bottom:e.top+e.height})}function T(e){var t={};try{h(10)?(t=e.getBoundingClientRect(),n=m(e,"top"),i=m(e,"left"),t.top+=n,t.left+=i,t.bottom+=n,t.right+=i):t=e.getBoundingClientRect()}catch(e){}var n={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},i="HTML"===e.nodeName?y(e.ownerDocument):{},t=i.width||e.clientWidth||n.width,i=i.height||e.clientHeight||n.height,t=e.offsetWidth-t,i=e.offsetHeight-i;return(t||i)&&(t-=l(e=c(e),"x"),i-=l(e,"y"),n.width-=t,n.height-=i),E(n)}function C(e,t,n){var i=2<arguments.length&&void 0!==n&&n,o=h(10),r="HTML"===t.nodeName,a=T(e),s=T(t),l=u(e),f=c(t),n=parseFloat(f.borderTopWidth),e=parseFloat(f.borderLeftWidth);i&&r&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));a=E({top:a.top-s.top-n,left:a.left-s.left-e,width:a.width,height:a.height});return a.marginTop=0,a.marginLeft=0,!o&&r&&(r=parseFloat(f.marginTop),f=parseFloat(f.marginLeft),a.top-=n-r,a.bottom-=n-r,a.left-=e-f,a.right-=e-f,a.marginTop=r,a.marginLeft=f),a=(o&&!i?t.contains(l):t===l&&"BODY"!==l.nodeName)?function(e,t,n){var i=2<arguments.length&&void 0!==n&&n,n=m(t,"top"),t=m(t,"left"),i=i?-1:1;return e.top+=n*i,e.bottom+=n*i,e.left+=t*i,e.right+=t*i,e}(a,t):a}function j(e){if(!e||!e.parentElement||h())return document.documentElement;for(var t=e.parentElement;t&&"none"===c(t,"transform");)t=t.parentElement;return t||document.documentElement}function O(e,t,n,i,o){var r=4<arguments.length&&void 0!==o&&o,a={top:0,left:0},s=r?j(e):g(e,d(t));"viewport"===i?a=function(e,t){var n=1<arguments.length&&void 0!==t&&t,i=e.ownerDocument.documentElement,o=C(e,i),r=Math.max(i.clientWidth,window.innerWidth||0),t=Math.max(i.clientHeight,window.innerHeight||0),e=n?0:m(i),i=n?0:m(i,"left");return E({top:e-o.top+o.marginTop,left:i-o.left+o.marginLeft,width:r,height:t})}(s,r):(o=void 0,"scrollParent"===i?"BODY"===(o=u(f(t))).nodeName&&(o=e.ownerDocument.documentElement):o="window"===i?e.ownerDocument.documentElement:i,l=C(o,s,r),"HTML"!==o.nodeName||function e(t){var n=t.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===c(t,"position"))return!0;t=f(t);return!!t&&e(t)}(s)?a=l:(e=(s=y(e.ownerDocument)).height,s=s.width,a.top+=l.top-l.marginTop,a.bottom=e+l.top,a.left+=l.left-l.marginLeft,a.right=s+l.left));var l="number"==typeof(n=n||0);return a.left+=l?n:n.left||0,a.top+=l?n:n.top||0,a.right-=l?n:n.right||0,a.bottom-=l?n:n.bottom||0,a}function S(e,t,n,i,o,r){r=5<arguments.length&&void 0!==r?r:0;if(-1===e.indexOf("auto"))return e;var o=O(n,i,r,o),a={top:{width:o.width,height:t.top-o.top},right:{width:o.right-t.right,height:o.height},bottom:{width:o.width,height:o.bottom-t.bottom},left:{width:t.left-o.left,height:o.height}},t=Object.keys(a).map(function(e){return w({key:e},a[e],{area:(e=a[e]).width*e.height})}).sort(function(e,t){return t.area-e.area}),o=t.filter(function(e){var t=e.width,e=e.height;return t>=n.clientWidth&&e>=n.clientHeight}),t=(0<o.length?o:t)[0].key,e=e.split("-")[1];return t+(e?"-"+e:"")}function N(e,t,n,i){i=3<arguments.length&&void 0!==i?i:null;return C(n,i?j(t):g(t,d(n)),i)}function A(e){var t=e.ownerDocument.defaultView.getComputedStyle(e),n=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),t=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0);return{width:e.offsetWidth+t,height:e.offsetHeight+n}}function D(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function x(e,t,n){n=n.split("-")[0];var i=A(e),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",e=r?"height":"width",r=r?"width":"height";return o[a]=t[a]+t[e]/2-i[e]/2,o[s]=n===s?t[s]-i[r]:t[D(s)],o}function k(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function P(e,n,t){return(void 0===t?e:e.slice(0,function(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=k(e,function(e){return e[t]===n});return e.indexOf(i)}(e,"name",t))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var t=e.function||e.fn;e.enabled&&r(t)&&(n.offsets.popper=E(n.offsets.popper),n.offsets.reference=E(n.offsets.reference),n=t(n,e))}),n}function I(e,n){return e.some(function(e){var t=e.name;return e.enabled&&t===n})}function L(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;i<t.length;i++){var o=t[i],o=o?""+o+n:e;if(void 0!==document.body.style[o])return o}return null}function q(e){e=e.ownerDocument;return e?e.defaultView:window}function F(e,t,n,i){n.updateBound=i,q(e).addEventListener("resize",n.updateBound,{passive:!0});e=u(e);return function e(t,n,i,o){var r="BODY"===t.nodeName,t=r?t.ownerDocument.defaultView:t;t.addEventListener(n,i,{passive:!0}),r||e(u(t.parentNode),n,i,o),o.push(t)}(e,"scroll",n.updateBound,n.scrollParents),n.scrollElement=e,n.eventsEnabled=!0,n}function H(){var e,t;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(e=this.reference,t=this.state,q(e).removeEventListener("resize",t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t))}function M(e){return""!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function R(n,i){Object.keys(i).forEach(function(e){var t="";-1!==["width","height","top","right","bottom","left"].indexOf(e)&&M(i[e])&&(t="px"),n.style[e]=i[e]+t})}function Q(e,t){function n(e){return e}var i=e.offsets,o=i.popper,r=i.reference,a=Math.round,s=Math.floor,l=a(r.width),i=a(o.width),r=-1!==["left","right"].indexOf(e.placement),e=-1!==e.placement.indexOf("-"),s=t?r||e||l%2==i%2?a:s:n,a=t?a:n;return{left:s(l%2==1&&i%2==1&&!e&&t?o.left-1:o.left),top:a(o.top),bottom:a(o.bottom),right:s(o.right)}}var B=n&&/Firefox/i.test(navigator.userAgent);function U(e,t,n){var i=k(e,function(e){return e.name===t}),o=!!i&&e.some(function(e){return e.name===n&&e.enabled&&e.order<i.order});return o||(e="`"+t+"`",console.warn("`"+n+"`"+" modifier is required by "+e+" modifier in order to work, be sure to include it before "+e+"!")),o}var W=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],V=W.slice(3);function Y(e,t){t=1<arguments.length&&void 0!==t&&t,e=V.indexOf(e),e=V.slice(e+1).concat(V.slice(0,e));return t?e.reverse():e}var z="flip",K="clockwise",J="counterclockwise";function $(e,s,l,t){var o=[0,0],i=-1!==["right","left"].indexOf(t),n=e.split(/(\+|\-)/).map(function(e){return e.trim()}),t=n.indexOf(k(n,function(e){return-1!==e.search(/,|\s/)}));n[t]&&-1===n[t].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");e=/\s*,\s*|\s+/;return(-1!==t?[n.slice(0,t).concat([n[t].split(e)[0]]),[n[t].split(e)[1]].concat(n.slice(t+1))]:[n]).map(function(e,t){var a=(1===t?!i:i)?"height":"width",n=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,n=!0,e):n?(e[e.length-1]+=t,n=!1,e):e.concat(t)},[]).map(function(e){return n=a,i=s,o=l,e=+(r=(t=e).match(/((?:\-|\+)?\d*\.?\d*)(.*)/))[1],r=r[2],e?0===r.indexOf("%")?E("%p"===r?i:o)[n]/100*e:"vh"!==r&&"vw"!==r?e:("vh"===r?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*e:t;var t,n,i,o,r})}).forEach(function(n,i){n.forEach(function(e,t){M(e)&&(o[i]+=e*("-"===n[t-1]?-1:1))})}),o}var G={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t,n,i=e.placement,o=i.split("-")[0],r=i.split("-")[1];return r&&(t=(n=e.offsets).reference,i=n.popper,o=(n=-1!==["bottom","top"].indexOf(o))?"width":"height",o={start:b({},n=n?"left":"top",t[n]),end:b({},n,t[n]+t[o]-i[o])},e.offsets.popper=w({},i,o[r])),e}},offset:{order:200,enabled:!0,fn:function(e,t){var n=t.offset,i=e.placement,o=(r=e.offsets).popper,t=r.reference,r=i.split("-")[0],i=void 0,i=M(+n)?[+n,0]:$(n,o,t,r);return"left"===r?(o.top+=i[0],o.left-=i[1]):"right"===r?(o.top+=i[0],o.left+=i[1]):"top"===r?(o.left+=i[0],o.top-=i[1]):"bottom"===r&&(o.left+=i[0],o.top+=i[1]),e.popper=o,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,i){var t=i.boundariesElement||p(e.instance.popper);e.instance.reference===t&&(t=p(t));var n=L("transform"),o=e.instance.popper.style,r=o.top,a=o.left,s=o[n];o.top="",o.left="",o[n]="";var l=O(e.instance.popper,e.instance.reference,i.padding,t,e.positionFixed);o.top=r,o.left=a,o[n]=s,i.boundaries=l;var s=i.priority,f=e.offsets.popper,u={primary:function(e){var t=f[e];return f[e]<l[e]&&!i.escapeWithReference&&(t=Math.max(f[e],l[e])),b({},e,t)},secondary:function(e){var t="right"===e?"left":"top",n=f[t];return f[e]>l[e]&&!i.escapeWithReference&&(n=Math.min(f[t],l[e]-("right"===e?f.width:f.height))),b({},t,n)}};return s.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";f=w({},f,u[t](e))}),e.offsets.popper=f,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=(r=e.offsets).popper,n=r.reference,i=e.placement.split("-")[0],o=Math.floor,r=(a=-1!==["top","bottom"].indexOf(i))?"right":"bottom",i=a?"left":"top",a=a?"width":"height";return t[r]<o(n[i])&&(e.offsets.popper[i]=o(n[i])-t[a]),t[i]>o(n[r])&&(e.offsets.popper[i]=o(n[r])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){if(!U(e.instance.modifiers,"arrow","keepTogether"))return e;var n=t.element;if("string"==typeof n){if(!(n=e.instance.popper.querySelector(n)))return e}else if(!e.instance.popper.contains(n))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var i=e.placement.split("-")[0],o=(u=e.offsets).popper,r=u.reference,a=-1!==["left","right"].indexOf(i),s=a?"height":"width",l=a?"Top":"Left",f=l.toLowerCase(),t=a?"left":"top",u=a?"bottom":"right",i=A(n)[s];return r[u]-i<o[f]&&(e.offsets.popper[f]-=o[f]-(r[u]-i)),r[f]+i>o[u]&&(e.offsets.popper[f]+=r[f]+i-o[u]),e.offsets.popper=E(e.offsets.popper),a=r[f]+r[s]/2-i/2,u=c(e.instance.popper),r=parseFloat(u["margin"+l]),l=parseFloat(u["border"+l+"Width"]),l=a-e.offsets.popper[f]-r-l,l=Math.max(Math.min(o[s]-i,l),0),e.arrowElement=n,e.offsets.arrow=(b(n={},f,Math.round(l)),b(n,t,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(f,u){if(I(f.instance.modifiers,"inner"))return f;if(f.flipped&&f.placement===f.originalPlacement)return f;var c=O(f.instance.popper,f.instance.reference,u.padding,u.boundariesElement,f.positionFixed),d=f.placement.split("-")[0],h=D(d),p=f.placement.split("-")[1]||"",g=[];switch(u.behavior){case z:g=[d,h];break;case K:g=Y(d);break;case J:g=Y(d,!0);break;default:g=u.behavior}return g.forEach(function(e,t){if(d!==e||g.length===t+1)return f;d=f.placement.split("-")[0],h=D(d);var n=f.offsets.popper,i=f.offsets.reference,o=Math.floor,r="left"===d&&o(n.right)>o(i.left)||"right"===d&&o(n.left)<o(i.right)||"top"===d&&o(n.bottom)>o(i.top)||"bottom"===d&&o(n.top)<o(i.bottom),a=o(n.left)<o(c.left),s=o(n.right)>o(c.right),l=o(n.top)<o(c.top),e=o(n.bottom)>o(c.bottom),i="left"===d&&a||"right"===d&&s||"top"===d&&l||"bottom"===d&&e,n=-1!==["top","bottom"].indexOf(d),o=!!u.flipVariations&&(n&&"start"===p&&a||n&&"end"===p&&s||!n&&"start"===p&&l||!n&&"end"===p&&e),l=!!u.flipVariationsByContent&&(n&&"start"===p&&s||n&&"end"===p&&a||!n&&"start"===p&&e||!n&&"end"===p&&l),l=o||l;(r||i||l)&&(f.flipped=!0,(r||i)&&(d=g[t+1]),l&&(p="end"===(l=p)?"start":"start"===l?"end":l),f.placement=d+(p?"-"+p:""),f.offsets.popper=w({},f.offsets.popper,x(f.instance.popper,f.offsets.reference,f.placement)),f=P(f.instance.modifiers,f,"flip"))}),f},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],i=(a=e.offsets).popper,o=a.reference,r=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return i[r?"left":"top"]=o[n]-(a?i[r?"width":"height"]:0),e.placement=D(t),e.offsets.popper=E(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!U(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=k(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottom<n.top||t.left>n.right||t.top>n.bottom||t.right<n.left){if(!0===e.hide)return e;e.hide=!0,e.attributes["x-out-of-boundaries"]=""}else{if(!1===e.hide)return e;e.hide=!1,e.attributes["x-out-of-boundaries"]=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var n=t.x,i=t.y,o=e.offsets.popper;void 0!==(u=k(e.instance.modifiers,function(e){return"applyStyle"===e.name}).gpuAcceleration)&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var r=void 0!==u?u:t.gpuAcceleration,a=p(e.instance.popper),s=T(a),l={position:o.position},f=Q(e,window.devicePixelRatio<2||!B),u="bottom"===n?"top":"bottom",t="right"===i?"left":"right",o=L("transform"),n=void 0,i=void 0,i="bottom"==u?"HTML"===a.nodeName?-a.clientHeight+f.bottom:-s.height+f.bottom:f.top,n="right"==t?"HTML"===a.nodeName?-a.clientWidth+f.right:-s.width+f.right:f.left;return r&&o?(l[o]="translate3d("+n+"px, "+i+"px, 0)",l[u]=0,l[t]=0,l.willChange="transform"):(o="right"==t?-1:1,l[u]=i*("bottom"==u?-1:1),l[t]=n*o,l.willChange=u+", "+t),t={"x-placement":e.placement},e.attributes=w({},t,e.attributes),e.styles=w({},l,e.styles),e.arrowStyles=w({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(e){var t,n;return R(e.instance.popper,e.styles),t=e.instance.popper,n=e.attributes,Object.keys(n).forEach(function(e){!1!==n[e]?t.setAttribute(e,n[e]):t.removeAttribute(e)}),e.arrowElement&&Object.keys(e.arrowStyles).length&&R(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,n,i,o){return o=N(o,t,e,n.positionFixed),e=S(n.placement,o,t,e,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding),t.setAttribute("x-placement",e),R(t,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},e=(e(X,[{key:"update",value:function(){return function(){var e;this.state.isDestroyed||((e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}}).offsets.reference=N(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=S(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=x(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=P(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e)))}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,I(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[L("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=F(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return H.call(this)}}]),X);function X(e,t){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,X),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=o(this.update.bind(this)),this.options=w({},X.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=t&&t.jquery?t[0]:t,this.options.modifiers={},Object.keys(w({},X.Defaults.modifiers,i.modifiers)).forEach(function(e){n.options.modifiers[e]=w({},X.Defaults.modifiers[e]||{},i.modifiers?i.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return w({name:e},n.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(n.reference,n.popper,n.options,e,n.state)}),this.update();t=this.options.eventsEnabled;t&&this.enableEventListeners(),this.state.eventsEnabled=t}return e.Utils=("undefined"!=typeof window?window:global).PopperUtils,e.placements=W,e.Defaults=G,e}),function(e){if(void 0===e)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");e=e.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}($),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Util=t(e.jQuery)}(this,function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=t(e),n="transitionend";function i(e){var t=this,n=!1;return o.default(this).one(s.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||s.triggerTransitionEnd(t)},e),this}var s={TRANSITION_END:"bsTransitionEnd",getUID:function(e){for(;e+=~~(1e6*Math.random()),document.getElementById(e););return e},getSelectorFromElement:function(e){var t=e.getAttribute("data-target");t&&"#"!==t||(t=(e=e.getAttribute("href"))&&"#"!==e?e.trim():"");try{return document.querySelector(t)?t:null}catch(e){return null}},getTransitionDurationFromElement:function(e){if(!e)return 0;var t=o.default(e).css("transition-duration"),n=o.default(e).css("transition-delay"),i=parseFloat(t),e=parseFloat(n);return i||e?(t=t.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(t)+parseFloat(n))):0},reflow:function(e){return e.offsetHeight},triggerTransitionEnd:function(e){o.default(e).trigger(n)},supportsTransitionEnd:function(){return Boolean(n)},isElement:function(e){return(e[0]||e).nodeType},typeCheckConfig:function(e,t,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=t[i],a=r&&s.isElement(r)?"element":null==(a=r)?""+a:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(a))throw new Error(e.toUpperCase()+': Option "'+i+'" provided type "'+a+'" but expected type "'+o+'".')}var a},findShadowRoot:function(e){if(!document.documentElement.attachShadow)return null;if("function"!=typeof e.getRootNode)return e instanceof ShadowRoot?e:e.parentNode?s.findShadowRoot(e.parentNode):null;e=e.getRootNode();return e instanceof ShadowRoot?e:null},jQueryDetection:function(){if(void 0===o.default)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=o.default.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};return s.jQueryDetection(),o.default.fn.emulateTransitionEnd=i,o.default.event.special[s.TRANSITION_END]={bindType:n,delegateType:n,handle:function(e){if(o.default(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}},s}),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery"),require("./util.js")):"function"==typeof define&&define.amd?define(["jquery","./util"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Alert=t(e.jQuery,e.Util)}(this,function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e),r=n(t);function a(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var i="alert",s="bs.alert",l=o.default.fn[i],f=function(){function i(e){this._element=e}var e,t,n=i.prototype;return n.close=function(e){var t=this._element;e&&(t=this._getRootElement(e)),this._triggerCloseEvent(t).isDefaultPrevented()||this._removeElement(t)},n.dispose=function(){o.default.removeData(this._element,s),this._element=null},n._getRootElement=function(e){var t=r.default.getSelectorFromElement(e),n=!1;return n=(n=t?document.querySelector(t):n)||o.default(e).closest(".alert")[0]},n._triggerCloseEvent=function(e){var t=o.default.Event("close.bs.alert");return o.default(e).trigger(t),t},n._removeElement=function(t){var e,n=this;o.default(t).removeClass("show"),o.default(t).hasClass("fade")?(e=r.default.getTransitionDurationFromElement(t),o.default(t).one(r.default.TRANSITION_END,function(e){return n._destroyElement(t,e)}).emulateTransitionEnd(e)):this._destroyElement(t)},n._destroyElement=function(e){o.default(e).detach().trigger("closed.bs.alert").remove()},i._jQueryInterface=function(n){return this.each(function(){var e=o.default(this),t=e.data(s);t||(t=new i(this),e.data(s,t)),"close"===n&&t[n](this)})},i._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},e=i,t=[{key:"VERSION",get:function(){return"4.6.1"}}],(n=null)&&a(e.prototype,n),t&&a(e,t),i}();return o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',f._handleDismiss(new f)),o.default.fn[i]=f._jQueryInterface,o.default.fn[i].Constructor=f,o.default.fn[i].noConflict=function(){return o.default.fn[i]=l,f._jQueryInterface},f}),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Button=t(e.jQuery)}(this,function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e);function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var n="button",a="bs.button",o=r.default.fn[n],l="active",e='[data-toggle^="button"]',f='input:not([type="hidden"])',s=function(){function o(e){this._element=e,this.shouldAvoidTriggerChange=!1}var e,t,n=o.prototype;return n.toggle=function(){var e,t=!0,n=!0,i=r.default(this._element).closest('[data-toggle="buttons"]')[0];!i||(e=this._element.querySelector(f))&&("radio"===e.type&&(e.checked&&this._element.classList.contains(l)?t=!1:(i=i.querySelector(".active"))&&r.default(i).removeClass(l)),t&&("checkbox"!==e.type&&"radio"!==e.type||(e.checked=!this._element.classList.contains(l)),this.shouldAvoidTriggerChange||r.default(e).trigger("change")),e.focus(),n=!1),this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(n&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(l)),t&&r.default(this._element).toggleClass(l))},n.dispose=function(){r.default.removeData(this._element,a),this._element=null},o._jQueryInterface=function(n,i){return this.each(function(){var e=r.default(this),t=e.data(a);t||(t=new o(this),e.data(a,t)),t.shouldAvoidTriggerChange=i,"toggle"===n&&t[n]()})},e=o,t=[{key:"VERSION",get:function(){return"4.6.1"}}],(n=null)&&i(e.prototype,n),t&&i(e,t),o}();return r.default(document).on("click.bs.button.data-api",e,function(e){var t,n=e.target,i=n;!(n=!r.default(n).hasClass("btn")?r.default(n).closest(".btn")[0]:n)||n.hasAttribute("disabled")||n.classList.contains("disabled")||(t=n.querySelector(f))&&(t.hasAttribute("disabled")||t.classList.contains("disabled"))?e.preventDefault():"INPUT"!==i.tagName&&"LABEL"===n.tagName||s._jQueryInterface.call(r.default(n),"toggle","INPUT"===i.tagName)}).on("focus.bs.button.data-api blur.bs.button.data-api",e,function(e){var t=r.default(e.target).closest(".btn")[0];r.default(t).toggleClass("focus",/^focus(in)?$/.test(e.type))}),r.default(window).on("load.bs.button.data-api",function(){for(var e=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),t=0,n=e.length;t<n;t++){var i=e[t],o=i.querySelector(f);o.checked||o.hasAttribute("checked")?i.classList.add(l):i.classList.remove(l)}for(var r=0,a=(e=[].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length;r<a;r++){var s=e[r];"true"===s.getAttribute("aria-pressed")?s.classList.add(l):s.classList.remove(l)}}),r.default.fn[n]=s._jQueryInterface,r.default.fn[n].Constructor=s,r.default.fn[n].noConflict=function(){return r.default.fn[n]=o,s._jQueryInterface},s}),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery"),require("./util.js")):"function"==typeof define&&define.amd?define(["jquery","./util"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Collapse=t(e.jQuery,e.Util)}(this,function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=n(e),l=n(t);function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}var s="collapse",f="bs.collapse",r=a.default.fn[s],u="show",c="collapse",d="collapsing",h="collapsed",p='[data-toggle="collapse"]',g={toggle:!0,parent:""},m={toggle:"boolean",parent:"(string|element)"},v=function(){function r(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(p)),i=0,o=n.length;i<o;i++){var r=n[i],a=l.default.getSelectorFromElement(r),s=[].slice.call(document.querySelectorAll(a)).filter(function(e){return e===t});null!==a&&0<s.length&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e,t,n=r.prototype;return n.toggle=function(){a.default(this._element).hasClass(u)?this.hide():this.show()},n.show=function(){var e,t,n,i,o=this;this._isTransitioning||a.default(this._element).hasClass(u)||(i=this._parent&&0===(i=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter(function(e){return"string"==typeof o._config.parent?e.getAttribute("data-parent")===o._config.parent:e.classList.contains(c)})).length?null:i)&&(n=a.default(i).not(this._selector).data(f))&&n._isTransitioning||(e=a.default.Event("show.bs.collapse"),a.default(this._element).trigger(e),e.isDefaultPrevented()||(i&&(r._jQueryInterface.call(a.default(i).not(this._selector),"hide"),n||a.default(i).data(f,null)),t=this._getDimension(),a.default(this._element).removeClass(c).addClass(d),this._element.style[t]=0,this._triggerArray.length&&a.default(this._triggerArray).removeClass(h).attr("aria-expanded",!0),this.setTransitioning(!0),n="scroll"+(t[0].toUpperCase()+t.slice(1)),i=l.default.getTransitionDurationFromElement(this._element),a.default(this._element).one(l.default.TRANSITION_END,function(){a.default(o._element).removeClass(d).addClass(c+" "+u),o._element.style[t]="",o.setTransitioning(!1),a.default(o._element).trigger("shown.bs.collapse")}).emulateTransitionEnd(i),this._element.style[t]=this._element[n]+"px"))},n.hide=function(){var e=this;if(!this._isTransitioning&&a.default(this._element).hasClass(u)){var t=a.default.Event("hide.bs.collapse");if(a.default(this._element).trigger(t),!t.isDefaultPrevented()){t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",l.default.reflow(this._element),a.default(this._element).addClass(d).removeClass(c+" "+u);var n=this._triggerArray.length;if(0<n)for(var i=0;i<n;i++){var o=this._triggerArray[i],r=l.default.getSelectorFromElement(o);null!==r&&(a.default([].slice.call(document.querySelectorAll(r))).hasClass(u)||a.default(o).addClass(h).attr("aria-expanded",!1))}this.setTransitioning(!0);this._element.style[t]="";t=l.default.getTransitionDurationFromElement(this._element);a.default(this._element).one(l.default.TRANSITION_END,function(){e.setTransitioning(!1),a.default(e._element).removeClass(d).addClass(c).trigger("hidden.bs.collapse")}).emulateTransitionEnd(t)}}},n.setTransitioning=function(e){this._isTransitioning=e},n.dispose=function(){a.default.removeData(this._element,f),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},n._getConfig=function(e){return(e=o({},g,e)).toggle=Boolean(e.toggle),l.default.typeCheckConfig(s,e,m),e},n._getDimension=function(){return a.default(this._element).hasClass("width")?"width":"height"},n._getParent=function(){var e,n=this;l.default.isElement(this._config.parent)?(e=this._config.parent,void 0!==this._config.parent.jquery&&(e=this._config.parent[0])):e=document.querySelector(this._config.parent);var t='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',t=[].slice.call(e.querySelectorAll(t));return a.default(t).each(function(e,t){n._addAriaAndCollapsedClass(r._getTargetFromElement(t),[t])}),e},n._addAriaAndCollapsedClass=function(e,t){e=a.default(e).hasClass(u);t.length&&a.default(t).toggleClass(h,!e).attr("aria-expanded",e)},r._getTargetFromElement=function(e){e=l.default.getSelectorFromElement(e);return e?document.querySelector(e):null},r._jQueryInterface=function(i){return this.each(function(){var e=a.default(this),t=e.data(f),n=o({},g,e.data(),"object"==typeof i&&i?i:{});if(!t&&n.toggle&&"string"==typeof i&&/show|hide/.test(i)&&(n.toggle=!1),t||(t=new r(this,n),e.data(f,t)),"string"==typeof i){if(void 0===t[i])throw new TypeError('No method named "'+i+'"');t[i]()}})},e=r,t=[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return g}}],(n=null)&&i(e.prototype,n),t&&i(e,t),r}();return a.default(document).on("click.bs.collapse.data-api",p,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var n=a.default(this),e=l.default.getSelectorFromElement(this),e=[].slice.call(document.querySelectorAll(e));a.default(e).each(function(){var e=a.default(this),t=e.data(f)?"toggle":n.data();v._jQueryInterface.call(e,t)})}),a.default.fn[s]=v._jQueryInterface,a.default.fn[s].Constructor=v,a.default.fn[s].noConflict=function(){return a.default.fn[s]=r,v._jQueryInterface},v}),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery"),require("popper.js"),require("./util.js")):"function"==typeof define&&define.amd?define(["jquery","popper.js","./util"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Dropdown=t(e.jQuery,e.Popper,e.Util)}(this,function(e,t,n){"use strict";function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=i(e),o=i(t),r=i(n);function a(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}var l="dropdown",c="bs.dropdown",d="."+c,t=".data-api",f=u.default.fn[l],h=new RegExp("38|40|27"),p="disabled",g="show",m="dropdown-menu-right",v="hide"+d,y="hidden"+d,n="click"+d+t,t="keydown"+d+t,_='[data-toggle="dropdown"]',b=".dropdown-menu",w={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},E={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},T=function(){function f(e,t){this._element=e,this._popper=null,this._config=this._getConfig(t),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e,t,n=f.prototype;return n.toggle=function(){var e;this._element.disabled||u.default(this._element).hasClass(p)||(e=u.default(this._menu).hasClass(g),f._clearMenus(),e||this.show(!0))},n.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||u.default(this._element).hasClass(p)||u.default(this._menu).hasClass(g))){var t={relatedTarget:this._element},n=u.default.Event("show.bs.dropdown",t),i=f._getParentFromElement(this._element);if(u.default(i).trigger(n),!n.isDefaultPrevented()){if(!this._inNavbar&&e){if(void 0===o.default)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");e=this._element;"parent"===this._config.reference?e=i:r.default.isElement(this._config.reference)&&(e=this._config.reference,void 0!==this._config.reference.jquery&&(e=this._config.reference[0])),"scrollParent"!==this._config.boundary&&u.default(i).addClass("position-static"),this._popper=new o.default(e,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===u.default(i).closest(".navbar-nav").length&&u.default(document.body).children().on("mouseover",null,u.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),u.default(this._menu).toggleClass(g),u.default(i).toggleClass(g).trigger(u.default.Event("shown.bs.dropdown",t))}}},n.hide=function(){var e,t,n;this._element.disabled||u.default(this._element).hasClass(p)||!u.default(this._menu).hasClass(g)||(e={relatedTarget:this._element},t=u.default.Event(v,e),n=f._getParentFromElement(this._element),u.default(n).trigger(t),t.isDefaultPrevented()||(this._popper&&this._popper.destroy(),u.default(this._menu).toggleClass(g),u.default(n).toggleClass(g).trigger(u.default.Event(y,e))))},n.dispose=function(){u.default.removeData(this._element,c),u.default(this._element).off(d),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},n.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},n._addEventListeners=function(){var t=this;u.default(this._element).on("click.bs.dropdown",function(e){e.preventDefault(),e.stopPropagation(),t.toggle()})},n._getConfig=function(e){return e=s({},this.constructor.Default,u.default(this._element).data(),e),r.default.typeCheckConfig(l,e,this.constructor.DefaultType),e},n._getMenuElement=function(){var e;return this._menu||(e=f._getParentFromElement(this._element))&&(this._menu=e.querySelector(b)),this._menu},n._getPlacement=function(){var e=u.default(this._element.parentNode),t="bottom-start";return e.hasClass("dropup")?t=u.default(this._menu).hasClass(m)?"top-end":"top-start":e.hasClass("dropright")?t="right-start":e.hasClass("dropleft")?t="left-start":u.default(this._menu).hasClass(m)&&(t="bottom-end"),t},n._detectNavbar=function(){return 0<u.default(this._element).closest(".navbar").length},n._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=s({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},n._getPopperConfig=function(){var e={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(e.modifiers.applyStyle={enabled:!1}),s({},e,this._config.popperConfig)},f._jQueryInterface=function(t){return this.each(function(){var e=u.default(this).data(c);if(e||(e=new f(this,"object"==typeof t?t:null),u.default(this).data(c,e)),"string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}})},f._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var t=[].slice.call(document.querySelectorAll(_)),n=0,i=t.length;n<i;n++){var o,r,a=f._getParentFromElement(t[n]),s=u.default(t[n]).data(c),l={relatedTarget:t[n]};e&&"click"===e.type&&(l.clickEvent=e),s&&(o=s._menu,u.default(a).hasClass(g)&&(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&u.default.contains(a,e.target)||(r=u.default.Event(v,l),u.default(a).trigger(r),r.isDefaultPrevented()||("ontouchstart"in document.documentElement&&u.default(document.body).children().off("mouseover",null,u.default.noop),t[n].setAttribute("aria-expanded","false"),s._popper&&s._popper.destroy(),u.default(o).removeClass(g),u.default(a).removeClass(g).trigger(u.default.Event(y,l))))))}},f._getParentFromElement=function(e){var t,n=r.default.getSelectorFromElement(e);return(t=n?document.querySelector(n):t)||e.parentNode},f._dataApiKeydownHandler=function(e){if((/input|textarea/i.test(e.target.tagName)?!(32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||u.default(e.target).closest(b).length)):h.test(e.which))&&!this.disabled&&!u.default(this).hasClass(p)){var t=f._getParentFromElement(this),n=u.default(t).hasClass(g);if(n||27!==e.which){if(e.preventDefault(),e.stopPropagation(),!n||27===e.which||32===e.which)return 27===e.which&&u.default(t.querySelector(_)).trigger("focus"),void u.default(this).trigger("click");n=[].slice.call(t.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter(function(e){return u.default(e).is(":visible")});0!==n.length&&(t=n.indexOf(e.target),38===e.which&&0<t&&t--,40===e.which&&t<n.length-1&&t++,n[t=t<0?0:t].focus())}}},e=f,t=[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return w}},{key:"DefaultType",get:function(){return E}}],(n=null)&&a(e.prototype,n),t&&a(e,t),f}();return u.default(document).on(t,_,T._dataApiKeydownHandler).on(t,b,T._dataApiKeydownHandler).on(n+" keyup.bs.dropdown.data-api",T._clearMenus).on(n,_,function(e){e.preventDefault(),e.stopPropagation(),T._jQueryInterface.call(u.default(this),"toggle")}).on(n,".dropdown form",function(e){e.stopPropagation()}),u.default.fn[l]=T._jQueryInterface,u.default.fn[l].Constructor=T,u.default.fn[l].noConflict=function(){return u.default.fn[l]=f,T._jQueryInterface},T}),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery"),require("./util.js")):"function"==typeof define&&define.amd?define(["jquery","./util"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).ScrollSpy=t(e.jQuery,e.Util)}(this,function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=n(e),a=n(t);function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}var l="scrollspy",f="bs.scrollspy",u="."+f,i=r.default.fn[l],c="active",d="position",h=".nav, .list-group",p=".nav-link",g=".list-group-item",m={offset:10,method:"auto",target:""},v={offset:"number",method:"string",target:"(string|element)"},y=function(){function n(e,t){var n=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(t),this._selector=this._config.target+" "+p+","+this._config.target+" "+g+","+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,r.default(this._scrollElement).on("scroll.bs.scrollspy",function(e){return n._process(e)}),this.refresh(),this._process()}var e,t,i=n.prototype;return i.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":d,i="auto"===this._config.method?e:this._config.method,o=i===d?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(e){var t,n=a.default.getSelectorFromElement(e);if(t=n?document.querySelector(n):t){e=t.getBoundingClientRect();if(e.width||e.height)return[r.default(t)[i]().top+o,n]}return null}).filter(function(e){return e}).sort(function(e,t){return e[0]-t[0]}).forEach(function(e){t._offsets.push(e[0]),t._targets.push(e[1])})},i.dispose=function(){r.default.removeData(this._element,f),r.default(this._scrollElement).off(u),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},i._getConfig=function(e){var t;return"string"!=typeof(e=s({},m,"object"==typeof e&&e?e:{})).target&&a.default.isElement(e.target)&&((t=r.default(e.target).attr("id"))||(t=a.default.getUID(l),r.default(e.target).attr("id",t)),e.target="#"+t),a.default.typeCheckConfig(l,e,v),e},i._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},i._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},i._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},i._process=function(){var e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),n<=e){n=this._targets[this._targets.length-1];this._activeTarget!==n&&this._activate(n)}else{if(this._activeTarget&&e<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var i=this._offsets.length;i--;)this._activeTarget!==this._targets[i]&&e>=this._offsets[i]&&(void 0===this._offsets[i+1]||e<this._offsets[i+1])&&this._activate(this._targets[i])}},i._activate=function(t){this._activeTarget=t,this._clear();var e=this._selector.split(",").map(function(e){return e+'[data-target="'+t+'"],'+e+'[href="'+t+'"]'}),e=r.default([].slice.call(document.querySelectorAll(e.join(","))));e.hasClass("dropdown-item")?(e.closest(".dropdown").find(".dropdown-toggle").addClass(c),e.addClass(c)):(e.addClass(c),e.parents(h).prev(p+", "+g).addClass(c),e.parents(h).prev(".nav-item").children(p).addClass(c)),r.default(this._scrollElement).trigger("activate.bs.scrollspy",{relatedTarget:t})},i._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(e){return e.classList.contains(c)}).forEach(function(e){return e.classList.remove(c)})},n._jQueryInterface=function(t){return this.each(function(){var e=r.default(this).data(f);if(e||(e=new n(this,"object"==typeof t&&t),r.default(this).data(f,e)),"string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}})},e=n,t=[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return m}}],(i=null)&&o(e.prototype,i),t&&o(e,t),n}();return r.default(window).on("load.bs.scrollspy.data-api",function(){for(var e=[].slice.call(document.querySelectorAll('[data-spy="scroll"]')),t=e.length;t--;){var n=r.default(e[t]);y._jQueryInterface.call(n,n.data())}}),r.default.fn[l]=y._jQueryInterface,r.default.fn[l].Constructor=y,r.default.fn[l].noConflict=function(){return r.default.fn[l]=i,y._jQueryInterface},y}),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery"),require("./util.js")):"function"==typeof define&&define.amd?define(["jquery","./util"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Tab=t(e.jQuery,e.Util)}(this,function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=n(e),l=n(t);function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r="bs.tab",i=s.default.fn.tab,f="active",u=".active",c="> li > .active",a=function(){function i(e){this._element=e}var e,t,n=i.prototype;return n.show=function(){var e,t,n,i,o,r,a=this;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&s.default(this._element).hasClass(f)||s.default(this._element).hasClass("disabled")||(r=s.default(this._element).closest(".nav, .list-group")[0],t=l.default.getSelectorFromElement(this._element),r&&(o="UL"===r.nodeName||"OL"===r.nodeName?c:u,n=(n=s.default.makeArray(s.default(r).find(o)))[n.length-1]),i=s.default.Event("hide.bs.tab",{relatedTarget:this._element}),o=s.default.Event("show.bs.tab",{relatedTarget:n}),n&&s.default(n).trigger(i),s.default(this._element).trigger(o),o.isDefaultPrevented()||i.isDefaultPrevented()||(t&&(e=document.querySelector(t)),this._activate(this._element,r),r=function(){var e=s.default.Event("hidden.bs.tab",{relatedTarget:a._element}),t=s.default.Event("shown.bs.tab",{relatedTarget:n});s.default(n).trigger(e),s.default(a._element).trigger(t)},e?this._activate(e,e.parentNode,r):r()))},n.dispose=function(){s.default.removeData(this._element,r),this._element=null},n._activate=function(e,t,n){function i(){return o._transitionComplete(e,r,n)}var o=this,r=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?s.default(t).children(u):s.default(t).find(c))[0],t=n&&r&&s.default(r).hasClass("fade");r&&t?(t=l.default.getTransitionDurationFromElement(r),s.default(r).removeClass("show").one(l.default.TRANSITION_END,i).emulateTransitionEnd(t)):i()},n._transitionComplete=function(e,t,n){var i;t&&(s.default(t).removeClass(f),(i=s.default(t.parentNode).find("> .dropdown-menu .active")[0])&&s.default(i).removeClass(f),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)),s.default(e).addClass(f),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),l.default.reflow(e),e.classList.contains("fade")&&e.classList.add("show");var t=e.parentNode;(t=t&&"LI"===t.nodeName?t.parentNode:t)&&s.default(t).hasClass("dropdown-menu")&&((t=s.default(e).closest(".dropdown")[0])&&(t=[].slice.call(t.querySelectorAll(".dropdown-toggle")),s.default(t).addClass(f)),e.setAttribute("aria-expanded",!0)),n&&n()},i._jQueryInterface=function(n){return this.each(function(){var e=s.default(this),t=e.data(r);if(t||(t=new i(this),e.data(r,t)),"string"==typeof n){if(void 0===t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},e=i,t=[{key:"VERSION",get:function(){return"4.6.1"}}],(n=null)&&o(e.prototype,n),t&&o(e,t),i}();return s.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',function(e){e.preventDefault(),a._jQueryInterface.call(s.default(this),"show")}),s.default.fn.tab=a._jQueryInterface,s.default.fn.tab.Constructor=a,s.default.fn.tab.noConflict=function(){return s.default.fn.tab=i,a._jQueryInterface},a}),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery"),require("popper.js"),require("./util.js")):"function"==typeof define&&define.amd?define(["jquery","popper.js","./util"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Tooltip=t(e.jQuery,e.Popper,e.Util)}(this,function(e,t,n){"use strict";function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=i(e),a=i(t),s=i(n);function l(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}var u=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],n={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},c=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,d=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;function h(e,r,t){if(0===e.length)return e;if(t&&"function"==typeof t)return t(e);for(var e=(new window.DOMParser).parseFromString(e,"text/html"),a=Object.keys(r),s=[].slice.call(e.body.querySelectorAll("*")),n=function(e,t){var n=s[e],i=n.nodeName.toLowerCase();if(-1===a.indexOf(n.nodeName.toLowerCase()))return n.parentNode.removeChild(n),"continue";var e=[].slice.call(n.attributes),o=[].concat(r["*"]||[],r[i]||[]);e.forEach(function(e){!function(e,t){var n=e.nodeName.toLowerCase();if(-1!==t.indexOf(n))return-1===u.indexOf(n)||Boolean(c.test(e.nodeValue)||d.test(e.nodeValue));for(var i=t.filter(function(e){return e instanceof RegExp}),o=0,r=i.length;o<r;o++)if(i[o].test(n))return 1}(e,o)&&n.removeAttribute(e.nodeName)})},i=0,o=s.length;i<o;i++)n(i);return e.body.innerHTML}var p="tooltip",g="bs.tooltip",m="."+g,o=r.default.fn[p],v="bs-tooltip",y=new RegExp("(^|\\s)"+v+"\\S+","g"),_=["sanitize","whiteList","sanitizeFn"],b="fade",w="show",E="show",T="hover",C="focus",j={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},O={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:n,popperConfig:null},S={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},N={HIDE:"hide"+m,HIDDEN:"hidden"+m,SHOW:"show"+m,SHOWN:"shown"+m,INSERTED:"inserted"+m,CLICK:"click"+m,FOCUSIN:"focusin"+m,FOCUSOUT:"focusout"+m,MOUSEENTER:"mouseenter"+m,MOUSELEAVE:"mouseleave"+m},A=function(){function o(e,t){if(void 0===a.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var e,t,n=o.prototype;return n.enable=function(){this._isEnabled=!0},n.disable=function(){this._isEnabled=!1},n.toggleEnabled=function(){this._isEnabled=!this._isEnabled},n.toggle=function(e){var t,n;this._isEnabled&&(e?(t=this.constructor.DATA_KEY,(n=r.default(e.currentTarget).data(t))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),r.default(e.currentTarget).data(t,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)):r.default(this.getTipElement()).hasClass(w)?this._leave(null,this):this._enter(null,this))},n.dispose=function(){clearTimeout(this._timeout),r.default.removeData(this.element,this.constructor.DATA_KEY),r.default(this.element).off(this.constructor.EVENT_KEY),r.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&r.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},n.show=function(){var t=this;if("none"===r.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e,n,i=r.default.Event(this.constructor.Event.SHOW);this.isWithContent()&&this._isEnabled&&(r.default(this.element).trigger(i),n=s.default.findShadowRoot(this.element),e=r.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element),!i.isDefaultPrevented()&&e&&(n=this.getTipElement(),i=s.default.getUID(this.constructor.NAME),n.setAttribute("id",i),this.element.setAttribute("aria-describedby",i),this.setContent(),this.config.animation&&r.default(n).addClass(b),e="function"==typeof this.config.placement?this.config.placement.call(this,n,this.element):this.config.placement,i=this._getAttachment(e),this.addAttachmentClass(i),e=this._getContainer(),r.default(n).data(this.constructor.DATA_KEY,this),r.default.contains(this.element.ownerDocument.documentElement,this.tip)||r.default(n).appendTo(e),r.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new a.default(this.element,n,this._getPopperConfig(i)),r.default(n).addClass(w),r.default(n).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&r.default(document.body).children().on("mouseover",null,r.default.noop),i=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,r.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)},r.default(this.tip).hasClass(b)?(n=s.default.getTransitionDurationFromElement(this.tip),r.default(this.tip).one(s.default.TRANSITION_END,i).emulateTransitionEnd(n)):i()))},n.hide=function(e){function t(){n._hoverState!==E&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),r.default(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()}var n=this,i=this.getTipElement(),o=r.default.Event(this.constructor.Event.HIDE);r.default(this.element).trigger(o),o.isDefaultPrevented()||(r.default(i).removeClass(w),"ontouchstart"in document.documentElement&&r.default(document.body).children().off("mouseover",null,r.default.noop),this._activeTrigger.click=!1,this._activeTrigger[C]=!1,this._activeTrigger[T]=!1,r.default(this.tip).hasClass(b)?(o=s.default.getTransitionDurationFromElement(i),r.default(i).one(s.default.TRANSITION_END,t).emulateTransitionEnd(o)):t(),this._hoverState="")},n.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},n.isWithContent=function(){return Boolean(this.getTitle())},n.addAttachmentClass=function(e){r.default(this.getTipElement()).addClass(v+"-"+e)},n.getTipElement=function(){return this.tip=this.tip||r.default(this.config.template)[0],this.tip},n.setContent=function(){var e=this.getTipElement();this.setElementContent(r.default(e.querySelectorAll(".tooltip-inner")),this.getTitle()),r.default(e).removeClass(b+" "+w)},n.setElementContent=function(e,t){"object"!=typeof t||!t.nodeType&&!t.jquery?this.config.html?(this.config.sanitize&&(t=h(t,this.config.whiteList,this.config.sanitizeFn)),e.html(t)):e.text(t):this.config.html?r.default(t).parent().is(e)||e.empty().append(t):e.text(r.default(t).text())},n.getTitle=function(){return this.element.getAttribute("data-original-title")||("function"==typeof this.config.title?this.config.title.call(this.element):this.config.title)},n._getPopperConfig=function(e){var t=this;return f({},{placement:e,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){return t._handlePopperPlacementChange(e)}},this.config.popperConfig)},n._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=f({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},n._getContainer=function(){return!1===this.config.container?document.body:s.default.isElement(this.config.container)?r.default(this.config.container):r.default(document).find(this.config.container)},n._getAttachment=function(e){return j[e.toUpperCase()]},n._setListeners=function(){var n=this;this.config.trigger.split(" ").forEach(function(e){var t;"click"===e?r.default(n.element).on(n.constructor.Event.CLICK,n.config.selector,function(e){return n.toggle(e)}):"manual"!==e&&(t=e===T?n.constructor.Event.MOUSEENTER:n.constructor.Event.FOCUSIN,e=e===T?n.constructor.Event.MOUSELEAVE:n.constructor.Event.FOCUSOUT,r.default(n.element).on(t,n.config.selector,function(e){return n._enter(e)}).on(e,n.config.selector,function(e){return n._leave(e)}))}),this._hideModalHandler=function(){n.element&&n.hide()},r.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=f({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},n._fixTitle=function(){var e=typeof this.element.getAttribute("data-original-title");!this.element.getAttribute("title")&&"string"==e||(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},n._enter=function(e,t){var n=this.constructor.DATA_KEY;(t=t||r.default(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),r.default(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusin"===e.type?C:T]=!0),r.default(t.getTipElement()).hasClass(w)||t._hoverState===E?t._hoverState=E:(clearTimeout(t._timeout),t._hoverState=E,t.config.delay&&t.config.delay.show?t._timeout=setTimeout(function(){t._hoverState===E&&t.show()},t.config.delay.show):t.show())},n._leave=function(e,t){var n=this.constructor.DATA_KEY;(t=t||r.default(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),r.default(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusout"===e.type?C:T]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState="out",t.config.delay&&t.config.delay.hide?t._timeout=setTimeout(function(){"out"===t._hoverState&&t.hide()},t.config.delay.hide):t.hide())},n._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},n._getConfig=function(e){var t=r.default(this.element).data();return Object.keys(t).forEach(function(e){-1!==_.indexOf(e)&&delete t[e]}),"number"==typeof(e=f({},this.constructor.Default,t,"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),s.default.typeCheckConfig(p,e,this.constructor.DefaultType),e.sanitize&&(e.template=h(e.template,e.whiteList,e.sanitizeFn)),e},n._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},n._cleanTipClass=function(){var e=r.default(this.getTipElement()),t=e.attr("class").match(y);null!==t&&t.length&&e.removeClass(t.join(""))},n._handlePopperPlacementChange=function(e){this.tip=e.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(e.placement))},n._fixTransition=function(){var e=this.getTipElement(),t=this.config.animation;null===e.getAttribute("x-placement")&&(r.default(e).removeClass(b),this.config.animation=!1,this.hide(),this.show(),this.config.animation=t)},o._jQueryInterface=function(i){return this.each(function(){var e=r.default(this),t=e.data(g),n="object"==typeof i&&i;if((t||!/dispose|hide/.test(i))&&(t||(t=new o(this,n),e.data(g,t)),"string"==typeof i)){if(void 0===t[i])throw new TypeError('No method named "'+i+'"');t[i]()}})},e=o,t=[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return O}},{key:"NAME",get:function(){return p}},{key:"DATA_KEY",get:function(){return g}},{key:"Event",get:function(){return N}},{key:"EVENT_KEY",get:function(){return m}},{key:"DefaultType",get:function(){return S}}],(n=null)&&l(e.prototype,n),t&&l(e,t),o}();return r.default.fn[p]=A._jQueryInterface,r.default.fn[p].Constructor=A,r.default.fn[p].noConflict=function(){return r.default.fn[p]=o,A._jQueryInterface},A});
jQuery(document).ready(function () {

  /**
   * Topbar je nach Aufloesung vollstaendig deaktivieren
   */

  if ($('body').hasClass('header-with-topbar')) {

    sc27PageHeaderTopbarSetState();

    $(window).on('debouncedresize throttledresize', function (e) {
      sc27PageHeaderTopbarSetState();
    });


    /**
     * Funktion zum dynamischen Aus-/Einklappen der Topbar
     */

    if ($('.page-area-header').hasClass('header-fixed')) {

      $('.page-area-header').headroom({
        offset: 47,
        tolerance: {
          up: 5,
          down: 0
        },
        // css classes to apply
        classes: {
          // when element is initialised
          initial: "headroom",
          // when scrolling up
          pinned: "headroom-pinned",
          // when scrolling down
          unpinned: "headroom-unpinned",
          // when above offset
          top: "headroom-top",
          // when below offset
          notTop: "headroom-not-top",
          // when at bottom of scoll area
          bottom: "headroom-bottom",
          // when not at bottom of scroll area
          notBottom: "headroom-not-bottom"
        },
        onNotTop: function () {

          // $('.page-area-topbar').hide(250);

          if ($(window).innerWidth() >= pageConfig.responsiveGridFloatBreakpoint) {
            sc27PageHeaderTopbarHide();
          }

        },
        onTop: function () {

          // $('.page-area-topbar').show(250);

          if ($(window).innerWidth() >= pageConfig.responsiveGridFloatBreakpoint) {
            sc27PageHeaderTopbarShow();
          }

        }
      });

    }

  } else {

    /**
     * Abstand zum Inhalt einbringen
     */

    sc27PageUpdateHeaderPosition();

    $(window).on('debouncedresize throttledresize', function (e) {
      sc27PageUpdateHeaderPosition();
    });

  }

});


/**
 * Blendet die Topbar im Header ein
 */
function sc27PageHeaderTopbarShow() {

  $('.page-area-topbar').slideDown(pageConfig.topbarAnimationDuration, function () {
    sc27PageUpdateHeaderHeight();
    sc27PageUpdateHeaderPosition();
  });

}


/**
 * Blendet die Topbar im Header aus
 */
function sc27PageHeaderTopbarHide() {

  $('.page-area-topbar').slideUp(pageConfig.topbarAnimationDuration, function () {
    sc27PageUpdateHeaderHeight();
    sc27PageUpdateHeaderPosition();
  });

}


/**
 * Prueft, ob die Topbar generell angezeigt werden soll oder unsichtbar sein soll und updated diesen Status
 */
function sc27PageHeaderTopbarSetState() {

  if ($(window).outerWidth() < pageConfig.responsiveGridFloatBreakpoint) {
    $('.page-area-header').addClass('topbar-disabled');
  } else {
    $('.page-area-header').removeClass('topbar-disabled');
  }

  // Anpassungen nur bei fixiertem Header durchfuehren
  if ($('.page-area-header').hasClass('header-fixed')) {
    sc27PageUpdateHeaderHeight();
    sc27PageUpdateHeaderPosition();
  }

}


/**
 * Bei feststehendem Header Seiteninhalte stets darunter anzeigen lassen
 */

function sc27PageUpdateHeaderPosition() {

  if ($('.page-area-header').hasClass('header-fixed')) {

    if (!$('body').hasClass('page-layout-landingpage')) {
      $('#page').css('padding-top', $('header.page-area-header').innerHeight() + 'px');
    }

  }

}


/**
 * Hoehe des Headers an Hoehe des Logos anpassen
 */

function sc27PageUpdateHeaderHeight() {

  if ($(window).outerWidth() < pageConfig.responsiveGridFloatBreakpoint) {
    $('.navbar-brand').css('height', $('.navbar-brand img:visible').height() + 'px');
  } else {
    $('.navbar-brand').css('height', '');
  }

}

/**
 * Smooth Scrolling
 */

function sc27SmoothScroll(target) {

  var positionMarginSmall = 0;
  var positionMarginBig = 0;

  var positionY = target.offset().top;


  /**
   * Oberen Abstand über Zielelement ermitteln
   */

  var marginTop = getComputedStyle(target[0]).marginTop;

  var tmpPattern = /^([0-9]+)px$/;
  var tmpMatch = tmpPattern.exec(marginTop);

  marginTop = ( tmpMatch.length > 1 ) ? parseInt(tmpMatch[1]) : 0;


  /**
   * Höhe des statischen Headers berücksichtigen
   */

  if ($('.page-area-header').css('position') === 'fixed') {

    positionY = positionY - $('.page-area-header').height() - marginTop;

    // Etwas Abstand vom Ziel nach oben lassen
    positionY = positionY - positionMarginSmall;

  } else {

    // Etwas Abstand zum Ziel nach oben lassen
    positionY = positionY - positionMarginBig;

  }

  positionY = Math.ceil(positionY);


  /**
   * An berechnete Position scrollen
   */

  $('html, body').stop().animate({
    scrollTop: positionY
  }, pageConfig.smoothScrollingSpeed, pageConfig.smoothScrollingEasing, function () {

    // Callback after animation
    // Must change focus!
    var $target = $(target);
    $target.focus();

    // Checking if the target was focused
    if ($target.is(":focus")) {
      return false;
    } else {
      // Adding tabindex for elements not focusable
      $target.attr('tabindex', '-1');

      // Set focus again
      $target.focus();
    }

  });


  return false;

}


/**
 * Smooth Scrolling bei Klick auf entsprechende Links sowie bei Seitenaufruf
 */

jQuery(document).ready(function () {

  /**
   * Sofort bei Seitenaufruf an angegebene Stelle scrollen
   */

  if (location.hash) {

    var target = $(location.hash);

    if (target.length) {
      sc27SmoothScroll($(target));
    }

  }


  /**
   * Smooth Scolling zu lokalen Zielen
   */

  $('a.smooth-scroll[href*="#"]:not([href="#"]), a[href*="#top"]').click(function (e) {

    var target = $(this.hash);
    target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');

    if (target.length) {

      e.preventDefault();
      sc27SmoothScroll(target);

      return false;

    }

  });

});

document.addEventListener('DOMContentLoaded', function () {

  /**
   * JavaScript-Erkennung
   */

  document.getElementsByTagName('html')[0].classList.remove('no-js');


  /**
   * Bootstrap - Tabellen
   */

  // Bootstrap: "table"-Tags mit "div"-Tag der Klasse "table-responsive" umschließen
  document.querySelectorAll('table').forEach(function (htmlTableElement) {

    htmlTableWrapperElement = document.createElement('div');
    htmlTableWrapperElement.classList.add('table-responsive');

    htmlTableElement.parentNode.insertBefore(htmlTableWrapperElement, htmlTableElement);
    htmlTableWrapperElement.appendChild(htmlTableElement);

  });


  // Bootstrap: "table"-Tags um Klasse "table" erweitern
  document.querySelectorAll('table:not(.table)').forEach(function (htmlElement) {
    htmlElement.classList.add('table');
  });


  /**
   * sector27 - Externe JavaScript-Einbindung - Initialisierung
   */

  window.sc27ExternalJavaScript = new Sc27ExternalJavaScript();

  window.sc27ExternalJavaScript.init({
    debug: ((typeof pageConfig.debug !== 'undefined') && (typeof pageConfig.debug.Sc27ExternalJavascript !== 'undefined') && (pageConfig.debug.Sc27ExternalJavascript === '1')),
    consentStorageType: '',
  });

}, false);

/**
 * Submit-Button erst nutzbar machen, nachdem Eingabe erfolgt ist
 */

function searchHeaderSlideoutKeyup(){

	var searchPhrase = $('.sc27SearchboxHeaderBig .sb-search-input').val();
	searchPhrase = $.trim(searchPhrase).length;

	if ( searchPhrase !== 0 ) {
		$('.sc27SearchboxHeaderBig .sb-search-submit').css('z-index','99');
	}
	else {
		$('.sc27SearchboxHeaderBig .sb-search-input').val('');
		$('.sc27SearchboxHeaderBig .sb-search-submit').css('z-index','-999');
	}

}



function searchHeaderSubmit() {

	var searchPhrase = $('.sc27SearchboxHeaderBig .sb-search-input').val();
	var searchPhraseLength = $.trim(searchPhrase).length;


	if (typeof searchPhraseLength == undefined) {
		return false;
	}

	if (typeof searchPhraseLength == null) {
		return false;
	}

	if ( searchPhraseLength > 0 ) {

		$('.sc27SearchboxHeaderBig .sb-search-submit').css('z-index','99');

		return true;

	}
	else {

		$('.sc27SearchboxHeaderBig .sb-search-input').val('');
		$('.sc27SearchboxHeaderBig .sb-search-submit').css('z-index','-999');

		return false;

	}

}



/**
* Normale Auflösungen: Klick auf Suchsymbol oeffnet Eingabefeld erst, zweiter Klick versendet Formulareingaben
**/

$(document).ready(function(){

	var submitIcon = $('.sc27SearchboxHeaderBig .sb-icon-search');
	var submitInput = $('.sc27SearchboxHeaderBig .sb-search-input');
	var searchBox = $('.sc27SearchboxHeaderBig .sb-search');
	var sc27SearchboxIsOpen = false;


	submitIcon.mouseup(function(){
		return false;
	});


	searchBox.mouseup(function(){
		return false;
	});


	$(document).mouseup(function(){

		if ( sc27SearchboxIsOpen == true ) {

			// Eingabefeld zuklappen
			sc27SearchboxIsOpen = false;

			$(submitInput).val('');
			$(submitInput).blur();

			// $(submitIcon).blur();
			// $(submitInput).removeAttr('required');

			$(searchBox).removeClass('sb-search-open');
			$(submitInput).removeAttr('required');

			$('.sc27SearchboxHeaderBig .sb-search-submit').css('z-index', '-999');

		}

	});


	submitIcon.click(function(){

		if ( sc27SearchboxIsOpen == false ) {

			// Eingabefeld aufklappen
			sc27SearchboxIsOpen = true;

			$(searchBox).addClass('sb-search-open');
			$(submitInput).focus();
			$(submitInput).attr('required', 'required');

		}
		else {

			// Eingabefeld zuklappen
			sc27SearchboxIsOpen = false;

			$(submitInput).val('');
			$(submitInput).blur();

			$(searchBox).removeClass('sb-search-open');
			$(submitInput).removeAttr('required');

			$('.sc27SearchboxHeaderBig .sb-search-submit').css('z-index', '-999');

		}

	});

});



/**
* Kleine Auflösungen: Klick auf Suchsymbol versendet Formulareingaben sofort
**/

$(document).ready(function(){

	var submitIcon = $('.collapse .sb-icon-search');
	var submitButton = $('.collapse .sb-search-submit');

	submitIcon.click(function(){
		submitButton.click();
	});

});

/*!
 * SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
 * http://www.smartmenus.org/
 *
 * Copyright Vasil Dinkov, Vadikom Web Ltd.
 * http://vadikom.com
 *
 * Licensed MIT
 */

(function(factory) {
	if (typeof define === 'function' && define.amd) {
		// AMD
		define(['jquery'], factory);
	} else if (typeof module === 'object' && typeof module.exports === 'object') {
		// CommonJS
		module.exports = factory(require('jquery'));
	} else {
		// Global jQuery
		factory(jQuery);
	}
} (function($) {

	var menuTrees = [],
		mouse = false, // optimize for touch by default - we will detect for mouse input
		touchEvents = 'ontouchstart' in window, // we use this just to choose between toucn and pointer events, not for touch screen detection
		mouseDetectionEnabled = false,
		requestAnimationFrame = window.requestAnimationFrame || function(callback) { return setTimeout(callback, 1000 / 60); },
		cancelAnimationFrame = window.cancelAnimationFrame || function(id) { clearTimeout(id); },
		canAnimate = !!$.fn.animate;

	// Handle detection for mouse input (i.e. desktop browsers, tablets with a mouse, etc.)
	function initMouseDetection(disable) {
		var eNS = '.smartmenus_mouse';
		if (!mouseDetectionEnabled && !disable) {
			// if we get two consecutive mousemoves within 2 pixels from each other and within 300ms, we assume a real mouse/cursor is present
			// in practice, this seems like impossible to trick unintentianally with a real mouse and a pretty safe detection on touch devices (even with older browsers that do not support touch events)
			var firstTime = true,
				lastMove = null,
				events = {
					'mousemove': function(e) {
						var thisMove = { x: e.pageX, y: e.pageY, timeStamp: new Date().getTime() };
						if (lastMove) {
							var deltaX = Math.abs(lastMove.x - thisMove.x),
								deltaY = Math.abs(lastMove.y - thisMove.y);
		 					if ((deltaX > 0 || deltaY > 0) && deltaX <= 2 && deltaY <= 2 && thisMove.timeStamp - lastMove.timeStamp <= 300) {
								mouse = true;
								// if this is the first check after page load, check if we are not over some item by chance and call the mouseenter handler if yes
								if (firstTime) {
									var $a = $(e.target).closest('a');
									if ($a.is('a')) {
										$.each(menuTrees, function() {
											if ($.contains(this.$root[0], $a[0])) {
												this.itemEnter({ currentTarget: $a[0] });
												return false;
											}
										});
									}
									firstTime = false;
								}
							}
						}
						lastMove = thisMove;
					}
				};
			events[touchEvents ? 'touchstart' : 'pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut'] = function(e) {
				if (isTouchEvent(e.originalEvent)) {
					mouse = false;
				}
			};
			$(document).on(getEventsNS(events, eNS));
			mouseDetectionEnabled = true;
		} else if (mouseDetectionEnabled && disable) {
			$(document).off(eNS);
			mouseDetectionEnabled = false;
		}
	}

	function isTouchEvent(e) {
		return !/^(4|mouse)$/.test(e.pointerType);
	}

	// returns a jQuery on() ready object
	function getEventsNS(events, eNS) {
		if (!eNS) {
			eNS = '';
		}
		var eventsNS = {};
		for (var i in events) {
			eventsNS[i.split(' ').join(eNS + ' ') + eNS] = events[i];
		}
		return eventsNS;
	}

	$.SmartMenus = function(elm, options) {
		this.$root = $(elm);
		this.opts = options;
		this.rootId = ''; // internal
		this.accessIdPrefix = '';
		this.$subArrow = null;
		this.activatedItems = []; // stores last activated A's for each level
		this.visibleSubMenus = []; // stores visible sub menus UL's (might be in no particular order)
		this.showTimeout = 0;
		this.hideTimeout = 0;
		this.scrollTimeout = 0;
		this.clickActivated = false;
		this.focusActivated = false;
		this.zIndexInc = 0;
		this.idInc = 0;
		this.$firstLink = null; // we'll use these for some tests
		this.$firstSub = null; // at runtime so we'll cache them
		this.disabled = false;
		this.$disableOverlay = null;
		this.$touchScrollingSub = null;
		this.cssTransforms3d = 'perspective' in elm.style || 'webkitPerspective' in elm.style;
		this.wasCollapsible = false;
		this.init();
	};

	$.extend($.SmartMenus, {
		hideAll: function() {
			$.each(menuTrees, function() {
				this.menuHideAll();
			});
		},
		destroy: function() {
			while (menuTrees.length) {
				menuTrees[0].destroy();
			}
			initMouseDetection(true);
		},
		prototype: {
			init: function(refresh) {
				var self = this;

				if (!refresh) {
					menuTrees.push(this);

					this.rootId = (new Date().getTime() + Math.random() + '').replace(/\D/g, '');
					this.accessIdPrefix = 'sm-' + this.rootId + '-';

					if (this.$root.hasClass('sm-rtl')) {
						this.opts.rightToLeftSubMenus = true;
					}

					// init root (main menu)
					var eNS = '.smartmenus';
					this.$root
						.data('smartmenus', this)
						.attr('data-smartmenus-id', this.rootId)
						.dataSM('level', 1)
						.on(getEventsNS({
							'mouseover focusin': $.proxy(this.rootOver, this),
							'mouseout focusout': $.proxy(this.rootOut, this),
							'keydown': $.proxy(this.rootKeyDown, this)
						}, eNS))
						.on(getEventsNS({
							'mouseenter': $.proxy(this.itemEnter, this),
							'mouseleave': $.proxy(this.itemLeave, this),
							'mousedown': $.proxy(this.itemDown, this),
							'focus': $.proxy(this.itemFocus, this),
							'blur': $.proxy(this.itemBlur, this),
							'click': $.proxy(this.itemClick, this)
						}, eNS), 'a');

					// hide menus on tap or click outside the root UL
					eNS += this.rootId;
					if (this.opts.hideOnClick) {
						$(document).on(getEventsNS({
							'touchstart': $.proxy(this.docTouchStart, this),
							'touchmove': $.proxy(this.docTouchMove, this),
							'touchend': $.proxy(this.docTouchEnd, this),
							// for Opera Mobile < 11.5, webOS browser, etc. we'll check click too
							'click': $.proxy(this.docClick, this)
						}, eNS));
					}
					// hide sub menus on resize
					$(window).on(getEventsNS({ 'resize orientationchange': $.proxy(this.winResize, this) }, eNS));

					if (this.opts.subIndicators) {
						this.$subArrow = $('<span/>').addClass('sub-arrow');
						if (this.opts.subIndicatorsText) {
							this.$subArrow.html(this.opts.subIndicatorsText);
						}
					}

					// make sure mouse detection is enabled
					initMouseDetection();
				}

				// init sub menus
				this.$firstSub = this.$root.find('ul').each(function() { self.menuInit($(this)); }).eq(0);

				this.$firstLink = this.$root.find('a').eq(0);

				// find current item
				if (this.opts.markCurrentItem) {
					var reDefaultDoc = /(index|default)\.[^#\?\/]*/i,
						reHash = /#.*/,
						locHref = window.location.href.replace(reDefaultDoc, ''),
						locHrefNoHash = locHref.replace(reHash, '');
					this.$root.find('a').each(function() {
						var href = this.href.replace(reDefaultDoc, ''),
							$this = $(this);
						if (href == locHref || href == locHrefNoHash) {
							$this.addClass('current');
							if (self.opts.markCurrentTree) {
								$this.parentsUntil('[data-smartmenus-id]', 'ul').each(function() {
									$(this).dataSM('parent-a').addClass('current');
								});
							}
						}
					});
				}

				// save initial state
				this.wasCollapsible = this.isCollapsible();
			},
			destroy: function(refresh) {
				if (!refresh) {
					var eNS = '.smartmenus';
					this.$root
						.removeData('smartmenus')
						.removeAttr('data-smartmenus-id')
						.removeDataSM('level')
						.off(eNS);
					eNS += this.rootId;
					$(document).off(eNS);
					$(window).off(eNS);
					if (this.opts.subIndicators) {
						this.$subArrow = null;
					}
				}
				this.menuHideAll();
				var self = this;
				this.$root.find('ul').each(function() {
						var $this = $(this);
						if ($this.dataSM('scroll-arrows')) {
							$this.dataSM('scroll-arrows').remove();
						}
						if ($this.dataSM('shown-before')) {
							if (self.opts.subMenusMinWidth || self.opts.subMenusMaxWidth) {
								$this.css({ width: '', minWidth: '', maxWidth: '' }).removeClass('sm-nowrap');
							}
							if ($this.dataSM('scroll-arrows')) {
								$this.dataSM('scroll-arrows').remove();
							}
							$this.css({ zIndex: '', top: '', left: '', marginLeft: '', marginTop: '', display: '' });
						}
						if (($this.attr('id') || '').indexOf(self.accessIdPrefix) == 0) {
							$this.removeAttr('id');
						}
					})
					.removeDataSM('in-mega')
					.removeDataSM('shown-before')
					.removeDataSM('scroll-arrows')
					.removeDataSM('parent-a')
					.removeDataSM('level')
					.removeDataSM('beforefirstshowfired')
					.removeAttr('role')
					.removeAttr('aria-hidden')
					.removeAttr('aria-labelledby')
					.removeAttr('aria-expanded');
				this.$root.find('a.has-submenu').each(function() {
						var $this = $(this);
						if ($this.attr('id').indexOf(self.accessIdPrefix) == 0) {
							$this.removeAttr('id');
						}
					})
					.removeClass('has-submenu')
					.removeDataSM('sub')
					.removeAttr('aria-haspopup')
					.removeAttr('aria-controls')
					.removeAttr('aria-expanded')
					.closest('li').removeDataSM('sub');
				if (this.opts.subIndicators) {
					this.$root.find('span.sub-arrow').remove();
				}
				if (this.opts.markCurrentItem) {
					this.$root.find('a.current').removeClass('current');
				}
				if (!refresh) {
					this.$root = null;
					this.$firstLink = null;
					this.$firstSub = null;
					if (this.$disableOverlay) {
						this.$disableOverlay.remove();
						this.$disableOverlay = null;
					}
					menuTrees.splice($.inArray(this, menuTrees), 1);
				}
			},
			disable: function(noOverlay) {
				if (!this.disabled) {
					this.menuHideAll();
					// display overlay over the menu to prevent interaction
					if (!noOverlay && !this.opts.isPopup && this.$root.is(':visible')) {
						var pos = this.$root.offset();
						this.$disableOverlay = $('<div class="sm-jquery-disable-overlay"/>').css({
							position: 'absolute',
							top: pos.top,
							left: pos.left,
							width: this.$root.outerWidth(),
							height: this.$root.outerHeight(),
							zIndex: this.getStartZIndex(true),
							opacity: 0
						}).appendTo(document.body);
					}
					this.disabled = true;
				}
			},
			docClick: function(e) {
				if (this.$touchScrollingSub) {
					this.$touchScrollingSub = null;
					return;
				}
				// hide on any click outside the menu or on a menu link
				if (this.visibleSubMenus.length && !$.contains(this.$root[0], e.target) || $(e.target).closest('a').length) {
					this.menuHideAll();
				}
			},
			docTouchEnd: function(e) {
				if (!this.lastTouch) {
					return;
				}
				if (this.visibleSubMenus.length && (this.lastTouch.x2 === undefined || this.lastTouch.x1 == this.lastTouch.x2) && (this.lastTouch.y2 === undefined || this.lastTouch.y1 == this.lastTouch.y2) && (!this.lastTouch.target || !$.contains(this.$root[0], this.lastTouch.target))) {
					if (this.hideTimeout) {
						clearTimeout(this.hideTimeout);
						this.hideTimeout = 0;
					}
					// hide with a delay to prevent triggering accidental unwanted click on some page element
					var self = this;
					this.hideTimeout = setTimeout(function() { self.menuHideAll(); }, 350);
				}
				this.lastTouch = null;
			},
			docTouchMove: function(e) {
				if (!this.lastTouch) {
					return;
				}
				var touchPoint = e.originalEvent.touches[0];
				this.lastTouch.x2 = touchPoint.pageX;
				this.lastTouch.y2 = touchPoint.pageY;
			},
			docTouchStart: function(e) {
				var touchPoint = e.originalEvent.touches[0];
				this.lastTouch = { x1: touchPoint.pageX, y1: touchPoint.pageY, target: touchPoint.target };
			},
			enable: function() {
				if (this.disabled) {
					if (this.$disableOverlay) {
						this.$disableOverlay.remove();
						this.$disableOverlay = null;
					}
					this.disabled = false;
				}
			},
			getClosestMenu: function(elm) {
				var $closestMenu = $(elm).closest('ul');
				while ($closestMenu.dataSM('in-mega')) {
					$closestMenu = $closestMenu.parent().closest('ul');
				}
				return $closestMenu[0] || null;
			},
			getHeight: function($elm) {
				return this.getOffset($elm, true);
			},
			// returns precise width/height float values
			getOffset: function($elm, height) {
				var old;
				if ($elm.css('display') == 'none') {
					old = { position: $elm[0].style.position, visibility: $elm[0].style.visibility };
					$elm.css({ position: 'absolute', visibility: 'hidden' }).show();
				}
				var box = $elm[0].getBoundingClientRect && $elm[0].getBoundingClientRect(),
					val = box && (height ? box.height || box.bottom - box.top : box.width || box.right - box.left);
				if (!val && val !== 0) {
					val = height ? $elm[0].offsetHeight : $elm[0].offsetWidth;
				}
				if (old) {
					$elm.hide().css(old);
				}
				return val;
			},
			getStartZIndex: function(root) {
				var zIndex = parseInt(this[root ? '$root' : '$firstSub'].css('z-index'));
				if (!root && isNaN(zIndex)) {
					zIndex = parseInt(this.$root.css('z-index'));
				}
				return !isNaN(zIndex) ? zIndex : 1;
			},
			getTouchPoint: function(e) {
				return e.touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e;
			},
			getViewport: function(height) {
				var name = height ? 'Height' : 'Width',
					val = document.documentElement['client' + name],
					val2 = window['inner' + name];
				if (val2) {
					val = Math.min(val, val2);
				}
				return val;
			},
			getViewportHeight: function() {
				return this.getViewport(true);
			},
			getViewportWidth: function() {
				return this.getViewport();
			},
			getWidth: function($elm) {
				return this.getOffset($elm);
			},
			handleEvents: function() {
				return !this.disabled && this.isCSSOn();
			},
			handleItemEvents: function($a) {
				return this.handleEvents() && !this.isLinkInMegaMenu($a);
			},
			isCollapsible: function() {
				return this.$firstSub.css('position') == 'static';
			},
			isCSSOn: function() {
				return this.$firstLink.css('display') != 'inline';
			},
			isFixed: function() {
				var isFixed = this.$root.css('position') == 'fixed';
				if (!isFixed) {
					this.$root.parentsUntil('body').each(function() {
						if ($(this).css('position') == 'fixed') {
							isFixed = true;
							return false;
						}
					});
				}
				return isFixed;
			},
			isLinkInMegaMenu: function($a) {
				return $(this.getClosestMenu($a[0])).hasClass('mega-menu');
			},
			isTouchMode: function() {
				return !mouse || this.opts.noMouseOver || this.isCollapsible();
			},
			itemActivate: function($a, hideDeeperSubs) {
				var $ul = $a.closest('ul'),
					level = $ul.dataSM('level');
				// if for some reason the parent item is not activated (e.g. this is an API call to activate the item), activate all parent items first
				if (level > 1 && (!this.activatedItems[level - 2] || this.activatedItems[level - 2][0] != $ul.dataSM('parent-a')[0])) {
					var self = this;
					$($ul.parentsUntil('[data-smartmenus-id]', 'ul').get().reverse()).add($ul).each(function() {
						self.itemActivate($(this).dataSM('parent-a'));
					});
				}
				// hide any visible deeper level sub menus
				if (!this.isCollapsible() || hideDeeperSubs) {
					this.menuHideSubMenus(!this.activatedItems[level - 1] || this.activatedItems[level - 1][0] != $a[0] ? level - 1 : level);
				}
				// save new active item for this level
				this.activatedItems[level - 1] = $a;
				if (this.$root.triggerHandler('activate.smapi', $a[0]) === false) {
					return;
				}
				// show the sub menu if this item has one
				var $sub = $a.dataSM('sub');
				if ($sub && (this.isTouchMode() || (!this.opts.showOnClick || this.clickActivated))) {
					this.menuShow($sub);
				}
			},
			itemBlur: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				this.$root.triggerHandler('blur.smapi', $a[0]);
			},
			itemClick: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				if (this.$touchScrollingSub && this.$touchScrollingSub[0] == $a.closest('ul')[0]) {
					this.$touchScrollingSub = null;
					e.stopPropagation();
					return false;
				}
				if (this.$root.triggerHandler('click.smapi', $a[0]) === false) {
					return false;
				}
				var subArrowClicked = $(e.target).is('.sub-arrow'),
					$sub = $a.dataSM('sub'),
					firstLevelSub = $sub ? $sub.dataSM('level') == 2 : false,
					collapsible = this.isCollapsible(),
					behaviorToggle = /toggle$/.test(this.opts.collapsibleBehavior),
					behaviorLink = /link$/.test(this.opts.collapsibleBehavior),
					behaviorAccordion = /^accordion/.test(this.opts.collapsibleBehavior);
				// if the sub is hidden, try to show it
				if ($sub && !$sub.is(':visible')) {
					if (!behaviorLink || !collapsible || subArrowClicked) {
						if (this.opts.showOnClick && firstLevelSub) {
							this.clickActivated = true;
						}
						// try to activate the item and show the sub
						this.itemActivate($a, behaviorAccordion);
						// if "itemActivate" showed the sub, prevent the click so that the link is not loaded
						// if it couldn't show it, then the sub menus are disabled with an !important declaration (e.g. via mobile styles) so let the link get loaded
						if ($sub.is(':visible')) {
							this.focusActivated = true;
							return false;
						}
					}
				// if the sub is visible and we are in collapsible mode
				} else if (collapsible && (behaviorToggle || subArrowClicked)) {
					this.itemActivate($a, behaviorAccordion);
					this.menuHide($sub);
					if (behaviorToggle) {
						this.focusActivated = false;
					}
					return false;
				}
				if (this.opts.showOnClick && firstLevelSub || $a.hasClass('disabled') || this.$root.triggerHandler('select.smapi', $a[0]) === false) {
					return false;
				}
			},
			itemDown: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				$a.dataSM('mousedown', true);
			},
			itemEnter: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				if (!this.isTouchMode()) {
					if (this.showTimeout) {
						clearTimeout(this.showTimeout);
						this.showTimeout = 0;
					}
					var self = this;
					this.showTimeout = setTimeout(function() { self.itemActivate($a); }, this.opts.showOnClick && $a.closest('ul').dataSM('level') == 1 ? 1 : this.opts.showTimeout);
				}
				this.$root.triggerHandler('mouseenter.smapi', $a[0]);
			},
			itemFocus: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				// fix (the mousedown check): in some browsers a tap/click produces consecutive focus + click events so we don't need to activate the item on focus
				if (this.focusActivated && (!this.isTouchMode() || !$a.dataSM('mousedown')) && (!this.activatedItems.length || this.activatedItems[this.activatedItems.length - 1][0] != $a[0])) {
					this.itemActivate($a, true);
				}
				this.$root.triggerHandler('focus.smapi', $a[0]);
			},
			itemLeave: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				if (!this.isTouchMode()) {
					$a[0].blur();
					if (this.showTimeout) {
						clearTimeout(this.showTimeout);
						this.showTimeout = 0;
					}
				}
				$a.removeDataSM('mousedown');
				this.$root.triggerHandler('mouseleave.smapi', $a[0]);
			},
			menuHide: function($sub) {
				if (this.$root.triggerHandler('beforehide.smapi', $sub[0]) === false) {
					return;
				}
				if (canAnimate) {
					$sub.stop(true, true);
				}
				if ($sub.css('display') != 'none') {
					var complete = function() {
						// unset z-index
						$sub.css('z-index', '');
					};
					// if sub is collapsible (mobile view)
					if (this.isCollapsible()) {
						if (canAnimate && this.opts.collapsibleHideFunction) {
							this.opts.collapsibleHideFunction.call(this, $sub, complete);
						} else {
							$sub.hide(this.opts.collapsibleHideDuration, complete);
						}
					} else {
						if (canAnimate && this.opts.hideFunction) {
							this.opts.hideFunction.call(this, $sub, complete);
						} else {
							$sub.hide(this.opts.hideDuration, complete);
						}
					}
					// deactivate scrolling if it is activated for this sub
					if ($sub.dataSM('scroll')) {
						this.menuScrollStop($sub);
						$sub.css({ 'touch-action': '', '-ms-touch-action': '', '-webkit-transform': '', transform: '' })
							.off('.smartmenus_scroll').removeDataSM('scroll').dataSM('scroll-arrows').hide();
					}
					// unhighlight parent item + accessibility
					$sub.dataSM('parent-a').removeClass('highlighted').attr('aria-expanded', 'false');
					$sub.attr({
						'aria-expanded': 'false',
						'aria-hidden': 'true'
					});
					var level = $sub.dataSM('level');
					this.activatedItems.splice(level - 1, 1);
					this.visibleSubMenus.splice($.inArray($sub, this.visibleSubMenus), 1);
					this.$root.triggerHandler('hide.smapi', $sub[0]);
				}
			},
			menuHideAll: function() {
				if (this.showTimeout) {
					clearTimeout(this.showTimeout);
					this.showTimeout = 0;
				}
				// hide all subs
				// if it's a popup, this.visibleSubMenus[0] is the root UL
				var level = this.opts.isPopup ? 1 : 0;
				for (var i = this.visibleSubMenus.length - 1; i >= level; i--) {
					this.menuHide(this.visibleSubMenus[i]);
				}
				// hide root if it's popup
				if (this.opts.isPopup) {
					if (canAnimate) {
						this.$root.stop(true, true);
					}
					if (this.$root.is(':visible')) {
						if (canAnimate && this.opts.hideFunction) {
							this.opts.hideFunction.call(this, this.$root);
						} else {
							this.$root.hide(this.opts.hideDuration);
						}
					}
				}
				this.activatedItems = [];
				this.visibleSubMenus = [];
				this.clickActivated = false;
				this.focusActivated = false;
				// reset z-index increment
				this.zIndexInc = 0;
				this.$root.triggerHandler('hideAll.smapi');
			},
			menuHideSubMenus: function(level) {
				for (var i = this.activatedItems.length - 1; i >= level; i--) {
					var $sub = this.activatedItems[i].dataSM('sub');
					if ($sub) {
						this.menuHide($sub);
					}
				}
			},
			menuInit: function($ul) {
				if (!$ul.dataSM('in-mega')) {
					// mark UL's in mega drop downs (if any) so we can neglect them
					if ($ul.hasClass('mega-menu')) {
						$ul.find('ul').dataSM('in-mega', true);
					}
					// get level (much faster than, for example, using parentsUntil)
					var level = 2,
						par = $ul[0];
					while ((par = par.parentNode.parentNode) != this.$root[0]) {
						level++;
					}
					// cache stuff for quick access
					var $a = $ul.prevAll('a').eq(-1);
					// if the link is nested (e.g. in a heading)
					if (!$a.length) {
						$a = $ul.prevAll().find('a').eq(-1);
					}
					$a.addClass('has-submenu').dataSM('sub', $ul);
					$ul.dataSM('parent-a', $a)
						.dataSM('level', level)
						.parent().dataSM('sub', $ul);
					// accessibility
					var aId = $a.attr('id') || this.accessIdPrefix + (++this.idInc),
						ulId = $ul.attr('id') || this.accessIdPrefix + (++this.idInc);
					$a.attr({
						id: aId,
						'aria-haspopup': 'true',
						'aria-controls': ulId,
						'aria-expanded': 'false'
					});
					$ul.attr({
						id: ulId,
						'role': 'group',
						'aria-hidden': 'true',
						'aria-labelledby': aId,
						'aria-expanded': 'false'
					});
					// add sub indicator to parent item
					if (this.opts.subIndicators) {
						$a[this.opts.subIndicatorsPos](this.$subArrow.clone());
					}
				}
			},
			menuPosition: function($sub) {
				var $a = $sub.dataSM('parent-a'),
					$li = $a.closest('li'),
					$ul = $li.parent(),
					level = $sub.dataSM('level'),
					subW = this.getWidth($sub),
					subH = this.getHeight($sub),
					itemOffset = $a.offset(),
					itemX = itemOffset.left,
					itemY = itemOffset.top,
					itemW = this.getWidth($a),
					itemH = this.getHeight($a),
					$win = $(window),
					winX = $win.scrollLeft(),
					winY = $win.scrollTop(),
					winW = this.getViewportWidth(),
					winH = this.getViewportHeight(),
					horizontalParent = $ul.parent().is('[data-sm-horizontal-sub]') || level == 2 && !$ul.hasClass('sm-vertical'),
					rightToLeft = this.opts.rightToLeftSubMenus && !$li.is('[data-sm-reverse]') || !this.opts.rightToLeftSubMenus && $li.is('[data-sm-reverse]'),
					subOffsetX = level == 2 ? this.opts.mainMenuSubOffsetX : this.opts.subMenusSubOffsetX,
					subOffsetY = level == 2 ? this.opts.mainMenuSubOffsetY : this.opts.subMenusSubOffsetY,
					x, y;
				if (horizontalParent) {
					x = rightToLeft ? itemW - subW - subOffsetX : subOffsetX;
					y = this.opts.bottomToTopSubMenus ? -subH - subOffsetY : itemH + subOffsetY;
				} else {
					x = rightToLeft ? subOffsetX - subW : itemW - subOffsetX;
					y = this.opts.bottomToTopSubMenus ? itemH - subOffsetY - subH : subOffsetY;
				}
				if (this.opts.keepInViewport) {
					var absX = itemX + x,
						absY = itemY + y;
					if (rightToLeft && absX < winX) {
						x = horizontalParent ? winX - absX + x : itemW - subOffsetX;
					} else if (!rightToLeft && absX + subW > winX + winW) {
						x = horizontalParent ? winX + winW - subW - absX + x : subOffsetX - subW;
					}
					if (!horizontalParent) {
						if (subH < winH && absY + subH > winY + winH) {
							y += winY + winH - subH - absY;
						} else if (subH >= winH || absY < winY) {
							y += winY - absY;
						}
					}
					// do we need scrolling?
					// 0.49 used for better precision when dealing with float values
					if (horizontalParent && (absY + subH > winY + winH + 0.49 || absY < winY) || !horizontalParent && subH > winH + 0.49) {
						var self = this;
						if (!$sub.dataSM('scroll-arrows')) {
							$sub.dataSM('scroll-arrows', $([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0], $('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]])
								.on({
									mouseenter: function() {
										$sub.dataSM('scroll').up = $(this).hasClass('scroll-up');
										self.menuScroll($sub);
									},
									mouseleave: function(e) {
										self.menuScrollStop($sub);
										self.menuScrollOut($sub, e);
									},
									'mousewheel DOMMouseScroll': function(e) { e.preventDefault(); }
								})
								.insertAfter($sub)
							);
						}
						// bind scroll events and save scroll data for this sub
						var eNS = '.smartmenus_scroll';
						$sub.dataSM('scroll', {
								y: this.cssTransforms3d ? 0 : y - itemH,
								step: 1,
								// cache stuff for faster recalcs later
								itemH: itemH,
								subH: subH,
								arrowDownH: this.getHeight($sub.dataSM('scroll-arrows').eq(1))
							})
							.on(getEventsNS({
								'mouseover': function(e) { self.menuScrollOver($sub, e); },
								'mouseout': function(e) { self.menuScrollOut($sub, e); },
								'mousewheel DOMMouseScroll': function(e) { self.menuScrollMousewheel($sub, e); }
							}, eNS))
							.dataSM('scroll-arrows').css({ top: 'auto', left: '0', marginLeft: x + (parseInt($sub.css('border-left-width')) || 0), width: subW - (parseInt($sub.css('border-left-width')) || 0) - (parseInt($sub.css('border-right-width')) || 0), zIndex: $sub.css('z-index') })
								.eq(horizontalParent && this.opts.bottomToTopSubMenus ? 0 : 1).show();
						// when a menu tree is fixed positioned we allow scrolling via touch too
						// since there is no other way to access such long sub menus if no mouse is present
						if (this.isFixed()) {
							var events = {};
							events[touchEvents ? 'touchstart touchmove touchend' : 'pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp'] = function(e) {
								self.menuScrollTouch($sub, e);
							};
							$sub.css({ 'touch-action': 'none', '-ms-touch-action': 'none' }).on(getEventsNS(events, eNS));
						}
					}
				}
				$sub.css({ top: 'auto', left: '0', marginLeft: x, marginTop: y - itemH });
			},
			menuScroll: function($sub, once, step) {
				var data = $sub.dataSM('scroll'),
					$arrows = $sub.dataSM('scroll-arrows'),
					end = data.up ? data.upEnd : data.downEnd,
					diff;
				if (!once && data.momentum) {
					data.momentum *= 0.92;
					diff = data.momentum;
					if (diff < 0.5) {
						this.menuScrollStop($sub);
						return;
					}
				} else {
					diff = step || (once || !this.opts.scrollAccelerate ? this.opts.scrollStep : Math.floor(data.step));
				}
				// hide any visible deeper level sub menus
				var level = $sub.dataSM('level');
				if (this.activatedItems[level - 1] && this.activatedItems[level - 1].dataSM('sub') && this.activatedItems[level - 1].dataSM('sub').is(':visible')) {
					this.menuHideSubMenus(level - 1);
				}
				data.y = data.up && end <= data.y || !data.up && end >= data.y ? data.y : (Math.abs(end - data.y) > diff ? data.y + (data.up ? diff : -diff) : end);
				$sub.css(this.cssTransforms3d ? { '-webkit-transform': 'translate3d(0, ' + data.y + 'px, 0)', transform: 'translate3d(0, ' + data.y + 'px, 0)' } : { marginTop: data.y });
				// show opposite arrow if appropriate
				if (mouse && (data.up && data.y > data.downEnd || !data.up && data.y < data.upEnd)) {
					$arrows.eq(data.up ? 1 : 0).show();
				}
				// if we've reached the end
				if (data.y == end) {
					if (mouse) {
						$arrows.eq(data.up ? 0 : 1).hide();
					}
					this.menuScrollStop($sub);
				} else if (!once) {
					if (this.opts.scrollAccelerate && data.step < this.opts.scrollStep) {
						data.step += 0.2;
					}
					var self = this;
					this.scrollTimeout = requestAnimationFrame(function() { self.menuScroll($sub); });
				}
			},
			menuScrollMousewheel: function($sub, e) {
				if (this.getClosestMenu(e.target) == $sub[0]) {
					e = e.originalEvent;
					var up = (e.wheelDelta || -e.detail) > 0;
					if ($sub.dataSM('scroll-arrows').eq(up ? 0 : 1).is(':visible')) {
						$sub.dataSM('scroll').up = up;
						this.menuScroll($sub, true);
					}
				}
				e.preventDefault();
			},
			menuScrollOut: function($sub, e) {
				if (mouse) {
					if (!/^scroll-(up|down)/.test((e.relatedTarget || '').className) && ($sub[0] != e.relatedTarget && !$.contains($sub[0], e.relatedTarget) || this.getClosestMenu(e.relatedTarget) != $sub[0])) {
						$sub.dataSM('scroll-arrows').css('visibility', 'hidden');
					}
				}
			},
			menuScrollOver: function($sub, e) {
				if (mouse) {
					if (!/^scroll-(up|down)/.test(e.target.className) && this.getClosestMenu(e.target) == $sub[0]) {
						this.menuScrollRefreshData($sub);
						var data = $sub.dataSM('scroll'),
							upEnd = $(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH;
						$sub.dataSM('scroll-arrows').eq(0).css('margin-top', upEnd).end()
							.eq(1).css('margin-top', upEnd + this.getViewportHeight() - data.arrowDownH).end()
							.css('visibility', 'visible');
					}
				}
			},
			menuScrollRefreshData: function($sub) {
				var data = $sub.dataSM('scroll'),
					upEnd = $(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH;
				if (this.cssTransforms3d) {
					upEnd = -(parseFloat($sub.css('margin-top')) - upEnd);
				}
				$.extend(data, {
					upEnd: upEnd,
					downEnd: upEnd + this.getViewportHeight() - data.subH
				});
			},
			menuScrollStop: function($sub) {
				if (this.scrollTimeout) {
					cancelAnimationFrame(this.scrollTimeout);
					this.scrollTimeout = 0;
					$sub.dataSM('scroll').step = 1;
					return true;
				}
			},
			menuScrollTouch: function($sub, e) {
				e = e.originalEvent;
				if (isTouchEvent(e)) {
					var touchPoint = this.getTouchPoint(e);
					// neglect event if we touched a visible deeper level sub menu
					if (this.getClosestMenu(touchPoint.target) == $sub[0]) {
						var data = $sub.dataSM('scroll');
						if (/(start|down)$/i.test(e.type)) {
							if (this.menuScrollStop($sub)) {
								// if we were scrolling, just stop and don't activate any link on the first touch
								e.preventDefault();
								this.$touchScrollingSub = $sub;
							} else {
								this.$touchScrollingSub = null;
							}
							// update scroll data since the user might have zoomed, etc.
							this.menuScrollRefreshData($sub);
							// extend it with the touch properties
							$.extend(data, {
								touchStartY: touchPoint.pageY,
								touchStartTime: e.timeStamp
							});
						} else if (/move$/i.test(e.type)) {
							var prevY = data.touchY !== undefined ? data.touchY : data.touchStartY;
							if (prevY !== undefined && prevY != touchPoint.pageY) {
								this.$touchScrollingSub = $sub;
								var up = prevY < touchPoint.pageY;
								// changed direction? reset...
								if (data.up !== undefined && data.up != up) {
									$.extend(data, {
										touchStartY: touchPoint.pageY,
										touchStartTime: e.timeStamp
									});
								}
								$.extend(data, {
									up: up,
									touchY: touchPoint.pageY
								});
								this.menuScroll($sub, true, Math.abs(touchPoint.pageY - prevY));
							}
							e.preventDefault();
						} else { // touchend/pointerup
							if (data.touchY !== undefined) {
								if (data.momentum = Math.pow(Math.abs(touchPoint.pageY - data.touchStartY) / (e.timeStamp - data.touchStartTime), 2) * 15) {
									this.menuScrollStop($sub);
									this.menuScroll($sub);
									e.preventDefault();
								}
								delete data.touchY;
							}
						}
					}
				}
			},
			menuShow: function($sub) {
				if (!$sub.dataSM('beforefirstshowfired')) {
					$sub.dataSM('beforefirstshowfired', true);
					if (this.$root.triggerHandler('beforefirstshow.smapi', $sub[0]) === false) {
						return;
					}
				}
				if (this.$root.triggerHandler('beforeshow.smapi', $sub[0]) === false) {
					return;
				}
				$sub.dataSM('shown-before', true);
				if (canAnimate) {
					$sub.stop(true, true);
				}
				if (!$sub.is(':visible')) {
					// highlight parent item
					var $a = $sub.dataSM('parent-a'),
						collapsible = this.isCollapsible();
					if (this.opts.keepHighlighted || collapsible) {
						$a.addClass('highlighted');
					}
					if (collapsible) {
						$sub.removeClass('sm-nowrap').css({ zIndex: '', width: 'auto', minWidth: '', maxWidth: '', top: '', left: '', marginLeft: '', marginTop: '' });
					} else {
						// set z-index
						$sub.css('z-index', this.zIndexInc = (this.zIndexInc || this.getStartZIndex()) + 1);
						// min/max-width fix - no way to rely purely on CSS as all UL's are nested
						if (this.opts.subMenusMinWidth || this.opts.subMenusMaxWidth) {
							$sub.css({ width: 'auto', minWidth: '', maxWidth: '' }).addClass('sm-nowrap');
							if (this.opts.subMenusMinWidth) {
							 	$sub.css('min-width', this.opts.subMenusMinWidth);
							}
							if (this.opts.subMenusMaxWidth) {
							 	var noMaxWidth = this.getWidth($sub);
							 	$sub.css('max-width', this.opts.subMenusMaxWidth);
								if (noMaxWidth > this.getWidth($sub)) {
									$sub.removeClass('sm-nowrap').css('width', this.opts.subMenusMaxWidth);
								}
							}
						}
						this.menuPosition($sub);
					}
					var complete = function() {
						// fix: "overflow: hidden;" is not reset on animation complete in jQuery < 1.9.0 in Chrome when global "box-sizing: border-box;" is used
						$sub.css('overflow', '');
					};
					// if sub is collapsible (mobile view)
					if (collapsible) {
						if (canAnimate && this.opts.collapsibleShowFunction) {
							this.opts.collapsibleShowFunction.call(this, $sub, complete);
						} else {
							$sub.show(this.opts.collapsibleShowDuration, complete);
						}
					} else {
						if (canAnimate && this.opts.showFunction) {
							this.opts.showFunction.call(this, $sub, complete);
						} else {
							$sub.show(this.opts.showDuration, complete);
						}
					}
					// accessibility
					$a.attr('aria-expanded', 'true');
					$sub.attr({
						'aria-expanded': 'true',
						'aria-hidden': 'false'
					});
					// store sub menu in visible array
					this.visibleSubMenus.push($sub);
					this.$root.triggerHandler('show.smapi', $sub[0]);
				}
			},
			popupHide: function(noHideTimeout) {
				if (this.hideTimeout) {
					clearTimeout(this.hideTimeout);
					this.hideTimeout = 0;
				}
				var self = this;
				this.hideTimeout = setTimeout(function() {
					self.menuHideAll();
				}, noHideTimeout ? 1 : this.opts.hideTimeout);
			},
			popupShow: function(left, top) {
				if (!this.opts.isPopup) {
					alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');
					return;
				}
				if (this.hideTimeout) {
					clearTimeout(this.hideTimeout);
					this.hideTimeout = 0;
				}
				this.$root.dataSM('shown-before', true);
				if (canAnimate) {
					this.$root.stop(true, true);
				}
				if (!this.$root.is(':visible')) {
					this.$root.css({ left: left, top: top });
					// show menu
					var self = this,
						complete = function() {
							self.$root.css('overflow', '');
						};
					if (canAnimate && this.opts.showFunction) {
						this.opts.showFunction.call(this, this.$root, complete);
					} else {
						this.$root.show(this.opts.showDuration, complete);
					}
					this.visibleSubMenus[0] = this.$root;
				}
			},
			refresh: function() {
				this.destroy(true);
				this.init(true);
			},
			rootKeyDown: function(e) {
				if (!this.handleEvents()) {
					return;
				}
				switch (e.keyCode) {
					case 27: // reset on Esc
						var $activeTopItem = this.activatedItems[0];
						if ($activeTopItem) {
							this.menuHideAll();
							$activeTopItem[0].focus();
							var $sub = $activeTopItem.dataSM('sub');
							if ($sub) {
								this.menuHide($sub);
							}
						}
						break;
					case 32: // activate item's sub on Space
						var $target = $(e.target);
						if ($target.is('a') && this.handleItemEvents($target)) {
							var $sub = $target.dataSM('sub');
							if ($sub && !$sub.is(':visible')) {
								this.itemClick({ currentTarget: e.target });
								e.preventDefault();
							}
						}
						break;
				}
			},
			rootOut: function(e) {
				if (!this.handleEvents() || this.isTouchMode() || e.target == this.$root[0]) {
					return;
				}
				if (this.hideTimeout) {
					clearTimeout(this.hideTimeout);
					this.hideTimeout = 0;
				}
				if (!this.opts.showOnClick || !this.opts.hideOnClick) {
					var self = this;
					this.hideTimeout = setTimeout(function() { self.menuHideAll(); }, this.opts.hideTimeout);
				}
			},
			rootOver: function(e) {
				if (!this.handleEvents() || this.isTouchMode() || e.target == this.$root[0]) {
					return;
				}
				if (this.hideTimeout) {
					clearTimeout(this.hideTimeout);
					this.hideTimeout = 0;
				}
			},
			winResize: function(e) {
				if (!this.handleEvents()) {
					// we still need to resize the disable overlay if it's visible
					if (this.$disableOverlay) {
						var pos = this.$root.offset();
	 					this.$disableOverlay.css({
							top: pos.top,
							left: pos.left,
							width: this.$root.outerWidth(),
							height: this.$root.outerHeight()
						});
					}
					return;
				}
				// hide sub menus on resize - on mobile do it only on orientation change
				if (!('onorientationchange' in window) || e.type == 'orientationchange') {
					var collapsible = this.isCollapsible();
					// if it was collapsible before resize and still is, don't do it
					if (!(this.wasCollapsible && collapsible)) { 
						if (this.activatedItems.length) {
							this.activatedItems[this.activatedItems.length - 1][0].blur();
						}
						this.menuHideAll();
					}
					this.wasCollapsible = collapsible;
				}
			}
		}
	});

	$.fn.dataSM = function(key, val) {
		if (val) {
			return this.data(key + '_smartmenus', val);
		}
		return this.data(key + '_smartmenus');
	};

	$.fn.removeDataSM = function(key) {
		return this.removeData(key + '_smartmenus');
	};

	$.fn.smartmenus = function(options) {
		if (typeof options == 'string') {
			var args = arguments,
				method = options;
			Array.prototype.shift.call(args);
			return this.each(function() {
				var smartmenus = $(this).data('smartmenus');
				if (smartmenus && smartmenus[method]) {
					smartmenus[method].apply(smartmenus, args);
				}
			});
		}
		return this.each(function() {
			// [data-sm-options] attribute on the root UL
			var dataOpts = $(this).data('sm-options') || null;
			if (dataOpts) {
				try {
					dataOpts = eval('(' + dataOpts + ')');
				} catch(e) {
					dataOpts = null;
					alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.');
				};
			}
			new $.SmartMenus(this, $.extend({}, $.fn.smartmenus.defaults, options, dataOpts));
		});
	};

	// default settings
	$.fn.smartmenus.defaults = {
		isPopup:		false,		// is this a popup menu (can be shown via the popupShow/popupHide methods) or a permanent menu bar
		mainMenuSubOffsetX:	0,		// pixels offset from default position
		mainMenuSubOffsetY:	0,		// pixels offset from default position
		subMenusSubOffsetX:	0,		// pixels offset from default position
		subMenusSubOffsetY:	0,		// pixels offset from default position
		subMenusMinWidth:	'10em',		// min-width for the sub menus (any CSS unit) - if set, the fixed width set in CSS will be ignored
		subMenusMaxWidth:	'20em',		// max-width for the sub menus (any CSS unit) - if set, the fixed width set in CSS will be ignored
		subIndicators: 		true,		// create sub menu indicators - creates a SPAN and inserts it in the A
		subIndicatorsPos: 	'append',	// position of the SPAN relative to the menu item content ('append', 'prepend')
		subIndicatorsText:	'',		// [optionally] add text in the SPAN (e.g. '+') (you may want to check the CSS for the sub indicators too)
		scrollStep: 		30,		// pixels step when scrolling long sub menus that do not fit in the viewport height
		scrollAccelerate:	true,		// accelerate scrolling or use a fixed step
		showTimeout:		250,		// timeout before showing the sub menus
		hideTimeout:		500,		// timeout before hiding the sub menus
		showDuration:		0,		// duration for show animation - set to 0 for no animation - matters only if showFunction:null
		showFunction:		null,		// custom function to use when showing a sub menu (the default is the jQuery 'show')
							// don't forget to call complete() at the end of whatever you do
							// e.g.: function($ul, complete) { $ul.fadeIn(250, complete); }
		hideDuration:		0,		// duration for hide animation - set to 0 for no animation - matters only if hideFunction:null
		hideFunction:		function($ul, complete) { $ul.fadeOut(200, complete); },	// custom function to use when hiding a sub menu (the default is the jQuery 'hide')
							// don't forget to call complete() at the end of whatever you do
							// e.g.: function($ul, complete) { $ul.fadeOut(250, complete); }
		collapsibleShowDuration:0,		// duration for show animation for collapsible sub menus - matters only if collapsibleShowFunction:null
		collapsibleShowFunction:function($ul, complete) { $ul.slideDown(200, complete); },	// custom function to use when showing a collapsible sub menu
							// (i.e. when mobile styles are used to make the sub menus collapsible)
		collapsibleHideDuration:0,		// duration for hide animation for collapsible sub menus - matters only if collapsibleHideFunction:null
		collapsibleHideFunction:function($ul, complete) { $ul.slideUp(200, complete); },	// custom function to use when hiding a collapsible sub menu
							// (i.e. when mobile styles are used to make the sub menus collapsible)
		showOnClick:		false,		// show the first-level sub menus onclick instead of onmouseover (i.e. mimic desktop app menus) (matters only for mouse input)
		hideOnClick:		true,		// hide the sub menus on click/tap anywhere on the page
		noMouseOver:		false,		// disable sub menus activation onmouseover (i.e. behave like in touch mode - use just mouse clicks) (matters only for mouse input)
		keepInViewport:		true,		// reposition the sub menus if needed to make sure they always appear inside the viewport
		keepHighlighted:	true,		// keep all ancestor items of the current sub menu highlighted (adds the 'highlighted' class to the A's)
		markCurrentItem:	false,		// automatically add the 'current' class to the A element of the item linking to the current URL
		markCurrentTree:	true,		// add the 'current' class also to the A elements of all ancestor items of the current item
		rightToLeftSubMenus:	false,		// right to left display of the sub menus (check the CSS for the sub indicators' position)
		bottomToTopSubMenus:	false,		// bottom to top display of the sub menus
		collapsibleBehavior:	'default'	// parent items behavior in collapsible (mobile) view ('default', 'toggle', 'link', 'accordion', 'accordion-toggle', 'accordion-link')
							// 'default' - first tap on parent item expands sub, second tap loads its link
							// 'toggle' - the whole parent item acts just as a toggle button for its sub menu (expands/collapses on each tap)
							// 'link' - the parent item acts as a regular item (first tap loads its link), the sub menu can be expanded only via the +/- button
							// 'accordion' - like 'default' but on expand also resets any visible sub menus from deeper levels or other branches
							// 'accordion-toggle' - like 'toggle' but on expand also resets any visible sub menus from deeper levels or other branches
							// 'accordion-link' - like 'link' but on expand also resets any visible sub menus from deeper levels or other branches
	};

	return $;
}));
/*!
 * SmartMenus jQuery Plugin Bootstrap 4 Addon - v0.1.0 - September 17, 2017
 * http://www.smartmenus.org/
 *
 * Copyright Vasil Dinkov, Vadikom Web Ltd.
 * http://vadikom.com
 *
 * Licensed MIT
 */

(function(factory) {
	if (typeof define === 'function' && define.amd) {
		// AMD
		define(['jquery', 'smartmenus'], factory);
	} else if (typeof module === 'object' && typeof module.exports === 'object') {
		// CommonJS
		module.exports = factory(require('jquery'));
	} else {
		// Global jQuery
		factory(jQuery);
	}
} (function($) {

	$.extend($.SmartMenus.Bootstrap = {}, {
		keydownFix: false,
		init: function() {
			// init all navbars that don't have the "data-sm-skip" attribute set
			var $navbars = $('ul.navbar-nav:not([data-sm-skip]), .navbar-top .navbar-nav');
			$navbars.each(function() {
				var $this = $(this),
					obj = $this.data('smartmenus');
				// if this navbar is not initialized
				if (!obj) {
					var skipBehavior = $this.is('[data-sm-skip-collapsible-behavior]'),
						rightAligned = $this.hasClass('ml-auto') || $this.prevAll('.mr-auto').length > 0;

					$this.smartmenus({
							// these are some good default options that should work for all
							mainMenuSubOffsetX: -20,
							mainMenuSubOffsetY: 0,
							subIndicators: !skipBehavior,
							subMenusSubOffsetX: 0,
							subMenusSubOffsetY: 0,
							subIndicators: false,
							subIndicatorsPos: 'append',
							subIndicatorsText: '...',
							subMenusMinWidth: 150,
							subMenusMaxWidth: 600,
							collapsibleShowFunction: function($ul, complete) {
								$ul.slideDown(100, complete);
							},
							collapsibleHideFunction: function($ul, complete) {
								$ul.slideUp(100, function() {
									$ul.parent().removeClass('open');
									complete();
								});
							},
							rightToLeftSubMenus: false,
							bottomToTopSubMenus: $this.closest('.fixed-bottom').length > 0,
							// custom option(s) for the Bootstrap 4 addon
							bootstrapHighlightClasses: ''
						})
						.on({
							// set/unset proper Bootstrap classes for some menu elements
							'show.smapi': function(e, menu) {
								var $menu = $(menu),
									$scrollArrows = $menu.dataSM('scroll-arrows');
								if ($scrollArrows) {
									$scrollArrows.css('background-color', $menu.css('background-color'));
								}
								$menu.parent().addClass('show');
								if (obj.opts.keepHighlighted && $menu.dataSM('level') > 2) {
									$menu.prevAll('a').addClass(obj.opts.bootstrapHighlightClasses);
								}
							},
							'hide.smapi': function(e, menu) {
								var $menu = $(menu);
								$menu.parent().removeClass('show');
								if (obj.opts.keepHighlighted && $menu.dataSM('level') > 2) {
									$menu.prevAll('a').removeClass(obj.opts.bootstrapHighlightClasses);
								}
							}
						});

					obj = $this.data('smartmenus');

					function onInit() {
						// set Bootstrap's "active" class to SmartMenus "current" items (should someone decide to enable markCurrentItem: true)
						$this.find('a.current').each(function() {
							var $this = $(this);
							// dropdown items require the class to be set to the A's while for nav items it should be set to the parent LI's
							($this.hasClass('dropdown-item') ? $this : $this.parent()).addClass('active');
						});
						// parent items fixes
						$this.find('a.has-submenu').each(function() {
							var $this = $(this);
							// remove Bootstrap required attributes that might cause conflicting issues with the SmartMenus script
							if ($this.is('[data-toggle="dropdown"]')) {
								$this.dataSM('bs-data-toggle-dropdown', true).removeAttr('data-toggle');
							}
							// remove Bootstrap's carets generating class
							if (!skipBehavior && $this.hasClass('dropdown-toggle')) {
								$this.dataSM('bs-dropdown-toggle', true).removeClass('dropdown-toggle');
							}
						});
					}

					onInit();

					function onBeforeDestroy() {
						$this.find('a.current').each(function() {
							var $this = $(this);
							($this.hasClass('active') ? $this : $this.parent()).removeClass('active');
						});
						$this.find('a.has-submenu').each(function() {
							var $this = $(this);
							if ($this.dataSM('bs-dropdown-toggle')) {
								$this.addClass('dropdown-toggle').removeDataSM('bs-dropdown-toggle');
							}
							if ($this.dataSM('bs-data-toggle-dropdown')) {
								$this.attr('data-toggle', 'dropdown').removeDataSM('bs-data-toggle-dropdown');
							}
						});
					}

					// custom "refresh" method for Bootstrap
					obj.refresh = function() {
						$.SmartMenus.prototype.refresh.call(this);
						onInit();
						// update collapsible detection
						detectCollapsible(true);
					};

					// custom "destroy" method for Bootstrap
					obj.destroy = function(refresh) {
						onBeforeDestroy();
						$.SmartMenus.prototype.destroy.call(this, refresh);
					};

					// keep Bootstrap's default behavior (i.e. use the whole item area just as a sub menu toggle)
					if (skipBehavior) {
						obj.opts.collapsibleBehavior = 'toggle';
					}

					// onresize detect when the navbar becomes collapsible and add it the "sm-collapsible" class
					var winW;
					function detectCollapsible(force) {
						var newW = obj.getViewportWidth();
						if (newW != winW || force) {
							if (obj.isCollapsible()) {
								$this.addClass('sm-collapsible');
							} else {
								$this.removeClass('sm-collapsible');
							}
							winW = newW;
						}
					}
					detectCollapsible();
					$(window).on('resize.smartmenus' + obj.rootId, detectCollapsible);
				}
			});
			// keydown fix for Bootstrap 4 conflict
			if ($navbars.length && !$.SmartMenus.Bootstrap.keydownFix) {
				// unhook BS keydown handler for all dropdowns
				$(document).off('keydown.bs.dropdown.data-api', '.dropdown-menu');
				// restore BS keydown handler for dropdowns that are not inside SmartMenus navbars
				// SmartMenus won't add the "show" class so it's handy here
				if ($.fn.dropdown && $.fn.dropdown.Constructor) {
					$(document).on('keydown.bs.dropdown.data-api', '.dropdown-menu.show', $.fn.dropdown.Constructor._dataApiKeydownHandler);
				}
				$.SmartMenus.Bootstrap.keydownFix = true;
			}
		}
	});

	// init ondomready
	$($.SmartMenus.Bootstrap.init);

	return $;
}));

(function(b){var f=b.event,c,g={_:0},a=0,d,e;c=f.special.throttledresize={setup:function(){b(this).on("resize",c.handler)},teardown:function(){b(this).off("resize",c.handler)},handler:function(h,i){var j=this,k=arguments;d=!0;e||(setInterval(function(){a++;if(a>c.threshold&&d||i)h.type="throttledresize",f.dispatch.apply(j,k),d=!1,a=0;9<a&&(b(g).stop(),e=!1,a=0)},30),e=!0)},threshold:0}})(jQuery);
(function(a){var d=a.event,b,c;b=d.special.debouncedresize={setup:function(){a(this).on("resize",b.handler)},teardown:function(){a(this).off("resize",b.handler)},handler:function(a,f){var g=this,h=arguments,e=function(){a.type="debouncedresize";d.dispatch.apply(g,h)};c&&clearTimeout(c);f?e():c=setTimeout(e,b.threshold)},threshold:150}})(jQuery);

/**
 * jQuery.browser.mobile (http://detectmobilebrowser.com/)
 *
 * jQuery.browser.mobile will be true if the browser is a mobile device
 *
 **/
(function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);
/*
 *  Vide - v0.5.1
 *  Easy as hell jQuery plugin for video backgrounds.
 *  http://vodkabears.github.io/vide/
 *
 *  Made by Ilya Makarov
 *  Under MIT License
 */
!(function(root, factory) {
  if (typeof define === 'function' && define.amd) {
    define(['jquery'], factory);
  } else if (typeof exports === 'object') {
    factory(require('jquery'));
  } else {
    factory(root.jQuery);
  }
})(this, function($) {

  'use strict';

  /**
   * Name of the plugin
   * @private
   * @const
   * @type {String}
   */
  var PLUGIN_NAME = 'vide';

  /**
   * Default settings
   * @private
   * @const
   * @type {Object}
   */
  var DEFAULTS = {
    volume: 1,
    playbackRate: 1,
    muted: true,
    loop: true,
    autoplay: true,
    position: '50% 50%',
    posterType: 'detect',
    resizing: true,
    bgColor: 'transparent',
    className: '',
    wrapperZIndex: -1
  };

  /**
   * Not implemented error message
   * @private
   * @const
   * @type {String}
   */
  var NOT_IMPLEMENTED_MSG = 'Not implemented';

  /**
   * Parse a string with options
   * @private
   * @param {String} str
   * @returns {Object|String}
   */
  function parseOptions(str) {
    var obj = {};
    var delimiterIndex;
    var option;
    var prop;
    var val;
    var arr;
    var len;
    var i;

    // Remove spaces around delimiters and split
    arr = str.replace(/\s*:\s*/g, ':').replace(/\s*,\s*/g, ',').split(',');

    // Parse a string
    for (i = 0, len = arr.length; i < len; i++) {
      option = arr[i];

      // Ignore urls and a string without colon delimiters
      if (
        option.search(/^(http|https|ftp):\/\//) !== -1 ||
        option.search(':') === -1
      ) {
        break;
      }

      delimiterIndex = option.indexOf(':');
      prop = option.substring(0, delimiterIndex);
      val = option.substring(delimiterIndex + 1);

      // If val is an empty string, make it undefined
      if (!val) {
        val = undefined;
      }

      // Convert a string value if it is like a boolean
      if (typeof val === 'string') {
        val = val === 'true' || (val === 'false' ? false : val);
      }

      // Convert a string value if it is like a number
      if (typeof val === 'string') {
        val = !isNaN(val) ? +val : val;
      }

      obj[prop] = val;
    }

    // If nothing is parsed
    if (prop == null && val == null) {
      return str;
    }

    return obj;
  }

  /**
   * Parse a position option
   * @private
   * @param {String} str
   * @returns {Object}
   */
  function parsePosition(str) {
    str = '' + str;

    // Default value is a center
    var args = str.split(/\s+/);
    var x = '50%';
    var y = '50%';
    var len;
    var arg;
    var i;

    for (i = 0, len = args.length; i < len; i++) {
      arg = args[i];

      // Convert values
      if (arg === 'left') {
        x = '0%';
      } else if (arg === 'right') {
        x = '100%';
      } else if (arg === 'top') {
        y = '0%';
      } else if (arg === 'bottom') {
        y = '100%';
      } else if (arg === 'center') {
        if (i === 0) {
          x = '50%';
        } else {
          y = '50%';
        }
      } else {
        if (i === 0) {
          x = arg;
        } else {
          y = arg;
        }
      }
    }

    return { x: x, y: y };
  }

  /**
   * Search a poster
   * @private
   * @param {String} path
   * @param {Function} callback
   */
  function findPoster(path, callback) {
    var onLoad = function() {
      callback(this.src);
    };

    $('<img src="' + path + '.gif">').on('load', onLoad);
    $('<img src="' + path + '.jpg">').on('load', onLoad);
    $('<img src="' + path + '.jpeg">').on('load', onLoad);
    $('<img src="' + path + '.png">').on('load', onLoad);
  }

  /**
   * Vide constructor
   * @param {HTMLElement} element
   * @param {Object|String} path
   * @param {Object|String} options
   * @constructor
   */
  function Vide(element, path, options) {
    this.$element = $(element);

    // Parse path
    if (typeof path === 'string') {
      path = parseOptions(path);
    }

    // Parse options
    if (!options) {
      options = {};
    } else if (typeof options === 'string') {
      options = parseOptions(options);
    }

    // Remove an extension
    if (typeof path === 'string') {
      // path = path.replace(/\.\w*$/, '');
    } else if (typeof path === 'object') {
      for (var i in path) {
        if (path.hasOwnProperty(i)) {
          // path[i] = path[i].replace(/\.\w*$/, '');
        }
      }
    }

    this.settings = $.extend({}, DEFAULTS, options);
    this.path = path;

    // https://github.com/VodkaBears/Vide/issues/110
    try {
      this.init();
    } catch (e) {
      if (e.message !== NOT_IMPLEMENTED_MSG) {
        throw e;
      }
    }
  }

  /**
   * Initialization
   * @public
   */
  Vide.prototype.init = function() {
    var vide = this;
    var path = vide.path;
    var poster = path;
    var sources = '';
    var $element = vide.$element;
    var settings = vide.settings;
    var position = parsePosition(settings.position);
    var posterType = settings.posterType;
    var $video;
    var $wrapper;

    // Set styles of a video wrapper
    $wrapper = vide.$wrapper = $('<div>')
      .addClass(settings.className)
      .css({
        position: 'absolute',
        'z-index': settings.wrapperZIndex,
        top: 0,
        left: 0,
        bottom: 0,
        right: 0,
        overflow: 'hidden',
        '-webkit-background-size': 'cover',
        '-moz-background-size': 'cover',
        '-o-background-size': 'cover',
        'background-size': 'cover',
        'background-color': settings.bgColor,
        'background-repeat': 'no-repeat',
        'background-position': position.x + ' ' + position.y
      });

    // Get a poster path
    if (typeof path === 'object') {
      if (path.poster) {
        poster = path.poster;
      } else {
        if (path.mp4) {
          poster = path.mp4;
        } else if (path.webm) {
          poster = path.webm;
        } else if (path.ogv) {
          poster = path.ogv;
        }
      }
    }

    // Set a video poster
    if (posterType === 'detect') {
      findPoster(poster, function(url) {
        $wrapper.css('background-image', 'url(' + url + ')');
      });
    } else if (posterType !== 'none') {
      $wrapper.css('background-image', 'url(' + poster + ')');
    }

    // If a parent element has a static position, make it relative
    if ($element.css('position') === 'static') {
      $element.css('position', 'relative');
    }

    $element.prepend($wrapper);

    if (typeof path === 'object') {
      if (path.mp4) {
        sources += '<source src="' + path.mp4 + '" type="video/mp4">';
      }

      if (path.webm) {
        sources += '<source src="' + path.webm + '" type="video/webm">';
      }

      if (path.ogv) {
        sources += '<source src="' + path.ogv + '" type="video/ogg">';
      }

      $video = vide.$video = $('<video>' + sources + '</video>');
    } else {
      $video = vide.$video = $('<video>' +
        '<source src="' + path + '" type="video/mp4">' +
        '<source src="' + path + '" type="video/webm">' +
        '<source src="' + path + '" type="video/ogg">' +
        '</video>');
    }

    // https://github.com/VodkaBears/Vide/issues/110
    try {
      $video

        // Set video properties
        .prop({
          autoplay: settings.autoplay,
          loop: settings.loop,
          volume: settings.volume,
          muted: settings.muted,
          defaultMuted: settings.muted,
          playbackRate: settings.playbackRate,
          defaultPlaybackRate: settings.playbackRate
        });
    } catch (e) {
      throw new Error(NOT_IMPLEMENTED_MSG);
    }

    // Video alignment
    $video.css({
      margin: 'auto',
      position: 'absolute',
      'z-index': -1,
      top: position.y,
      left: position.x,
      '-webkit-transform': 'translate(-' + position.x + ', -' + position.y + ')',
      '-ms-transform': 'translate(-' + position.x + ', -' + position.y + ')',
      '-moz-transform': 'translate(-' + position.x + ', -' + position.y + ')',
      transform: 'translate(-' + position.x + ', -' + position.y + ')',

      // Disable visibility, while loading
      visibility: 'hidden',
      opacity: 0
    })

    // Resize a video, when it's loaded
    .one('canplaythrough.' + PLUGIN_NAME, function() {
      vide.resize();
    })

    // Make it visible, when it's already playing
    .one('playing.' + PLUGIN_NAME, function() {
      $video.css({
        visibility: 'visible',
        opacity: 1
      });
      $wrapper.css('background-image', 'none');
    });

    // Resize event is available only for 'window'
    // Use another code solutions to detect DOM elements resizing
    $element.on('resize.' + PLUGIN_NAME, function() {
      if (settings.resizing) {
        vide.resize();
      }
    });

    // Append a video
    $wrapper.append($video);
  };

  /**
   * Get a video element
   * @public
   * @returns {HTMLVideoElement}
   */
  Vide.prototype.getVideoObject = function() {
    return this.$video[0];
  };

  /**
   * Resize a video background
   * @public
   */
  Vide.prototype.resize = function() {
    if (!this.$video) {
      return;
    }

    var $wrapper = this.$wrapper;
    var $video = this.$video;
    var video = $video[0];

    // Get a native video size
    var videoHeight = video.videoHeight;
    var videoWidth = video.videoWidth;

    // Get a wrapper size
    var wrapperHeight = $wrapper.height();
    var wrapperWidth = $wrapper.width();

    if (wrapperWidth / videoWidth > wrapperHeight / videoHeight) {
      $video.css({

        // +2 pixels to prevent an empty space after transformation
        width: wrapperWidth + 2,
        height: 'auto'
      });
    } else {
      $video.css({
        width: 'auto',

        // +2 pixels to prevent an empty space after transformation
        height: wrapperHeight + 2
      });
    }
  };

  /**
   * Destroy a video background
   * @public
   */
  Vide.prototype.destroy = function() {
    delete $[PLUGIN_NAME].lookup[this.index];
    this.$video && this.$video.off(PLUGIN_NAME);
    this.$element.off(PLUGIN_NAME).removeData(PLUGIN_NAME);
    this.$wrapper.remove();
  };

  /**
   * Special plugin object for instances.
   * @public
   * @type {Object}
   */
  $[PLUGIN_NAME] = {
    lookup: []
  };

  /**
   * Plugin constructor
   * @param {Object|String} path
   * @param {Object|String} options
   * @returns {JQuery}
   * @constructor
   */
  $.fn[PLUGIN_NAME] = function(path, options) {
    var instance;

    this.each(function() {
      instance = $.data(this, PLUGIN_NAME);

      // Destroy the plugin instance if exists
      instance && instance.destroy();

      // Create the plugin instance
      instance = new Vide(this, path, options);
      instance.index = $[PLUGIN_NAME].lookup.push(instance) - 1;
      $.data(this, PLUGIN_NAME, instance);
    });

    return this;
  };

  $(document).ready(function() {
    var $window = $(window);

    // Window resize event listener
    $window.on('resize.' + PLUGIN_NAME, function() {
      for (var len = $[PLUGIN_NAME].lookup.length, i = 0, instance; i < len; i++) {
        instance = $[PLUGIN_NAME].lookup[i];

        if (instance && instance.settings.resizing) {
          instance.resize();
        }
      }
    });

    // https://github.com/VodkaBears/Vide/issues/68
    $window.on('unload.' + PLUGIN_NAME, function() {
      return false;
    });

    // Auto initialization
    // Add 'data-vide-bg' attribute with a path to the video without extension
    // Also you can pass options throw the 'data-vide-options' attribute
    // 'data-vide-options' must be like 'muted: false, volume: 0.5'
    $(document).find('[data-' + PLUGIN_NAME + '-bg]').each(function(i, element) {
      var $element = $(element);
      var options = $element.data(PLUGIN_NAME + '-options');
      var path = $element.data(PLUGIN_NAME + '-bg');

      $element[PLUGIN_NAME](path, options);
    });
  });

});

$(window).on('load', function () {

    /**
     * Lightbox fuer einzelne Fotos
     */

    $('.lightbox-gallery').each(function () {

        $(this).magnificPopup({

            type: 'image',

            mainClass: 'mfp-fade',

            delegate: 'a.lightbox',

            image: {

                titleSrc: function (item) {

                    var title = item.el.attr('title');
                    var description = item.el.attr('alt');

                    return ((title) ? title : '') + ((description && (description !== title)) ? '<small>' + description + '</small>' : '');
                }

            },

            gallery: {
                enabled: true,
                navigateByImgClick: true,
                preload: [0, 1],
                tCounter: '%curr% ' + pageConfig.magnificpopup.counter + ' %total%',
                tPrev: pageConfig.magnificpopup.prev,
                tNext: pageConfig.magnificpopup.next
            },

            tClose: pageConfig.magnificpopup.close,
            tLoading: pageConfig.magnificpopup.loading,

            zoom: {
                enabled: true,
                duration: 250,
                easing: 'ease-in-out'
            }

        });

    });


    /**
     * Lightbox fuer Videos
     */

    $('a.popup-video').magnificPopup({

        disableOn: 700,
        type: 'iframe',
        preloader: false,
        fixedContentPos: false,

        iframe: {

            patterns: {

                youtube_short: {
                    index: 'youtu.be/',

                    id: function (url) {
                        var slashPos = url.lastIndexOf('/');
                        return url.substr(slashPos + 1);
                    },

                    src: '//www.youtube.com/embed/%id%?autoplay=1'
                }

            }

        }

    });


});

function sc27ContrastSet(contrastStatus, onInit) {

    if ( onInit ) {
        $("html").addClass("highcontrast-init");
    }

    if (contrastStatus == '1') {

        /**
         * Kontrast-Modus einschalten
         */

        document.contrastStatus = 1;

        $("html").addClass("highcontrast");

        Cookies.set('contrast_status', '1', {
            path: '/',
            expires: 31,
            SameSite: 'Lax'
        });

    }
    else {

        /**
         * Kontrast-Modus ausschalten
         */

        document.contrastStatus = 0;

        $("html").removeClass("highcontrast");

        if ( ! onInit ) {
            $("html").removeClass("highcontrast-init");
        }

        Cookies.remove('contrast_status', {path: '/'});

    }

}


$(document).ready(function () {

    /**
     * Bei Seitenaufruf Kontrast-Status ermitteln und setzen
     */

    var contrastStatus = Cookies.get('contrast_status');

    if ((typeof(contrastStatus) != 'undefined') && (contrastStatus == '1')) {
        contrastStatus = 1;
    }
    else {
        contrastStatus = 0;
    }

    sc27ContrastSet(contrastStatus, true);


    /**
     * Umschalten des Kontrast-Modus ermoeglichen
     */

    $(".contrast-toggle").click(function (e) {

        e.preventDefault();


        if (document.contrastStatus != '1') {
            sc27ContrastSet(1, false);
        }
        else {
            sc27ContrastSet(0, false);
        }

    });

});

/**
 * sector27 - Background Videos
 */

// $(window).on('load', function () {
$(document).ready(function () {

  /**
   * Hintergrundvideos nicht in mobilen Browsern einsetzen
   */

  if (jQuery.browser.mobile) {
    return;
  }


  /**
   * Zu ueberwachende HTML-Elemente zusammenstellen
   */

  var videoElements = document.querySelectorAll('.sc27bgvideo');


  /**
   * Lazy Loading implementieren
   */

  const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)
  const triggerDistance = Math.floor(vh * 2 / 5)

  const videoObserverConfig = {
    rootMargin: triggerDistance + 'px 0px',
    threshold: 0.01
  };

  var videoObserver = new IntersectionObserver(function (entries, observer) {

      entries.forEach(function (video) {

        if (video.isIntersecting) {

          // CSS-Klasse hinzufuegen
          video.target.classList.add('lazy-loaded');

          // Element nicht weiter beobachten
          observer.unobserve(video.target);

          var htmlElement = video.target;


          /**
           * Video-Quellen zusammenstellen
           */

          var bgvideoSourceMp4 = $(htmlElement).attr('data-video-src-mp4');
          var bgvideoSourceWebm = $(htmlElement).attr('data-video-src-webm');
          var bgvideoSourceOgg = $(htmlElement).attr('data-video-src-ogg');

          if (!(bgvideoSourceMp4.trim() + bgvideoSourceWebm.trim() + bgvideoSourceOgg.trim()).length) {
            return;
          }


          /**
           * Video dynamisch erzeugen
           */

          var videInstance = $(htmlElement).vide(
            {
              mp4: bgvideoSourceMp4,
              webm: bgvideoSourceWebm,
              ogg: bgvideoSourceOgg,
              poster: '',
            },
            {
              volume: 0,
              playbackRate: 1,
              muted: true,
              loop: true,
              autoplay: true,
              position: '50% 50%',
              posterType: 'none',
              resizing: true,
              bgColor: 'transparent',
              className: 'bgvideo-element'
            }
          )

          $(htmlElement).addClass('bgvideo-active');
          videInstance.resize();

        }

      });

    },
    videoObserverConfig
  );


  videoElements.forEach(function (videoElement, videoIndex) {
    videoObserver.observe(videoElement);
  });

});

/**
 * sector27 - Background Images
 */

// $(document).ready(function () {

  /**
   * Hintergrundfotos für Mehrspalter
   */

  $('div[class*="col-"][data-sc27bgimage]').each(function () {

    var backgroundImage = $(this).attr('data-sc27bgimage');
    var backgroundSize = $(this).attr('data-sc27bgsize');

    console.log(backgroundImage, backgroundSize);

    if (typeof backgroundSize === 'undefined') {
      backgroundSize = 'cover';
    }

    var contentElement = $(this).find('> .contentbox');

    $(contentElement).css('background-image', 'url("' + backgroundImage + '")');
    $(contentElement).css('background-size', backgroundSize);

  });

// });

/**
 * sector27 - Background Videos
 */

$(document).ready(function () {

  /**
   * Hintergrundvideos nicht in mobilen Browsern einsetzen
   */

  if (jQuery.browser.mobile) {
    return;
  }


  /**
   * Zu überwachende HTML-Elemente zusammenstellen
   */

  var videoElements = document.querySelectorAll('video[data-sc27autoplay="1"]');


  /**
   * Lazy Loading implementieren
   */

  const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)
  const triggerDistance = Math.floor(vh * 2 / 5)

  const videoObserverConfig = {
    rootMargin: triggerDistance + 'px 0px',
    threshold: 0.01
  };

  var videoObserver = new IntersectionObserver(function (entries, observer) {

      entries.forEach(function (video) {

        if (video.isIntersecting) {

          // CSS-Klasse hinzufügen
          video.target.classList.add('lazy-loaded');

          // Element nicht weiter beobachten
          observer.unobserve(video.target);

          var htmlElement = video.target;


          /**
           * Video abspielen
           */

          if (typeof htmlElement.play === 'function') {

            // Autoplay in Google Chrome nur bei deaktiviertem Ton möglich
            htmlElement.muted = true;

            // Autoplay in Safari ermöglichen
            htmlElement.playsinline = true;

            // Video abspielen
            htmlElement.play();

          }

        }

      });

    },
    videoObserverConfig
  );


  videoElements.forEach(function (videoElement, videoIndex) {
    videoObserver.observe(videoElement);
  });

});

/**
 * sector27 - DSGVO-konforme Einbindung von Videos (YouTube/Vimeo)
 *
 * Beispiel der HTML-Struktur zwecks Nutzung:
 *
 *     <div class="sc27mediaconfirm"
 *       data-sc27mediatype="youtube"
 *       allowfullscreen=""
 *       data-object-fit="cover"
 *       poster=""
 *       title="Überschriebener Titel des Videos"
 *       allow="fullscreen"
 *       src="https://www.youtube-nocookie.com/embed/e5bALLcEygc?autohide=1&amp;controls=1&amp;enablejsapi=1&amp;origin=http%3A%2F%2F192.168.0.103">
 *    </div>
 *
 */

document.addEventListener('DOMContentLoaded', function () {

  var sc27Mediaconfirm = new Sc27Mediaconfirm({
    debug: ((typeof pageConfig.debug !== 'undefined') && (typeof pageConfig.debug.Sc27Mediaconfirm !== 'undefined') && (pageConfig.debug.Sc27Mediaconfirm === '1')),
    consentStorageType: '',
    funcGetConsentStatus: null,
    funcSetConsentStatus: null
  });

  sc27Mediaconfirm.init();

});


/**
 * Klasse Sc27Mediaconfirm
 */
function Sc27Mediaconfirm(config) {

  var self = this;

  this.mediaTypesSupported = ['youtube', 'vimeo'];
  this.mediaTypesDetected = [];

  this.config = (config) ? config : {};

  this.debugPrefix = 'Sc27Mediaconfirm: ';
  this.debug = false;

  this.funcGetConsentStatus = null;
  this.funcSetConsentStatus = null;
  this.consentStorage = null;

  this.initDone = false;


  /**
   * Callback-Funktion zur Benachrichtigung über erteilte Einwilligung durch den Consent Manager
   * @param options
   */
  this.consentmanagerCallbackConsentConfirmed = function (options) {

    if (self.mediaTypesSupported.includes(options.vendor)) {
      self.debug && console.log(self.debugPrefix + 'consentmanagerCallbackConsentConfirmed(): activating media element for vendor "' + String(options.vendor) + '"');
      self.activateElementsOfType(options.vendor);
    }

  }


  /**
   * Callback-Funktion zur Benachrichtigung über zurückgezogene Einwilligungen durch den Consent Manager
   * @param options
   */
  this.consentmanagerCallbackConsentRevoked = function (options) {

    if (self.mediaTypesSupported.includes(options.vendor)) {
      self.debug && console.log(self.debugPrefix + 'consentmanagerCallbackConsentRevoked(): deactivating media element for vendor "' + String(options.vendor) + '"');
      self.deactivateElementsOfType(options.vendor);
    }

  }


  /**
   * Aktiviert alle auf der gesamten Seite eingebundenen Elemente des angegebenen Typs
   * Achtung: Es findet keine Prüfung hinsichtlich erteilter bzw. nicht erteilter Einwilligung statt!
   *
   * @param mediaType
   */
  this.activateElementsOfType = function (mediaType) {

    /**
     * Alle Medien-Elemente des angegebenen Typs aktivieren
     */

    $('.sc27mediaconfirm[data-sc27mediatype="' + mediaType + '"]:not(.activated)').each(function (i) {
      self.activateElement(this, mediaType);
    });

  }


  /**
   * Aktiviert alle auf der gesamten Seite eingebundenen Elemente des angegebenen Typs
   * Achtung: Bereits aktivierte Elemente werden nicht wieder inaktiviert!
   *
   * @param mediaType
   */
  this.deactivateElementsOfType = function (mediaType) {

    /**
     * Für alle Medien-Elemente des angegebenen Typs einen Disclaimer erzeugen
     */

    $('.sc27mediaconfirm[data-sc27mediatype="' + mediaType + '"].activated').each(function (i) {
      self.prepareDisclaimer(this, mediaType);
    });

  }


  /**
   * Erzeugt den Disclaimer für das Element des angegebenen Medientyps
   *
   * @param element
   * @param mediaType
   */
  this.prepareDisclaimer = function (element, mediaType) {

    var title = '';


    /**
     * Sofern Element aktuell aktiv, dann iframe entfernen und Disclaimer wieder einblenden
     */

    if ($(element).hasClass('activated')) {

      self.debug && console.log(self.debugPrefix + 'prepareDisclaimer(): video element is active, therefore deactivating video element');

      // iframe entfernen
      $(element).find('iframe').remove();

      // CSS-Klasse "activated" wieder entfernen, so dass Disclaimer wieder sichtbar wird
      $(element).removeClass('activated');


      // Keine weiteren Aktionen notwendig, da Disclaimer bereits vorhanden
      return;

    }


    /**
     * Anbieter-spezifische Daten zusammenstellen
     */

    var posterPlaceholder = pageConfig.mediaconfirm.default.poster_placeholder;
    var desc = pageConfig.mediaconfirm.default.desc;
    var linkText = pageConfig.mediaconfirm.default.link_text;
    var externlinkText = pageConfig.mediaconfirm.default.externlink_text;
    var videoType = $(element).data('sc27mediatype');

    if (videoType === 'youtube') {

      /**
       * YouTube
       */

      posterPlaceholder = pageConfig.mediaconfirm.youtube.poster_placeholder;
      desc = pageConfig.mediaconfirm.youtube.desc;
      linkText = pageConfig.mediaconfirm.youtube.link_text;
      externlinkText = pageConfig.mediaconfirm.youtube.externlink_text;

    } else if (videoType === 'vimeo') {

      /**
       * Vimeo
       */

      posterPlaceholder = pageConfig.mediaconfirm.vimeo.poster_placeholder;
      desc = pageConfig.mediaconfirm.vimeo.desc;
      linkText = pageConfig.mediaconfirm.vimeo.link_text;
      externlinkText = pageConfig.mediaconfirm.vimeo.externlink_text;

    }


    /**
     * Titel verarbeiten
     */

    if (
      (typeof $(element).data('title') !== 'undefined') &&
      ($(element).data('poster') !== '')
    ) {
      title = $(element).data('title');
    }


    /**
     * Poster-Image verarbeiten
     */

    var imageElement = document.createElement('img');
    imageElement.loading = 'lazy';
    imageElement.title = title;

    if (
      (typeof $(element).data('poster') !== 'undefined') &&
      ($(element).data('poster') !== '')
    ) {
      imageElement.src = $(element).data('poster');
    } else {
      imageElement.src = posterPlaceholder;
    }


    /**
     * HTML-Elemente zusammenstellen und einbringen
     */

    var contentElement = document.createElement('div');
    contentElement.classList.add('content');

    var contentInnerElement = document.createElement('div');
    contentInnerElement.classList.add('content-inner');

    var descElement = document.createElement('div');
    descElement.classList.add('desc');
    descElement.innerHTML = desc;

    var buttonsElement = document.createElement('div');
    buttonsElement.classList.add('buttons');

    var confirmElement = document.createElement('button');
    confirmElement.classList.add('btn');
    confirmElement.classList.add('btn-sm');
    confirmElement.classList.add('btn-white');
    confirmElement.classList.add('confirm');
    confirmElement.innerHTML = linkText;
    confirmElement.type = 'button';
    confirmElement.setAttribute('data-videotype', videoType);

    var externalLinkElement = document.createElement('a');
    externalLinkElement.classList.add('btn');
    externalLinkElement.classList.add('btn-sm');
    externalLinkElement.classList.add('btn-outline-white');
    externalLinkElement.innerHTML = externlinkText;
    externalLinkElement.target = '_blank';
    externalLinkElement.href = $(element).data('src-original');

    $(buttonsElement).append($(confirmElement));
    $(buttonsElement).append($(externalLinkElement));

    $(contentInnerElement).append($(descElement));
    $(contentInnerElement).append($(buttonsElement));

    $(contentElement).append($(contentInnerElement));

    $(element).append($(imageElement));
    $(element).append($(contentElement));


    /**
     * Bei Betätigung der Bestätigungsschaltfläche Video dynamisch einbetten
     */

    $(element).find('button.confirm').on('click', function () {

      var parentElement = $(this).closest('.sc27mediaconfirm');
      // var mediaType = $(parentElement).data('sc27mediatype');


      /**
       * Alle Elemente des gleichen Typs aktivieren
       */

      $('.sc27mediaconfirm[data-sc27mediatype=' + mediaType + ']').each(function (i) {
        self.activateElement(this, mediaType);
      });

    });

  }


  /**
   * Aktiviert das angegebene Element
   *
   * @param element
   * @param mediaType
   */
  this.activateElement = function (element, mediaType) {

    /**
     * Status der Einwilligung speichern
     */

    self.setConsentStatus(mediaType, true);


    /**
     * Daten zusammenstellen
     */

    var parentElement = $(element).closest('.sc27mediaconfirm');
    var mediaType = $(parentElement).data('sc27mediatype');

    self.debug && console.log(self.debugPrefix + 'activateElement(): activating media element for media type "' + mediaType + '"');


    /**
     * iframe zur Video-Einbindung erzeugen
     */

    var iframeElement = document.createElement('iframe');

    iframeElement.src = $(parentElement).data('src');
    iframeElement.allow = 'autoplay; fullscreen';


    /**
     * iframe-Element hinzufügen
     */

    $(parentElement).append($(iframeElement));


    /**
     * Videoeinbindung als "aktiviert" kennzeichnen
     */

    $(parentElement).addClass('activated');

  }


  /**
   * Status der Einwilligung speichern
   */
  this.setConsentStatus = function (mediaType, status) {

    /**
     * Status via Callback-Funktion festlegen, sofern definiert
     */

    if (self.funcSetConsentStatus !== null) {
      self.debug && console.log(self.debugPrefix + 'setConsentStatus(): setting consent state for media type "' + mediaType + '" by calling custom function ...', status);
      self.callFunction(self.funcSetConsentStatus, [mediaType, status]);

      return true;
    }


    /**
     * Speichern via Consent Manager, sofern verwendet
     */

    if (
      (typeof sc27ConsentManager !== 'undefined') &&
      (typeof sc27ConsentManager.getConsentStatus === 'function')
    ) {
      self.debug && console.log(self.debugPrefix + 'setConsentStatus(): setting consent state for media type "' + mediaType + '" via sector27 Consent Manager: ' + status);
      sc27ConsentManager.setConsentStatus(mediaType, status)

      return true;
    }


    /**
     * Prüfen, ob Storage nutzbar
     */

    if (self.consentStorage === null) {
      self.debug && console.log(self.debugPrefix + 'setConsentStatus(): consent storage not defined');
      return false;
    }


    /**
     * Speichern in Storage
     */

    var key = 'sc27Consent' + self.capitalizeFirstLetter(mediaType);

    self.debug && console.log(self.debugPrefix + 'setConsentStatus(): setting consent state for media type "' + mediaType + '" via own routine: ', status);

    if (status) {
      self.sessionStorage.setItem(key, 'accepted');
    } else {
      self.sessionStorage.removeItem(key);
    }


    return true;

  }


  /**
   * Status der Einwilligung ermitteln
   */
  this.getConsentStatus = function (mediaType) {

    var consentStatus = false;

    self.debug && console.log(self.debugPrefix + 'getConsentStatus(): checking consent for media type: ' + mediaType);


    /**
     * Status via Callback-Funktion ermitteln, sofern definiert
     */

    if (self.funcGetConsentStatus !== null) {
      self.debug && console.log(self.debugPrefix + 'getConsentStatus(): checking consent state for media type "' + mediaType + '" by calling custom function ...');
      consentStatus = self.callFunction(self.funcGetConsentStatus, mediaType);

      return consentStatus;
    }


    /**
     * Status via Consent Manager ermitteln, sofern verwendet
     */

    if (
      (typeof sc27ConsentManager !== 'undefined') &&
      (typeof sc27ConsentManager.getConsentStatus === 'function')
    ) {

      consentStatus = sc27ConsentManager.getConsentStatus(mediaType)
      self.debug && console.log(self.debugPrefix + 'getConsentStatus(): consent state, retrieved via sector27 Consent Manager, for media type "' + mediaType + '": ' + consentStatus);

      return consentStatus;

    }


    /**
     * Prüfen, ob Storage nutzbar
     */

    if (self.consentStorage === null) {
      self.debug && console.log(self.debugPrefix + 'getConsentStatus(): consent storage not defined');
      return false;
    }


    /**
     * Status aus dem Storage ermitteln
     */

    var key = 'sc27Consent' + self.capitalizeFirstLetter(String(mediaType));

    consentStatus = (self.consentStorage.getItem(key) === 'accepted');
    self.debug && console.log(self.debugPrefix + 'getConsentStatus(): consent, retrieved via storage, for media type "' + mediaType + '": ' + consentStatus);

    return consentStatus;

  }


  /**
   * Erstes Zeichen des angegebenen Strings in einen Großbuchstaben umwandeln
   * @param string
   * @returns {string}
   */
  this.capitalizeFirstLetter = function (string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
  }


  /**
   * Initialisierung
   */
  this.init = function () {

    /**
     * Initialisierung bereits erfolgt, dann ist nichts weiter zu tun
     */

    if (self.initDone) {
      return true;
    }


    /**
     * Konfiguration verarbeiten
     */

    self.debug = (self.config.debug) ? self.config.debug : false;

    self.debug && console.log(self.debugPrefix + 'init(): initializing');


    /**
     * Consent Storage festlegen
     */

    if ((self.config.consentStorageType === 'localStorage') && (typeof window.localStorage === 'object')) {

      // localStorage
      self.debug && console.log(self.debugPrefix + 'init(): using storage type "localStorage"');

      self.consentStorage = window.localStorage;

    } else if ((self.config.consentStorageType === 'sessionStorage') && (typeof window.sessionStorage === 'object')) {

      // sessionStorage
      self.debug && console.log(self.debugPrefix + 'init(): using storage type "sessionStorage"');

      self.consentStorage = window.sessionStorage;

    } else {

      // storage not given or not svailable
      self.debug && console.log(self.debugPrefix + 'init(): given storage type "' + self.config.consentStorageType + '" not available');

      self.consentStorage = null;
      self.config.consentStorageType = '';

    }


    /**
     * Auf aktueller Seite vorhandene Videoarten ermitteln
     */

    $('.sc27mediaconfirm').each(function (i) {


      var videoType = $(this).data('sc27mediatype');


      if (self.mediaTypesSupported.includes(videoType)) {

        if (!self.mediaTypesDetected.includes(videoType)) {
          self.mediaTypesDetected.push(videoType);
        }

      }

    });


    /**
     * Pauschal Disclaimer für sämtliche Medien-Typen erzeugen
     */

    for (var i = 0, len = self.mediaTypesDetected.length; i < len; i++) {

      var mediaType = self.mediaTypesDetected[i];


      /**
       * Für alle Medien-Elemente des angegebenen Typs einen Disclaimer erzeugen
       */

      $('.sc27mediaconfirm[data-sc27mediatype="' + mediaType + '"]').each(function (i) {
        self.prepareDisclaimer(this, mediaType);
      });

    }


    /**
     * Alle auf aktueller Seite ermittelten Videoarten durchlaufen
     * Fallweise Einbindung aktivieren oder ansonsten Disclaimer erzeugen
     */

    for (var i = 0, len = self.mediaTypesDetected.length; i < len; i++) {

      var mediaType = self.mediaTypesDetected[i];


      /**
       * Element aktivieren, sofern Einwilligung vorliegt oder ansonsten Disclaimer erzeugen
       */

      if (self.getConsentStatus(mediaType)) {
        self.activateElementsOfType(mediaType);
      }

    }


    /**
     * Callback-Funktion für Consent Manager registrieren
     */

    if (
      (typeof sc27ConsentManager !== 'undefined') &&
      (typeof sc27ConsentManager.registerCallback === 'function')
    ) {
      self.debug && console.log(self.debugPrefix + 'init(): registering callback functions within sector27 Consent Manager');

      sc27ConsentManager.registerCallback('consentConfirmed', self.consentmanagerCallbackConsentConfirmed);
      sc27ConsentManager.registerCallback('consentRevoked', self.consentmanagerCallbackConsentRevoked);
    }


    /**
     * Initialisierung als abgeschlossen betrachten
     */

    self.initDone = true;

  }


  /**
   * Calls a function either given by name or as a function
   */
  this.callFunction = function (fn, args = null) {

    if (typeof fn === 'function') {

      self.debug && console.log(self.debugPrefix + 'callFunction(): calling function, given as type "function" ...');
      return fn(args);

    } else if (typeof fn === 'string') {

      self.debug && console.log(self.debugPrefix + 'callFunction(): calling function, given as type "string" ...', args);
      return self.callFunctionByName(fn, window, args);

    } else {

      self.debug && console.log(self.debugPrefix + 'error function:', fn);
      return false;

    }

  }


  /**
   * Calls the function given by name
   */
  this.callFunctionByName = function (functionName, context = window, args = null) {

    var args = Array.prototype.slice.call(arguments, 2);

    var namespaces = functionName.split(".");
    var func = namespaces.pop();

    for (var i = 0; i < namespaces.length; i++) {
      context = context[namespaces[i]];
    }

    self.debug && console.log(self.debugPrefix + 'callFunctionByName(): call function by name "' + functionName + '" and arguments:', args);
    return context[func].apply(context, args);

  }

}

/**
 * sector27 - DSGVO-konforme Einbindung von iframes
 */

document.addEventListener('DOMContentLoaded', function () {

  var sc27Iframe = new Sc27Iframe({
    debug: ((typeof pageConfig.debug !== 'undefined') && (typeof pageConfig.debug.Sc27Iframe !== 'undefined') && (pageConfig.debug.Sc27Iframe === '1')),
    consentStorageType: '',
    funcGetConsentStatus: null,
    funcSetConsentStatus: null
  });

  sc27Iframe.init();

});


/**
 * Klasse Sc27Iframe
 */
function Sc27Iframe(config) {

  var self = this;

  this.config = (config) ? config : {};

  this.debug = false;
  this.debugPrefix = 'Sc27Iframe: ';

  this.funcGetConsentStatus = null;
  this.funcSetConsentStatus = null;
  this.consentStorage = null;

  this.initDone = false;


  /**
   * Callback-Funktion zur Benachrichtigung über erteilte Einwilligung durch den Consent Manager
   * @param options
   */
  this.consentmanagerCallbackConsentConfirmed = function (options) {

    $('.sc27-ce-iframe[data-sc27iframe-consenttype="' + options.vendor + '"]').each(function () {
      self.debug && console.log(self.debugPrefix + 'consentmanagerCallbackConsentConfirmed(): activating iframes for vendor "' + String(options.vendor) + '"');
      self.activateIframe(this, options.vendor);
    });

  }


  /**
   * Callback-Funktion zur Benachrichtigung über zurückgezogene Einwilligungen durch den Consent Manager
   * @param options
   */
  this.consentmanagerCallbackConsentRevoked = function (options) {

    $('.sc27-ce-iframe[data-sc27iframe-consenttype="' + options.vendor + '"]').each(function () {
      self.debug && console.log(self.debugPrefix + 'consentmanagerCallbackConsentRevoked(): deactivating iframes for vendor "' + String(options.vendor) + '"');
      self.deactivateIframe(this, options.vendor);
    });

  }


  /**
   * iframe deaktivieren
   */

  this.deactivateIframe = function (parentElement, vendor) {

    self.debug && console.log(self.debugPrefix + 'deactivateIframe(): deactivating iframes for vendor "' + vendor + '"');

    $(parentElement).find('iframe').remove();
    $(parentElement).removeClass('activated');

  }


  /**
   * iframe aktivieren
   */

  this.activateIframe = function (parentElement, vendor) {

    self.debug && console.log(self.debugPrefix + 'activateIframe(): activating iframes for vendor "' + vendor + '"');


    /**
     * Daten zusammenstellen
     */

    const sandboxOptionsAllowed = [
      'allow-scripts',
      'allow-forms',
      'allow-popups',
      'allow-pointer-lock',
      'allow-same-origin',
      'allow-top-navigation'
    ];

    var consentType = $(parentElement).attr('data-sc27iframe-consenttype');
    var sandboxOptionsRaw = $(parentElement).attr('data-sc27iframe-sandboxoptions');
    var sandboxOptions = [];

    if (typeof sandboxOptionsRaw === 'undefined') {
      sandboxOptionsRaw = '';
    }

    sandboxOptionsRaw = sandboxOptionsRaw.split(',');

    sandboxOptionsRaw.forEach(function (currentOption) {

      if (sandboxOptionsAllowed.indexOf(currentOption) !== -1) {
        sandboxOptions.push(currentOption);
      }

    });


    /**
     * Status der Einwilligung speichern
     */

    self.setConsentStatus(consentType, true);


    /**
     * iframe zur Einbindung dynamisch erzeugen
     */

    var iframeSrc = $(parentElement).data('sc27iframe-src');
    var iframeHeight = $(parentElement).data('sc27iframe-height');


    /**
     * iframe erszeugen
     */

    var iframeElement = document.createElement('iframe');

    iframeElement.src = iframeSrc;
    iframeElement.setAttribute('data-sc27iframe-consenttype', consentType);

    if (sandboxOptions.length > 0) {
      iframeElement.sandbox = sandboxOptions.join(' ');
    }

    if (iframeHeight) {
      iframeElement.setAttribute('style', 'height: ' + iframeHeight + ';');
    }

    $(parentElement).find('.live').append(iframeElement);


    /**
     * Einbindung als aktiviert kennzeichnen
     */

    $(parentElement).addClass('activated');

  }


  /**
   * Status der Einwilligung speichern
   */
  this.setConsentStatus = function (mediaType, status) {

    /**
     * Status via Callback-Funktion festlegen, sofern definiert
     */

    if (self.funcSetConsentStatus !== null) {
      self.debug && console.log(self.debugPrefix + 'setConsentStatus(): setting consent state for media type "' + mediaType + '" by calling custom function ...', status);
      self.callFunction(self.funcSetConsentStatus, [mediaType, status]);

      return true;
    }


    /**
     * Speichern via Consent Manager, sofern verwendet
     */

    if (
      (typeof sc27ConsentManager !== 'undefined') &&
      (typeof sc27ConsentManager.getConsentStatus === 'function')
    ) {
      self.debug && console.log(self.debugPrefix + 'setConsentStatus(): setting consent state for media type "' + mediaType + '" via sector27 Consent Manager: ' + status);
      sc27ConsentManager.setConsentStatus(mediaType, status)

      return true;
    }


    /**
     * Prüfen, ob Storage nutzbar
     */

    if (self.consentStorage === null) {
      self.debug && console.log(self.debugPrefix + 'setConsentStatus(): consent storage not defined');
      return false;
    }


    /**
     * Speichern in Storage
     */

    var key = 'sc27Consent' + self.capitalizeFirstLetter(mediaType);

    self.debug && console.log(self.debugPrefix + 'setConsentStatus(): setting consent state for media type "' + mediaType + '" via own routine: ', status);

    if (status) {
      self.sessionStorage.setItem(key, 'accepted');
    } else {
      self.sessionStorage.removeItem(key);
    }


    return true;

  }


  /**
   * Status der Einwilligung ermitteln
   */
  this.getConsentStatus = function (mediaType) {

    var consentStatus = false;

    self.debug && console.log(self.debugPrefix + 'getConsentStatus(): getting consent for media type: ' + mediaType);


    /**
     * Status via Callback-Funktion ermitteln, sofern definiert
     */

    if (self.funcGetConsentStatus !== null) {
      self.debug && console.log(self.debugPrefix + 'getConsentStatus(): checking consent state for media type "' + mediaType + '" by calling custom function ...');
      consentStatus = self.callFunction(self.funcGetConsentStatus, mediaType);

      return consentStatus;
    }


    /**
     * Status via Consent Manager ermitteln, sofern verwendet
     */

    if (
      (typeof sc27ConsentManager !== 'undefined') &&
      (typeof sc27ConsentManager.getConsentStatus === 'function')
    ) {

      consentStatus = sc27ConsentManager.getConsentStatus(mediaType)
      self.debug && console.log(self.debugPrefix + 'getConsentStatus(): consent state, retrieved via sector27 Consent Manager, for media type "' + mediaType + '": ' + consentStatus);

      return consentStatus;

    }


    /**
     * Prüfen, ob Storage nutzbar
     */

    if (self.consentStorage === null) {
      self.debug && console.log(self.debugPrefix + 'getConsentStatus(): consent storage not defined');
      return false;
    }


    /**
     * Status aus dem Storage ermitteln
     */

    var key = 'sc27Consent' + self.capitalizeFirstLetter(mediaType);

    consentStatus = (self.consentStorage.getItem(key) === 'accepted');
    self.debug && console.log(self.debugPrefix + 'getConsentStatus(): consent, retrieved via storage, for media type "' + mediaType + '": ' + consentStatus);

    return consentStatus;

  }


  /**
   * Erstes Zeichen des angegebenen Strings in einen Großbuchstaben umwandeln
   * @param string
   * @returns {string}
   */
  this.capitalizeFirstLetter = function (string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
  }


  /**
   * Initialisierung
   */
  this.init = function () {

    /**
     * Initialisierung bereits erfolgt, dann ist nichts weiter zu tun
     */

    if (self.initDone) {
      return true;
    }


    /**
     * Konfiguration verarbeiten
     */

    self.debug = (self.config.debug) ? self.config.debug : false;

    self.debug && console.log(self.debugPrefix + 'init(): initializing');


    /**
     * Consent Storage festlegen
     */

    if ((self.config.consentStorageType === 'localStorage') && (typeof window.localStorage === 'object')) {

      // localStorage
      self.debug && console.log(self.debugPrefix + 'init(): using storage type "localStorage"');

      self.consentStorage = window.localStorage;

    } else if ((self.config.consentStorageType === 'sessionStorage') && (typeof window.sessionStorage === 'object')) {

      // sessionStorage
      self.debug && console.log(self.debugPrefix + 'init(): using storage type "sessionStorage"');

      self.consentStorage = window.sessionStorage;

    } else {

      // storage not given or not svailable
      self.debug && console.log(self.debugPrefix + 'init(): given storage type "' + self.config.consentStorageType + '" not available');

      self.consentStorage = null;
      self.config.consentStorageType = '';

    }


    /**
     * Alle iframe-artige Inhaltselemente durchlaufen und vorbereiten
     */

    $('.sc27-ce-iframe').each(function (i) {

      var title = '';


      /**
       * Diesem Consent-Type bereits zugestimmt, dann Inhalte direkt laden
       */

      var consentType = $(this).attr('data-sc27iframe-consenttype');

      if (self.getConsentStatus(consentType)) {
        self.activateIframe(this, consentType);
      }


      /**
       * Bei Betätigung der Bestätigungsschaltfläche Video dynamisch einbetten
       */

      var parentElement = $(this);

      $(this).find('button.confirm').on('click', function () {

        /**
         * Aktuelles Element aktivieren
         */

        self.activateIframe(parentElement, consentType);

      });

    });


    /**
     * Callback-Funktion für Consent Manager registrieren
     */

    if (
      (typeof sc27ConsentManager !== 'undefined') &&
      (typeof sc27ConsentManager.registerCallback === 'function')
    ) {
      self.debug && console.log(self.debugPrefix + 'init(): registering callback functions within sector27 Consent Manager');

      sc27ConsentManager.registerCallback('consentConfirmed', self.consentmanagerCallbackConsentConfirmed);
      sc27ConsentManager.registerCallback('consentRevoked', self.consentmanagerCallbackConsentRevoked);
    }


    /**
     * Initialisierung als abgeschlossen betrachten
     */

    self.initDone = true;

  }


  /**
   * Calls a function either given by name or as a function
   */
  this.callFunction = function (fn, args = null) {

    if (typeof fn === 'function') {

      self.debug && console.log(self.debugPrefix + 'callFunction(): calling function, given as type "function" ...');
      return fn(args);

    } else if (typeof fn === 'string') {

      self.debug && console.log(self.debugPrefix + 'callFunction(): calling function, given as type "string" ...', args);
      return self.callFunctionByName(fn, window, args);

    } else {

      self.debug && console.log(self.debugPrefix + 'error function:', fn);
      return false;

    }

  }


  /**
   * Calls the function given by name
   */
  this.callFunctionByName = function (functionName, context = window, args = null) {

    var args = Array.prototype.slice.call(arguments, 2);

    var namespaces = functionName.split(".");
    var func = namespaces.pop();

    for (var i = 0; i < namespaces.length; i++) {
      context = context[namespaces[i]];
    }

    self.debug && console.log(self.debugPrefix + 'callFunctionByName(): call function by name "' + functionName + '" and arguments:', args);
    return context[func].apply(context, args);

  }

}

/**
 * Klasse Sc27ExternalJavaScript
 * (Bietet die Möglichkeit zur datenschutzkonformen Einbindung von externem JavaScript-Code)
 *
 *
 * Beispiel zur Initialisierung:
 *
 * let sc27ExternalJavaScript = new Sc27ExternalJavaScript();
 *
 * sc27ExternalJavaScript.init({
 *   debug: true,
 *   consentStorageType: 'localStorage',
 * });
 *
 *
 * Konfiguration via data-Parameter:
 *
 * data-sc27externaljs-src:
 * Die vollständige URL der nach voliegender Einwilligung zu ladendenden JavaScript-Datei.
 *
 * data-sc27externaljs-consenttype:
 * Die Bezeichnung des zur Einwilligung verwendeten Typs/Anbieters. Diese Bezeichnung wird, zusammen mit einem Prefix und sofern entsprechend konfiguriert,
 * zur Speicherung erteilter Einwilligungen sowie zur Ermittlung dieser via sessionStorage/localStorage genutzt.
 * Mehrere Inhaltselemente können den gleichen Typ/Zweck verwenden, so dass beim Zurückziehen der Einwilligung diesen Typs alle Inhaltselemente gleichen Typs
 * ebenfalls deaktiviert werden.
 *
 * data-sc27externaljs-rewrite-documentwrite:
 * Auf "1" setzen, um die document.write()-Funktion gegen eine eigene zu ersetzen. Dies ermöglicht es durch das geladene, externe JavaScript auch nach (!)
 * dem bereits vollständigen Laden des HTML-Dokuments die Funktion nutzen zu können.
 * Wichtig: Durch Nutzung dieser Funktion werden global sämtliche über document.write() auszugebenden Inhalte innerhalb diesen Inhaltselements ausgegeben.
 * Die Nutzung zweier solcher Funktionen auf ein und derselben Seite nicht dadurch nicht möglich.
 *
 *
 * Beispiel zur Nutzung:
 *
 * <div class="sc27-ce-externaljs" data-sc27externaljs-src="https://www.example.local/script.js" data-sc27externaljs-consenttype="sector27gmbh" data-sc27externaljs-rewrite-documentwrite="1">
 *   <div class="sc27-ce-externaljs-container">
 *     <div class="content">
 *       <div class="placeholder">
 *
 *         <div class="confirmation">
 *           <div class="desc">
 *             ERKLÄRUNGSTEXT MIT LINKS ZUR DATENSCHUTZERKLÄRUNG
 *           </div>
 *           <div class="buttons">
 *             <button type="button" class="confirm">
 *               BUTTONTEXT ZUR ERTEILUNG DER EINWILLIGUNG
 *             </button>
 *           </div>
 *         </div>
 *
 *       </div>
 *
 *       <div class="live">
 *         <!-- JavaScript wird nach vorhandener Einwilligung dynamisch erzeugt -->
 *       </div>
 *
 *       <div class="revocation">
 *         <a href="#" class="revocation-link">
 *           LINKTEXT ZUR ZURÜCKNAHME DER EINWILLIGUNG
 *         </a>
 *       </div>
 *
 *     </div>
 *   </div>
 * </div>
 *
 */
function Sc27ExternalJavaScript() {

  let self = this;

  this.settings = {};
  this.defaultSettings = {
    debug: false,
    debugPrefix: 'Sc27ExternalJavascript: ',
    consentStorageType: '',
    storageIdentifierPrefix: 'sc27Consent',
    funcGetConsentStatus: null,
    funcSetConsentStatus: null,
    /* CSS-Klasse - Achtung: Wird dokumentweit eindeutig sein */
    documentWriteHelperElementClassName: 'sc27-documentwrite-position',
  };

  this.funcGetConsentStatus = null;
  this.funcSetConsentStatus = null;
  this.consentStorage = null;
  this.useSc27ConsentManager = false;

  this.initDone = false;
  this.documentWriteFunctionOriginal = null;


  /**
   * Initialisierung
   */
  this.init = function (settings) {

    /**
     * Initialisierung bereits erfolgt, dann ist nichts weiter zu tun
     */

    if (self.initDone) {
      return true;
    }


    /**
     * Einstellungen übernehmen
     */

    self.settings = Object.assign({}, self.defaultSettings, settings);

    self.funcGetConsentStatus = self.settings.funcGetConsentStatus || null;
    self.funcSetConsentStatus = self.settings.funcSetConsentStatus || null;


    // Debugging
    self.settings.debug && console.log(self.settings.debugPrefix + 'init(): initializing');


    /**
     * Consent Storage festlegen
     */

    if ((self.settings.consentStorageType === 'localStorage') && self.isLocalStorageAvailable()) {

      // localStorage
      self.settings.debug && console.log(self.settings.debugPrefix + 'init(): using storage type "localStorage"');
      self.consentStorage = window.localStorage;

    } else if ((self.settings.consentStorageType === 'sessionStorage') && self.isSessionStorageAvailable()) {

      // sessionStorage
      self.settings.debug && console.log(self.settings.debugPrefix + 'init(): using storage type "sessionStorage"');
      self.consentStorage = window.sessionStorage;

    } else {

      // storage not given or not svailable
      self.settings.debug && console.log(self.settings.debugPrefix + 'init(): given storage type "' + self.settings.consentStorageType + '" either not defined or not available');

      self.consentStorage = null;
      self.settings.consentStorageType = '';

    }


    /**
     * Callback-Funktion für Consent Manager registrieren
     */

    if (
      (self.settings.consentStorageType === '') &&
      (typeof sc27ConsentManager !== 'undefined') &&
      (typeof sc27ConsentManager.registerCallback === 'function')
    ) {

      // Callback-Funktionen beim Consent Manager registrieren, die dieser aufruft, sobald eine Einwilligung erteilt bzw. zurückgezogen wurde
      self.settings.debug && console.log(self.settings.debugPrefix + 'init(): registering callback functions within sector27 Consent Manager');

      // Status festhalten, dass sector27-eigener Consent Manager verwendet wird
      self.useSc27ConsentManager = true;


      /**
       * Anbindung an den sector27 Consent Manager
       * (reagiert auf von diesem erzeugte Events)
       */

      window.addEventListener('SC27CM_EVENT', function (e) {

        self.settings.debug && console.log(self.settings.debugPrefix + 'sector27 Consent Manager event "' + e.detail.event + '" triggered', e.detail);


        /**
         * Nur auf Events reagieren, die den initialen Einwilligungsstatus oder aber über Änderungen dazu informieren
         */

        let eventValid = ['init', 'consentConfirmAll', 'consentConfirmed', 'consentRevoked'];

        if (eventValid.indexOf(e.detail.event) === -1) {
          self.settings.debug && console.log(self.settings.debugPrefix + 'sector27 Consent Manager event "' + e.detail.event + '": Skipping event handling', e.detail);
          return;
        }


        /**
         * Notwendige Daten auf Vorhandensein prüfen
         */

        if (typeof e.detail.consentManager === 'undefined') {
          return;
        }


        /**
         * Prüfen, ob Vendor angegeben
         */

        if (
          (typeof e.detail.vendor === 'undefined') ||
          (e.detail.vendor === '')
        ) {
          self.settings.debug && console.log(self.settings.debugPrefix + 'sector27 Consent Manager event "' + e.detail.event + '" triggered. Skipping event handling, because no vendor was given.', e.detail);
          return;
        }

        let vendor = String(e.detail.vendor);

        // Status der Einwilligung vom Consent Manager holen
        let consentStatus = e.detail.consentManager.getConsentStatus(vendor);

        self.settings.debug && console.log(self.settings.debugPrefix + 'sector27 Consent Manager event "' + e.detail.event + '": Retrieved consent status of vendor "' + vendor + '"):', consentStatus);


        /**
         * Je nach ermitteltem Status der Einwilligung Aktionen durchführen
         */

        if (consentStatus) {

          /**
           * Einwilligung wurde erteilt
           */

          $('.sc27-ce-externaljs[data-sc27externaljs-consenttype="' + vendor + '"]').each(function () {
            self.settings.debug && console.log(self.settings.debugPrefix + 'sector27 Consent Manager event "' + e.detail.event + '": Activating JavaScript element for vendor "' + vendor + '"');
            self.activateJavaScript(this, vendor);
          });

        } else {

          /**
           * Einwilligung wurde nicht erteilt
           */

          self.handleRevokeConsent(vendor, false);

        }

      }, false);

    }


    /**
     * Alle eigenen JavaScript-Inhaltselemente durchlaufen und vorbereiten
     */

    $('.sc27-ce-externaljs').each(function (i) {

      /**
       * Diesem Consent-Type bereits zugestimmt, dann Inhalte direkt laden
       */

      let consentType = $(this).attr('data-sc27externaljs-consenttype');

      if (self.getConsentStatus(consentType)) {
        self.activateJavaScript(this, consentType);
      }


      /**
       * Bei Betätigung der Bestätigungsschaltfläche Inhalt dynamisch erzeugen
       */

      let parentElement = $(this);

      $(this).find('button.confirm').on('click', function () {

        /**
         * Aktuelles Element aktivieren
         */

        self.activateJavaScript(parentElement, consentType);

      });

    });


    /**
     * Initialisierung als abgeschlossen betrachten
     */

    self.initDone = true;

  }


  /**
   * JavaScript aktivieren
   */

  this.activateJavaScript = function (parentElement, vendor) {

    self.settings.debug && console.log(self.settings.debugPrefix + 'activateJavaScript(): Activating JavaScript element for vendor "' + vendor + '"');


    /**
     * Abbruch, sofern JavaScript bereits aktiviert wurde
     */

    if ($(parentElement).hasClass('activated')) {
      self.settings.debug && console.warn(self.settings.debugPrefix + 'activateJavaScript(): Skipping activation of JavaScript for vendor "' + vendor + '". JavaScript is already active');
      return;
    }


    /**
     * Daten zusammenstellen
     */

    let consentType = $(parentElement).attr('data-sc27externaljs-consenttype');


    /**
     * Status der Einwilligung speichern
     */

    self.setConsentStatus(consentType, true);


    /**
     * "script"-Tag zur Einbindung dynamisch erzeugen
     */

    let scriptSrc = $(parentElement).data('sc27externaljs-src');
    let rewriteDocumentWrite = $(parentElement).data('sc27externaljs-rewrite-documentwrite') || 0;


    /**
     * "document.write"-Methode umschreiben
     */

    if (parseInt(rewriteDocumentWrite) === 1) {

      self.settings.debug && console.log(self.settings.debugPrefix + 'document.write(): Lege eigene document.write()-Funktion fest ...');

      // Eigene document.write()-Funktion erstellen
      let documentWriteFunctionCustom = function (content) {

        let liveElement = $(parentElement).find('.live').get(0);

        // Achtung: Das HTML-Hilfselement für die Aufnahme von document.wrote()-Inhalten wird im Dokument eindeutig sein (!)
        let documentWriteContainerElement = document.querySelector('.' + self.settings.documentWriteHelperElementClassName) || null;

        // HTML-Hilfselement noch nicht im Dokument vorhanden, dann erzeugen
        if (!documentWriteContainerElement) {
          // Neues HTML-Element erzeugen, welches die mittels document.write() einzufügenden Inhalte enthalten soll
          documentWriteContainerElement = document.createElement('div');
          documentWriteContainerElement.classList.add(self.settings.documentWriteHelperElementClassName);

          // Neues HTML-Element in das "live"-Element einbringen
          liveElement.appendChild(documentWriteContainerElement);
        }

        self.settings.debug && console.log(self.settings.debugPrefix + 'document.write(): Appending HTML content to JavaScript live element', content);

        // Die eigentlichen, mittels document.write() auszugebenden Inhalte an das Ende unseres eigenen HTML-Hilfselements einbringen
        documentWriteContainerElement.insertAdjacentHTML('beforeend', content);

      }

      // Original document.write()-Funktion sichern
      self.documentWriteFunctionOriginal = document.write;

      // document.write()-Funktion mit eigener Funktion überschreiben
      document.write = documentWriteFunctionCustom;

    }


    /**
     * iframe erszeugen
     */

    let scriptElement = document.createElement('script');

    scriptElement.addEventListener('load', function (event) {
      self.settings.debug && console.log(self.settings.debugPrefix + 'Event Handler "load": JavaScript successfully loaded');
    });

    scriptElement.addEventListener('error', function (event) {
      self.settings.debug && console.error(self.settings.debugPrefix + 'Event Handler "load": JavaScript could not be loaded');
    });

    scriptElement.type = 'text/javascript';
    scriptElement.async = true;
    scriptElement.src = scriptSrc;
    // scriptElement.setAttribute('data-sc27externaljs-consenttype', consentType);

    self.settings.debug && console.log(self.settings.debugPrefix + 'activateJavaScript(): Embedding HTML-"script" element', scriptElement);
    $(parentElement).get(0).querySelector('.live').appendChild(scriptElement);


    /**
     * Funktion zur Zurückziehung von Einwilligungen sichtbar/unsichtbar schalten
     */

    if (self.revocationAvailable()) {

      /**
       * Klick auf Revocation-Link verarbeiten
       */

      $(parentElement).find('.revocation-link').off('click').on('click', function (event) {
        event.preventDefault();
        self.settings.debug && console.log(self.settings.debugPrefix + 'activateJavaScript(): revocation link clicked - handling revocation for vendor "' + vendor + '"');
        self.handleRevokeConsent(vendor);
      });


      /**
       * Funktion sichtbar schalten
       */

      $(parentElement).addClass('revocation-available');

    }


    /**
     * Einbindung als aktiviert kennzeichnen
     */

    $(parentElement).addClass('activated');

  }


  /**
   * JavaScript deaktivieren
   */

  this.deactivateJavaScript = function (parentElement, vendor) {

    self.settings.debug && console.log(self.settings.debugPrefix + 'deactivateJavaScript(): deactivating JavaScript for vendor "' + vendor + '"');

    $(parentElement).find('script').remove();
    $(parentElement).find('.' + self.settings.documentWriteHelperElementClassName).remove();
    $(parentElement).removeClass('activated');

  }


  /**
   * Status der Einwilligung speichern
   */
  this.setConsentStatus = function (vendor, status) {

    /**
     * Status via Callback-Funktion festlegen, sofern definiert
     */

    if (self.funcSetConsentStatus !== null) {
      self.settings.debug && console.log(self.settings.debugPrefix + 'setConsentStatus(): setting consent state for vendor "' + vendor + '" by calling custom function ...', status);
      self.callFunction(self.funcSetConsentStatus, [vendor, status]);

      return true;
    }


    /**
     * Speichern via Consent Manager, sofern verwendet
     */

    if (self.useSc27ConsentManager) {
      self.settings.debug && console.log(self.settings.debugPrefix + 'setConsentStatus(): setting consent state for vendor "' + vendor + '" via sector27 Consent Manager: ' + status);
      sc27ConsentManager.setConsentStatus(vendor, status)
      return true;
    }


    /**
     * Prüfen, ob Storage nutzbar
     */

    if (self.consentStorage === null) {
      self.settings.debug && console.log(self.settings.debugPrefix + 'setConsentStatus(): consent storage not defined');
      return false;
    }


    /**
     * Speichern in Storage
     */

    let key = self.settings.storageIdentifierPrefix + self.capitalizeFirstLetter(vendor);

    self.settings.debug && console.log(self.settings.debugPrefix + 'setConsentStatus(): setting consent state for vendor "' + vendor + '" via own routine: ', status);

    if (status) {
      self.consentStorage.setItem(key, 'accepted');
    } else {
      self.consentStorage.removeItem(key);
    }


    return true;

  }


  /**
   * Status der Einwilligung ermitteln
   */
  this.getConsentStatus = function (vendor) {

    let consentStatus = false;

    self.settings.debug && console.log(self.settings.debugPrefix + 'getConsentStatus(): getting consent for vendor: "' + vendor + '"');


    /**
     * Status via Callback-Funktion ermitteln, sofern definiert
     */

    if (self.funcGetConsentStatus !== null) {
      self.settings.debug && console.log(self.settings.debugPrefix + 'getConsentStatus(): checking consent state for vendor "' + vendor + '" by calling custom function ...');
      consentStatus = self.callFunction(self.funcGetConsentStatus, vendor);

      return consentStatus;
    }


    /**
     * Status via Consent Manager ermitteln, sofern verwendet
     */

    if (self.useSc27ConsentManager) {
      consentStatus = sc27ConsentManager.getConsentStatus(vendor)
      self.settings.debug && console.log(self.settings.debugPrefix + 'getConsentStatus(): consent state, retrieved via sector27 Consent Manager, for vendor "' + vendor + '": ' + consentStatus);

      return consentStatus;
    }


    /**
     * Prüfen, ob Storage nutzbar
     */

    if (self.consentStorage === null) {
      self.settings.debug && console.log(self.settings.debugPrefix + 'getConsentStatus(): consent storage not defined');
      return false;
    }


    /**
     * Status aus dem Storage ermitteln
     */

    let key = self.settings.storageIdentifierPrefix + self.capitalizeFirstLetter(vendor);

    consentStatus = (self.consentStorage.getItem(key) === 'accepted');
    self.settings.debug && console.log(self.settings.debugPrefix + 'getConsentStatus(): consent, retrieved via storage, for vendor "' + vendor + '": ' + consentStatus);

    return consentStatus;

  }


  /**
   * Erstes Zeichen des angegebenen Strings in einen Großbuchstaben umwandeln
   * @param string
   * @returns {string}
   */
  this.capitalizeFirstLetter = function (string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
  }


  /**
   * Calls a function either given by name or as a function
   */
  this.callFunction = function (fn, args = null) {

    if (typeof fn === 'function') {

      self.settings.debug && console.log(self.settings.debugPrefix + 'callFunction(): calling function, given as type "function" ...');
      return fn(args);

    } else if (typeof fn === 'string') {

      self.settings.debug && console.log(self.settings.debugPrefix + 'callFunction(): calling function, given as type "string" ...', args);
      return self.callFunctionByName(fn, window, args);

    } else {

      self.settings.debug && console.log(self.settings.debugPrefix + 'error function:', fn);
      return false;

    }

  }


  /**
   * Calls the function given by name
   */
  this.callFunctionByName = function (functionName, context = window, args = null) {

    args = Array.prototype.slice.call(arguments, 2);

    let namespaces = functionName.split(".");
    let func = namespaces.pop();

    for (let i = 0; i < namespaces.length; i++) {
      context = context[namespaces[i]];
    }

    self.settings.debug && console.log(self.settings.debugPrefix + 'callFunctionByName(): call function by name "' + functionName + '" and arguments:', args);
    return context[func].apply(context, args);

  }


  /**
   * Prüft, ob die Möglichkeit besteht eine Einwilligung zurückziehen zu können
   */
  this.revocationAvailable = function () {

    if (self.useSc27ConsentManager) {
      return true;
    } else {
      return (self.consentStorage !== null) ? true : false;
    }

  }


  /**
   * Führt die Rücknahme der Einwilligung zu angegebenem Anbieter durch
   * @param vendor
   * @param doRevokeAction
   */
  this.handleRevokeConsent = function (vendor, doRevokeAction) {

    self.settings.debug && console.log(self.settings.debugPrefix + 'handleRevokeConsent(): revoking consent for vendor "' + vendor + '"');


    /**
     * Sofern nicht explizit angegben die eigentliche Rücknahem der Einwilligung durchführen (Entfernung aus Storage)
     * (Durchführung für den Fall explizit nicht notwendig, sofern diese Funktion bereits als Callback-Funktion des Consent Managers aufgerufen wurde [Rücknahme in diesem Fall bereits erfolgt; erneute Ausführugn würde zu Endlosschleife führen])
     */

    if (doRevokeAction !== false) {
      // Einwilligung entfernen
      self.setConsentStatus(vendor, false);
    }


    /**
     * Alle eigenen JavaScript-Inhaltselemente durchlaufen und Inhalte deaktivieren/entfernen
     */

    $('.sc27-ce-externaljs[data-sc27externaljs-consenttype="' + vendor + '"]').each(function () {
      self.settings.debug && console.log(self.settings.debugPrefix + 'handleRevokeConsent(): deactivating JavaScript for vendor "' + String(vendor) + '"');
      self.deactivateJavaScript(this, vendor);
    });

  }


  /**
   * Prüft, ob der localStorage nutzbar ist
   * @returns {boolean}
   */
  this.isLocalStorageAvailable = function () {

    try {
      const key = self.settings.storageIdentifierPrefix + 'Test';
      window.localStorage.setItem(key, key);
      window.localStorage.removeItem(key);
      return true;
    } catch (e) {
      return false;
    }

  };


  /**
   * Prüft, ob der sessionStorage nutzbar ist
   * @returns {boolean}
   */
  this.isSessionStorageAvailable = function () {

    try {
      const key = self.settings.storageIdentifierPrefix + 'Test';
      window.sessionStorage.setItem(key, key);
      window.sessionStorage.removeItem(key);
      return true;
    } catch (e) {
      return false;
    }

  };


  /**
   * Fügt ein HTML-Element nach einem anderen HTML-Element ein
   *
   * @param newNode
   * @param existingNode
   */
  function insertAfter(newNode, existingNode) {
    existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  }

}

/**
 * sector27 - Popup/Overlay
 */

document.addEventListener('DOMContentLoaded', function () {

  var sc27Popup = new Sc27Popup();
  sc27Popup.init();

});


/**
 * Klasse Sc27Popup
 */
function Sc27Popup() {

  var self = this;

  this.debug = false;
  this.debugPrefix = 'Sc27Popup: ';
  this.popupElement = null;
  this.popupOpen = false;

  this.popupElementInnerSelector = '.sc27-gridelements-popup-inner';

  this.config = {
    position: 'top',
    delay: 0,
    openDuration: 500,
    closeDuration: 500,
    width: 800,
    windowPadding: {
      top: 85,
      right: 30,
      bottom: 50,
      left: 30
    },
  };


  /**
   * Initialisierung
   */
  this.init = function () {

    /**
     * Auf aktueller Seite vorhandene Videoarten ermitteln
     */

    var popupElement = $('.sc27-gridelements-popup').first();

    if (!$(popupElement).length) {
      self.debug && console.log(self.debugPrefix + 'init(): Es wurde kein Popup-Element gefunden');
      return;
    }


    /**
     * Inhalt gefunden
     */

    // HTML-Element zur weiteren Verwendung vermerken
    self.popupElement = popupElement;

    self.debug && console.log(self.debugPrefix + 'init(): Popup-Element gefunden: ', $(self.popupElement).attr('id'), $(popupElement));


    /**
     * PopUp vorbereiten: Hintergrundfoto festlegen
     */

    var popupBackgroundImage = $(self.popupElement).attr('data-sc27popup-bgimage');

    if (
      (typeof popupBackgroundImage !== 'undefined') &&
      (popupBackgroundImage !== '')
    ) {
      self.debug && console.log(self.debugPrefix + 'openPopup(): Lege Hintergrundfoto fest:', popupBackgroundImage);
      $(self.popupElement).find(self.popupElementInnerSelector).css('background-image', 'url("' + popupBackgroundImage + '")');
    }


    /**
     * PopUp öffnen, sofern konfiguriert
     */

    if ($(self.popupElement).attr('data-sc27popup-open') === "1") {
      self.debug && console.log(self.debugPrefix + 'init(): Popup-Element wird geöffnet: ', $(self.popupElement).attr('id'), $(popupElement));
      self.openPopup();
    } else {
      self.debug && console.log(self.debugPrefix + 'init(): Popup-Element wird nicht geöffnet: ', $(self.popupElement).attr('id'), $(popupElement));
    }


    /**
     * Inhaltselement nicht länger unsichtbar halten
     */

    $(self.popupElement).css('display', '');

  }


  /**
   * Erzeugt und öffnet das PopUp
   *
   * @return {boolean}
   */
  this.openPopup = function () {

    if (!$(self.popupElement).length) {
      self.debug && console.log(self.debugPrefix + 'openPopup(): Es wurde kein Popup-Element gefunden, dass angezeigt werden könnte');
      return false;
    }


    /**
     * Klick auf Close-Button verarbeiten
     */

    $(self.popupElement).find('.sc27-gridelements-popup-inner-close > a').click(function (e) {

      e.preventDefault();

      self.debug && console.log(self.debugPrefix + 'openPopup(): Schließen-Button betätigt ...');

      self.closePopup();

    });


    /**
     *  Breite festlegen
     */

    var configWidth = Math.abs(parseInt($(self.popupElement).attr('data-sc27popup-width')));

    if (configWidth > 0) {
      self.config.width = configWidth;
    }

    $(self.popupElement).find(self.popupElementInnerSelector).css('width', self.config.width + 'px');


    /**
     * X- und Y-Offset verarbeiten
     */

    var popupPosition = $(self.popupElement).attr('data-sc27popup-pos');

    var popupOffsetX = parseInt($(self.popupElement).attr('data-sc27popup-offset-x'));
    var popupOffsetY = parseInt($(self.popupElement).attr('data-sc27popup-offset-y'));

    $(self.popupElement).find(self.popupElementInnerSelector).css('margin-left', popupOffsetX + 'px');

    if (popupPosition === 'top') {
      $(self.popupElement).find(self.popupElementInnerSelector).css('top', (popupOffsetY) + 'px');
    } else if (popupPosition === 'bottom') {
      $(self.popupElement).find(self.popupElementInnerSelector).css('bottom', (popupOffsetY) + 'px');
    } else if (popupPosition === 'center') {
      $(self.popupElement).find(self.popupElementInnerSelector).css('margin-top', (-1 * popupOffsetY) + 'px');
    }


    /**
     * Position festlegen (top / bottom)
     */

    if (
      (typeof popupPosition !== 'undefined') &&
      (popupPosition !== '')
    ) {
      self.config.position = popupPosition;
      self.debug && console.log(self.debugPrefix + 'openPopup(): Lege zu verwendende Position fest:', self.config.position);
    }

    $(self.popupElement).addClass('pos-' + self.config.position);


    /**
     * PopUp als geöffnet ansehen
     */

    self.popupOpen = true;


    /**
     * PopUp als aktiv kennzeichnen
     */

    self.config.delay = Math.abs(parseInt($(self.popupElement).attr('data-sc27popup-delay')));
    self.debug && console.log(self.debugPrefix + 'openPopup(): Öffne PopUp ...');

    $(self.popupElement).find(self.popupElementInnerSelector).hide();

    $(self.popupElement).removeClass('inactive');
    $(self.popupElement).addClass('activated');


    /**
     * PopUp nach konfigurierter Zeitspannne einblenden
     */

    window.addEventListener('load', function () {

      $(self.popupElement).find(self.popupElementInnerSelector).delay(self.config.delay).fadeIn(
        {
          duration: self.config.openDuration,
          easing: 'linear',
        }
      );

    });


    /**
     * Auf Größenänderung des Fensters reagieren: Position innerhalb des Sichtbereichs belassen
     */

    // Versatz initial updaten, sofern notwendig (z.B. für kleine responsive Größen)
    self.updatePosition();

    // throttledresize
    $(window).on('debouncedresize', function (e) {
      self.updatePosition();
    });


    return true;

  }


  /**
   * Schließt das PopUp
   *
   * @return {boolean}
   */
  this.closePopup = function () {

    const animationQueueIdentifier = 'sc27popupclose';

    if (!$(self.popupElement).length) {
      self.debug && console.log(self.debugPrefix + 'closePopup(): Es wurde kein Popup-Element gefunden');
      return false;
    }


    /**
     * Animation(en) vorbereiten
     * PopUp an eigentliche Stelle im Inhaltsbereich verschieben.
     * Dazu Popup an aktueller Stelle von position "finxed" auf postion "absolute" umstellen, danach Animation einleiten
     */

      // Positionen im HTML-Dokument ermitteln
    var originalElementOffset = $(self.popupElement).offset();
    var innerElement = $(self.popupElement).find(self.popupElementInnerSelector);
    var innerElementOffset = $(self.popupElement).find(self.popupElementInnerSelector).offset();

    // Breite des Platzhalters im Inhaltsbereichs
    var animationWidth = $(self.popupElement).width() + 'px';

    // Breite des PopUps
    var animationStartWidth = $(self.popupElement).find(self.popupElementInnerSelector).outerWidth() + 'px';

    self.debug && console.log(self.debugPrefix + 'closePopup(): ', $(self.popupElement).offset());
    self.debug && console.log(self.debugPrefix + 'closePopup(): ', $(self.popupElement).find(self.popupElementInnerSelector).offset());


    // var elementOffsetX = innerElementOffset.left + parseInt($(innerElement).css('marginLeft'), 10);
    var elementOffsetX = innerElementOffset.left;

    var animationOffsetY;
    animationOffsetY = innerElementOffset.top - originalElementOffset.top;

    var animationOffsetX;

    if (elementOffsetX > originalElementOffset.left) {
      animationOffsetX = elementOffsetX - originalElementOffset.left;
    } else {
      animationOffsetX = originalElementOffset.left - elementOffsetX;
    }


    animationOffsetY = animationOffsetY + 'px';


    $(self.popupElement).find(self.popupElementInnerSelector).css('transform', 'none');
    $(self.popupElement).find(self.popupElementInnerSelector).css('position', 'absolute');

    $(self.popupElement).find(self.popupElementInnerSelector).css('width', animationStartWidth);

    $(self.popupElement).find(self.popupElementInnerSelector).css('top', animationOffsetY);
    $(self.popupElement).find(self.popupElementInnerSelector).css('left', animationOffsetX);
    $(self.popupElement).find(self.popupElementInnerSelector).css('bottom', 'unset');
    $(self.popupElement).find(self.popupElementInnerSelector).css('right', 'unset');

    $(self.popupElement).find(self.popupElementInnerSelector).css('margin-left', 0);
    $(self.popupElement).find(self.popupElementInnerSelector).css('margin-top', 0);

    $(self.popupElement).addClass('fadeout');

    self.debug && console.log(self.debugPrefix + 'closePopup(): animation start offset X:', animationOffsetX);
    self.debug && console.log(self.debugPrefix + 'closePopup(): animation start offset Y:', animationOffsetY);
    self.debug && console.log(self.debugPrefix + 'closePopup(): animation start width: ', animationStartWidth);
    self.debug && console.log(self.debugPrefix + 'closePopup(): animation end width:', animationWidth);


    /**
     * Animation(en) definieren
     */

    $(self.popupElement).find(self.popupElementInnerSelector).animate({
        top: 0,
        left: 0,
        right: 0,
        width: animationWidth,
        marginLeft: 0,
        marginTop: 0,
        opacity: 0
      },
      {
        queue: animationQueueIdentifier,
        duration: self.config.closeDuration,
        easing: 'linear',
        complete: function () {

          var wrapperElement = $(self.popupElement).find(self.popupElementInnerSelector);

          $(wrapperElement).css('position', '');
          $(wrapperElement).css('top', '');
          $(wrapperElement).css('left', '');
          $(wrapperElement).css('right', '');
          $(wrapperElement).css('bottom', '');

          $(wrapperElement).css('width', '');

          $(wrapperElement).css('opacity', '');
          $(wrapperElement).css('display', 'none');
          $(wrapperElement).css('height', '');

          $(self.popupElement).removeClass('activated');
          $(self.popupElement).removeClass('fadeout');

          self.debug && console.log(self.debugPrefix + 'closePopup(): Schließen des PopUps beendet');


          /**
           * Inhalt aufklappen, da nun an richtiger Stelle im Inhaltsbereich positioniert
           */

          $(wrapperElement).slideDown(1000, function () {
            self.debug && console.log(self.debugPrefix + 'closePopup(): Aufklappen im Inhaltsbereich beendet');
          }).show(1000, function () {
            self.debug && console.log(self.debugPrefix + 'closePopup(): Einblenden im Inhaltsbereich beendet');

            // PopUp als nicht mehr geöffnet ansehen
            self.popupOpen = false;
          });

        }
      }
    );


    // Animation(en) starten
    $(self.popupElement).find(self.popupElementInnerSelector).dequeue(animationQueueIdentifier);


    return true;

  }


  /**
   * Position des PopUps hinsichtlich eventuell konfigurierter Offsets updaten
   */
  this.updatePosition = function () {

    self.debug && console.log(self.debugPrefix + 'updatePosition(): Position des PopUp updaten ...');


    /**
     * Position nicht anpassen, sofern PopUp nicht geöffnet
     */

    if (!self.popupOpen) {

      self.debug && console.log(self.debugPrefix + 'updatePosition(): Abbruch, da PopUp nicht geöffnet ist');

      $(element).css('left');
      $(element).css('top');

      return true;
    }


    /**
     * Daten zusammenstellen
     */

    var popupOffsetX = parseInt($(self.popupElement).attr('data-sc27popup-offset-x'));
    var element = $(self.popupElement).find(self.popupElementInnerSelector);


    /**
     * Größe und Position des PopUp updaten
     */

    self.updateSize();
    self.updatePositionHorizontal();
    self.updatePositionVertical();

  }


  /**
   * Horizontale Position des PopUp updaten
   */
  this.updateSize = function () {

    /**
     * Daten zusammenstellen
     */

    var element = $(self.popupElement).find(self.popupElementInnerSelector);
    var windowWidth = $(window).width();


    /**
     *  Breite des PopUp festlegen
     */

    if (windowWidth < (self.config.width + self.config.windowPadding.left + self.config.windowPadding.right)) {
      self.debug && console.log(self.debugPrefix + 'updateSize(): Breite des Fensters kleiner als Breite des Popup. Breite wird auf konfigurierte Breite angepasst');
      $(element).css('width', (windowWidth - self.config.windowPadding.left - self.config.windowPadding.right) + 'px');
    } else {
      self.debug && console.log(self.debugPrefix + 'updateSize(): Breite des Fensters ausreichend für Breite des Popup. Breite wird auf konfigurierte Breite festgelegt');
      $(element).css('width', self.config.width + 'px');
    }

  }


  /**
   * Horizontale Position des PopUp updaten
   */
  this.updatePositionHorizontal = function () {

    self.debug && console.log(self.debugPrefix + 'updatePositionHorizontal(): Horizontale Position des PopUp updaten ...');


    /**
     * Position nicht anpassen, sofern PopUp nicht geöffnet
     */

    if (!self.popupOpen) {

      self.debug && console.log(self.debugPrefix + 'updatePositionHorizontal(): Abbruch, da PopUp nicht geöffnet ist');

      $(element).css('left');
      $(element).css('top');

      return true;
    }


    /**
     * Daten zusammenstellen
     */

    var popupOffsetX = parseInt($(self.popupElement).attr('data-sc27popup-offset-x'));
    var element = $(self.popupElement).find(self.popupElementInnerSelector);
    var windowWidth = $(window).width();
    var elementWidth = $(element).outerWidth();


    /**
     * Für kleine responsive Auflösungen keinen horizontalen Versatz umsetzen
     */

    if (
      (popupOffsetX !== 0) &&
      window.matchMedia('(max-width: 767px)').matches
    ) {
      self.debug && console.log(self.debugPrefix + 'updatePositionHorizontal(): Horizontalen Versatz für kleinere Auflösungen vollständig entfernen');
      $(element).css('margin-left', 0);
      return true;
    } else {
      self.debug && console.log(self.debugPrefix + 'updatePositionHorizontal(): Horizontalen Versatz auf konfigurierten Wert festlegen: ' + popupOffsetX);
      // popupOffsetX = Math.max(popupOffsetX, self.config.windowPadding.left);
      $(element).css('margin-left', popupOffsetX + 'px');
    }

    // Relevante Daten nach Änderungen neu ermitteln
    popupOffsetX = parseInt($(self.popupElement).attr('data-sc27popup-offset-x'));


    /**
     * PopUp und Offset zusammen breiter als Fenster, dann Offset verkleinern
     */

    if (windowWidth < (elementWidth + Math.abs(popupOffsetX) + self.config.windowPadding.left + self.config.windowPadding.right)) {

      elementMarginLeft = (windowWidth - elementWidth - self.config.windowPadding.left - self.config.windowPadding.right);

      // Vorzeichen, sprich Versatz nach links oder rechts hin, berücksichtigen
      if (popupOffsetX < 0) {
        elementMarginLeft = elementMarginLeft * -1;
      }

      elementMarginLeft = parseInt(elementMarginLeft / 2);
      $(element).css('margin-left', elementMarginLeft + 'px');


      self.debug && console.log(self.debugPrefix + 'updatePositionHorizontal(): PopUp-Fenster und Offset breiter als Fenster. Setze linken Offset = ' + elementMarginLeft);

      return;

    }


    /**
     * Horizontale Position anpassen, sofern Offset angegeben wurde
     */

    var elementMarginLeft = parseInt($(element).css('margin-left'));


    /**
     * Neuen horizontalen Offset festlegen
     */

    if (((windowWidth - elementWidth - self.config.windowPadding.left - self.config.windowPadding.right) / 2) < Math.abs(popupOffsetX)) {

      elementMarginLeft = (windowWidth - elementWidth - self.config.windowPadding.left - self.config.windowPadding.right);

      // Vorzeichen, sprich Versatz nach links oder rechts hin, berücksichtigen
      if (popupOffsetX < 0) {
        elementMarginLeft = elementMarginLeft * -1;
      }

      elementMarginLeft = parseInt(elementMarginLeft / 2);
      $(element).css('margin-left', elementMarginLeft + 'px');

      self.debug && console.log(self.debugPrefix + 'updatePositionHorizontal(): Berechneter, linker Offset des PopUp: ' + elementMarginLeft);

    } else {

      self.debug && console.log(self.debugPrefix + 'updatePositionHorizontal(): Berechnung des linken Offset des PopUp nicht notwendig');

    }


    /**
     * Debugging
     */

    self.debug && console.log(self.debugPrefix + 'updatePositionHorizontal(): Fenster-Breite = ' + windowWidth);
    self.debug && console.log(self.debugPrefix + 'updatePositionHorizontal(): PopUp-Breite = ' + parseInt($(element).outerWidth()));
    self.debug && console.log(self.debugPrefix + 'updatePositionHorizontal(): PopUp-Offset = ' + parseInt($(element).css('margin-left')));

  }


  /**
   * Vertikale Position des PopUp updaten
   */
  this.updatePositionVertical = function () {

    self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): Horizontale Position des PopUp updaten ...');


    /**
     * Zur Positionierung zu verwendendes Attribut festlegen
     */

    var popupPosition = $(self.popupElement).attr('data-sc27popup-pos');

    if (popupPosition === 'top') {
      // top
      posAttribute = 'top';
    } else if (popupPosition === 'bottom') {
      // bottom
      posAttribute = 'bottom';
    } else if (popupPosition === 'center') {
      // margin-top
      posAttribute = 'margin-top';
    }

    self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): Zur Positionierung zu verwendendes Attribut: ' + posAttribute);


    /**
     * Position nicht anpassen, sofern PopUp nicht geöffnet
     */

    if (!self.popupOpen) {

      self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): Abbruch, da PopUp nicht geöffnet ist');

      $(element).css('left');
      $(element).css('top');

      return true;
    }


    /**
     * Daten zusammenstellen
     */

    var popupOffsetY = parseInt($(self.popupElement).attr('data-sc27popup-offset-y'));
    var element = $(self.popupElement).find(self.popupElementInnerSelector);
    var windowHeight = $(window).height();
    var elementHeight = $(element).outerHeight();


    /**
     * Für kleine responsive Auflösungen keinen vertikalen Versatz umsetzen
     */

    if (
      (popupOffsetY !== 0) &&
      window.matchMedia('(max-height: 700px)').matches
    ) {
      self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): Vertikalen Versatz für kleinere Auflösungen vollständig entfernen');
      $(element).css(popupPosition, self.config.windowPadding[posAttribute] + 'px');
      return true;
    } else {
      self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): Vertikalen Versatz auf konfigurierten Wert festlegen: ' + popupOffsetY);
      popupOffsetY = Math.max(popupOffsetY, self.config.windowPadding[posAttribute]);
      $(element).css(popupPosition, popupOffsetY + 'px');
    }

    // Relevante Daten nach Änderungen neu ermitteln
    popupOffsetY = parseInt($(self.popupElement).attr('data-sc27popup-offset-y'));


    /**
     * PopUp und Offset zusammen breiter als Fenster, dann Offset verkleinern
     */

    if (windowHeight < (elementHeight + Math.abs(popupOffsetY) + (self.config.windowPadding.top + self.config.windowPadding.bottom))) {

      elementMarginTop = (windowHeight - elementHeight - self.config.windowPadding[posAttribute]);

      // Vorzeichen, sprich Versatz nach links oder rechts hin, berücksichtigen
      if (popupOffsetY < 0) {
        elementMarginTop = elementMarginTop * -1;
      }

      elementMarginTop = parseInt(elementMarginTop / 2);
      $(element).css(popupPosition, elementMarginTop + 'px');


      self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): PopUp-Fenster und Offset höher als Fenster. Setze oberen Offset = ' + elementMarginTop);

      return;

    }


    /**
     * Vertikale Position anpassen, sofern Offset angegeben wurde
     */

    var elementMarginTop = parseInt($(element).css(popupPosition));


    /**
     * Neun  vertikalen Offset festlegen
     */

    if (((windowHeight - (self.config.windowPadding.top + self.config.windowPadding.bottom) - elementHeight) / 2) < Math.abs(popupOffsetY)) {

      elementMarginTop = (windowHeight - elementHeight - self.config.windowPadding[posAttribute]);

      // Vorzeichen, sprich Versatz nach oben oder unten hin, berücksichtigen
      if (popupOffsetY < 0) {
        elementMarginTop = elementMarginTop * -1;
      }

      elementMarginTop = parseInt(elementMarginTop / 2);
      $(element).css(popupPosition, elementMarginTop + 'px');

      self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): Berechneter, oberer Offset des PopUp: ' + elementMarginTop);

    } else {

      self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): Berechnung des oberen Offset des PopUp nicht notwendig');

    }


    /**
     * Debugging
     */

    self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): Fenster-Höhe = ' + windowHeight);
    self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): PopUp-Höhe = ' + parseInt($(element).outerHeight()));
    self.debug && console.log(self.debugPrefix + 'updatePositionVertical(): PopUp-Offset = ' + parseInt($(element).css('margin-top')));

  }

}

!function(e){var t={};function n(i){if(t[i])return t[i].exports;var s=t[i]={i:i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(i,s,function(t){return e[t]}.bind(null,s));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e){e.exports=JSON.parse('{"a":"8.5.14"}')},function(e,t,n){"use strict";n.r(t);var i=n(0),s={hooks:{},extensions:[],wrappers:[],navbar:{add:!0,sticky:!0,title:"Menu",titleLink:"parent"},onClick:{close:null,preventDefault:null,setSelected:!0},slidingSubmenus:!0},a={classNames:{inset:"Inset",nolistview:"NoListview",nopanel:"NoPanel",panel:"Panel",selected:"Selected",vertical:"Vertical"},language:null,openingInterval:25,panelNodetype:["ul","ol","div"],transitionDuration:400};function o(e,t){for(var n in"object"!=r(e)&&(e={}),"object"!=r(t)&&(t={}),t)t.hasOwnProperty(n)&&(void 0===e[n]?e[n]=t[n]:"object"==r(e[n])&&o(e[n],t[n]));return e}function r(e){return{}.toString.call(e).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}function c(e,t,n){if("function"==typeof t){var i=t.call(e);if(void 0!==i)return i}return null!==t&&"function"!=typeof t&&void 0!==t||void 0===n?t:n}function m(e,t,n){var i=!1,s=function(n){void 0!==n&&n.target!==e||(i||(e.removeEventListener("transitionend",s),e.removeEventListener("webkitTransitionEnd",s),t.call(e)),i=!0)};e.addEventListener("transitionend",s),e.addEventListener("webkitTransitionEnd",s),setTimeout(s,1.1*n)}function l(){return"mm-"+d++}var d=0;function p(e){return"mm-"==e.slice(0,3)?e.slice(3):e}var f={};function u(e,t){void 0===f[t]&&(f[t]={}),o(f[t],e)}var h={Menu:"منو"},v={Menu:"Menü"},b={Menu:"Меню"};function g(e){var t=e.split("."),n=document.createElement(t.shift());return t.forEach((function(e){n.classList.add(e)})),n}function _(e,t){return Array.prototype.slice.call(e.querySelectorAll(t))}function y(e,t){var n=Array.prototype.slice.call(e.children);return t?n.filter((function(e){return e.matches(t)})):n}function L(e,t){for(var n=[],i=e.parentElement;i;)n.push(i),i=i.parentElement;return t?n.filter((function(e){return e.matches(t)})):n}function w(e){return e.filter((function(e){return!e.matches(".mm-hidden")}))}function E(e){var t=[];return w(e).forEach((function(e){t.push.apply(t,y(e,"a.mm-listitem__text"))})),t.filter((function(e){return!e.matches(".mm-btn_next")}))}function x(e,t,n){e.matches("."+t)&&(e.classList.remove(t),e.classList.add(n))}var P={};function k(e,t,n){"number"==typeof e&&(e="(min-width: "+e+"px)"),P[e]=P[e]||[],P[e].push({yes:t,no:n})}function S(e,t){for(var n=t.matches?"yes":"no",i=0;i<P[e].length;i++)P[e][i][n]()}u({Menu:"Menu"},"nl"),u(h,"fa"),u(v,"de"),u(b,"ru");var M=function(){function e(t,n,i){return this.opts=o(n,e.options),this.conf=o(i,e.configs),this._api=["bind","initPanel","initListview","openPanel","closePanel","closeAllPanels","setSelected"],this.node={},this.vars={},this.hook={},this.clck=[],this.node.menu="string"==typeof t?document.querySelector(t):t,"function"==typeof this._deprecatedWarnings&&this._deprecatedWarnings(),this._initWrappers(),this._initAddons(),this._initExtensions(),this._initHooks(),this._initAPI(),this._initMenu(),this._initPanels(),this._initOpened(),this._initAnchors(),function(){var e=function(e){var t=window.matchMedia(e);S(e,t),t.onchange=function(n){S(e,t)}};for(var t in P)e(t)}(),this}return e.prototype.openPanel=function(e,t){var n=this;if(this.trigger("openPanel:before",[e]),e&&(e.matches(".mm-panel")||(e=e.closest(".mm-panel")),e)){if("boolean"!=typeof t&&(t=!0),e.parentElement.matches(".mm-listitem_vertical")){L(e,".mm-listitem_vertical").forEach((function(e){e.classList.add("mm-listitem_opened"),y(e,".mm-panel").forEach((function(e){e.classList.remove("mm-hidden")}))}));var i=L(e,".mm-panel").filter((function(e){return!e.parentElement.matches(".mm-listitem_vertical")}));this.trigger("openPanel:start",[e]),i.length&&this.openPanel(i[0]),this.trigger("openPanel:finish",[e])}else{if(e.matches(".mm-panel_opened"))return;var s=y(this.node.pnls,".mm-panel"),a=y(this.node.pnls,".mm-panel_opened")[0];s.filter((function(t){return t!==e})).forEach((function(e){e.classList.remove("mm-panel_opened-parent")}));for(var o=e.mmParent;o;)(o=o.closest(".mm-panel"))&&(o.parentElement.matches(".mm-listitem_vertical")||o.classList.add("mm-panel_opened-parent"),o=o.mmParent);s.forEach((function(e){e.classList.remove("mm-panel_highest")})),s.filter((function(e){return e!==a})).filter((function(t){return t!==e})).forEach((function(e){e.classList.add("mm-hidden")})),e.classList.remove("mm-hidden");var r=function(){a&&a.classList.remove("mm-panel_opened"),e.classList.add("mm-panel_opened"),e.matches(".mm-panel_opened-parent")?(a&&a.classList.add("mm-panel_highest"),e.classList.remove("mm-panel_opened-parent")):(a&&a.classList.add("mm-panel_opened-parent"),e.classList.add("mm-panel_highest")),n.trigger("openPanel:start",[e])},c=function(){a&&(a.classList.remove("mm-panel_highest"),a.classList.add("mm-hidden")),e.classList.remove("mm-panel_highest"),n.trigger("openPanel:finish",[e])};t&&!e.matches(".mm-panel_noanimation")?setTimeout((function(){m(e,(function(){c()}),n.conf.transitionDuration),r()}),this.conf.openingInterval):(r(),c())}this.trigger("openPanel:after",[e])}},e.prototype.closePanel=function(e){this.trigger("closePanel:before",[e]);var t=e.parentElement;t.matches(".mm-listitem_vertical")&&(t.classList.remove("mm-listitem_opened"),e.classList.add("mm-hidden"),this.trigger("closePanel",[e])),this.trigger("closePanel:after",[e])},e.prototype.closeAllPanels=function(e){this.trigger("closeAllPanels:before"),this.node.pnls.querySelectorAll(".mm-listitem").forEach((function(e){e.classList.remove("mm-listitem_selected"),e.classList.remove("mm-listitem_opened")}));var t=y(this.node.pnls,".mm-panel"),n=e||t[0];y(this.node.pnls,".mm-panel").forEach((function(e){e!==n&&(e.classList.remove("mm-panel_opened"),e.classList.remove("mm-panel_opened-parent"),e.classList.remove("mm-panel_highest"),e.classList.add("mm-hidden"))})),this.openPanel(n,!1),this.trigger("closeAllPanels:after")},e.prototype.togglePanel=function(e){var t=e.parentElement;t.matches(".mm-listitem_vertical")&&this[t.matches(".mm-listitem_opened")?"closePanel":"openPanel"](e)},e.prototype.setSelected=function(e){this.trigger("setSelected:before",[e]),_(this.node.menu,".mm-listitem_selected").forEach((function(e){e.classList.remove("mm-listitem_selected")})),e.classList.add("mm-listitem_selected"),this.trigger("setSelected:after",[e])},e.prototype.bind=function(e,t){this.hook[e]=this.hook[e]||[],this.hook[e].push(t)},e.prototype.trigger=function(e,t){if(this.hook[e])for(var n=0,i=this.hook[e].length;n<i;n++)this.hook[e][n].apply(this,t)},e.prototype._initAPI=function(){var e=this,t=this;this.API={},this._api.forEach((function(n){e.API[n]=function(){var e=t[n].apply(t,arguments);return void 0===e?t.API:e}})),this.node.menu.mmApi=this.API},e.prototype._initHooks=function(){for(var e in this.opts.hooks)this.bind(e,this.opts.hooks[e])},e.prototype._initWrappers=function(){this.trigger("initWrappers:before");for(var t=0;t<this.opts.wrappers.length;t++){var n=e.wrappers[this.opts.wrappers[t]];"function"==typeof n&&n.call(this)}this.trigger("initWrappers:after")},e.prototype._initAddons=function(){for(var t in this.trigger("initAddons:before"),e.addons)e.addons[t].call(this);this.trigger("initAddons:after")},e.prototype._initExtensions=function(){var e=this;this.trigger("initExtensions:before"),"array"==r(this.opts.extensions)&&(this.opts.extensions={all:this.opts.extensions}),Object.keys(this.opts.extensions).forEach((function(t){var n=e.opts.extensions[t].map((function(e){return"mm-menu_"+e}));n.length&&k(t,(function(){n.forEach((function(t){e.node.menu.classList.add(t)}))}),(function(){n.forEach((function(t){e.node.menu.classList.remove(t)}))}))})),this.trigger("initExtensions:after")},e.prototype._initMenu=function(){var e=this;this.trigger("initMenu:before"),this.node.wrpr=this.node.wrpr||this.node.menu.parentElement,this.node.wrpr.classList.add("mm-wrapper"),this.node.menu.id=this.node.menu.id||l();var t=g("div.mm-panels");y(this.node.menu).forEach((function(n){e.conf.panelNodetype.indexOf(n.nodeName.toLowerCase())>-1&&t.append(n)})),this.node.menu.append(t),this.node.pnls=t,this.node.menu.classList.add("mm-menu"),this.trigger("initMenu:after")},e.prototype._initPanels=function(){var e=this;this.trigger("initPanels:before"),this.clck.push((function(t,n){if(n.inMenu){var i=t.getAttribute("href");if(i&&i.length>1&&"#"==i.slice(0,1))try{var s=_(e.node.menu,i)[0];if(s&&s.matches(".mm-panel"))return t.parentElement.matches(".mm-listitem_vertical")?e.togglePanel(s):e.openPanel(s),!0}catch(e){}}})),y(this.node.pnls).forEach((function(t){e.initPanel(t)})),this.trigger("initPanels:after")},e.prototype.initPanel=function(e){var t=this,n=this.conf.panelNodetype.join(", ");if(e.matches(n)&&(e.matches(".mm-panel")||(e=this._initPanel(e)),e)){var i=[];i.push.apply(i,y(e,"."+this.conf.classNames.panel)),y(e,".mm-listview").forEach((function(e){y(e,".mm-listitem").forEach((function(e){i.push.apply(i,y(e,n))}))})),i.forEach((function(e){t.initPanel(e)}))}},e.prototype._initPanel=function(e){var t=this;if(this.trigger("initPanel:before",[e]),x(e,this.conf.classNames.panel,"mm-panel"),x(e,this.conf.classNames.nopanel,"mm-nopanel"),x(e,this.conf.classNames.inset,"mm-listview_inset"),e.matches(".mm-listview_inset")&&e.classList.add("mm-nopanel"),e.matches(".mm-nopanel"))return null;var n=e.id||l(),i=e.matches("."+this.conf.classNames.vertical)||!this.opts.slidingSubmenus;if(e.classList.remove(this.conf.classNames.vertical),e.matches("ul, ol")){e.removeAttribute("id");var s=g("div");e.before(s),s.append(e),e=s}e.id=n,e.classList.add("mm-panel"),e.classList.add("mm-hidden");var a=[e.parentElement].filter((function(e){return e.matches("li")}))[0];if(i?a&&a.classList.add("mm-listitem_vertical"):this.node.pnls.append(e),a&&(a.mmChild=e,e.mmParent=a,a&&a.matches(".mm-listitem")&&!y(a,".mm-btn").length)){var o=y(a,".mm-listitem__text")[0];if(o){var r=g("a.mm-btn.mm-btn_next.mm-listitem__btn");r.setAttribute("href","#"+e.id),o.matches("span")?(r.classList.add("mm-listitem__text"),r.innerHTML=o.innerHTML,a.insertBefore(r,o.nextElementSibling),o.remove()):a.insertBefore(r,y(a,".mm-panel")[0])}}return this._initNavbar(e),y(e,"ul, ol").forEach((function(e){t.initListview(e)})),this.trigger("initPanel:after",[e]),e},e.prototype._initNavbar=function(e){if(this.trigger("initNavbar:before",[e]),!y(e,".mm-navbar").length){var t=null,n=null;if(e.getAttribute("data-mm-parent")?n=_(this.node.pnls,e.getAttribute("data-mm-parent"))[0]:(t=e.mmParent)&&(n=t.closest(".mm-panel")),!t||!t.matches(".mm-listitem_vertical")){var i=g("div.mm-navbar");if(this.opts.navbar.add?this.opts.navbar.sticky&&i.classList.add("mm-navbar_sticky"):i.classList.add("mm-hidden"),n){var s=g("a.mm-btn.mm-btn_prev.mm-navbar__btn");s.setAttribute("href","#"+n.id),i.append(s)}var a=null;t?a=y(t,".mm-listitem__text")[0]:n&&(a=_(n,'a[href="#'+e.id+'"]')[0]);var o=g("a.mm-navbar__title"),r=g("span");switch(o.append(r),r.innerHTML=e.getAttribute("data-mm-title")||(a?a.textContent:"")||this.i18n(this.opts.navbar.title)||this.i18n("Menu"),this.opts.navbar.titleLink){case"anchor":a&&o.setAttribute("href",a.getAttribute("href"));break;case"parent":n&&o.setAttribute("href","#"+n.id)}i.append(o),e.prepend(i),this.trigger("initNavbar:after",[e])}}},e.prototype.initListview=function(e){var t=this;this.trigger("initListview:before",[e]),x(e,this.conf.classNames.nolistview,"mm-nolistview"),e.matches(".mm-nolistview")||(e.classList.add("mm-listview"),y(e).forEach((function(e){e.classList.add("mm-listitem"),x(e,t.conf.classNames.selected,"mm-listitem_selected"),y(e,"a, span").forEach((function(e){e.matches(".mm-btn")||e.classList.add("mm-listitem__text")}))}))),this.trigger("initListview:after",[e])},e.prototype._initOpened=function(){this.trigger("initOpened:before");var e=this.node.pnls.querySelectorAll(".mm-listitem_selected"),t=null;e.forEach((function(e){t=e,e.classList.remove("mm-listitem_selected")})),t&&t.classList.add("mm-listitem_selected");var n=t?t.closest(".mm-panel"):y(this.node.pnls,".mm-panel")[0];this.openPanel(n,!1),this.trigger("initOpened:after")},e.prototype._initAnchors=function(){var e=this;this.trigger("initAnchors:before"),document.addEventListener("click",(function(t){var n=t.target.closest("a[href]");if(n){for(var i={inMenu:n.closest(".mm-menu")===e.node.menu,inListview:n.matches(".mm-listitem > a"),toExternal:n.matches('[rel="external"]')||n.matches('[target="_blank"]')},s={close:null,setSelected:null,preventDefault:"#"==n.getAttribute("href").slice(0,1)},a=0;a<e.clck.length;a++){var m=e.clck[a].call(e,n,i);if(m){if("boolean"==typeof m)return void t.preventDefault();"object"==r(m)&&(s=o(m,s))}}i.inMenu&&i.inListview&&!i.toExternal&&(c(n,e.opts.onClick.setSelected,s.setSelected)&&e.setSelected(n.parentElement),c(n,e.opts.onClick.preventDefault,s.preventDefault)&&t.preventDefault(),c(n,e.opts.onClick.close,s.close)&&e.opts.offCanvas&&"function"==typeof e.close&&e.close())}}),!0),this.trigger("initAnchors:after")},e.prototype.i18n=function(e){return function(e,t){return"string"==typeof t&&void 0!==f[t]&&f[t][e]||e}(e,this.conf.language)},e.version=i.a,e.options=s,e.configs=a,e.addons={},e.wrappers={},e.node={},e.vars={},e}(),A={blockUI:!0,moveBackground:!0};var T={clone:!1,menu:{insertMethod:"prepend",insertSelector:"body"},page:{nodetype:"div",selector:null,noSelector:[]}};function C(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function N(e,t,n){var i=t.split(".");e[t="mmEvent"+C(i[0])+C(i[1])]=e[t]||[],e[t].push(n),e.addEventListener(i[0],n)}function H(e,t){var n=t.split(".");t="mmEvent"+C(n[0])+C(n[1]),(e[t]||[]).forEach((function(t){e.removeEventListener(n[0],t)}))}M.options.offCanvas=A,M.configs.offCanvas=T;M.prototype.open=function(){var e=this;this.trigger("open:before"),this.vars.opened||(this._openSetup(),setTimeout((function(){e._openStart()}),this.conf.openingInterval),this.trigger("open:after"))},M.prototype._openSetup=function(){var e=this,t=this.opts.offCanvas;this.closeAllOthers(),M.node.page.mmStyle=M.node.page.getAttribute("style")||"",function(e,t,n){var i=t.split(".");(e[t="mmEvent"+C(i[0])+C(i[1])]||[]).forEach((function(e){e(n||{})}))}(window,"resize.page",{force:!0});var n=["mm-wrapper_opened"];t.blockUI&&n.push("mm-wrapper_blocking"),"modal"==t.blockUI&&n.push("mm-wrapper_modal"),t.moveBackground&&n.push("mm-wrapper_background"),n.forEach((function(t){e.node.wrpr.classList.add(t)})),setTimeout((function(){e.vars.opened=!0}),this.conf.openingInterval),this.node.menu.classList.add("mm-menu_opened")},M.prototype._openStart=function(){var e=this;m(M.node.page,(function(){e.trigger("open:finish")}),this.conf.transitionDuration),this.trigger("open:start"),this.node.wrpr.classList.add("mm-wrapper_opening")},M.prototype.close=function(){var e=this;this.trigger("close:before"),this.vars.opened&&(m(M.node.page,(function(){e.node.menu.classList.remove("mm-menu_opened");["mm-wrapper_opened","mm-wrapper_blocking","mm-wrapper_modal","mm-wrapper_background"].forEach((function(t){e.node.wrpr.classList.remove(t)})),M.node.page.setAttribute("style",M.node.page.mmStyle),e.vars.opened=!1,e.trigger("close:finish")}),this.conf.transitionDuration),this.trigger("close:start"),this.node.wrpr.classList.remove("mm-wrapper_opening"),this.trigger("close:after"))},M.prototype.closeAllOthers=function(){var e=this;_(document.body,".mm-menu_offcanvas").forEach((function(t){if(t!==e.node.menu){var n=t.mmApi;n&&n.close&&n.close()}}))},M.prototype.setPage=function(e){this.trigger("setPage:before",[e]);var t=this.conf.offCanvas;if(!e){var n="string"==typeof t.page.selector?_(document.body,t.page.selector):y(document.body,t.page.nodetype);if(n=n.filter((function(e){return!e.matches(".mm-menu, .mm-wrapper__blocker")})),t.page.noSelector.length&&(n=n.filter((function(e){return!e.matches(t.page.noSelector.join(", "))}))),n.length>1){var i=g("div");n[0].before(i),n.forEach((function(e){i.append(e)})),n=[i]}e=n[0]}e.classList.add("mm-page"),e.classList.add("mm-slideout"),e.id=e.id||l(),M.node.page=e,this.trigger("setPage:after",[e])};var j=function(){var e=this;H(document.body,"keydown.tabguard"),N(document.body,"keydown.tabguard",(function(t){9==t.keyCode&&e.node.wrpr.matches(".mm-wrapper_opened")&&t.preventDefault()}))},O=function(){var e=this;this.trigger("initBlocker:before");var t=this.opts.offCanvas,n=this.conf.offCanvas;if(t.blockUI){if(!M.node.blck){var i=g("div.mm-wrapper__blocker.mm-slideout");i.innerHTML="<a></a>",document.querySelector(n.menu.insertSelector).append(i),M.node.blck=i}var s=function(t){t.preventDefault(),t.stopPropagation(),e.node.wrpr.matches(".mm-wrapper_modal")||e.close()};M.node.blck.addEventListener("mousedown",s),M.node.blck.addEventListener("touchstart",s),M.node.blck.addEventListener("touchmove",s),this.trigger("initBlocker:after")}},D={aria:!0,text:!0};var I={text:{closeMenu:"Close menu",closeSubmenu:"Close submenu",openSubmenu:"Open submenu",toggleSubmenu:"Toggle submenu"}},q={"Close menu":"بستن منو","Close submenu":"بستن زیرمنو","Open submenu":"بازکردن زیرمنو","Toggle submenu":"سوییچ زیرمنو"},z={"Close menu":"Menü schließen","Close submenu":"Untermenü schließen","Open submenu":"Untermenü öffnen","Toggle submenu":"Untermenü wechseln"},B={"Close menu":"Закрыть меню","Close submenu":"Закрыть подменю","Open submenu":"Открыть подменю","Toggle submenu":"Переключить подменю"};u({"Close menu":"Menu sluiten","Close submenu":"Submenu sluiten","Open submenu":"Submenu openen","Toggle submenu":"Submenu wisselen"},"nl"),u(q,"fa"),u(z,"de"),u(B,"ru"),M.options.screenReader=D,M.configs.screenReader=I;var R;R=function(e,t,n){e[t]=n,n?e.setAttribute(t,n.toString()):e.removeAttribute(t)},M.sr_aria=function(e,t,n){R(e,"aria-"+t,n)},M.sr_role=function(e,t){R(e,"role",t)},M.sr_text=function(e){return'<span class="mm-sronly">'+e+"</span>"};var U={fix:!0};var W="ontouchstart"in window||!!navigator.msMaxTouchPoints||!1;M.options.scrollBugFix=U;var Y={height:"default"};M.options.autoHeight=Y;var X={close:!1,open:!1};M.options.backButton=X;var F={add:!1,visible:{min:1,max:3}};M.options.columns=F;var V={add:!1,addTo:"panels",count:!1};M.options.counters=V,M.configs.classNames.counters={counter:"Counter"};var Z={add:!1,addTo:"panels"};M.options.dividers=Z,M.configs.classNames.divider="Divider";var G={open:!1,node:null};var J="ontouchstart"in window||!!navigator.msMaxTouchPoints||!1,K={top:0,right:0,bottom:0,left:0},Q={start:15,swipe:15},$={x:["Right","Left"],y:["Down","Up"]},ee=0,te=1,ne=2,ie=function(e,t){return"string"==typeof e&&"%"==e.slice(-1)&&(e=t*((e=parseInt(e.slice(0,-1),10))/100)),e},se=function(){function e(e,t,n){this.surface=e,this.area=o(t,K),this.treshold=o(n,Q),this.surface.mmHasDragEvents||(this.surface.addEventListener(J?"touchstart":"mousedown",this.start.bind(this)),this.surface.addEventListener(J?"touchend":"mouseup",this.stop.bind(this)),this.surface.addEventListener(J?"touchleave":"mouseleave",this.stop.bind(this)),this.surface.addEventListener(J?"touchmove":"mousemove",this.move.bind(this))),this.surface.mmHasDragEvents=!0}return e.prototype.start=function(e){this.currentPosition={x:e.touches?e.touches[0].pageX:e.pageX||0,y:e.touches?e.touches[0].pageY:e.pageY||0};var t=this.surface.clientWidth,n=this.surface.clientHeight,i=ie(this.area.top,n);if(!("number"==typeof i&&this.currentPosition.y<i)){var s=ie(this.area.right,t);if(!("number"==typeof s&&(s=t-s,this.currentPosition.x>s))){var a=ie(this.area.bottom,n);if(!("number"==typeof a&&(a=n-a,this.currentPosition.y>a))){var o=ie(this.area.left,t);"number"==typeof o&&this.currentPosition.x<o||(this.startPosition={x:this.currentPosition.x,y:this.currentPosition.y},this.state=te)}}}},e.prototype.stop=function(e){if(this.state==ne){var t=this._dragDirection(),n=this._eventDetail(t);if(this._dispatchEvents("drag*End",n),Math.abs(this.movement[this.axis])>this.treshold.swipe){var i=this._swipeDirection();n.direction=i,this._dispatchEvents("swipe*",n)}}this.state=ee},e.prototype.move=function(e){switch(this.state){case te:case ne:var t={x:e.changedTouches?e.touches[0].pageX:e.pageX||0,y:e.changedTouches?e.touches[0].pageY:e.pageY||0};this.movement={x:t.x-this.currentPosition.x,y:t.y-this.currentPosition.y},this.distance={x:t.x-this.startPosition.x,y:t.y-this.startPosition.y},this.currentPosition={x:t.x,y:t.y},this.axis=Math.abs(this.distance.x)>Math.abs(this.distance.y)?"x":"y";var n=this._dragDirection(),i=this._eventDetail(n);this.state==te&&Math.abs(this.distance[this.axis])>this.treshold.start&&(this._dispatchEvents("drag*Start",i),this.state=ne),this.state==ne&&this._dispatchEvents("drag*Move",i)}},e.prototype._eventDetail=function(e){var t=this.distance.x,n=this.distance.y;return"x"==this.axis&&(t-=t>0?this.treshold.start:0-this.treshold.start),"y"==this.axis&&(n-=n>0?this.treshold.start:0-this.treshold.start),{axis:this.axis,direction:e,movementX:this.movement.x,movementY:this.movement.y,distanceX:t,distanceY:n}},e.prototype._dispatchEvents=function(e,t){var n=new CustomEvent(e.replace("*",""),{detail:t});this.surface.dispatchEvent(n);var i=new CustomEvent(e.replace("*",this.axis.toUpperCase()),{detail:t});this.surface.dispatchEvent(i);var s=new CustomEvent(e.replace("*",t.direction),{detail:t});this.surface.dispatchEvent(s)},e.prototype._dragDirection=function(){return $[this.axis][this.distance[this.axis]>0?0:1]},e.prototype._swipeDirection=function(){return $[this.axis][this.movement[this.axis]>0?0:1]},e}(),ae=null,oe=null,re=0,ce=function(e){var t=this,n={},i=!1,s=function(){var e=Object.keys(t.opts.extensions);e.length?(k(e.join(", "),(function(){}),(function(){n=me(n,[],t.node.menu)})),e.forEach((function(e){k(e,(function(){n=me(n,t.opts.extensions[e],t.node.menu)}),(function(){}))}))):n=me(n,[],t.node.menu)};oe&&(H(oe,"dragStart"),H(oe,"dragMove"),H(oe,"dragEnd")),ae=new se(oe=e),s(),s=function(){},oe&&(N(oe,"dragStart",(function(e){e.detail.direction==n.direction&&(i=!0,t.node.wrpr.classList.add("mm-wrapper_dragging"),t._openSetup(),t.trigger("open:start"),re=t.node.menu["x"==n.axis?"clientWidth":"clientHeight"])})),N(oe,"dragMove",(function(e){if(e.detail.axis==n.axis&&i){var t=e.detail["distance"+n.axis.toUpperCase()];switch(n.position){case"right":case"bottom":t=Math.min(Math.max(t,-re),0);break;default:t=Math.max(Math.min(t,re),0)}if("front"==n.zposition)switch(n.position){case"right":case"bottom":t+=re;break;default:t-=re}n.slideOutNodes.forEach((function(e){e.style.transform="translate"+n.axis.toUpperCase()+"("+t+"px)"}))}})),N(oe,"dragEnd",(function(e){if(e.detail.axis==n.axis&&i){i=!1,t.node.wrpr.classList.remove("mm-wrapper_dragging"),n.slideOutNodes.forEach((function(e){e.style.transform=""}));var s=Math.abs(e.detail["distance"+n.axis.toUpperCase()])>=.75*re;if(!s){var a=e.detail["movement"+n.axis.toUpperCase()];switch(n.position){case"right":case"bottom":s=a<=0;break;default:s=a>=0}}s?t._openStart():t.close()}})))},me=function(e,t,n){switch(e.position="left",e.zposition="back",["right","top","bottom"].forEach((function(n){t.indexOf("position-"+n)>-1&&(e.position=n)})),["front","top","bottom"].forEach((function(n){t.indexOf("position-"+n)>-1&&(e.zposition="front")})),ae.area={top:"bottom"==e.position?"75%":0,right:"left"==e.position?"75%":0,bottom:"top"==e.position?"75%":0,left:"right"==e.position?"75%":0},e.position){case"top":case"bottom":e.axis="y";break;default:e.axis="x"}switch(e.position){case"top":e.direction="Down";break;case"right":e.direction="Left";break;case"bottom":e.direction="Up";break;default:e.direction="Right"}switch(e.zposition){case"front":e.slideOutNodes=[n];break;default:e.slideOutNodes=_(document.body,".mm-slideout")}return e};M.options.drag=G;var le={drop:!1,fitViewport:!0,event:"click",position:{},tip:!0};var de={offset:{button:{x:-5,y:5},viewport:{x:20,y:20}},height:{max:880},width:{max:440}};M.options.dropdown=le,M.configs.dropdown=de;var pe={insertMethod:"append",insertSelector:"body"};M.configs.fixedElements=pe,M.configs.classNames.fixedElements={fixed:"Fixed"};var fe={use:!1,top:[],bottom:[],position:"left",type:"default"};M.options.iconbar=fe;var ue={add:!1,blockPanel:!0,hideDivider:!1,hideNavbar:!0,visible:3};M.options.iconPanels=ue;var he={enable:!1,enhance:!1};M.options.keyboardNavigation=he;var ve=function(e){var t=this;H(document.body,"keydown.tabguard"),H(document.body,"focusin.tabguard"),N(document.body,"focusin.tabguard",(function(e){if(t.node.wrpr.matches(".mm-wrapper_opened")){var n=e.target;if(n.matches(".mm-tabend")){var i=void 0;n.parentElement.matches(".mm-menu")&&M.node.blck&&(i=M.node.blck),n.parentElement.matches(".mm-wrapper__blocker")&&(i=_(document.body,".mm-menu_offcanvas.mm-menu_opened")[0]),i||(i=n.parentElement),i&&y(i,".mm-tabstart")[0].focus()}}})),H(document.body,"keydown.navigate"),N(document.body,"keydown.navigate",(function(t){var n=t.target,i=n.closest(".mm-menu");if(i){i.mmApi;if(!n.matches("input, textarea"))switch(t.keyCode){case 13:(n.matches(".mm-toggle")||n.matches(".mm-check"))&&n.dispatchEvent(new Event("click"));break;case 32:case 37:case 38:case 39:case 40:t.preventDefault()}if(e)if(n.matches("input"))switch(t.keyCode){case 27:n.value=""}else{var s=i.mmApi;switch(t.keyCode){case 8:var a=_(i,".mm-panel_opened")[0].mmParent;a&&s.openPanel(a.closest(".mm-panel"));break;case 27:i.matches(".mm-menu_offcanvas")&&s.close()}}}}))},be={load:!1};M.options.lazySubmenus=be;var ge=[];var _e={breadcrumbs:{separator:"/",removeFirst:!1}};function ye(){var e=this,t=this.opts.navbars;if(void 0!==t){t instanceof Array||(t=[t]);var n={};t.length&&(t.forEach((function(t){if(!(t=function(e){return"boolean"==typeof e&&e&&(e={}),"object"!=typeof e&&(e={}),void 0===e.content&&(e.content=["prev","title"]),e.content instanceof Array||(e.content=[e.content]),void 0===e.use&&(e.use=!0),"boolean"==typeof e.use&&e.use&&(e.use=!0),e}(t)).use)return!1;var i=g("div.mm-navbar"),s=t.position;"bottom"!==s&&(s="top"),n[s]||(n[s]=g("div.mm-navbars_"+s)),n[s].append(i);for(var a=0,o=t.content.length;a<o;a++){var r,c=t.content[a];if("string"==typeof c)if("function"==typeof(r=ye.navbarContents[c]))r.call(e,i);else{var m=g("span");m.innerHTML=c;var l=y(m);1==l.length&&(m=l[0]),i.append(m)}else i.append(c)}"string"==typeof t.type&&("function"==typeof(r=ye.navbarTypes[t.type])&&r.call(e,i));"boolean"!=typeof t.use&&k(t.use,(function(){i.classList.remove("mm-hidden"),M.sr_aria(i,"hidden",!1)}),(function(){i.classList.add("mm-hidden"),M.sr_aria(i,"hidden",!0)}))})),this.bind("initMenu:after",(function(){for(var t in n)e.node.menu["bottom"==t?"append":"prepend"](n[t])})))}}M.options.navbars=ge,M.configs.navbars=_e,M.configs.classNames.navbars={panelPrev:"Prev",panelTitle:"Title"},ye.navbarContents={breadcrumbs:function(e){var t=this,n=g("div.mm-navbar__breadcrumbs");e.append(n),this.bind("initNavbar:after",(function(e){if(!e.querySelector(".mm-navbar__breadcrumbs")){y(e,".mm-navbar")[0].classList.add("mm-hidden");for(var n=[],i=g("span.mm-navbar__breadcrumbs"),s=e,a=!0;s;){if(!(s=s.closest(".mm-panel")).parentElement.matches(".mm-listitem_vertical")){var o=_(s,".mm-navbar__title span")[0];if(o){var r=o.textContent;r.length&&n.unshift(a?"<span>"+r+"</span>":'<a href="#'+s.id+'">'+r+"</a>")}a=!1}s=s.mmParent}t.conf.navbars.breadcrumbs.removeFirst&&n.shift(),i.innerHTML=n.join('<span class="mm-separator">'+t.conf.navbars.breadcrumbs.separator+"</span>"),y(e,".mm-navbar")[0].append(i)}})),this.bind("openPanel:start",(function(e){var t=e.querySelector(".mm-navbar__breadcrumbs");n.innerHTML=t?t.innerHTML:""})),this.bind("initNavbar:after:sr-aria",(function(e){_(e,".mm-breadcrumbs a").forEach((function(e){M.sr_aria(e,"owns",e.getAttribute("href").slice(1))}))}))},close:function(e){var t=this,n=g("a.mm-btn.mm-btn_close.mm-navbar__btn");e.append(n),this.bind("setPage:after",(function(e){n.setAttribute("href","#"+e.id)})),this.bind("setPage:after:sr-text",(function(){n.innerHTML=M.sr_text(t.i18n(t.conf.screenReader.text.closeMenu)),M.sr_aria(n,"owns",n.getAttribute("href").slice(1))}))},prev:function(e){var t,n,i,s=this,a=g("a.mm-btn.mm-btn_prev.mm-navbar__btn");e.append(a),this.bind("initNavbar:after",(function(e){y(e,".mm-navbar")[0].classList.add("mm-hidden")})),this.bind("openPanel:start",(function(e){e.parentElement.matches(".mm-listitem_vertical")||((t=e.querySelector("."+s.conf.classNames.navbars.panelPrev))||(t=e.querySelector(".mm-navbar__btn.mm-btn_prev")),n=t?t.getAttribute("href"):"",i=t?t.innerHTML:"",n?a.setAttribute("href",n):a.removeAttribute("href"),a.classList[n||i?"remove":"add"]("mm-hidden"),a.innerHTML=i)})),this.bind("initNavbar:after:sr-aria",(function(e){M.sr_aria(e.querySelector(".mm-navbar"),"hidden",!0)})),this.bind("openPanel:start:sr-aria",(function(e){M.sr_aria(a,"hidden",a.matches(".mm-hidden")),M.sr_aria(a,"owns",(a.getAttribute("href")||"").slice(1))}))},searchfield:function(e){"object"!=r(this.opts.searchfield)&&(this.opts.searchfield={});var t=g("div.mm-navbar__searchfield");e.append(t),this.opts.searchfield.add=!0,this.opts.searchfield.addTo=[t]},title:function(e){var t,n,i,s,a=this,o=g("a.mm-navbar__title"),r=g("span");o.append(r),e.append(o),this.bind("openPanel:start",(function(e){e.parentElement.matches(".mm-listitem_vertical")||((i=e.querySelector("."+a.conf.classNames.navbars.panelTitle))||(i=e.querySelector(".mm-navbar__title span")),(t=i&&i.closest("a")?i.closest("a").getAttribute("href"):"")?o.setAttribute("href",t):o.removeAttribute("href"),n=i?i.innerHTML:"",r.innerHTML=n)})),this.bind("openPanel:start:sr-aria",(function(e){if(a.opts.screenReader.text){if(!s)y(a.node.menu,".mm-navbars_top, .mm-navbars_bottom").forEach((function(e){var t=e.querySelector(".mm-btn_prev");t&&(s=t)}));if(s){var t=!0;"parent"==a.opts.navbar.titleLink&&(t=!s.matches(".mm-hidden")),M.sr_aria(o,"hidden",t)}}}))}},ye.navbarTypes={tabs:function(e){var t=this;e.classList.add("mm-navbar_tabs"),e.parentElement.classList.add("mm-navbars_has-tabs");var n=y(e,"a");e.addEventListener("click",(function(e){var n=e.target;if(n.matches("a"))if(n.matches(".mm-navbar__tab_selected"))e.stopImmediatePropagation();else try{t.openPanel(t.node.menu.querySelector(n.getAttribute("href")),!1),e.stopImmediatePropagation()}catch(e){}})),this.bind("openPanel:start",(function e(t){n.forEach((function(e){e.classList.remove("mm-navbar__tab_selected")}));var i=n.filter((function(e){return e.matches('[href="#'+t.id+'"]')}))[0];if(i)i.classList.add("mm-navbar__tab_selected");else{var s=t.mmParent;s&&e.call(this,s.closest(".mm-panel"))}}))}};var Le={scroll:!1,update:!1};var we={scrollOffset:0,updateOffset:50};M.options.pageScroll=Le,M.configs.pageScroll=we;var Ee={add:!1,addTo:"panels",cancel:!1,noResults:"No results found.",placeholder:"Search",panel:{add:!1,dividers:!0,fx:"none",id:null,splash:null,title:"Search"},search:!0,showTextItems:!1,showSubPanels:!0};var xe={clear:!1,form:!1,input:!1,submit:!1},Pe={Search:"جستجو","No results found.":"نتیجه‌ای یافت نشد.",cancel:"انصراف"},ke={Search:"Suche","No results found.":"Keine Ergebnisse gefunden.",cancel:"beenden"},Se={Search:"Найти","No results found.":"Ничего не найдено.",cancel:"отменить"},Me=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var i=Array(e),s=0;for(t=0;t<n;t++)for(var a=arguments[t],o=0,r=a.length;o<r;o++,s++)i[s]=a[o];return i};u({Search:"Zoeken","No results found.":"Geen resultaten gevonden.",cancel:"annuleren"},"nl"),u(Pe,"fa"),u(ke,"de"),u(Se,"ru"),M.options.searchfield=Ee,M.configs.searchfield=xe;var Ae=function(){var e=this.opts.searchfield,t=(this.conf.searchfield,y(this.node.pnls,".mm-panel_search")[0]);if(t)return t;t=g("div.mm-panel.mm-panel_search.mm-hidden"),e.panel.id&&(t.id=e.panel.id),e.panel.title&&t.setAttribute("data-mm-title",e.panel.title);var n=g("ul");switch(t.append(n),this.node.pnls.append(t),this.initListview(n),this._initNavbar(t),e.panel.fx){case!1:break;case"none":t.classList.add("mm-panel_noanimation");break;default:t.classList.add("mm-panel_fx-"+e.panel.fx)}if(e.panel.splash){var i=g("div.mm-panel__content");i.innerHTML=e.panel.splash,t.append(i)}return t.classList.add("mm-panel"),t.classList.add("mm-hidden"),this.node.pnls.append(t),t},Te=function(e){var t=this.opts.searchfield,n=this.conf.searchfield;if(e.parentElement.matches(".mm-listitem_vertical"))return null;if(a=_(e,".mm-searchfield")[0])return a;function i(e,t){if(t)for(var n in t)e.setAttribute(n,t[n])}var s,a=g((n.form?"form":"div")+".mm-searchfield"),o=g("div.mm-searchfield__input"),r=g("input");(r.type="text",r.autocomplete="off",r.placeholder=this.i18n(t.placeholder),o.append(r),a.append(o),e.prepend(a),i(r,n.input),n.clear)&&((s=g("a.mm-btn.mm-btn_close.mm-searchfield__btn")).setAttribute("href","#"),o.append(s));(i(a,n.form),n.form&&n.submit&&!n.clear)&&((s=g("a.mm-btn.mm-btn_next.mm-searchfield__btn")).setAttribute("href","#"),o.append(s));t.cancel&&((s=g("a.mm-searchfield__cancel")).setAttribute("href","#"),s.textContent=this.i18n("cancel"),a.append(s));return a},Ce=function(e){var t=this,n=this.opts.searchfield,i=(this.conf.searchfield,{});e.closest(".mm-panel_search")?(i.panels=_(this.node.pnls,".mm-panel"),i.noresults=[e.closest(".mm-panel")]):e.closest(".mm-panel")?(i.panels=[e.closest(".mm-panel")],i.noresults=i.panels):(i.panels=_(this.node.pnls,".mm-panel"),i.noresults=[this.node.menu]),i.panels=i.panels.filter((function(e){return!e.matches(".mm-panel_search")})),i.panels=i.panels.filter((function(e){return!e.parentElement.matches(".mm-listitem_vertical")})),i.listitems=[],i.dividers=[],i.panels.forEach((function(e){var t,n;(t=i.listitems).push.apply(t,_(e,".mm-listitem")),(n=i.dividers).push.apply(n,_(e,".mm-divider"))}));var s=y(this.node.pnls,".mm-panel_search")[0],a=_(e,"input")[0],o=_(e,".mm-searchfield__cancel")[0];a.mmSearchfield=i,n.panel.add&&n.panel.splash&&(H(a,"focus.splash"),N(a,"focus.splash",(function(e){t.openPanel(s)}))),n.cancel&&(H(a,"focus.cancel"),N(a,"focus.cancel",(function(e){o.classList.add("mm-searchfield__cancel-active")})),H(o,"click.splash"),N(o,"click.splash",(function(e){if(e.preventDefault(),o.classList.remove("mm-searchfield__cancel-active"),s.matches(".mm-panel_opened")){var n=y(t.node.pnls,".mm-panel_opened-parent");n.length&&t.openPanel(n[n.length-1])}}))),n.panel.add&&"panel"==n.addTo&&this.bind("openPanel:finish",(function(e){e===s&&a.focus()})),H(a,"input.search"),N(a,"input.search",(function(e){switch(e.keyCode){case 9:case 16:case 17:case 18:case 37:case 38:case 39:case 40:break;default:t.search(a)}})),this.search(a)},Ne=function(e){if(e){var t=this.opts.searchfield;this.conf.searchfield;if(e.closest(".mm-panel")||(e=y(this.node.pnls,".mm-panel")[0]),!y(e,".mm-panel__noresultsmsg").length){var n=g("div.mm-panel__noresultsmsg.mm-hidden");n.innerHTML=this.i18n(t.noResults),e.append(n)}}};M.prototype.search=function(e,t){var n,i=this,s=this.opts.searchfield;this.conf.searchfield;t=(t=t||""+e.value).toLowerCase().trim();var a=e.mmSearchfield,o=_(e.closest(".mm-searchfield"),".mm-btn"),r=y(this.node.pnls,".mm-panel_search")[0],c=a.panels,m=a.noresults,l=a.listitems,d=a.dividers;if(l.forEach((function(e){e.classList.remove("mm-listitem_nosubitems"),e.classList.remove("mm-listitem_onlysubitems"),e.classList.remove("mm-hidden")})),r&&(y(r,".mm-listview")[0].innerHTML=""),c.forEach((function(e){e.scrollTop=0})),t.length){d.forEach((function(e){e.classList.add("mm-hidden")})),l.forEach((function(e){var n,i=y(e,".mm-listitem__text")[0],a=!1;i&&(n=i,Array.prototype.slice.call(n.childNodes).filter((function(e){return 3==e.nodeType})).map((function(e){return e.textContent})).join(" ")).toLowerCase().indexOf(t)>-1&&(i.matches(".mm-listitem__btn")?s.showSubPanels&&(a=!0):(i.matches("a")||s.showTextItems)&&(a=!0)),a||e.classList.add("mm-hidden")}));var p=l.filter((function(e){return!e.matches(".mm-hidden")})).length;if(s.panel.add){var f=[];c.forEach((function(e){var t=w(_(e,".mm-listitem"));if((t=t.filter((function(e){return!e.matches(".mm-hidden")}))).length){if(s.panel.dividers){var n=g("li.mm-divider"),i=_(e,".mm-navbar__title")[0];i&&(n.innerHTML=i.innerHTML,f.push(n))}t.forEach((function(e){f.push(e.cloneNode(!0))}))}})),f.forEach((function(e){e.querySelectorAll(".mm-toggle, .mm-check").forEach((function(e){e.remove()}))})),(n=y(r,".mm-listview")[0]).append.apply(n,f),this.openPanel(r)}else s.showSubPanels&&c.forEach((function(e){w(_(e,".mm-listitem")).forEach((function(e){var t=e.mmChild;t&&_(t,".mm-listitem").forEach((function(e){e.classList.remove("mm-hidden")}))}))})),Me(c).reverse().forEach((function(t,n){var s=t.mmParent;s&&(w(_(t,".mm-listitem")).length?(s.matches(".mm-hidden")&&s.classList.remove("mm-hidden"),s.classList.add("mm-listitem_onlysubitems")):e.closest(".mm-panel")||((t.matches(".mm-panel_opened")||t.matches(".mm-panel_opened-parent"))&&setTimeout((function(){i.openPanel(s.closest(".mm-panel"))}),(n+1)*(1.5*i.conf.openingInterval)),s.classList.add("mm-listitem_nosubitems")))})),c.forEach((function(e){w(_(e,".mm-listitem")).forEach((function(e){L(e,".mm-listitem_vertical").forEach((function(e){e.matches(".mm-hidden")&&(e.classList.remove("mm-hidden"),e.classList.add("mm-listitem_onlysubitems"))}))}))})),c.forEach((function(e){w(_(e,".mm-listitem")).forEach((function(e){var t=function(e,t){for(var n=[],i=e.previousElementSibling;i;)t&&!i.matches(t)||n.push(i),i=i.previousElementSibling;return n}(e,".mm-divider")[0];t&&t.classList.remove("mm-hidden")}))}));o.forEach((function(e){return e.classList.remove("mm-hidden")})),m.forEach((function(e){_(e,".mm-panel__noresultsmsg").forEach((function(e){return e.classList[p?"add":"remove"]("mm-hidden")}))})),s.panel.add&&(s.panel.splash&&_(r,".mm-panel__content").forEach((function(e){return e.classList.add("mm-hidden")})),l.forEach((function(e){return e.classList.remove("mm-hidden")})),d.forEach((function(e){return e.classList.remove("mm-hidden")})))}else if(l.forEach((function(e){return e.classList.remove("mm-hidden")})),d.forEach((function(e){return e.classList.remove("mm-hidden")})),o.forEach((function(e){return e.classList.add("mm-hidden")})),m.forEach((function(e){_(e,".mm-panel__noresultsmsg").forEach((function(e){return e.classList.add("mm-hidden")}))})),s.panel.add)if(s.panel.splash)_(r,".mm-panel__content").forEach((function(e){return e.classList.remove("mm-hidden")}));else if(!e.closest(".mm-panel_search")){var u=y(this.node.pnls,".mm-panel_opened-parent");this.openPanel(u.slice(-1)[0])}this.trigger("updateListview")};var He={add:!1,addTo:"panels"};M.options.sectionIndexer=He;var je={current:!0,hover:!1,parent:!1};M.options.setSelected=je;var Oe={collapsed:{use:!1,blockMenu:!0,hideDivider:!1,hideNavbar:!0},expanded:{use:!1,initial:"open"}};M.options.sidebar=Oe;M.configs.classNames.toggles={toggle:"Toggle",check:"Check"};
/*!
 * mmenu.js
 * mmenujs.com
 *
 * Copyright (c) Fred Heusschen
 * frebsite.nl
 *
 * License: CC-BY-NC-4.0
 * http://creativecommons.org/licenses/by-nc/4.0/
 */
M.addons={offcanvas:function(){var e=this;if(this.opts.offCanvas){var t=function(e){return"object"!=typeof e&&(e={}),e}(this.opts.offCanvas);this.opts.offCanvas=o(t,M.options.offCanvas);var n=this.conf.offCanvas;this._api.push("open","close","setPage"),this.vars.opened=!1,this.bind("initMenu:before",(function(){n.clone&&(e.node.menu=e.node.menu.cloneNode(!0),e.node.menu.id&&(e.node.menu.id="mm-"+e.node.menu.id),_(e.node.menu,"[id]").forEach((function(e){e.id="mm-"+e.id}))),e.node.wrpr=document.body,document.querySelector(n.menu.insertSelector)[n.menu.insertMethod](e.node.menu)})),this.bind("initMenu:after",(function(){O.call(e),e.setPage(M.node.page),j.call(e),e.node.menu.classList.add("mm-menu_offcanvas");var t=window.location.hash;if(t){var n=p(e.node.menu.id);n&&n==t.slice(1)&&setTimeout((function(){e.open()}),1e3)}})),this.bind("setPage:after",(function(e){M.node.blck&&y(M.node.blck,"a").forEach((function(t){t.setAttribute("href","#"+e.id)}))})),this.bind("open:start:sr-aria",(function(){M.sr_aria(e.node.menu,"hidden",!1)})),this.bind("close:finish:sr-aria",(function(){M.sr_aria(e.node.menu,"hidden",!0)})),this.bind("initMenu:after:sr-aria",(function(){M.sr_aria(e.node.menu,"hidden",!0)})),this.bind("initBlocker:after:sr-text",(function(){y(M.node.blck,"a").forEach((function(t){t.innerHTML=M.sr_text(e.i18n(e.conf.screenReader.text.closeMenu))}))})),this.clck.push((function(t,n){var i=p(e.node.menu.id);if(i&&t.matches('[href="#'+i+'"]')){if(n.inMenu)return e.open(),!0;var s=t.closest(".mm-menu");if(s){var a=s.mmApi;if(a&&a.close)return a.close(),m(s,(function(){e.open()}),e.conf.transitionDuration),!0}return e.open(),!0}if((i=M.node.page.id)&&t.matches('[href="#'+i+'"]'))return e.close(),!0}))}},screenReader:function(){var e=this,t=function(e){return"boolean"==typeof e&&(e={aria:e,text:e}),"object"!=typeof e&&(e={}),e}(this.opts.screenReader);this.opts.screenReader=o(t,M.options.screenReader);var n=this.conf.screenReader;t.aria&&(this.bind("initAddons:after",(function(){e.bind("initMenu:after",(function(){this.trigger("initMenu:after:sr-aria",[].slice.call(arguments))})),e.bind("initNavbar:after",(function(){this.trigger("initNavbar:after:sr-aria",[].slice.call(arguments))})),e.bind("openPanel:start",(function(){this.trigger("openPanel:start:sr-aria",[].slice.call(arguments))})),e.bind("close:start",(function(){this.trigger("close:start:sr-aria",[].slice.call(arguments))})),e.bind("close:finish",(function(){this.trigger("close:finish:sr-aria",[].slice.call(arguments))})),e.bind("open:start",(function(){this.trigger("open:start:sr-aria",[].slice.call(arguments))})),e.bind("initOpened:after",(function(){this.trigger("initOpened:after:sr-aria",[].slice.call(arguments))}))})),this.bind("updateListview",(function(){e.node.pnls.querySelectorAll(".mm-listitem").forEach((function(e){M.sr_aria(e,"hidden",e.matches(".mm-hidden"))}))})),this.bind("openPanel:start",(function(t){var n=_(e.node.pnls,".mm-panel").filter((function(e){return e!==t})).filter((function(e){return!e.parentElement.matches(".mm-panel")})),i=[t];_(t,".mm-listitem_vertical .mm-listitem_opened").forEach((function(e){i.push.apply(i,y(e,".mm-panel"))})),n.forEach((function(e){M.sr_aria(e,"hidden",!0)})),i.forEach((function(e){M.sr_aria(e,"hidden",!1)}))})),this.bind("closePanel",(function(e){M.sr_aria(e,"hidden",!0)})),this.bind("initPanel:after",(function(e){_(e,".mm-btn").forEach((function(e){M.sr_aria(e,"haspopup",!0);var t=e.getAttribute("href");t&&M.sr_aria(e,"owns",t.replace("#",""))}))})),this.bind("initNavbar:after",(function(e){var t=y(e,".mm-navbar")[0],n=t.matches(".mm-hidden");M.sr_aria(t,"hidden",n)})),t.text&&"parent"==this.opts.navbar.titleLink&&this.bind("initNavbar:after",(function(e){var t=y(e,".mm-navbar")[0],n=!!t.querySelector(".mm-btn_prev");M.sr_aria(_(t,".mm-navbar__title")[0],"hidden",n)}))),t.text&&(this.bind("initAddons:after",(function(){e.bind("setPage:after",(function(){this.trigger("setPage:after:sr-text",[].slice.call(arguments))})),e.bind("initBlocker:after",(function(){this.trigger("initBlocker:after:sr-text",[].slice.call(arguments))}))})),this.bind("initNavbar:after",(function(t){var i=y(t,".mm-navbar")[0];if(i){var s=y(i,".mm-btn_prev")[0];s&&(s.innerHTML=M.sr_text(e.i18n(n.text.closeSubmenu)))}})),this.bind("initListview:after",(function(t){var i=t.closest(".mm-panel").mmParent;if(i){var s=y(i,".mm-btn_next")[0];if(s){var a=e.i18n(n.text[s.parentElement.matches(".mm-listitem_vertical")?"toggleSubmenu":"openSubmenu"]);s.innerHTML+=M.sr_text(a)}}})))},autoHeight:function(){var e=this,t=function(e){return"boolean"==typeof e&&e&&(e={height:"auto"}),"string"==typeof e&&(e={height:e}),"object"!=typeof e&&(e={}),e}(this.opts.autoHeight);if(this.opts.autoHeight=o(t,M.options.autoHeight),"auto"==t.height||"highest"==t.height){var n,i=(n=function(e){return e.parentElement.matches(".mm-listitem_vertical")&&(e=L(e,".mm-panel").filter((function(e){return!e.parentElement.matches(".mm-listitem_vertical")}))[0]),e},function(){if(!e.opts.offCanvas||e.vars.opened){var i,s,a=0,o=e.node.menu.offsetHeight-e.node.pnls.offsetHeight;e.node.menu.classList.add("mm-menu_autoheight-measuring"),"auto"==t.height?((s=y(e.node.pnls,".mm-panel_opened")[0])&&(s=n(s)),s||(s=y(e.node.pnls,".mm-panel")[0]),a=s.scrollHeight):"highest"==t.height&&(i=0,y(e.node.pnls,".mm-panel").forEach((function(e){e=n(e),i=Math.max(i,e.scrollHeight)})),a=i),e.node.menu.style.height=a+o+"px",e.node.menu.classList.remove("mm-menu_autoheight-measuring")}});this.bind("initMenu:after",(function(){e.node.menu.classList.add("mm-menu_autoheight")})),this.opts.offCanvas&&this.bind("open:start",i),"highest"==t.height&&this.bind("initPanels:after",i),"auto"==t.height&&(this.bind("updateListview",i),this.bind("openPanel:start",i))}},backButton:function(){var e=this;if(this.opts.offCanvas){var t=function(e){return"boolean"==typeof e&&(e={close:e}),"object"!=typeof e&&(e={}),e}(this.opts.backButton);this.opts.backButton=o(t,M.options.backButton);var n="#"+this.node.menu.id;if(t.close){var i=[],s=function(){i=[n],y(e.node.pnls,".mm-panel_opened, .mm-panel_opened-parent").forEach((function(e){i.push("#"+e.id)}))};this.bind("open:finish",(function(){history.pushState(null,document.title,n)})),this.bind("open:finish",s),this.bind("openPanel:finish",s),this.bind("close:finish",(function(){i=[],history.back(),history.pushState(null,document.title,location.pathname+location.search)})),window.addEventListener("popstate",(function(t){if(e.vars.opened&&i.length){var s=(i=i.slice(0,-1))[i.length-1];s==n?e.close():(e.openPanel(e.node.menu.querySelector(s)),history.pushState(null,document.title,n))}}))}t.open&&window.addEventListener("popstate",(function(t){e.vars.opened||location.hash!=n||e.open()}))}},columns:function(){var e=this,t=function(e){return"boolean"==typeof e&&(e={add:e}),"number"==typeof e&&(e={add:!0,visible:e}),"object"!=typeof e&&(e={}),"number"==typeof e.visible&&(e.visible={min:e.visible,max:e.visible}),e}(this.opts.columns);if(this.opts.columns=o(t,M.options.columns),t.add){t.visible.min=Math.max(1,Math.min(6,t.visible.min)),t.visible.max=Math.max(t.visible.min,Math.min(6,t.visible.max));for(var n=[],i=[],s=["mm-panel_opened","mm-panel_opened-parent","mm-panel_highest"],a=0;a<=t.visible.max;a++)n.push("mm-menu_columns-"+a),i.push("mm-panel_columns-"+a);s.push.apply(s,i),this.bind("openPanel:before",(function(t){var n;if(t&&(n=t.mmParent),n&&!n.classList.contains("mm-listitem_vertical")&&(n=n.closest(".mm-panel"))){var i=n.className;if(i.length&&(i=i.split("mm-panel_columns-")[1]))for(var a=parseInt(i.split(" ")[0],10)+1;a>0;){if(!(t=y(e.node.pnls,".mm-panel_columns-"+a)[0])){a=-1;break}a++,t.classList.add("mm-hidden"),s.forEach((function(e){t.classList.remove(e)}))}}})),this.bind("openPanel:start",(function(s){if(s){var a=s.mmParent;if(a&&a.classList.contains("mm-listitem_vertical"))return}var o=y(e.node.pnls,".mm-panel_opened-parent").length;s.matches(".mm-panel_opened-parent")||o++,o=Math.min(t.visible.max,Math.max(t.visible.min,o)),n.forEach((function(t){e.node.menu.classList.remove(t)})),e.node.menu.classList.add("mm-menu_columns-"+o);var r=[];y(e.node.pnls,".mm-panel").forEach((function(e){i.forEach((function(t){e.classList.remove(t)})),e.matches(".mm-panel_opened-parent")&&r.push(e)})),r.push(s),r.slice(-t.visible.max).forEach((function(e,t){e.classList.add("mm-panel_columns-"+t)}))}))}},counters:function(){var e=this,t=function(e){return"boolean"==typeof e&&(e={add:e,addTo:"panels",count:e}),"object"!=typeof e&&(e={}),"panels"==e.addTo&&(e.addTo=".mm-listview"),e}(this.opts.counters);if(this.opts.counters=o(t,M.options.counters),this.bind("initListview:after",(function(t){var n=e.conf.classNames.counters.counter;_(t,"."+n).forEach((function(e){x(e,n,"mm-counter")}))})),t.add&&this.bind("initListview:after",(function(e){if(e.matches(t.addTo)){var n=e.closest(".mm-panel").mmParent;if(n&&!_(n,".mm-counter").length){var i=y(n,".mm-btn")[0];i&&i.prepend(g("span.mm-counter"))}}})),t.count){var n=function(t){(t?[t.closest(".mm-panel")]:y(e.node.pnls,".mm-panel")).forEach((function(e){var t=e.mmParent;if(t){var n=_(t,".mm-counter")[0];if(n){var i=[];y(e,".mm-listview").forEach((function(e){i.push.apply(i,y(e))})),n.innerHTML=w(i).length.toString()}}}))};this.bind("initListview:after",n),this.bind("updateListview",n)}},dividers:function(){var e=this,t=function(e){return"boolean"==typeof e&&(e={add:e}),"object"!=typeof e&&(e={}),"panels"==e.addTo&&(e.addTo=".mm-listview"),e}(this.opts.dividers);this.opts.dividers=o(t,M.options.dividers),this.bind("initListview:after",(function(t){y(t).forEach((function(t){x(t,e.conf.classNames.divider,"mm-divider"),t.matches(".mm-divider")&&t.classList.remove("mm-listitem")}))})),t.add&&this.bind("initListview:after",(function(e){if(e.matches(t.addTo)){_(e,".mm-divider").forEach((function(e){e.remove()}));var n="";w(y(e)).forEach((function(t){var i=y(t,".mm-listitem__text")[0].textContent.trim().toLowerCase()[0];if(i.length&&i!=n){n=i;var s=g("li.mm-divider");s.textContent=i,e.insertBefore(s,t)}}))}}))},drag:function(){var e=this;if(this.opts.offCanvas){var t=function(e){return"boolean"==typeof e&&(e={open:e}),"object"!=typeof e&&(e={}),e}(this.opts.drag);this.opts.drag=o(t,M.options.drag),t.open&&this.bind("setPage:after",(function(n){ce.call(e,t.node||n)}))}},dropdown:function(){var e=this;if(this.opts.offCanvas){var t=function(e){return"boolean"==typeof e&&e&&(e={drop:e}),"object"!=typeof e&&(e={}),"string"==typeof e.position&&(e.position={of:e.position}),e}(this.opts.dropdown);this.opts.dropdown=o(t,M.options.dropdown);var n=this.conf.dropdown;if(t.drop){var i;this.bind("initMenu:after",(function(){if(e.node.menu.classList.add("mm-menu_dropdown"),"string"!=typeof t.position.of){var n=p(e.node.menu.id);n&&(t.position.of='[href="#'+n+'"]')}if("string"==typeof t.position.of){i=_(document.body,t.position.of)[0];var s=t.event.split(" ");1==s.length&&(s[1]=s[0]),"hover"==s[0]&&i.addEventListener("mouseenter",(function(){e.open()}),{passive:!0}),"hover"==s[1]&&e.node.menu.addEventListener("mouseleave",(function(){e.close()}),{passive:!0})}})),this.bind("open:start",(function(){e.node.menu.mmStyle=e.node.menu.getAttribute("style"),e.node.wrpr.classList.add("mm-wrapper_dropdown")})),this.bind("close:finish",(function(){e.node.menu.setAttribute("style",e.node.menu.mmStyle),e.node.wrpr.classList.remove("mm-wrapper_dropdown")}));var s=function(e,s){var a,o,r,c=s[0],m=s[1],l="x"==e?"offsetWidth":"offsetHeight",d="x"==e?"left":"top",p="x"==e?"right":"bottom",f="x"==e?"width":"height",u="x"==e?"innerWidth":"innerHeight",h="x"==e?"maxWidth":"maxHeight",v=null,b=(a=d,i.getBoundingClientRect()[a]+document.body["left"===a?"scrollLeft":"scrollTop"]),g=b+i[l],_=window[u],y=n.offset.button[e]+n.offset.viewport[e];if(t.position[e])switch(t.position[e]){case"left":case"bottom":v="after";break;case"right":case"top":v="before"}return null===v&&(v=b+(g-b)/2<_/2?"after":"before"),"after"==v?(r=_-((o="x"==e?b:g)+y),c[d]=o+n.offset.button[e]+"px",c[p]="auto",t.tip&&m.push("mm-menu_tip-"+("x"==e?"left":"top"))):(r=(o="x"==e?g:b)-y,c[p]="calc( 100% - "+(o-n.offset.button[e])+"px )",c[d]="auto",t.tip&&m.push("mm-menu_tip-"+("x"==e?"right":"bottom"))),t.fitViewport&&(c[h]=Math.min(n[f].max,r)+"px"),[c,m]};this.bind("open:start",a),window.addEventListener("resize",(function(t){a.call(e)}),{passive:!0}),this.opts.offCanvas.blockUI||window.addEventListener("scroll",(function(t){a.call(e)}),{passive:!0})}}function a(){var e=this;if(this.vars.opened){this.node.menu.setAttribute("style",this.node.menu.mmStyle);var n=[{},[]];for(var i in n=s.call(this,"y",n),(n=s.call(this,"x",n))[0])this.node.menu.style[i]=n[0][i];if(t.tip){["mm-menu_tip-left","mm-menu_tip-right","mm-menu_tip-top","mm-menu_tip-bottom"].forEach((function(t){e.node.menu.classList.remove(t)})),n[1].forEach((function(t){e.node.menu.classList.add(t)}))}}}},fixedElements:function(){var e=this;if(this.opts.offCanvas){var t,n,i=this.conf.fixedElements;this.bind("setPage:after",(function(s){t=e.conf.classNames.fixedElements.fixed,n=_(document,i.insertSelector)[0],_(s,"."+t).forEach((function(e){x(e,t,"mm-slideout"),n[i.insertMethod](e)}))}))}},iconbar:function(){var e,t=this,n=function(e){return"array"==r(e)&&(e={use:!0,top:e}),"object"!=r(e)&&(e={}),void 0===e.use&&(e.use=!0),"boolean"==typeof e.use&&e.use&&(e.use=!0),e}(this.opts.iconbar);if((this.opts.iconbar=o(n,M.options.iconbar),n.use)&&(["top","bottom"].forEach((function(t,i){var s=n[t];"array"!=r(s)&&(s=[s]);for(var a=g("div.mm-iconbar__"+t),o=0,c=s.length;o<c;o++)"string"==typeof s[o]?a.innerHTML+=s[o]:a.append(s[o]);a.children.length&&(e||(e=g("div.mm-iconbar")),e.append(a))})),e)){this.bind("initMenu:after",(function(){t.node.menu.prepend(e)}));var i="mm-menu_iconbar-"+n.position,s=function(){t.node.menu.classList.add(i),M.sr_aria(e,"hidden",!1)};if("boolean"==typeof n.use?this.bind("initMenu:after",s):k(n.use,s,(function(){t.node.menu.classList.remove(i),M.sr_aria(e,"hidden",!0)})),"tabs"==n.type){e.classList.add("mm-iconbar_tabs"),e.addEventListener("click",(function(e){var n=e.target;if(n.matches("a"))if(n.matches(".mm-iconbar__tab_selected"))e.stopImmediatePropagation();else try{var i=t.node.menu.querySelector(n.getAttribute("href"))[0];i&&i.matches(".mm-panel")&&(e.preventDefault(),e.stopImmediatePropagation(),t.openPanel(i,!1))}catch(e){}}));var a=function(t){_(e,"a").forEach((function(e){e.classList.remove("mm-iconbar__tab_selected")}));var n=_(e,'[href="#'+t.id+'"]')[0];if(n)n.classList.add("mm-iconbar__tab_selected");else{var i=t.mmParent;i&&a(i.closest(".mm-panel"))}};this.bind("openPanel:start",a)}}},iconPanels:function(){var e=this,t=function(e){return"boolean"==typeof e&&(e={add:e}),"number"!=typeof e&&"string"!=typeof e||(e={add:!0,visible:e}),"object"!=typeof e&&(e={}),e}(this.opts.iconPanels);this.opts.iconPanels=o(t,M.options.iconPanels);var n=!1;if("first"==t.visible&&(n=!0,t.visible=1),t.visible=Math.min(3,Math.max(1,t.visible)),t.visible++,t.add){this.bind("initMenu:after",(function(){var n=["mm-menu_iconpanel"];t.hideNavbar&&n.push("mm-menu_hidenavbar"),t.hideDivider&&n.push("mm-menu_hidedivider"),n.forEach((function(t){e.node.menu.classList.add(t)}))}));var i=[];if(!n)for(var s=0;s<=t.visible;s++)i.push("mm-panel_iconpanel-"+s);this.bind("openPanel:start",(function(s){var a=y(e.node.pnls,".mm-panel");if(!(s=s||a[0]).parentElement.matches(".mm-listitem_vertical"))if(n)a.forEach((function(e,t){e.classList[0==t?"add":"remove"]("mm-panel_iconpanel-first")}));else{a.forEach((function(e){i.forEach((function(t){e.classList.remove(t)}))})),a=a.filter((function(e){return e.matches(".mm-panel_opened-parent")}));var o=!1;a.forEach((function(e){s===e&&(o=!0)})),o||a.push(s),a.forEach((function(e){e.classList.remove("mm-hidden")})),(a=a.slice(-t.visible)).forEach((function(e,t){e.classList.add("mm-panel_iconpanel-"+t)}))}})),this.bind("initPanel:after",(function(e){if(t.blockPanel&&!e.parentElement.matches(".mm-listitem_vertical")&&!y(e,".mm-panel__blocker")[0]){var n=g("a.mm-panel__blocker");n.setAttribute("href","#"+e.closest(".mm-panel").id),e.prepend(n)}}))}},keyboardNavigation:function(){var e=this;if(!W){var t=function(e){return"boolean"!=typeof e&&"string"!=typeof e||(e={enable:e}),"object"!=typeof e&&(e={}),e}(this.opts.keyboardNavigation);if(this.opts.keyboardNavigation=o(t,M.options.keyboardNavigation),t.enable){var n=g("button.mm-tabstart.mm-sronly"),i=g("button.mm-tabend.mm-sronly"),s=g("button.mm-tabend.mm-sronly");this.bind("initMenu:after",(function(){t.enhance&&e.node.menu.classList.add("mm-menu_keyboardfocus"),ve.call(e,t.enhance)})),this.bind("initOpened:before",(function(){e.node.menu.prepend(n),e.node.menu.append(i),y(e.node.menu,".mm-navbars-top, .mm-navbars-bottom").forEach((function(e){e.querySelectorAll(".mm-navbar__title").forEach((function(e){e.setAttribute("tabindex","-1")}))}))})),this.bind("initBlocker:after",(function(){M.node.blck.append(s),y(M.node.blck,"a")[0].classList.add("mm-tabstart")}));var a="input, select, textarea, button, label, a[href]",r=function(n){n=n||y(e.node.pnls,".mm-panel_opened")[0];var i=null,s=document.activeElement.closest(".mm-navbar");if(!s||s.closest(".mm-menu")!=e.node.menu){if("default"==t.enable&&((i=_(n,".mm-listview a[href]:not(.mm-hidden)")[0])||(i=_(n,a+":not(.mm-hidden)")[0]),!i)){var o=[];y(e.node.menu,".mm-navbars_top, .mm-navbars_bottom").forEach((function(e){o.push.apply(o,_(e,a+":not(.mm-hidden)"))})),i=o[0]}i||(i=y(e.node.menu,".mm-tabstart")[0]),i&&i.focus()}};this.bind("open:finish",r),this.bind("openPanel:finish",r),this.bind("initOpened:after:sr-aria",(function(){[e.node.menu,M.node.blck].forEach((function(e){y(e,".mm-tabstart, .mm-tabend").forEach((function(e){M.sr_aria(e,"hidden",!0),M.sr_role(e,"presentation")}))}))}))}}},lazySubmenus:function(){var e=this,t=function(e){return"boolean"==typeof e&&(e={load:e}),"object"!=typeof e&&(e={}),e}(this.opts.lazySubmenus);this.opts.lazySubmenus=o(t,M.options.lazySubmenus),t.load&&(this.bind("initPanels:before",(function(){var t=[];_(e.node.pnls,"li").forEach((function(n){t.push.apply(t,y(n,e.conf.panelNodetype.join(", ")))})),t.filter((function(e){return!e.matches(".mm-listview_inset")})).filter((function(e){return!e.matches(".mm-nolistview")})).filter((function(e){return!e.matches(".mm-nopanel")})).forEach((function(e){["mm-panel_lazysubmenu","mm-nolistview","mm-nopanel"].forEach((function(t){e.classList.add(t)}))}))})),this.bind("initPanels:before",(function(){var t=[];_(e.node.pnls,"."+e.conf.classNames.selected).forEach((function(e){t.push.apply(t,L(e,".mm-panel_lazysubmenu"))})),t.length&&t.forEach((function(e){console.log(e);["mm-panel_lazysubmenu","mm-nolistview","mm-nopanel"].forEach((function(t){e.classList.remove(t)}))}))})),this.bind("openPanel:before",(function(t){var n=_(t,".mm-panel_lazysubmenu").filter((function(e){return!e.matches(".mm-panel_lazysubmenu .mm-panel_lazysubmenu")}));t.matches(".mm-panel_lazysubmenu")&&n.unshift(t),n.forEach((function(t){["mm-panel_lazysubmenu","mm-nolistview","mm-nopanel"].forEach((function(e){t.classList.remove(e)})),e.initPanel(t)}))})))},navbars:ye,pageScroll:function(){var e=this,t=function(e){return"boolean"==typeof e&&(e={scroll:e}),"object"!=typeof e&&(e={}),e}(this.opts.pageScroll);this.opts.pageScroll=o(t,M.options.pageScroll);var n,i=this.conf.pageScroll;function s(){n&&window.scrollTo({top:n.getBoundingClientRect().top+document.scrollingElement.scrollTop-i.scrollOffset,behavior:"smooth"}),n=null}function a(e){try{return"#"!=e&&"#"==e.slice(0,1)?M.node.page.querySelector(e):null}catch(e){return null}}if(t.scroll&&this.bind("close:finish",(function(){s()})),this.opts.offCanvas&&t.scroll&&this.clck.push((function(t,i){if(n=null,i.inMenu){var o=t.getAttribute("href");if(n=a(o))return e.node.menu.matches(".mm-menu_sidebar-expanded")&&e.node.wrpr.matches(".mm-wrapper_sidebar-expanded")?void s():{close:!0}}})),t.update){var r=[];this.bind("initListview:after",(function(e){E(y(e,".mm-listitem")).forEach((function(e){var t=a(e.getAttribute("href"));t&&r.unshift(t)}))}));var c=-1;window.addEventListener("scroll",(function(t){for(var n=window.scrollY,s=0;s<r.length;s++)if(r[s].offsetTop<n+i.updateOffset){if(c!==s){c=s;var a=E(_(y(e.node.pnls,".mm-panel_opened")[0],".mm-listitem"));(a=a.filter((function(e){return e.matches('[href="#'+r[s].id+'"]')}))).length&&e.setSelected(a[0].parentElement)}break}}))}},searchfield:function(){var e=this,t=function(e){return"boolean"==typeof e&&(e={add:e}),"object"!=typeof e&&(e={}),"boolean"==typeof e.panel&&(e.panel={add:e.panel}),"object"!=typeof e.panel&&(e.panel={}),"panel"==e.addTo&&(e.panel.add=!0),e.panel.add&&(e.showSubPanels=!1,e.panel.splash&&(e.cancel=!0)),e}(this.opts.searchfield);this.opts.searchfield=o(t,M.options.searchfield);this.conf.searchfield;t.add&&(this.bind("close:start",(function(){_(e.node.menu,".mm-searchfield").forEach((function(e){e.blur()}))})),this.bind("initPanel:after",(function(n){var i=null;t.panel.add&&(i=Ae.call(e));var s=null;switch(t.addTo){case"panels":s=[n];break;case"panel":s=[i];break;default:"string"==typeof t.addTo?s=_(e.node.menu,t.addTo):"array"==r(t.addTo)&&(s=t.addTo)}s.forEach((function(n){n=Te.call(e,n),t.search&&n&&Ce.call(e,n)})),t.noResults&&Ne.call(e,t.panel.add?i:n)})),this.clck.push((function(t,n){if(n.inMenu&&t.matches(".mm-searchfield__btn")){if(t.matches(".mm-btn_close")){var i=_(s=t.closest(".mm-searchfield"),"input")[0];return i.value="",e.search(i),!0}var s;if(t.matches(".mm-btn_next"))return(s=t.closest("form"))&&s.submit(),!0}})))},sectionIndexer:function(){var e=this,t=function(e){return"boolean"==typeof e&&(e={add:e}),"object"!=typeof e&&(e={}),e}(this.opts.sectionIndexer);this.opts.sectionIndexer=o(t,M.options.sectionIndexer),t.add&&this.bind("initPanels:after",(function(){if(!e.node.indx){var t="";"abcdefghijklmnopqrstuvwxyz".split("").forEach((function(e){t+='<a href="#">'+e+"</a>"}));var n=g("div.mm-sectionindexer");n.innerHTML=t,e.node.pnls.prepend(n),e.node.indx=n,e.node.indx.addEventListener("click",(function(e){e.target.matches("a")&&e.preventDefault()}));var i=function(t){if(t.target.matches("a")){var n=t.target.textContent,i=y(e.node.pnls,".mm-panel_opened")[0],s=-1,a=i.scrollTop;i.scrollTop=0,_(i,".mm-divider").filter((function(e){return!e.matches(".mm-hidden")})).forEach((function(e){s<0&&n==e.textContent.trim().slice(0,1).toLowerCase()&&(s=e.offsetTop)})),i.scrollTop=s>-1?s:a}};W?(e.node.indx.addEventListener("touchstart",i),e.node.indx.addEventListener("touchmove",i)):e.node.indx.addEventListener("mouseover",i)}e.bind("openPanel:start",(function(t){var n=_(t,".mm-divider").filter((function(e){return!e.matches(".mm-hidden")})).length;e.node.indx.classList[n?"add":"remove"]("mm-sectionindexer_active")}))}))},setSelected:function(){var e=this,t=function(e){return"boolean"==typeof e&&(e={hover:e,parent:e}),"object"!=typeof e&&(e={}),e}(this.opts.setSelected);if(this.opts.setSelected=o(t,M.options.setSelected),"detect"==t.current){var n=function(t){t=t.split("?")[0].split("#")[0];var i=e.node.menu.querySelector('a[href="'+t+'"], a[href="'+t+'/"]');if(i)e.setSelected(i.parentElement);else{var s=t.split("/").slice(0,-1);s.length&&n(s.join("/"))}};this.bind("initMenu:after",(function(){n.call(e,window.location.href)}))}else t.current||this.bind("initListview:after",(function(e){y(e,".mm-listitem_selected").forEach((function(e){e.classList.remove("mm-listitem_selected")}))}));t.hover&&this.bind("initMenu:after",(function(){e.node.menu.classList.add("mm-menu_selected-hover")})),t.parent&&(this.bind("openPanel:finish",(function(t){_(e.node.pnls,".mm-listitem_selected-parent").forEach((function(e){e.classList.remove("mm-listitem_selected-parent")}));for(var n=t.mmParent;n;)n.matches(".mm-listitem_vertical")||n.classList.add("mm-listitem_selected-parent"),n=(n=n.closest(".mm-panel")).mmParent})),this.bind("initMenu:after",(function(){e.node.menu.classList.add("mm-menu_selected-parent")})))},sidebar:function(){var e=this;if(this.opts.offCanvas){var t=function(e){return("string"==typeof e||"boolean"==typeof e&&e||"number"==typeof e)&&(e={expanded:e}),"object"!=typeof e&&(e={}),"boolean"==typeof e.collapsed&&e.collapsed&&(e.collapsed={use:!0}),"string"!=typeof e.collapsed&&"number"!=typeof e.collapsed||(e.collapsed={use:e.collapsed}),"object"!=typeof e.collapsed&&(e.collapsed={}),"boolean"==typeof e.expanded&&e.expanded&&(e.expanded={use:!0}),"string"!=typeof e.expanded&&"number"!=typeof e.expanded||(e.expanded={use:e.expanded}),"object"!=typeof e.expanded&&(e.expanded={}),e}(this.opts.sidebar);if(this.opts.sidebar=o(t,M.options.sidebar),t.collapsed.use){this.bind("initMenu:after",(function(){if(e.node.menu.classList.add("mm-menu_sidebar-collapsed"),t.collapsed.blockMenu&&e.opts.offCanvas&&!y(e.node.menu,".mm-menu__blocker")[0]){var n=g("a.mm-menu__blocker");n.setAttribute("href","#"+e.node.menu.id),e.node.menu.prepend(n)}t.collapsed.hideNavbar&&e.node.menu.classList.add("mm-menu_hidenavbar"),t.collapsed.hideDivider&&e.node.menu.classList.add("mm-menu_hidedivider")}));var n=function(){e.node.wrpr.classList.add("mm-wrapper_sidebar-collapsed")},i=function(){e.node.wrpr.classList.remove("mm-wrapper_sidebar-collapsed")};"boolean"==typeof t.collapsed.use?this.bind("initMenu:after",n):k(t.collapsed.use,n,i)}if(t.expanded.use){this.bind("initMenu:after",(function(){e.node.menu.classList.add("mm-menu_sidebar-expanded")}));n=function(){e.node.wrpr.classList.add("mm-wrapper_sidebar-expanded"),e.node.wrpr.matches(".mm-wrapper_sidebar-closed")||e.open()},i=function(){e.node.wrpr.classList.remove("mm-wrapper_sidebar-expanded"),e.close()};"boolean"==typeof t.expanded.use?this.bind("initMenu:after",n):k(t.expanded.use,n,i),this.bind("close:start",(function(){e.node.wrpr.matches(".mm-wrapper_sidebar-expanded")&&(e.node.wrpr.classList.add("mm-wrapper_sidebar-closed"),"remember"==t.expanded.initial&&window.localStorage.setItem("mmenuExpandedState","closed"))})),this.bind("open:start",(function(){e.node.wrpr.matches(".mm-wrapper_sidebar-expanded")&&(e.node.wrpr.classList.remove("mm-wrapper_sidebar-closed"),"remember"==t.expanded.initial&&window.localStorage.setItem("mmenuExpandedState","open"))}));var s=t.expanded.initial;if("remember"==t.expanded.initial){var a=window.localStorage.getItem("mmenuExpandedState");switch(a){case"open":case"closed":s=a}}"closed"==s&&this.bind("initMenu:after",(function(){e.node.wrpr.classList.add("mm-wrapper_sidebar-closed")})),this.clck.push((function(n,i){if(i.inMenu&&i.inListview&&e.node.wrpr.matches(".mm-wrapper_sidebar-expanded"))return{close:"closed"==t.expanded.initial}}))}}},toggles:function(){var e=this;this.bind("initPanel:after",(function(t){_(t,"input").forEach((function(t){x(t,e.conf.classNames.toggles.toggle,"mm-toggle"),x(t,e.conf.classNames.toggles.check,"mm-check")}))}))}},M.wrappers={bootstrap:function(){var e=this;if(this.node.menu.matches(".navbar-collapse")){this.conf.offCanvas&&(this.conf.offCanvas.clone=!1);var t=g("nav"),n=g("div");t.append(n),y(this.node.menu).forEach((function(t){switch(!0){case t.matches(".navbar-nav"):n.append(function(e){var t=g("ul");return _(e,".nav-item").forEach((function(e){var n=g("li");if(e.matches(".active")&&n.classList.add("Selected"),!e.matches(".nav-link")){var i=y(e,".dropdown-menu")[0];i&&n.append(o(i)),e=y(e,".nav-link")[0]}n.prepend(a(e)),t.append(n)})),t}(t));break;case t.matches(".dropdown-menu"):n.append(o(t));break;case t.matches(".form-inline"):e.conf.searchfield.form={action:t.getAttribute("action")||null,method:t.getAttribute("method")||null},e.conf.searchfield.input={name:t.querySelector("input").getAttribute("name")||null},e.conf.searchfield.clear=!1,e.conf.searchfield.submit=!0;break;default:n.append(t.cloneNode(!0))}})),this.bind("initMenu:before",(function(){document.body.prepend(t),e.node.menu=t}));var i=this.node.menu.parentElement;if(i){var s=i.querySelector(".navbar-toggler");s&&(s.removeAttribute("data-target"),s.removeAttribute("aria-controls"),s.outerHTML=s.outerHTML,(s=i.querySelector(".navbar-toggler")).addEventListener("click",(function(t){t.preventDefault(),t.stopImmediatePropagation(),e[e.vars.opened?"close":"open"]()})))}}function a(e){for(var t=g(e.matches("a")?"a":"span"),n=["href","title","target"],i=0;i<n.length;i++)void 0!==e.getAttribute(n[i])&&t.setAttribute(n[i],e.getAttribute(n[i]));return t.innerHTML=e.innerHTML,_(t,".sr-only").forEach((function(e){e.remove()})),t}function o(e){var t=g("ul");return y(e).forEach((function(e){var n=g("li");e.matches(".dropdown-divider")?n.classList.add("Divider"):e.matches(".dropdown-item")&&n.append(a(e)),t.append(n)})),t}}};var De;t.default=M;window&&(window.Mmenu=M),(De=window.jQuery||window.Zepto||null)&&(De.fn.mmenu=function(e,t){var n=De();return this.each((function(i,s){if(!s.mmApi){var a=new M(s,e,t),o=De(a.node.menu);o.data("mmenu",a.API),n=n.add(o)}})),n})}]);
/**
 * Erzeugt dynamisch den Button fuer die Inhaltsnavigation (fuer kleinere Ansichten)
 */
function customMmenuMakeContentButton(cssClass, contentText, labelText) {

  /**
   * HTML-Source fuer Button erzeugen
   */

  if (cssClass == '') {
    cssClass = 'mmenu-content-toggle';
  }

  var buttonHtml = '<button class="navbar-toggler ' + cssClass + '" type="button"';

  if (labelText != '') {
    buttonHtml = buttonHtml + ' aria-label="' + labelText + '"';
  }

  buttonHtml = buttonHtml + '>';

  buttonHtml = buttonHtml + '<span class="navbar-toggler-icon">';
  buttonHtml = buttonHtml + '<i class="fa fa-file-text-o"></i>';

  /*
  buttonHtml = buttonHtml + '<svg id="f18152c3-47d8-47e7-9d98-0e5fab08ac61" data-name="Symbol" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 288">\n' +
    '  <path id="a5a09e57-71f6-40b4-9382-986e52971b51" data-name="Blatt" d="M160.03,0,160,.03V0H0V288H240V79.97Zm59.716,88H152V20.254ZM220,268H20V20H132v88h88Z"/>\n' +
    '  <g id="f020586a-8b91-491c-8439-c6ece3bbdced" data-name="Linien">\n' +
    '    <rect id="aa686646-b3f9-4f0f-a74b-409fd5ebc363" data-name="Linie3" x="60" y="208" width="120" height="20"/>\n' +
    '    <rect id="aaa05570-5250-4ce7-83df-91e971df1462" data-name="Linie2" x="60" y="168" width="120" height="20"/>\n' +
    '    <rect id="e76fa5af-1031-460f-b994-6c73d448e933" data-name="Linie1" x="60" y="128" width="120" height="20"/>\n' +
    '  </g>\n' +
    '</svg>';
  */

  buttonHtml = buttonHtml + '</span>';

  buttonHtml = buttonHtml + '<span class="desc">' + contentText + '</span>';
  buttonHtml = buttonHtml + '</button>';


  /**
   * Eventuell gleichnamigen Button entfernen
   */

  $('header .navbar-toggles .' + cssClass).remove();
  $('header .navbar-toggles').addClass('multiple');


  /**
   * Neuen Button hinzufuegen
   */

  $(buttonHtml).appendTo('header .navbar-toggles');

}

$(document).ready(function() {

	/**
	 * mmenu-Konfiguration
	 */

	var mmenuMainOptions = {
		extensions: ['multiline', 'theme-custom', 'effect-menu-slide', 'pagedim-white', 'shadow-page', 'shadow-menu', 'fx-menu-slide', 'border-full'],
    slidingSubmenus: true,
    navbar: {
			title:			pageConfig.mmenu.main.title
		},
		navbars: [
			{
				position:	'top',
				content:	[
					document.getElementById('mmenu-main-content-topline')
				]
			},
			{
				position:	'top',
				content:	[
					document.getElementById('mmenu-main-content-search')
				],
				height:		2
			},
			{
				position:	'top'
			},
			{
				position:	'bottom',
				content:	[
					document.getElementById('mmenu-main-content-footermenu')
				]
			}
		],
		searchfield: {
			resultsPanel:	true,
			clear:			true,
			placeholder:	'Suche ...',
			search:			false
		},
		setSelected: {
			parent:			true
		},
		columns:			false,
		iconPanels:			false,
		hooks:				{

			'open:start':	function() {

				var pageUid = parseInt(pageConfig.page.uid);

				if ( typeof mmenuMainApi == 'object' ) {
					var menuElement = $("#mmenu-main .uid-" + pageUid + '.active');
					var menuPanelId = $(menuElement).closest('.mm-panel').attr('id');

					// Bezeichnung von Panels der Art "mm-1", "mm-2", etc.
					mmenuMainApi.openPanel(document.querySelector( '#' + menuPanelId));
				}

			}

		}
	};

	var mmenuMainConfiguration = {
		classnames: {
			fixedelements: {
				fixed: 'mmenu-fixed'
			},
			navbars: {
				paneltitle  : 'titel',
				panelnext   : 'vor',
				panelprev   : 'zurück'
			}
		},
		language:	pageConfig.language.isoCode
	};


	/**
	 * mmenu erzeugen
	 */

	const mmenuMain = new Mmenu("#mmenu-main", mmenuMainOptions, mmenuMainConfiguration);
	const mmenuMainApi = mmenuMain.API;


	// mmenuMainApi.open();


	/*
	$(document).on('keypress', '#mmenu-content-search button[type=search]', function(e) {

		if (e.keyCode == 13) {

			e.preventDefault();

			var searchTermLength = $('#mmenu-content-search input[type=search]').val();
			searchTermLength = $.trim(searchTermLength).length;

			if ( searchTermLength !== 0 ) {
				$('#mmenu-content-search form').submit();
			}

		}

	});


	$(document).on('click touch', '#mmenu-content-search .sb-icon-search', function(e) {

		e.preventDefault();

		var searchTermLength = $('#mmenu-content-search input[type=search]').val();
		searchTermLength = $.trim(searchTermLength).length;

		if ( searchTermLength !== 0 ) {
			$('#mmenu-content-search form').submit();
		}

	});
	*/


	/**
	 * Schliessenfunktion
	 */

	$('.mmenu-close').click(function(e) {

		e.preventDefault();

		// Menue schliessen
		mmenuMainApi.close();

	});


	/**
	 * Auf- und Zuklappfunktion (Ueber Hamburgermenue)
	 */

	$('.mmenu-main-toggle').click(function(e) {

		e.preventDefault();

		if ( $('#mmenu-main').hasClass('mm-menu_opened') ) {
			mmenuMainApi.close();
		}
		else {
			mmenuMainApi.open();
		}

	});


	/**
	 * Auf Groessenaenderungen reagieren
	 */

	$(window).on('debouncedresize throttledresize', function(e) {

		/**
		 * mmenu in groesseren Aufloesungen automatisch schliessen
		 */

		if ( $(window).innerWidth() >= pageConfig.responsiveGridFloatBreakpoint ) {

			if ( $('#mmenu-main').hasClass('mm-menu_opened') ) {
				mmenuMainApi.close();
			}

		}

	});


});

$(document).ready(function() {

    if ( $('#mmenu-default').length ) {

        /**
         * Button fuer Auf-/Zuklappfunktion einblenden
         */

        customMmenuMakeContentButton('mmenu-content-toggle', pageConfig.mmenu.content.default.page_header_icon_description, pageConfig.mmenu.content.default.page_header_icon_label);


        /**
         * mmenu-Konfiguration
         */

        var mmenuContentOptions = {
            extensions: ['multiline', 'theme-custom', 'effect-menu-slide', 'pagedim-white', 'shadow-page', 'shadow-menu', 'position-right', 'right', 'fx-menu-slide', 'border-full'],
            navbar: {
                title:  pageConfig.mmenu.content.default.title
            },
            navbars: [
                {
                    position:	'top',
                    content:	[
                        document.getElementById('mmenu-default-topline')
                    ]
                },
                {
                    position:	'top'
                }
            ],
            setSelected: {
                parent:			true
            },
            columns:    false,
            offCanvas: {
                position: 'right'
            }
        };

        var mmenuContentConfiguration = {
            classNames: {
                fixedElements: {
                    fixed: 'mmenu-fixed'
                },
                navbars: {
                    panelTitle: 'Titel',
                    panelNext: 'Vor',
                    panelPrev: 'Zurück'
                }
            },
            language: pageConfig.language.isoCode
        };


        /**
         * mmenu erzeugen
         */

        const mmenuContent = new Mmenu("#mmenu-default", mmenuContentOptions, mmenuContentConfiguration);
        const mmenuContentApi = mmenuContent.API;


        /**
         * Schliessenfunktion
         */

        $('#mmenu-default .mmenu-close').click(function(e) {

            e.preventDefault();

            // Menue schliessen
            mmenuContentApi.close();

        });


        /**
         * Auf- und Zuklappfunktion (Ueber Hamburgermenue)
         */

        $('.mmenu-content-toggle').click(function(e) {

            e.preventDefault();

            if ( $('#mmenu-default').hasClass('mm-menu_opened') ) {
                mmenuContentApi.close();
            }
            else {
                mmenuContentApi.open();
            }

        });


        /**
         * Offenes Mmenu automatisch schliessen, sobald Bildschirmbreite fuer normales Menue ausreichend
         */

        $(window).on('debouncedresize throttledresize', function(e) {

            if ( $(window).innerWidth() >= pageConfig.responsiveGridFloatBreakpoint ) {

                if ( $('#mmenu-default').hasClass('mm-menu_opened') ) {
                    mmenuContentApi.close();
                }

            }

        });


        /**
         * Bei Klick auf Menueeintrag Inhaltsnavigation automatisch wieder schliessen
         */

        $('#mmenu-default .nav-item .nav-link').click(function(e) {

            // e.preventDefault();

            // Menue schliessen
            mmenuContentApi.close();

        });

    }

});

$(document).ready(function() {

    if ( $('#mmenu-news-categories').length ) {

        /**
         * Button fuer Auf-/Zuklappfunktion einblenden
         */

        customMmenuMakeContentButton('mmenu-content-toggle', pageConfig.mmenu.content.news.categories.page_header_icon_description, pageConfig.mmenu.content.news.categories.page_header_icon_label);


        /**
         * mmenu-Konfiguration
         */

        var mmenuNewsCategoriesOptions = {
            extensions: ['multiline', 'theme-custom', 'effect-menu-slide', 'pagedim-white', 'shadow-page', 'shadow-menu', 'position-right', 'right', 'fx-menu-slide', 'border-full'],
            navbar: {
                title:  pageConfig.mmenu.content.news.categories.title
            },
            navbars: [
                {
                    position:	'top',
                    content:	[
                        document.getElementById('mmenu-news-categories-topline')
                    ]
                },
                {
                    position:	'top'
                }
            ],
            setSelected: {
                parent:			true
            },
            columns:    false,
            offCanvas: {
                position: 'right'
            }
        };

        var mmenuNewsCategoriesConfiguration = {
            // configuration
            classNames: {
                fixedElements: {
                    fixed: 'mmenu-fixed'
                },
                navbars: {
                    panelTitle  : 'Titel',
                    panelNext   : 'Vor',
                    panelPrev   : 'Zurück'
                }
            },
            language:	pageConfig.language.isoCode
        };


        /**
         * mmenu erzeugen
         */

        const mmenuNewsCategories = new Mmenu("#mmenu-news-categories", mmenuNewsCategoriesOptions, mmenuNewsCategoriesConfiguration);
        const mmenuNewsCategoriesApi = mmenuNewsCategories.API;


        /**
         * Schliessenfunktion
         */

        $('#mmenu-news-categories .mmenu-close').click(function(e) {

            e.preventDefault();

            // Menue schliessen
            mmenuNewsCategoriesApi.close();

        });


        /**
         * Auf- und Zuklappfunktion (Ueber Hamburgermenue)
         */

        $('.mmenu-content-toggle').click(function(e) {

            e.preventDefault();

            if ( $('#mmenu-news-categories').hasClass('mm-menu_opened') ) {
                mmenuNewsCategoriesApi.close();
            }
            else {
                mmenuNewsCategoriesApi.open();
            }

        });


        /**
         * Offenes Mmenu automatisch schliessen, sobald Bildschirmbreite fuer normales Menue ausreichend
         */

        $(window).on('debouncedresize throttledresize', function(e) {

            if ( $(window).innerWidth() >= pageConfig.responsiveGridFloatBreakpoint ) {

                if ( $('#mmenu-news-categories').hasClass('mm-menu_opened') ) {
                    mmenuNewsCategoriesApi.close();
                }

            }

        });

    }

});

$(document).ready(function() {


    if ( $('#mmenu-news-archive').length ) {

        /**
         * Button fuer Auf-/Zuklappfunktion einblenden
         */

        customMmenuMakeContentButton('mmenu-content-toggle', pageConfig.mmenu.content.news.archive.page_header_icon_description, pageConfig.mmenu.content.news.archive.page_header_icon_label);


        /**
         * MMenu erzeugen
         */

        var mmenuNewsArchiveOptions = {
            extensions: ['multiline', 'theme-custom', 'effect-menu-slide', 'pagedim-white', 'shadow-page', 'shadow-menu', 'position-right', 'right', 'fx-menu-slide', 'border-full'],
            navbar: {
                title:  pageConfig.mmenu.content.news.archive.title
            },
            navbars: [
                {
                    position:	'top',
                    content:	[
                        document.getElementById('mmenu-news-archive-topline')
                    ]
                },
                {
                    position:	'top'
                }
            ],
            setSelected: {
                parent:			true
            },
            columns:    false,
            offCanvas: {
                position: 'right'
            }
        };

        var mmenuNewsArchiveConfiguration = {
            // configuration
            classNames: {
                fixedElements: {
                    fixed: 'mmenu-fixed'
                },
                navbars: {
                    panelTitle  : 'Titel',
                    panelNext   : 'Vor',
                    panelPrev   : 'Zurück'
                }
            },
            language:	pageConfig.language.isoCode
        };


        /**
         * mmenu erzeugen
         */

        const mmenuNewsArchive = new Mmenu("#mmenu-news-archive", mmenuNewsArchiveOptions, mmenuNewsArchiveConfiguration);
        const mmenuNewsArchiveApi = mmenuNewsArchive.API;


        /**
         * Schliessenfunktion
         */

        $('#mmenu-news-archive .mmenu-close').click(function(e) {

            e.preventDefault();

            // Menue schliessen
            mmenuNewsArchiveApi.close();

        });


        /**
         * Auf- und Zuklappfunktion (Ueber Hamburgermenue)
         */

        $('.mmenu-content-toggle').click(function(e) {

            e.preventDefault();

            if ( $('#mmenu-news-archive').hasClass('mm-menu_opened') ) {
                mmenuNewsArchiveApi.close();
            }
            else {
                mmenuNewsArchiveApi.open();
            }

        });


        /**
         * Offenes Mmenu automatisch schliessen, sobald Bildschirmbreite fuer normales Menue ausreichend
         */

        $(window).on('debouncedresize throttledresize', function(e) {

            if ( $(window).innerWidth() >= pageConfig.responsiveGridFloatBreakpoint ) {

                if ( $('#mmenu-news-archive').hasClass('mm-menu_opened') ) {
                    mmenuNewsArchiveApi.close();
                }

            }

        });

    }

});
