{"version":3,"sources":["../bower_components/magnific-popup/dist/jquery.magnific-popup.js","../bower_components/bxslider-4/dist/jquery.bxslider.js","../assets/scripts/main.js"],"names":["factory","define","amd","exports","require","window","jQuery","Zepto","$","mfp","_prevStatus","_document","_prevContentType","_wrapClasses","_currPopupType","CLOSE_EVENT","BEFORE_CLOSE_EVENT","AFTER_CLOSE_EVENT","BEFORE_APPEND_EVENT","MARKUP_PARSE_EVENT","OPEN_EVENT","CHANGE_EVENT","NS","EVENT_NS","READY_CLASS","REMOVING_CLASS","PREVENT_CLOSE_CLASS","MagnificPopup","_isJQ","_window","_mfpOn","name","f","ev","on","_getEl","className","appendTo","html","raw","el","document","createElement","innerHTML","appendChild","_mfpTrigger","e","data","triggerHandler","st","callbacks","charAt","toLowerCase","slice","apply","isArray","_getCloseBtn","type","currTemplate","closeBtn","closeMarkup","replace","tClose","_checkInstance","magnificPopup","instance","init","supportsTransitions","s","style","v","undefined","length","pop","prototype","constructor","appVersion","navigator","isLowIE","isIE8","all","addEventListener","isAndroid","test","isIOS","supportsTransition","probablyMobile","userAgent","popupsCache","open","i","isObj","items","toArray","index","item","parsed","isOpen","updateItemHTML","types","mainEl","eq","key","extend","defaults","fixedContentPos","modal","closeOnContentClick","closeOnBgClick","showCloseBtn","enableEscapeKey","bgOverlay","close","wrap","attr","_checkIfClose","target","container","contentContainer","preloader","tLoading","modules","n","toUpperCase","call","closeBtnInside","template","values","close_replaceWith","append","alignTop","css","overflow","overflowY","overflowX","top","scrollTop","position","fixedBgPos","height","keyCode","updateSize","addClass","windowHeight","wH","windowStyles","_hasScrollBar","_getScrollbarSize","marginRight","isIE7","classesToadd","mainClass","_addClassToMFP","add","prependTo","body","_lastFocusedEl","activeElement","setTimeout","content","_setFocus","_onFocusIn","removalDelay","_close","classesToRemove","detach","empty","_removeClassFromMFP","off","removeAttr","currItem","autoFocusLast","focus","prevHeight","winHeight","zoomLevel","documentElement","clientWidth","innerWidth","innerHeight","parseEl","markup","removeClass","newContent","appendContent","preloaded","prepend","find","tagName","src","hasClass","addGroup","options","eHandler","mfpEl","this","_openClick","eName","delegate","midClick","which","ctrlKey","metaKey","altKey","shiftKey","disableOn","isFunction","width","preventDefault","stopPropagation","updateStatus","status","text","stopImmediatePropagation","closeOnContent","closeOnBg","contains","cName","scrollHeight","_parseMarkup","arr","each","value","split","replaceWith","is","scrollbarSize","scrollDiv","cssText","offsetWidth","removeChild","proto","registerModule","module","push","fn","jqEl","itemOpts","parseInt","arguments","Array","_hiddenClass","_inlinePlaceholder","_lastInlineElement","INLINE_NS","_putInlineElementsBack","after","hiddenClass","tNotFound","initInline","getInline","inlineSt","inline","parent","parentNode","inlineElement","_ajaxCur","AJAX_NS","_removeAjaxCursor","_destroyAjaxRequest","req","abort","settings","cursor","tError","initAjax","ajax","getAjax","opts","url","success","textStatus","jqXHR","temp","xhr","finished","error","loadError","_imgInterval","_getTitle","title","image","titleSrc","verticalFit","initImage","imgSt","ns","resizeImage","img","decr","_onImageHasSize","hasSize","clearInterval","isCheckingImgSize","imgHidden","findImageSize","counter","mfpSetInterval","delay","setInterval","naturalWidth","getImage","guard","onLoadComplete","complete","loaded","onLoadError","alt","clone","img_replaceWith","loading","hasMozTransform","getHasMozTransform","MozTransform","enabled","easing","duration","opener","element","initZoom","zoomSt","zoom","openTimeout","animatedImg","getElToAnimate","newImg","transition","cssObj","zIndex","left","-webkit-backface-visibility","t","showMainContent","_allowZoom","clearTimeout","_getItemToZoom","_getOffset","remove","isLarge","offset","paddingTop","paddingBottom","obj","offsetHeight","IFRAME_NS","_emptyPage","_fixIframeBugs","isShowing","srcAction","patterns","youtube","id","vimeo","gmaps","initIframe","prevType","newType","getIframe","embedSrc","iframeSt","iframe","indexOf","substr","lastIndexOf","dataObj","_getLoopedId","numSlides","_replaceCurrTotal","curr","total","arrowMarkup","preload","navigateByImgClick","arrows","tPrev","tNext","tCounter","initGallery","gSt","gallery","direction","next","prev","l","arrowLeft","arrowRight","click","_preloadTimeout","preloadNearbyImages","goTo","newIndex","p","preloadBefore","Math","min","preloadAfter","_preloadItem","RETINA_NS","replaceSrc","m","ratio","initRetina","devicePixelRatio","retina","isNaN","max-width","mode","slideSelector","infiniteLoop","hideControlOnEnd","speed","slideMargin","startSlide","randomStart","captions","ticker","tickerHover","adaptiveHeight","adaptiveHeightSpeed","video","useCSS","preloadImages","responsive","slideZIndex","wrapperClass","touchEnabled","swipeThreshold","oneToOneTouch","preventDefaultSwipeX","preventDefaultSwipeY","ariaLive","ariaHidden","keyboardEnabled","pager","pagerType","pagerShortSeparator","pagerSelector","buildPager","pagerCustom","controls","nextText","prevText","nextSelector","prevSelector","autoControls","startText","stopText","autoControlsCombine","autoControlsSelector","auto","pause","autoStart","autoDirection","stopAutoOnClick","autoHover","autoDelay","autoSlideForOnePage","minSlides","maxSlides","moveSlides","slideWidth","shrinkItems","onSliderLoad","onSlideBefore","onSlideAfter","onSlideNext","onSlidePrev","onSliderResize","bxSlider","slider","windowWidth","children","floor","random","active","carousel","minThreshold","maxThreshold","working","interval","animProp","usingCSS","div","props","cssPrefix","setup","preloadSelector","viewport","loader","maxWidth","getViewportMaxWidth","float","listStyle","getSlideWidth","display","appendCaptions","last","getPagerQty","fitVids","appendControls","appendControlsAuto","appendPager","loadElements","start","selector","callback","count","one","trigger","sliceAppend","slicePrepend","setSlidePosition","getViewportHeight","redrawSlider","initialized","bind","resizeWindow","initAuto","initTicker","updatePagerActive","updateDirectionControls","initTouch","keydown","keyPress","currentIndex","getMoveBy","outerHeight","max","map","get","parseFloat","newElWidth","wrapWidth","ceil","getNumberSlidesShowing","slidesShowing","childWidth","first","pagerQty","breakPoint","lastChild","lastShowingIndex","setPositionProperty","outerWidth","params","animateObj","propValue","unbind","updateAfterSlideTransition","resetValue","tickerLoop","animate","populatePager","pagerHtml","linkContent","pagerEl","clickPagerBind","clickNextBind","clickPrevBind","directionEl","stop","autoEl","clickStartBind","clickStopBind","updateAutoControls","stopAuto","goToNextSlide","goToPrevSlide","startAuto","pagerLink","pagerIndex","currentTarget","goToSlide","slideIndex","len","oldIndex","state","blur","hover","autoPaused","transform","idx","property","newSpeed","totalDimens","startPosition","abs","resumeSpeed","animateProperty","reset","isOnScreen","win","scrollLeft","bounds","right","bottom","activeElementTag","tagFilters","RegExp","result","exec","touch","x","y","end","onTouchStart","originalPos","orig","originalEvent","touchPoints","changedTouches","pageX","pageY","setPointerCapture","pointerId","onTouchMove","onTouchEnd","onPointerCancel","releasePointerCapture","xMovement","yMovement","change","distance","windowWidthNew","windowHeightNew","applyAriaHiddenAttributes","startVisibleIndex","numberOfSlidesShowing","setSlideIndex","requestEl","performTransition","moveBy","filter","fadeOut","fadeIn","preventControlUpdate","getCurrentSlide","getCurrentSlideElement","getSlideElement","getSlideCount","isWorking","destroySlider","unwrap","removeData","reloadSlider","Sage","common","checkSlider","contentWrapperH","sliderConfig","contentWrapperWidth","refContWidth","maxSlidesReferenz","gallerySlideWidth","slider_config","curNextArrow","curPrevArrow","autoHidePager","slider_config_references","bxslider","partnerSlider","currentSlider","toggleClass","closest","curFilter","link","val","event","curclass","curSlide","queue","getElementById","finish","ekkoLightbox","finalize","geschichte","setPosition","mindingMousewheel","SwipeUp","minPosition","checkPoint","checkbox","SwipeDown","maxPosition","checkTouchDevice","curYear","newCurYear","initTimeline","boxposition","curbox","mousewheelevt","location","reload","swipe","touches","contact","console","log","evt","delta","detail","wheelDelta","kontakt","home","about_us","UTIL","fire","func","funcname","args","namespace","loadEvents","classnm","ready"],"mappings":"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","file":"main.js","sourcesContent":["/*! Magnific Popup - v1.1.0 - 2016-02-20\n* http://dimsemenov.com/plugins/magnific-popup/\n* Copyright (c) 2016 Dmitry Semenov; */\n;(function (factory) { \nif (typeof define === 'function' && define.amd) { \n // AMD. Register as an anonymous module. \n define(['jquery'], factory); \n } else if (typeof exports === 'object') { \n // Node/CommonJS \n factory(require('jquery')); \n } else { \n // Browser globals \n factory(window.jQuery || window.Zepto); \n } \n }(function($) { \n\n/*>>core*/\n/**\n * \n * Magnific Popup Core JS file\n * \n */\n\n\n/**\n * Private static constants\n */\nvar CLOSE_EVENT = 'Close',\n\tBEFORE_CLOSE_EVENT = 'BeforeClose',\n\tAFTER_CLOSE_EVENT = 'AfterClose',\n\tBEFORE_APPEND_EVENT = 'BeforeAppend',\n\tMARKUP_PARSE_EVENT = 'MarkupParse',\n\tOPEN_EVENT = 'Open',\n\tCHANGE_EVENT = 'Change',\n\tNS = 'mfp',\n\tEVENT_NS = '.' + NS,\n\tREADY_CLASS = 'mfp-ready',\n\tREMOVING_CLASS = 'mfp-removing',\n\tPREVENT_CLOSE_CLASS = 'mfp-prevent-close';\n\n\n/**\n * Private vars \n */\n/*jshint -W079 */\nvar mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'\n\tMagnificPopup = function(){},\n\t_isJQ = !!(window.jQuery),\n\t_prevStatus,\n\t_window = $(window),\n\t_document,\n\t_prevContentType,\n\t_wrapClasses,\n\t_currPopupType;\n\n\n/**\n * Private functions\n */\nvar _mfpOn = function(name, f) {\n\t\tmfp.ev.on(NS + name + EVENT_NS, f);\n\t},\n\t_getEl = function(className, appendTo, html, raw) {\n\t\tvar el = document.createElement('div');\n\t\tel.className = 'mfp-'+className;\n\t\tif(html) {\n\t\t\tel.innerHTML = html;\n\t\t}\n\t\tif(!raw) {\n\t\t\tel = $(el);\n\t\t\tif(appendTo) {\n\t\t\t\tel.appendTo(appendTo);\n\t\t\t}\n\t\t} else if(appendTo) {\n\t\t\tappendTo.appendChild(el);\n\t\t}\n\t\treturn el;\n\t},\n\t_mfpTrigger = function(e, data) {\n\t\tmfp.ev.triggerHandler(NS + e, data);\n\n\t\tif(mfp.st.callbacks) {\n\t\t\t// converts \"mfpEventName\" to \"eventName\" callback and triggers it if it's present\n\t\t\te = e.charAt(0).toLowerCase() + e.slice(1);\n\t\t\tif(mfp.st.callbacks[e]) {\n\t\t\t\tmfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);\n\t\t\t}\n\t\t}\n\t},\n\t_getCloseBtn = function(type) {\n\t\tif(type !== _currPopupType || !mfp.currTemplate.closeBtn) {\n\t\t\tmfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) );\n\t\t\t_currPopupType = type;\n\t\t}\n\t\treturn mfp.currTemplate.closeBtn;\n\t},\n\t// Initialize Magnific Popup only when called at least once\n\t_checkInstance = function() {\n\t\tif(!$.magnificPopup.instance) {\n\t\t\t/*jshint -W020 */\n\t\t\tmfp = new MagnificPopup();\n\t\t\tmfp.init();\n\t\t\t$.magnificPopup.instance = mfp;\n\t\t}\n\t},\n\t// CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr\n\tsupportsTransitions = function() {\n\t\tvar s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist\n\t\t\tv = ['ms','O','Moz','Webkit']; // 'v' for vendor\n\n\t\tif( s['transition'] !== undefined ) {\n\t\t\treturn true; \n\t\t}\n\t\t\t\n\t\twhile( v.length ) {\n\t\t\tif( v.pop() + 'Transition' in s ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\t\t\n\t\treturn false;\n\t};\n\n\n\n/**\n * Public functions\n */\nMagnificPopup.prototype = {\n\n\tconstructor: MagnificPopup,\n\n\t/**\n\t * Initializes Magnific Popup plugin. \n\t * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed\n\t */\n\tinit: function() {\n\t\tvar appVersion = navigator.appVersion;\n\t\tmfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener;\n\t\tmfp.isAndroid = (/android/gi).test(appVersion);\n\t\tmfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);\n\t\tmfp.supportsTransition = supportsTransitions();\n\n\t\t// We disable fixed positioned lightbox on devices that don't handle it nicely.\n\t\t// If you know a better way of detecting this - let me know.\n\t\tmfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) );\n\t\t_document = $(document);\n\n\t\tmfp.popupsCache = {};\n\t},\n\n\t/**\n\t * Opens popup\n\t * @param data [description]\n\t */\n\topen: function(data) {\n\n\t\tvar i;\n\n\t\tif(data.isObj === false) { \n\t\t\t// convert jQuery collection to array to avoid conflicts later\n\t\t\tmfp.items = data.items.toArray();\n\n\t\t\tmfp.index = 0;\n\t\t\tvar items = data.items,\n\t\t\t\titem;\n\t\t\tfor(i = 0; i < items.length; i++) {\n\t\t\t\titem = items[i];\n\t\t\t\tif(item.parsed) {\n\t\t\t\t\titem = item.el[0];\n\t\t\t\t}\n\t\t\t\tif(item === data.el[0]) {\n\t\t\t\t\tmfp.index = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tmfp.items = $.isArray(data.items) ? data.items : [data.items];\n\t\t\tmfp.index = data.index || 0;\n\t\t}\n\n\t\t// if popup is already opened - we just update the content\n\t\tif(mfp.isOpen) {\n\t\t\tmfp.updateItemHTML();\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tmfp.types = []; \n\t\t_wrapClasses = '';\n\t\tif(data.mainEl && data.mainEl.length) {\n\t\t\tmfp.ev = data.mainEl.eq(0);\n\t\t} else {\n\t\t\tmfp.ev = _document;\n\t\t}\n\n\t\tif(data.key) {\n\t\t\tif(!mfp.popupsCache[data.key]) {\n\t\t\t\tmfp.popupsCache[data.key] = {};\n\t\t\t}\n\t\t\tmfp.currTemplate = mfp.popupsCache[data.key];\n\t\t} else {\n\t\t\tmfp.currTemplate = {};\n\t\t}\n\n\n\n\t\tmfp.st = $.extend(true, {}, $.magnificPopup.defaults, data ); \n\t\tmfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;\n\n\t\tif(mfp.st.modal) {\n\t\t\tmfp.st.closeOnContentClick = false;\n\t\t\tmfp.st.closeOnBgClick = false;\n\t\t\tmfp.st.showCloseBtn = false;\n\t\t\tmfp.st.enableEscapeKey = false;\n\t\t}\n\t\t\n\n\t\t// Building markup\n\t\t// main containers are created only once\n\t\tif(!mfp.bgOverlay) {\n\n\t\t\t// Dark overlay\n\t\t\tmfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() {\n\t\t\t\tmfp.close();\n\t\t\t});\n\n\t\t\tmfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) {\n\t\t\t\tif(mfp._checkIfClose(e.target)) {\n\t\t\t\t\tmfp.close();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmfp.container = _getEl('container', mfp.wrap);\n\t\t}\n\n\t\tmfp.contentContainer = _getEl('content');\n\t\tif(mfp.st.preloader) {\n\t\t\tmfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);\n\t\t}\n\n\n\t\t// Initializing modules\n\t\tvar modules = $.magnificPopup.modules;\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar n = modules[i];\n\t\t\tn = n.charAt(0).toUpperCase() + n.slice(1);\n\t\t\tmfp['init'+n].call(mfp);\n\t\t}\n\t\t_mfpTrigger('BeforeOpen');\n\n\n\t\tif(mfp.st.showCloseBtn) {\n\t\t\t// Close button\n\t\t\tif(!mfp.st.closeBtnInside) {\n\t\t\t\tmfp.wrap.append( _getCloseBtn() );\n\t\t\t} else {\n\t\t\t\t_mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) {\n\t\t\t\t\tvalues.close_replaceWith = _getCloseBtn(item.type);\n\t\t\t\t});\n\t\t\t\t_wrapClasses += ' mfp-close-btn-in';\n\t\t\t}\n\t\t}\n\n\t\tif(mfp.st.alignTop) {\n\t\t\t_wrapClasses += ' mfp-align-top';\n\t\t}\n\n\t\n\n\t\tif(mfp.fixedContentPos) {\n\t\t\tmfp.wrap.css({\n\t\t\t\toverflow: mfp.st.overflowY,\n\t\t\t\toverflowX: 'hidden',\n\t\t\t\toverflowY: mfp.st.overflowY\n\t\t\t});\n\t\t} else {\n\t\t\tmfp.wrap.css({ \n\t\t\t\ttop: _window.scrollTop(),\n\t\t\t\tposition: 'absolute'\n\t\t\t});\n\t\t}\n\t\tif( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) {\n\t\t\tmfp.bgOverlay.css({\n\t\t\t\theight: _document.height(),\n\t\t\t\tposition: 'absolute'\n\t\t\t});\n\t\t}\n\n\t\t\n\n\t\tif(mfp.st.enableEscapeKey) {\n\t\t\t// Close on ESC key\n\t\t\t_document.on('keyup' + EVENT_NS, function(e) {\n\t\t\t\tif(e.keyCode === 27) {\n\t\t\t\t\tmfp.close();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t_window.on('resize' + EVENT_NS, function() {\n\t\t\tmfp.updateSize();\n\t\t});\n\n\n\t\tif(!mfp.st.closeOnContentClick) {\n\t\t\t_wrapClasses += ' mfp-auto-cursor';\n\t\t}\n\t\t\n\t\tif(_wrapClasses)\n\t\t\tmfp.wrap.addClass(_wrapClasses);\n\n\n\t\t// this triggers recalculation of layout, so we get it once to not to trigger twice\n\t\tvar windowHeight = mfp.wH = _window.height();\n\n\t\t\n\t\tvar windowStyles = {};\n\n\t\tif( mfp.fixedContentPos ) {\n if(mfp._hasScrollBar(windowHeight)){\n var s = mfp._getScrollbarSize();\n if(s) {\n windowStyles.marginRight = s;\n }\n }\n }\n\n\t\tif(mfp.fixedContentPos) {\n\t\t\tif(!mfp.isIE7) {\n\t\t\t\twindowStyles.overflow = 'hidden';\n\t\t\t} else {\n\t\t\t\t// ie7 double-scroll bug\n\t\t\t\t$('body, html').css('overflow', 'hidden');\n\t\t\t}\n\t\t}\n\n\t\t\n\t\t\n\t\tvar classesToadd = mfp.st.mainClass;\n\t\tif(mfp.isIE7) {\n\t\t\tclassesToadd += ' mfp-ie7';\n\t\t}\n\t\tif(classesToadd) {\n\t\t\tmfp._addClassToMFP( classesToadd );\n\t\t}\n\n\t\t// add content\n\t\tmfp.updateItemHTML();\n\n\t\t_mfpTrigger('BuildControls');\n\n\t\t// remove scrollbar, add margin e.t.c\n\t\t$('html').css(windowStyles);\n\t\t\n\t\t// add everything to DOM\n\t\tmfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) );\n\n\t\t// Save last focused element\n\t\tmfp._lastFocusedEl = document.activeElement;\n\t\t\n\t\t// Wait for next cycle to allow CSS transition\n\t\tsetTimeout(function() {\n\t\t\t\n\t\t\tif(mfp.content) {\n\t\t\t\tmfp._addClassToMFP(READY_CLASS);\n\t\t\t\tmfp._setFocus();\n\t\t\t} else {\n\t\t\t\t// if content is not defined (not loaded e.t.c) we add class only for BG\n\t\t\t\tmfp.bgOverlay.addClass(READY_CLASS);\n\t\t\t}\n\t\t\t\n\t\t\t// Trap the focus in popup\n\t\t\t_document.on('focusin' + EVENT_NS, mfp._onFocusIn);\n\n\t\t}, 16);\n\n\t\tmfp.isOpen = true;\n\t\tmfp.updateSize(windowHeight);\n\t\t_mfpTrigger(OPEN_EVENT);\n\n\t\treturn data;\n\t},\n\n\t/**\n\t * Closes the popup\n\t */\n\tclose: function() {\n\t\tif(!mfp.isOpen) return;\n\t\t_mfpTrigger(BEFORE_CLOSE_EVENT);\n\n\t\tmfp.isOpen = false;\n\t\t// for CSS3 animation\n\t\tif(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) {\n\t\t\tmfp._addClassToMFP(REMOVING_CLASS);\n\t\t\tsetTimeout(function() {\n\t\t\t\tmfp._close();\n\t\t\t}, mfp.st.removalDelay);\n\t\t} else {\n\t\t\tmfp._close();\n\t\t}\n\t},\n\n\t/**\n\t * Helper for close() function\n\t */\n\t_close: function() {\n\t\t_mfpTrigger(CLOSE_EVENT);\n\n\t\tvar classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';\n\n\t\tmfp.bgOverlay.detach();\n\t\tmfp.wrap.detach();\n\t\tmfp.container.empty();\n\n\t\tif(mfp.st.mainClass) {\n\t\t\tclassesToRemove += mfp.st.mainClass + ' ';\n\t\t}\n\n\t\tmfp._removeClassFromMFP(classesToRemove);\n\n\t\tif(mfp.fixedContentPos) {\n\t\t\tvar windowStyles = {marginRight: ''};\n\t\t\tif(mfp.isIE7) {\n\t\t\t\t$('body, html').css('overflow', '');\n\t\t\t} else {\n\t\t\t\twindowStyles.overflow = '';\n\t\t\t}\n\t\t\t$('html').css(windowStyles);\n\t\t}\n\t\t\n\t\t_document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);\n\t\tmfp.ev.off(EVENT_NS);\n\n\t\t// clean up DOM elements that aren't removed\n\t\tmfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');\n\t\tmfp.bgOverlay.attr('class', 'mfp-bg');\n\t\tmfp.container.attr('class', 'mfp-container');\n\n\t\t// remove close button from target element\n\t\tif(mfp.st.showCloseBtn &&\n\t\t(!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {\n\t\t\tif(mfp.currTemplate.closeBtn)\n\t\t\t\tmfp.currTemplate.closeBtn.detach();\n\t\t}\n\n\n\t\tif(mfp.st.autoFocusLast && mfp._lastFocusedEl) {\n\t\t\t$(mfp._lastFocusedEl).focus(); // put tab focus back\n\t\t}\n\t\tmfp.currItem = null;\t\n\t\tmfp.content = null;\n\t\tmfp.currTemplate = null;\n\t\tmfp.prevHeight = 0;\n\n\t\t_mfpTrigger(AFTER_CLOSE_EVENT);\n\t},\n\t\n\tupdateSize: function(winHeight) {\n\n\t\tif(mfp.isIOS) {\n\t\t\t// fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2\n\t\t\tvar zoomLevel = document.documentElement.clientWidth / window.innerWidth;\n\t\t\tvar height = window.innerHeight * zoomLevel;\n\t\t\tmfp.wrap.css('height', height);\n\t\t\tmfp.wH = height;\n\t\t} else {\n\t\t\tmfp.wH = winHeight || _window.height();\n\t\t}\n\t\t// Fixes #84: popup incorrectly positioned with position:relative on body\n\t\tif(!mfp.fixedContentPos) {\n\t\t\tmfp.wrap.css('height', mfp.wH);\n\t\t}\n\n\t\t_mfpTrigger('Resize');\n\n\t},\n\n\t/**\n\t * Set content of popup based on current index\n\t */\n\tupdateItemHTML: function() {\n\t\tvar item = mfp.items[mfp.index];\n\n\t\t// Detach and perform modifications\n\t\tmfp.contentContainer.detach();\n\n\t\tif(mfp.content)\n\t\t\tmfp.content.detach();\n\n\t\tif(!item.parsed) {\n\t\t\titem = mfp.parseEl( mfp.index );\n\t\t}\n\n\t\tvar type = item.type;\n\n\t\t_mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);\n\t\t// BeforeChange event works like so:\n\t\t// _mfpOn('BeforeChange', function(e, prevType, newType) { });\n\n\t\tmfp.currItem = item;\n\n\t\tif(!mfp.currTemplate[type]) {\n\t\t\tvar markup = mfp.st[type] ? mfp.st[type].markup : false;\n\n\t\t\t// allows to modify markup\n\t\t\t_mfpTrigger('FirstMarkupParse', markup);\n\n\t\t\tif(markup) {\n\t\t\t\tmfp.currTemplate[type] = $(markup);\n\t\t\t} else {\n\t\t\t\t// if there is no markup found we just define that template is parsed\n\t\t\t\tmfp.currTemplate[type] = true;\n\t\t\t}\n\t\t}\n\n\t\tif(_prevContentType && _prevContentType !== item.type) {\n\t\t\tmfp.container.removeClass('mfp-'+_prevContentType+'-holder');\n\t\t}\n\n\t\tvar newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);\n\t\tmfp.appendContent(newContent, type);\n\n\t\titem.preloaded = true;\n\n\t\t_mfpTrigger(CHANGE_EVENT, item);\n\t\t_prevContentType = item.type;\n\n\t\t// Append container back after its content changed\n\t\tmfp.container.prepend(mfp.contentContainer);\n\n\t\t_mfpTrigger('AfterChange');\n\t},\n\n\n\t/**\n\t * Set HTML content of popup\n\t */\n\tappendContent: function(newContent, type) {\n\t\tmfp.content = newContent;\n\n\t\tif(newContent) {\n\t\t\tif(mfp.st.showCloseBtn && mfp.st.closeBtnInside &&\n\t\t\t\tmfp.currTemplate[type] === true) {\n\t\t\t\t// if there is no markup, we just append close button element inside\n\t\t\t\tif(!mfp.content.find('.mfp-close').length) {\n\t\t\t\t\tmfp.content.append(_getCloseBtn());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmfp.content = newContent;\n\t\t\t}\n\t\t} else {\n\t\t\tmfp.content = '';\n\t\t}\n\n\t\t_mfpTrigger(BEFORE_APPEND_EVENT);\n\t\tmfp.container.addClass('mfp-'+type+'-holder');\n\n\t\tmfp.contentContainer.append(mfp.content);\n\t},\n\n\n\t/**\n\t * Creates Magnific Popup data object based on given data\n\t * @param {int} index Index of item to parse\n\t */\n\tparseEl: function(index) {\n\t\tvar item = mfp.items[index],\n\t\t\ttype;\n\n\t\tif(item.tagName) {\n\t\t\titem = { el: $(item) };\n\t\t} else {\n\t\t\ttype = item.type;\n\t\t\titem = { data: item, src: item.src };\n\t\t}\n\n\t\tif(item.el) {\n\t\t\tvar types = mfp.types;\n\n\t\t\t// check for 'mfp-TYPE' class\n\t\t\tfor(var i = 0; i < types.length; i++) {\n\t\t\t\tif( item.el.hasClass('mfp-'+types[i]) ) {\n\t\t\t\t\ttype = types[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titem.src = item.el.attr('data-mfp-src');\n\t\t\tif(!item.src) {\n\t\t\t\titem.src = item.el.attr('href');\n\t\t\t}\n\t\t}\n\n\t\titem.type = type || mfp.st.type || 'inline';\n\t\titem.index = index;\n\t\titem.parsed = true;\n\t\tmfp.items[index] = item;\n\t\t_mfpTrigger('ElementParse', item);\n\n\t\treturn mfp.items[index];\n\t},\n\n\n\t/**\n\t * Initializes single popup or a group of popups\n\t */\n\taddGroup: function(el, options) {\n\t\tvar eHandler = function(e) {\n\t\t\te.mfpEl = this;\n\t\t\tmfp._openClick(e, el, options);\n\t\t};\n\n\t\tif(!options) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tvar eName = 'click.magnificPopup';\n\t\toptions.mainEl = el;\n\n\t\tif(options.items) {\n\t\t\toptions.isObj = true;\n\t\t\tel.off(eName).on(eName, eHandler);\n\t\t} else {\n\t\t\toptions.isObj = false;\n\t\t\tif(options.delegate) {\n\t\t\t\tel.off(eName).on(eName, options.delegate , eHandler);\n\t\t\t} else {\n\t\t\t\toptions.items = el;\n\t\t\t\tel.off(eName).on(eName, eHandler);\n\t\t\t}\n\t\t}\n\t},\n\t_openClick: function(e, el, options) {\n\t\tvar midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;\n\n\n\t\tif(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;\n\n\t\tif(disableOn) {\n\t\t\tif($.isFunction(disableOn)) {\n\t\t\t\tif( !disableOn.call(mfp) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else { // else it's number\n\t\t\t\tif( _window.width() < disableOn ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(e.type) {\n\t\t\te.preventDefault();\n\n\t\t\t// This will prevent popup from closing if element is inside and popup is already opened\n\t\t\tif(mfp.isOpen) {\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t}\n\n\t\toptions.el = $(e.mfpEl);\n\t\tif(options.delegate) {\n\t\t\toptions.items = el.find(options.delegate);\n\t\t}\n\t\tmfp.open(options);\n\t},\n\n\n\t/**\n\t * Updates text on preloader\n\t */\n\tupdateStatus: function(status, text) {\n\n\t\tif(mfp.preloader) {\n\t\t\tif(_prevStatus !== status) {\n\t\t\t\tmfp.container.removeClass('mfp-s-'+_prevStatus);\n\t\t\t}\n\n\t\t\tif(!text && status === 'loading') {\n\t\t\t\ttext = mfp.st.tLoading;\n\t\t\t}\n\n\t\t\tvar data = {\n\t\t\t\tstatus: status,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t\t// allows to modify status\n\t\t\t_mfpTrigger('UpdateStatus', data);\n\n\t\t\tstatus = data.status;\n\t\t\ttext = data.text;\n\n\t\t\tmfp.preloader.html(text);\n\n\t\t\tmfp.preloader.find('a').on('click', function(e) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t});\n\n\t\t\tmfp.container.addClass('mfp-s-'+status);\n\t\t\t_prevStatus = status;\n\t\t}\n\t},\n\n\n\t/*\n\t\t\"Private\" helpers that aren't private at all\n\t */\n\t// Check to close popup or not\n\t// \"target\" is an element that was clicked\n\t_checkIfClose: function(target) {\n\n\t\tif($(target).hasClass(PREVENT_CLOSE_CLASS)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar closeOnContent = mfp.st.closeOnContentClick;\n\t\tvar closeOnBg = mfp.st.closeOnBgClick;\n\n\t\tif(closeOnContent && closeOnBg) {\n\t\t\treturn true;\n\t\t} else {\n\n\t\t\t// We close the popup if click is on close button or on preloader. Or if there is no content.\n\t\t\tif(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// if click is outside the content\n\t\t\tif( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) {\n\t\t\t\tif(closeOnBg) {\n\t\t\t\t\t// last check, if the clicked element is in DOM, (in case it's removed onclick)\n\t\t\t\t\tif( $.contains(document, target) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if(closeOnContent) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}\n\t\treturn false;\n\t},\n\t_addClassToMFP: function(cName) {\n\t\tmfp.bgOverlay.addClass(cName);\n\t\tmfp.wrap.addClass(cName);\n\t},\n\t_removeClassFromMFP: function(cName) {\n\t\tthis.bgOverlay.removeClass(cName);\n\t\tmfp.wrap.removeClass(cName);\n\t},\n\t_hasScrollBar: function(winHeight) {\n\t\treturn ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) );\n\t},\n\t_setFocus: function() {\n\t\t(mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();\n\t},\n\t_onFocusIn: function(e) {\n\t\tif( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) {\n\t\t\tmfp._setFocus();\n\t\t\treturn false;\n\t\t}\n\t},\n\t_parseMarkup: function(template, values, item) {\n\t\tvar arr;\n\t\tif(item.data) {\n\t\t\tvalues = $.extend(item.data, values);\n\t\t}\n\t\t_mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] );\n\n\t\t$.each(values, function(key, value) {\n\t\t\tif(value === undefined || value === false) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tarr = key.split('_');\n\t\t\tif(arr.length > 1) {\n\t\t\t\tvar el = template.find(EVENT_NS + '-'+arr[0]);\n\n\t\t\t\tif(el.length > 0) {\n\t\t\t\t\tvar attr = arr[1];\n\t\t\t\t\tif(attr === 'replaceWith') {\n\t\t\t\t\t\tif(el[0] !== value[0]) {\n\t\t\t\t\t\t\tel.replaceWith(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if(attr === 'img') {\n\t\t\t\t\t\tif(el.is('img')) {\n\t\t\t\t\t\t\tel.attr('src', value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel.replaceWith( $('').attr('src', value).attr('class', el.attr('class')) );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tel.attr(arr[1], value);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\ttemplate.find(EVENT_NS + '-'+key).html(value);\n\t\t\t}\n\t\t});\n\t},\n\n\t_getScrollbarSize: function() {\n\t\t// thx David\n\t\tif(mfp.scrollbarSize === undefined) {\n\t\t\tvar scrollDiv = document.createElement(\"div\");\n\t\t\tscrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';\n\t\t\tdocument.body.appendChild(scrollDiv);\n\t\t\tmfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n\t\t\tdocument.body.removeChild(scrollDiv);\n\t\t}\n\t\treturn mfp.scrollbarSize;\n\t}\n\n}; /* MagnificPopup core prototype end */\n\n\n\n\n/**\n * Public static functions\n */\n$.magnificPopup = {\n\tinstance: null,\n\tproto: MagnificPopup.prototype,\n\tmodules: [],\n\n\topen: function(options, index) {\n\t\t_checkInstance();\n\n\t\tif(!options) {\n\t\t\toptions = {};\n\t\t} else {\n\t\t\toptions = $.extend(true, {}, options);\n\t\t}\n\n\t\toptions.isObj = true;\n\t\toptions.index = index || 0;\n\t\treturn this.instance.open(options);\n\t},\n\n\tclose: function() {\n\t\treturn $.magnificPopup.instance && $.magnificPopup.instance.close();\n\t},\n\n\tregisterModule: function(name, module) {\n\t\tif(module.options) {\n\t\t\t$.magnificPopup.defaults[name] = module.options;\n\t\t}\n\t\t$.extend(this.proto, module.proto);\n\t\tthis.modules.push(name);\n\t},\n\n\tdefaults: {\n\n\t\t// Info about options is in docs:\n\t\t// http://dimsemenov.com/plugins/magnific-popup/documentation.html#options\n\n\t\tdisableOn: 0,\n\n\t\tkey: null,\n\n\t\tmidClick: false,\n\n\t\tmainClass: '',\n\n\t\tpreloader: true,\n\n\t\tfocus: '', // CSS selector of input to focus after popup is opened\n\n\t\tcloseOnContentClick: false,\n\n\t\tcloseOnBgClick: true,\n\n\t\tcloseBtnInside: true,\n\n\t\tshowCloseBtn: true,\n\n\t\tenableEscapeKey: true,\n\n\t\tmodal: false,\n\n\t\talignTop: false,\n\n\t\tremovalDelay: 0,\n\n\t\tprependTo: null,\n\n\t\tfixedContentPos: 'auto',\n\n\t\tfixedBgPos: 'auto',\n\n\t\toverflowY: 'auto',\n\n\t\tcloseMarkup: '',\n\n\t\ttClose: 'Close (Esc)',\n\n\t\ttLoading: 'Loading...',\n\n\t\tautoFocusLast: true\n\n\t}\n};\n\n\n\n$.fn.magnificPopup = function(options) {\n\t_checkInstance();\n\n\tvar jqEl = $(this);\n\n\t// We call some API method of first param is a string\n\tif (typeof options === \"string\" ) {\n\n\t\tif(options === 'open') {\n\t\t\tvar items,\n\t\t\t\titemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,\n\t\t\t\tindex = parseInt(arguments[1], 10) || 0;\n\n\t\t\tif(itemOpts.items) {\n\t\t\t\titems = itemOpts.items[index];\n\t\t\t} else {\n\t\t\t\titems = jqEl;\n\t\t\t\tif(itemOpts.delegate) {\n\t\t\t\t\titems = items.find(itemOpts.delegate);\n\t\t\t\t}\n\t\t\t\titems = items.eq( index );\n\t\t\t}\n\t\t\tmfp._openClick({mfpEl:items}, jqEl, itemOpts);\n\t\t} else {\n\t\t\tif(mfp.isOpen)\n\t\t\t\tmfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\n\t} else {\n\t\t// clone options obj\n\t\toptions = $.extend(true, {}, options);\n\n\t\t/*\n\t\t * As Zepto doesn't support .data() method for objects\n\t\t * and it works only in normal browsers\n\t\t * we assign \"options\" object directly to the DOM element. FTW!\n\t\t */\n\t\tif(_isJQ) {\n\t\t\tjqEl.data('magnificPopup', options);\n\t\t} else {\n\t\t\tjqEl[0].magnificPopup = options;\n\t\t}\n\n\t\tmfp.addGroup(jqEl, options);\n\n\t}\n\treturn jqEl;\n};\n\n/*>>core*/\n\n/*>>inline*/\n\nvar INLINE_NS = 'inline',\n\t_hiddenClass,\n\t_inlinePlaceholder,\n\t_lastInlineElement,\n\t_putInlineElementsBack = function() {\n\t\tif(_lastInlineElement) {\n\t\t\t_inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach();\n\t\t\t_lastInlineElement = null;\n\t\t}\n\t};\n\n$.magnificPopup.registerModule(INLINE_NS, {\n\toptions: {\n\t\thiddenClass: 'hide', // will be appended with `mfp-` prefix\n\t\tmarkup: '',\n\t\ttNotFound: 'Content not found'\n\t},\n\tproto: {\n\n\t\tinitInline: function() {\n\t\t\tmfp.types.push(INLINE_NS);\n\n\t\t\t_mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() {\n\t\t\t\t_putInlineElementsBack();\n\t\t\t});\n\t\t},\n\n\t\tgetInline: function(item, template) {\n\n\t\t\t_putInlineElementsBack();\n\n\t\t\tif(item.src) {\n\t\t\t\tvar inlineSt = mfp.st.inline,\n\t\t\t\t\tel = $(item.src);\n\n\t\t\t\tif(el.length) {\n\n\t\t\t\t\t// If target element has parent - we replace it with placeholder and put it back after popup is closed\n\t\t\t\t\tvar parent = el[0].parentNode;\n\t\t\t\t\tif(parent && parent.tagName) {\n\t\t\t\t\t\tif(!_inlinePlaceholder) {\n\t\t\t\t\t\t\t_hiddenClass = inlineSt.hiddenClass;\n\t\t\t\t\t\t\t_inlinePlaceholder = _getEl(_hiddenClass);\n\t\t\t\t\t\t\t_hiddenClass = 'mfp-'+_hiddenClass;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// replace target inline element with placeholder\n\t\t\t\t\t\t_lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);\n\t\t\t\t\t}\n\n\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t} else {\n\t\t\t\t\tmfp.updateStatus('error', inlineSt.tNotFound);\n\t\t\t\t\tel = $('
');\n\t\t\t\t}\n\n\t\t\t\titem.inlineElement = el;\n\t\t\t\treturn el;\n\t\t\t}\n\n\t\t\tmfp.updateStatus('ready');\n\t\t\tmfp._parseMarkup(template, {}, item);\n\t\t\treturn template;\n\t\t}\n\t}\n});\n\n/*>>inline*/\n\n/*>>ajax*/\nvar AJAX_NS = 'ajax',\n\t_ajaxCur,\n\t_removeAjaxCursor = function() {\n\t\tif(_ajaxCur) {\n\t\t\t$(document.body).removeClass(_ajaxCur);\n\t\t}\n\t},\n\t_destroyAjaxRequest = function() {\n\t\t_removeAjaxCursor();\n\t\tif(mfp.req) {\n\t\t\tmfp.req.abort();\n\t\t}\n\t};\n\n$.magnificPopup.registerModule(AJAX_NS, {\n\n\toptions: {\n\t\tsettings: null,\n\t\tcursor: 'mfp-ajax-cur',\n\t\ttError: 'The content could not be loaded.'\n\t},\n\n\tproto: {\n\t\tinitAjax: function() {\n\t\t\tmfp.types.push(AJAX_NS);\n\t\t\t_ajaxCur = mfp.st.ajax.cursor;\n\n\t\t\t_mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest);\n\t\t\t_mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);\n\t\t},\n\t\tgetAjax: function(item) {\n\n\t\t\tif(_ajaxCur) {\n\t\t\t\t$(document.body).addClass(_ajaxCur);\n\t\t\t}\n\n\t\t\tmfp.updateStatus('loading');\n\n\t\t\tvar opts = $.extend({\n\t\t\t\turl: item.src,\n\t\t\t\tsuccess: function(data, textStatus, jqXHR) {\n\t\t\t\t\tvar temp = {\n\t\t\t\t\t\tdata:data,\n\t\t\t\t\t\txhr:jqXHR\n\t\t\t\t\t};\n\n\t\t\t\t\t_mfpTrigger('ParseAjax', temp);\n\n\t\t\t\t\tmfp.appendContent( $(temp.data), AJAX_NS );\n\n\t\t\t\t\titem.finished = true;\n\n\t\t\t\t\t_removeAjaxCursor();\n\n\t\t\t\t\tmfp._setFocus();\n\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tmfp.wrap.addClass(READY_CLASS);\n\t\t\t\t\t}, 16);\n\n\t\t\t\t\tmfp.updateStatus('ready');\n\n\t\t\t\t\t_mfpTrigger('AjaxContentAdded');\n\t\t\t\t},\n\t\t\t\terror: function() {\n\t\t\t\t\t_removeAjaxCursor();\n\t\t\t\t\titem.finished = item.loadError = true;\n\t\t\t\t\tmfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));\n\t\t\t\t}\n\t\t\t}, mfp.st.ajax.settings);\n\n\t\t\tmfp.req = $.ajax(opts);\n\n\t\t\treturn '';\n\t\t}\n\t}\n});\n\n/*>>ajax*/\n\n/*>>image*/\nvar _imgInterval,\n\t_getTitle = function(item) {\n\t\tif(item.data && item.data.title !== undefined)\n\t\t\treturn item.data.title;\n\n\t\tvar src = mfp.st.image.titleSrc;\n\n\t\tif(src) {\n\t\t\tif($.isFunction(src)) {\n\t\t\t\treturn src.call(mfp, item);\n\t\t\t} else if(item.el) {\n\t\t\t\treturn item.el.attr(src) || '';\n\t\t\t}\n\t\t}\n\t\treturn '';\n\t};\n\n$.magnificPopup.registerModule('image', {\n\n\toptions: {\n\t\tmarkup: '
'+\n\t\t\t\t\t'
'+\n\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t'
'+\n\t\t\t\t'
',\n\t\tcursor: 'mfp-zoom-out-cur',\n\t\ttitleSrc: 'title',\n\t\tverticalFit: true,\n\t\ttError: 'The image could not be loaded.'\n\t},\n\n\tproto: {\n\t\tinitImage: function() {\n\t\t\tvar imgSt = mfp.st.image,\n\t\t\t\tns = '.image';\n\n\t\t\tmfp.types.push('image');\n\n\t\t\t_mfpOn(OPEN_EVENT+ns, function() {\n\t\t\t\tif(mfp.currItem.type === 'image' && imgSt.cursor) {\n\t\t\t\t\t$(document.body).addClass(imgSt.cursor);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_mfpOn(CLOSE_EVENT+ns, function() {\n\t\t\t\tif(imgSt.cursor) {\n\t\t\t\t\t$(document.body).removeClass(imgSt.cursor);\n\t\t\t\t}\n\t\t\t\t_window.off('resize' + EVENT_NS);\n\t\t\t});\n\n\t\t\t_mfpOn('Resize'+ns, mfp.resizeImage);\n\t\t\tif(mfp.isLowIE) {\n\t\t\t\t_mfpOn('AfterChange', mfp.resizeImage);\n\t\t\t}\n\t\t},\n\t\tresizeImage: function() {\n\t\t\tvar item = mfp.currItem;\n\t\t\tif(!item || !item.img) return;\n\n\t\t\tif(mfp.st.image.verticalFit) {\n\t\t\t\tvar decr = 0;\n\t\t\t\t// fix box-sizing in ie7/8\n\t\t\t\tif(mfp.isLowIE) {\n\t\t\t\t\tdecr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10);\n\t\t\t\t}\n\t\t\t\titem.img.css('max-height', mfp.wH-decr);\n\t\t\t}\n\t\t},\n\t\t_onImageHasSize: function(item) {\n\t\t\tif(item.img) {\n\n\t\t\t\titem.hasSize = true;\n\n\t\t\t\tif(_imgInterval) {\n\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t}\n\n\t\t\t\titem.isCheckingImgSize = false;\n\n\t\t\t\t_mfpTrigger('ImageHasSize', item);\n\n\t\t\t\tif(item.imgHidden) {\n\t\t\t\t\tif(mfp.content)\n\t\t\t\t\t\tmfp.content.removeClass('mfp-loading');\n\n\t\t\t\t\titem.imgHidden = false;\n\t\t\t\t}\n\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Function that loops until the image has size to display elements that rely on it asap\n\t\t */\n\t\tfindImageSize: function(item) {\n\n\t\t\tvar counter = 0,\n\t\t\t\timg = item.img[0],\n\t\t\t\tmfpSetInterval = function(delay) {\n\n\t\t\t\t\tif(_imgInterval) {\n\t\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t\t}\n\t\t\t\t\t// decelerating interval that checks for size of an image\n\t\t\t\t\t_imgInterval = setInterval(function() {\n\t\t\t\t\t\tif(img.naturalWidth > 0) {\n\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(counter > 200) {\n\t\t\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\tif(counter === 3) {\n\t\t\t\t\t\t\tmfpSetInterval(10);\n\t\t\t\t\t\t} else if(counter === 40) {\n\t\t\t\t\t\t\tmfpSetInterval(50);\n\t\t\t\t\t\t} else if(counter === 100) {\n\t\t\t\t\t\t\tmfpSetInterval(500);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, delay);\n\t\t\t\t};\n\n\t\t\tmfpSetInterval(1);\n\t\t},\n\n\t\tgetImage: function(item, template) {\n\n\t\t\tvar guard = 0,\n\n\t\t\t\t// image load complete handler\n\t\t\t\tonLoadComplete = function() {\n\t\t\t\t\tif(item) {\n\t\t\t\t\t\tif (item.img[0].complete) {\n\t\t\t\t\t\t\titem.img.off('.mfploader');\n\n\t\t\t\t\t\t\tif(item === mfp.currItem){\n\t\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\n\t\t\t\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t\t\titem.loaded = true;\n\n\t\t\t\t\t\t\t_mfpTrigger('ImageLoadComplete');\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// if image complete check fails 200 times (20 sec), we assume that there was an error.\n\t\t\t\t\t\t\tguard++;\n\t\t\t\t\t\t\tif(guard < 200) {\n\t\t\t\t\t\t\t\tsetTimeout(onLoadComplete,100);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tonLoadError();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// image error handler\n\t\t\t\tonLoadError = function() {\n\t\t\t\t\tif(item) {\n\t\t\t\t\t\titem.img.off('.mfploader');\n\t\t\t\t\t\tif(item === mfp.currItem){\n\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\t\t\t\t\t\t\tmfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t\titem.loaded = true;\n\t\t\t\t\t\titem.loadError = true;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\timgSt = mfp.st.image;\n\n\n\t\t\tvar el = template.find('.mfp-img');\n\t\t\tif(el.length) {\n\t\t\t\tvar img = document.createElement('img');\n\t\t\t\timg.className = 'mfp-img';\n\t\t\t\tif(item.el && item.el.find('img').length) {\n\t\t\t\t\timg.alt = item.el.find('img').attr('alt');\n\t\t\t\t}\n\t\t\t\titem.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);\n\t\t\t\timg.src = item.src;\n\n\t\t\t\t// without clone() \"error\" event is not firing when IMG is replaced by new IMG\n\t\t\t\t// TODO: find a way to avoid such cloning\n\t\t\t\tif(el.is('img')) {\n\t\t\t\t\titem.img = item.img.clone();\n\t\t\t\t}\n\n\t\t\t\timg = item.img[0];\n\t\t\t\tif(img.naturalWidth > 0) {\n\t\t\t\t\titem.hasSize = true;\n\t\t\t\t} else if(!img.width) {\n\t\t\t\t\titem.hasSize = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmfp._parseMarkup(template, {\n\t\t\t\ttitle: _getTitle(item),\n\t\t\t\timg_replaceWith: item.img\n\t\t\t}, item);\n\n\t\t\tmfp.resizeImage();\n\n\t\t\tif(item.hasSize) {\n\t\t\t\tif(_imgInterval) clearInterval(_imgInterval);\n\n\t\t\t\tif(item.loadError) {\n\t\t\t\t\ttemplate.addClass('mfp-loading');\n\t\t\t\t\tmfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );\n\t\t\t\t} else {\n\t\t\t\t\ttemplate.removeClass('mfp-loading');\n\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t}\n\t\t\t\treturn template;\n\t\t\t}\n\n\t\t\tmfp.updateStatus('loading');\n\t\t\titem.loading = true;\n\n\t\t\tif(!item.hasSize) {\n\t\t\t\titem.imgHidden = true;\n\t\t\t\ttemplate.addClass('mfp-loading');\n\t\t\t\tmfp.findImageSize(item);\n\t\t\t}\n\n\t\t\treturn template;\n\t\t}\n\t}\n});\n\n/*>>image*/\n\n/*>>zoom*/\nvar hasMozTransform,\n\tgetHasMozTransform = function() {\n\t\tif(hasMozTransform === undefined) {\n\t\t\thasMozTransform = document.createElement('p').style.MozTransform !== undefined;\n\t\t}\n\t\treturn hasMozTransform;\n\t};\n\n$.magnificPopup.registerModule('zoom', {\n\n\toptions: {\n\t\tenabled: false,\n\t\teasing: 'ease-in-out',\n\t\tduration: 300,\n\t\topener: function(element) {\n\t\t\treturn element.is('img') ? element : element.find('img');\n\t\t}\n\t},\n\n\tproto: {\n\n\t\tinitZoom: function() {\n\t\t\tvar zoomSt = mfp.st.zoom,\n\t\t\t\tns = '.zoom',\n\t\t\t\timage;\n\n\t\t\tif(!zoomSt.enabled || !mfp.supportsTransition) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar duration = zoomSt.duration,\n\t\t\t\tgetElToAnimate = function(image) {\n\t\t\t\t\tvar newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),\n\t\t\t\t\t\ttransition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing,\n\t\t\t\t\t\tcssObj = {\n\t\t\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\t\t\tzIndex: 9999,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t'-webkit-backface-visibility': 'hidden'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tt = 'transition';\n\n\t\t\t\t\tcssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition;\n\n\t\t\t\t\tnewImg.css(cssObj);\n\t\t\t\t\treturn newImg;\n\t\t\t\t},\n\t\t\t\tshowMainContent = function() {\n\t\t\t\t\tmfp.content.css('visibility', 'visible');\n\t\t\t\t},\n\t\t\t\topenTimeout,\n\t\t\t\tanimatedImg;\n\n\t\t\t_mfpOn('BuildControls'+ns, function() {\n\t\t\t\tif(mfp._allowZoom()) {\n\n\t\t\t\t\tclearTimeout(openTimeout);\n\t\t\t\t\tmfp.content.css('visibility', 'hidden');\n\n\t\t\t\t\t// Basically, all code below does is clones existing image, puts in on top of the current one and animated it\n\n\t\t\t\t\timage = mfp._getItemToZoom();\n\n\t\t\t\t\tif(!image) {\n\t\t\t\t\t\tshowMainContent();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tanimatedImg = getElToAnimate(image);\n\n\t\t\t\t\tanimatedImg.css( mfp._getOffset() );\n\n\t\t\t\t\tmfp.wrap.append(animatedImg);\n\n\t\t\t\t\topenTimeout = setTimeout(function() {\n\t\t\t\t\t\tanimatedImg.css( mfp._getOffset( true ) );\n\t\t\t\t\t\topenTimeout = setTimeout(function() {\n\n\t\t\t\t\t\t\tshowMainContent();\n\n\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\tanimatedImg.remove();\n\t\t\t\t\t\t\t\timage = animatedImg = null;\n\t\t\t\t\t\t\t\t_mfpTrigger('ZoomAnimationEnded');\n\t\t\t\t\t\t\t}, 16); // avoid blink when switching images\n\n\t\t\t\t\t\t}, duration); // this timeout equals animation duration\n\n\t\t\t\t\t}, 16); // by adding this timeout we avoid short glitch at the beginning of animation\n\n\n\t\t\t\t\t// Lots of timeouts...\n\t\t\t\t}\n\t\t\t});\n\t\t\t_mfpOn(BEFORE_CLOSE_EVENT+ns, function() {\n\t\t\t\tif(mfp._allowZoom()) {\n\n\t\t\t\t\tclearTimeout(openTimeout);\n\n\t\t\t\t\tmfp.st.removalDelay = duration;\n\n\t\t\t\t\tif(!image) {\n\t\t\t\t\t\timage = mfp._getItemToZoom();\n\t\t\t\t\t\tif(!image) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanimatedImg = getElToAnimate(image);\n\t\t\t\t\t}\n\n\t\t\t\t\tanimatedImg.css( mfp._getOffset(true) );\n\t\t\t\t\tmfp.wrap.append(animatedImg);\n\t\t\t\t\tmfp.content.css('visibility', 'hidden');\n\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tanimatedImg.css( mfp._getOffset() );\n\t\t\t\t\t}, 16);\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t_mfpOn(CLOSE_EVENT+ns, function() {\n\t\t\t\tif(mfp._allowZoom()) {\n\t\t\t\t\tshowMainContent();\n\t\t\t\t\tif(animatedImg) {\n\t\t\t\t\t\tanimatedImg.remove();\n\t\t\t\t\t}\n\t\t\t\t\timage = null;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t_allowZoom: function() {\n\t\t\treturn mfp.currItem.type === 'image';\n\t\t},\n\n\t\t_getItemToZoom: function() {\n\t\t\tif(mfp.currItem.hasSize) {\n\t\t\t\treturn mfp.currItem.img;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Get element postion relative to viewport\n\t\t_getOffset: function(isLarge) {\n\t\t\tvar el;\n\t\t\tif(isLarge) {\n\t\t\t\tel = mfp.currItem.img;\n\t\t\t} else {\n\t\t\t\tel = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);\n\t\t\t}\n\n\t\t\tvar offset = el.offset();\n\t\t\tvar paddingTop = parseInt(el.css('padding-top'),10);\n\t\t\tvar paddingBottom = parseInt(el.css('padding-bottom'),10);\n\t\t\toffset.top -= ( $(window).scrollTop() - paddingTop );\n\n\n\t\t\t/*\n\n\t\t\tAnimating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.\n\n\t\t\t */\n\t\t\tvar obj = {\n\t\t\t\twidth: el.width(),\n\t\t\t\t// fix Zepto height+padding issue\n\t\t\t\theight: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop\n\t\t\t};\n\n\t\t\t// I hate to do this, but there is no another option\n\t\t\tif( getHasMozTransform() ) {\n\t\t\t\tobj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';\n\t\t\t} else {\n\t\t\t\tobj.left = offset.left;\n\t\t\t\tobj.top = offset.top;\n\t\t\t}\n\t\t\treturn obj;\n\t\t}\n\n\t}\n});\n\n\n\n/*>>zoom*/\n\n/*>>iframe*/\n\nvar IFRAME_NS = 'iframe',\n\t_emptyPage = '//about:blank',\n\n\t_fixIframeBugs = function(isShowing) {\n\t\tif(mfp.currTemplate[IFRAME_NS]) {\n\t\t\tvar el = mfp.currTemplate[IFRAME_NS].find('iframe');\n\t\t\tif(el.length) {\n\t\t\t\t// reset src after the popup is closed to avoid \"video keeps playing after popup is closed\" bug\n\t\t\t\tif(!isShowing) {\n\t\t\t\t\tel[0].src = _emptyPage;\n\t\t\t\t}\n\n\t\t\t\t// IE8 black screen bug fix\n\t\t\t\tif(mfp.isIE8) {\n\t\t\t\t\tel.css('display', isShowing ? 'block' : 'none');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n$.magnificPopup.registerModule(IFRAME_NS, {\n\n\toptions: {\n\t\tmarkup: '
'+\n\t\t\t\t\t'
'+\n\t\t\t\t\t''+\n\t\t\t\t'
',\n\n\t\tsrcAction: 'iframe_src',\n\n\t\t// we don't care and support only one default type of URL by default\n\t\tpatterns: {\n\t\t\tyoutube: {\n\t\t\t\tindex: 'youtube.com',\n\t\t\t\tid: 'v=',\n\t\t\t\tsrc: '//www.youtube.com/embed/%id%?autoplay=1'\n\t\t\t},\n\t\t\tvimeo: {\n\t\t\t\tindex: 'vimeo.com/',\n\t\t\t\tid: '/',\n\t\t\t\tsrc: '//player.vimeo.com/video/%id%?autoplay=1'\n\t\t\t},\n\t\t\tgmaps: {\n\t\t\t\tindex: '//maps.google.',\n\t\t\t\tsrc: '%id%&output=embed'\n\t\t\t}\n\t\t}\n\t},\n\n\tproto: {\n\t\tinitIframe: function() {\n\t\t\tmfp.types.push(IFRAME_NS);\n\n\t\t\t_mfpOn('BeforeChange', function(e, prevType, newType) {\n\t\t\t\tif(prevType !== newType) {\n\t\t\t\t\tif(prevType === IFRAME_NS) {\n\t\t\t\t\t\t_fixIframeBugs(); // iframe if removed\n\t\t\t\t\t} else if(newType === IFRAME_NS) {\n\t\t\t\t\t\t_fixIframeBugs(true); // iframe is showing\n\t\t\t\t\t}\n\t\t\t\t}// else {\n\t\t\t\t\t// iframe source is switched, don't do anything\n\t\t\t\t//}\n\t\t\t});\n\n\t\t\t_mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() {\n\t\t\t\t_fixIframeBugs();\n\t\t\t});\n\t\t},\n\n\t\tgetIframe: function(item, template) {\n\t\t\tvar embedSrc = item.src;\n\t\t\tvar iframeSt = mfp.st.iframe;\n\n\t\t\t$.each(iframeSt.patterns, function() {\n\t\t\t\tif(embedSrc.indexOf( this.index ) > -1) {\n\t\t\t\t\tif(this.id) {\n\t\t\t\t\t\tif(typeof this.id === 'string') {\n\t\t\t\t\t\t\tembedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tembedSrc = this.id.call( this, embedSrc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tembedSrc = this.src.replace('%id%', embedSrc );\n\t\t\t\t\treturn false; // break;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar dataObj = {};\n\t\t\tif(iframeSt.srcAction) {\n\t\t\t\tdataObj[iframeSt.srcAction] = embedSrc;\n\t\t\t}\n\t\t\tmfp._parseMarkup(template, dataObj, item);\n\n\t\t\tmfp.updateStatus('ready');\n\n\t\t\treturn template;\n\t\t}\n\t}\n});\n\n\n\n/*>>iframe*/\n\n/*>>gallery*/\n/**\n * Get looped index depending on number of slides\n */\nvar _getLoopedId = function(index) {\n\t\tvar numSlides = mfp.items.length;\n\t\tif(index > numSlides - 1) {\n\t\t\treturn index - numSlides;\n\t\t} else if(index < 0) {\n\t\t\treturn numSlides + index;\n\t\t}\n\t\treturn index;\n\t},\n\t_replaceCurrTotal = function(text, curr, total) {\n\t\treturn text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);\n\t};\n\n$.magnificPopup.registerModule('gallery', {\n\n\toptions: {\n\t\tenabled: false,\n\t\tarrowMarkup: '',\n\t\tpreload: [0,2],\n\t\tnavigateByImgClick: true,\n\t\tarrows: true,\n\n\t\ttPrev: 'Previous (Left arrow key)',\n\t\ttNext: 'Next (Right arrow key)',\n\t\ttCounter: '%curr% of %total%'\n\t},\n\n\tproto: {\n\t\tinitGallery: function() {\n\n\t\t\tvar gSt = mfp.st.gallery,\n\t\t\t\tns = '.mfp-gallery';\n\n\t\t\tmfp.direction = true; // true - next, false - prev\n\n\t\t\tif(!gSt || !gSt.enabled ) return false;\n\n\t\t\t_wrapClasses += ' mfp-gallery';\n\n\t\t\t_mfpOn(OPEN_EVENT+ns, function() {\n\n\t\t\t\tif(gSt.navigateByImgClick) {\n\t\t\t\t\tmfp.wrap.on('click'+ns, '.mfp-img', function() {\n\t\t\t\t\t\tif(mfp.items.length > 1) {\n\t\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t_document.on('keydown'+ns, function(e) {\n\t\t\t\t\tif (e.keyCode === 37) {\n\t\t\t\t\t\tmfp.prev();\n\t\t\t\t\t} else if (e.keyCode === 39) {\n\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t_mfpOn('UpdateStatus'+ns, function(e, data) {\n\t\t\t\tif(data.text) {\n\t\t\t\t\tdata.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) {\n\t\t\t\tvar l = mfp.items.length;\n\t\t\t\tvalues.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : '';\n\t\t\t});\n\n\t\t\t_mfpOn('BuildControls' + ns, function() {\n\t\t\t\tif(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {\n\t\t\t\t\tvar markup = gSt.arrowMarkup,\n\t\t\t\t\t\tarrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS),\n\t\t\t\t\t\tarrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS);\n\n\t\t\t\t\tarrowLeft.click(function() {\n\t\t\t\t\t\tmfp.prev();\n\t\t\t\t\t});\n\t\t\t\t\tarrowRight.click(function() {\n\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t});\n\n\t\t\t\t\tmfp.container.append(arrowLeft.add(arrowRight));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_mfpOn(CHANGE_EVENT+ns, function() {\n\t\t\t\tif(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);\n\n\t\t\t\tmfp._preloadTimeout = setTimeout(function() {\n\t\t\t\t\tmfp.preloadNearbyImages();\n\t\t\t\t\tmfp._preloadTimeout = null;\n\t\t\t\t}, 16);\n\t\t\t});\n\n\n\t\t\t_mfpOn(CLOSE_EVENT+ns, function() {\n\t\t\t\t_document.off(ns);\n\t\t\t\tmfp.wrap.off('click'+ns);\n\t\t\t\tmfp.arrowRight = mfp.arrowLeft = null;\n\t\t\t});\n\n\t\t},\n\t\tnext: function() {\n\t\t\tmfp.direction = true;\n\t\t\tmfp.index = _getLoopedId(mfp.index + 1);\n\t\t\tmfp.updateItemHTML();\n\t\t},\n\t\tprev: function() {\n\t\t\tmfp.direction = false;\n\t\t\tmfp.index = _getLoopedId(mfp.index - 1);\n\t\t\tmfp.updateItemHTML();\n\t\t},\n\t\tgoTo: function(newIndex) {\n\t\t\tmfp.direction = (newIndex >= mfp.index);\n\t\t\tmfp.index = newIndex;\n\t\t\tmfp.updateItemHTML();\n\t\t},\n\t\tpreloadNearbyImages: function() {\n\t\t\tvar p = mfp.st.gallery.preload,\n\t\t\t\tpreloadBefore = Math.min(p[0], mfp.items.length),\n\t\t\t\tpreloadAfter = Math.min(p[1], mfp.items.length),\n\t\t\t\ti;\n\n\t\t\tfor(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) {\n\t\t\t\tmfp._preloadItem(mfp.index+i);\n\t\t\t}\n\t\t\tfor(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) {\n\t\t\t\tmfp._preloadItem(mfp.index-i);\n\t\t\t}\n\t\t},\n\t\t_preloadItem: function(index) {\n\t\t\tindex = _getLoopedId(index);\n\n\t\t\tif(mfp.items[index].preloaded) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar item = mfp.items[index];\n\t\t\tif(!item.parsed) {\n\t\t\t\titem = mfp.parseEl( index );\n\t\t\t}\n\n\t\t\t_mfpTrigger('LazyLoad', item);\n\n\t\t\tif(item.type === 'image') {\n\t\t\t\titem.img = $('').on('load.mfploader', function() {\n\t\t\t\t\titem.hasSize = true;\n\t\t\t\t}).on('error.mfploader', function() {\n\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\titem.loadError = true;\n\t\t\t\t\t_mfpTrigger('LazyLoadError', item);\n\t\t\t\t}).attr('src', item.src);\n\t\t\t}\n\n\n\t\t\titem.preloaded = true;\n\t\t}\n\t}\n});\n\n/*>>gallery*/\n\n/*>>retina*/\n\nvar RETINA_NS = 'retina';\n\n$.magnificPopup.registerModule(RETINA_NS, {\n\toptions: {\n\t\treplaceSrc: function(item) {\n\t\t\treturn item.src.replace(/\\.\\w+$/, function(m) { return '@2x' + m; });\n\t\t},\n\t\tratio: 1 // Function or number. Set to 1 to disable.\n\t},\n\tproto: {\n\t\tinitRetina: function() {\n\t\t\tif(window.devicePixelRatio > 1) {\n\n\t\t\t\tvar st = mfp.st.retina,\n\t\t\t\t\tratio = st.ratio;\n\n\t\t\t\tratio = !isNaN(ratio) ? ratio : ratio();\n\n\t\t\t\tif(ratio > 1) {\n\t\t\t\t\t_mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) {\n\t\t\t\t\t\titem.img.css({\n\t\t\t\t\t\t\t'max-width': item.img[0].naturalWidth / ratio,\n\t\t\t\t\t\t\t'width': '100%'\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\t_mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) {\n\t\t\t\t\t\titem.src = st.replaceSrc(item, ratio);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n});\n\n/*>>retina*/\n _checkInstance(); }));","/**\n * bxSlider v4.2.12\n * Copyright 2013-2015 Steven Wanderski\n * Written while drinking Belgian ales and listening to jazz\n * Licensed under MIT (http://opensource.org/licenses/MIT)\n */\n\n;(function($) {\n\n var defaults = {\n\n // GENERAL\n mode: 'horizontal',\n slideSelector: '',\n infiniteLoop: true,\n hideControlOnEnd: false,\n speed: 500,\n easing: null,\n slideMargin: 0,\n startSlide: 0,\n randomStart: false,\n captions: false,\n ticker: false,\n tickerHover: false,\n adaptiveHeight: false,\n adaptiveHeightSpeed: 500,\n video: false,\n useCSS: true,\n preloadImages: 'visible',\n responsive: true,\n slideZIndex: 50,\n wrapperClass: 'bx-wrapper',\n\n // TOUCH\n touchEnabled: true,\n swipeThreshold: 50,\n oneToOneTouch: true,\n preventDefaultSwipeX: true,\n preventDefaultSwipeY: false,\n\n // ACCESSIBILITY\n ariaLive: true,\n ariaHidden: true,\n\n // KEYBOARD\n keyboardEnabled: false,\n\n // PAGER\n pager: true,\n pagerType: 'full',\n pagerShortSeparator: ' / ',\n pagerSelector: null,\n buildPager: null,\n pagerCustom: null,\n\n // CONTROLS\n controls: true,\n nextText: 'Next',\n prevText: 'Prev',\n nextSelector: null,\n prevSelector: null,\n autoControls: false,\n startText: 'Start',\n stopText: 'Stop',\n autoControlsCombine: false,\n autoControlsSelector: null,\n\n // AUTO\n auto: false,\n pause: 4000,\n autoStart: true,\n autoDirection: 'next',\n stopAutoOnClick: false,\n autoHover: false,\n autoDelay: 0,\n autoSlideForOnePage: false,\n\n // CAROUSEL\n minSlides: 1,\n maxSlides: 1,\n moveSlides: 0,\n slideWidth: 0,\n shrinkItems: false,\n\n // CALLBACKS\n onSliderLoad: function() { return true; },\n onSlideBefore: function() { return true; },\n onSlideAfter: function() { return true; },\n onSlideNext: function() { return true; },\n onSlidePrev: function() { return true; },\n onSliderResize: function() { return true; }\n };\n\n $.fn.bxSlider = function(options) {\n\n if (this.length === 0) {\n return this;\n }\n\n // support multiple elements\n if (this.length > 1) {\n this.each(function() {\n $(this).bxSlider(options);\n });\n return this;\n }\n\n // create a namespace to be used throughout the plugin\n var slider = {},\n // set a reference to our slider element\n el = this,\n // get the original window dimens (thanks a lot IE)\n windowWidth = $(window).width(),\n windowHeight = $(window).height();\n\n // Return if slider is already initialized\n if ($(el).data('bxSlider')) { return; }\n\n /**\n * ===================================================================================\n * = PRIVATE FUNCTIONS\n * ===================================================================================\n */\n\n /**\n * Initializes namespace settings to be used throughout plugin\n */\n var init = function() {\n // Return if slider is already initialized\n if ($(el).data('bxSlider')) { return; }\n // merge user-supplied options with the defaults\n slider.settings = $.extend({}, defaults, options);\n // parse slideWidth setting\n slider.settings.slideWidth = parseInt(slider.settings.slideWidth);\n // store the original children\n slider.children = el.children(slider.settings.slideSelector);\n // check if actual number of slides is less than minSlides / maxSlides\n if (slider.children.length < slider.settings.minSlides) { slider.settings.minSlides = slider.children.length; }\n if (slider.children.length < slider.settings.maxSlides) { slider.settings.maxSlides = slider.children.length; }\n // if random start, set the startSlide setting to random number\n if (slider.settings.randomStart) { slider.settings.startSlide = Math.floor(Math.random() * slider.children.length); }\n // store active slide information\n slider.active = { index: slider.settings.startSlide };\n // store if the slider is in carousel mode (displaying / moving multiple slides)\n slider.carousel = slider.settings.minSlides > 1 || slider.settings.maxSlides > 1 ? true : false;\n // if carousel, force preloadImages = 'all'\n if (slider.carousel) { slider.settings.preloadImages = 'all'; }\n // calculate the min / max width thresholds based on min / max number of slides\n // used to setup and update carousel slides dimensions\n slider.minThreshold = (slider.settings.minSlides * slider.settings.slideWidth) + ((slider.settings.minSlides - 1) * slider.settings.slideMargin);\n slider.maxThreshold = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\n // store the current state of the slider (if currently animating, working is true)\n slider.working = false;\n // initialize the controls object\n slider.controls = {};\n // initialize an auto interval\n slider.interval = null;\n // determine which property to use for transitions\n slider.animProp = slider.settings.mode === 'vertical' ? 'top' : 'left';\n // determine if hardware acceleration can be used\n slider.usingCSS = slider.settings.useCSS && slider.settings.mode !== 'fade' && (function() {\n // create our test div element\n var div = document.createElement('div'),\n // css transition properties\n props = ['WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];\n // test for each property\n for (var i = 0; i < props.length; i++) {\n if (div.style[props[i]] !== undefined) {\n slider.cssPrefix = props[i].replace('Perspective', '').toLowerCase();\n slider.animProp = '-' + slider.cssPrefix + '-transform';\n return true;\n }\n }\n return false;\n }());\n // if vertical mode always make maxSlides and minSlides equal\n if (slider.settings.mode === 'vertical') { slider.settings.maxSlides = slider.settings.minSlides; }\n // save original style data\n el.data('origStyle', el.attr('style'));\n el.children(slider.settings.slideSelector).each(function() {\n $(this).data('origStyle', $(this).attr('style'));\n });\n\n // perform all DOM / CSS modifications\n setup();\n };\n\n /**\n * Performs all DOM and CSS modifications\n */\n var setup = function() {\n var preloadSelector = slider.children.eq(slider.settings.startSlide); // set the default preload selector (visible)\n\n // wrap el in a wrapper\n el.wrap('
');\n // store a namespace reference to .bx-viewport\n slider.viewport = el.parent();\n\n // add aria-live if the setting is enabled and ticker mode is disabled\n if (slider.settings.ariaLive && !slider.settings.ticker) {\n slider.viewport.attr('aria-live', 'polite');\n }\n // add a loading div to display while images are loading\n slider.loader = $('
');\n slider.viewport.prepend(slider.loader);\n // set el to a massive width, to hold any needed slides\n // also strip any margin and padding from el\n el.css({\n width: slider.settings.mode === 'horizontal' ? (slider.children.length * 1000 + 215) + '%' : 'auto',\n position: 'relative'\n });\n // if using CSS, add the easing property\n if (slider.usingCSS && slider.settings.easing) {\n el.css('-' + slider.cssPrefix + '-transition-timing-function', slider.settings.easing);\n // if not using CSS and no easing value was supplied, use the default JS animation easing (swing)\n } else if (!slider.settings.easing) {\n slider.settings.easing = 'swing';\n }\n // make modifications to the viewport (.bx-viewport)\n slider.viewport.css({\n width: '100%',\n overflow: 'hidden',\n position: 'relative'\n });\n slider.viewport.parent().css({\n maxWidth: getViewportMaxWidth()\n });\n // apply css to all slider children\n slider.children.css({\n float: slider.settings.mode === 'horizontal' ? 'left' : 'none',\n listStyle: 'none',\n position: 'relative'\n });\n // apply the calculated width after the float is applied to prevent scrollbar interference\n slider.children.css('width', getSlideWidth());\n // if slideMargin is supplied, add the css\n if (slider.settings.mode === 'horizontal' && slider.settings.slideMargin > 0) { slider.children.css('marginRight', slider.settings.slideMargin); }\n if (slider.settings.mode === 'vertical' && slider.settings.slideMargin > 0) { slider.children.css('marginBottom', slider.settings.slideMargin); }\n // if \"fade\" mode, add positioning and z-index CSS\n if (slider.settings.mode === 'fade') {\n slider.children.css({\n position: 'absolute',\n zIndex: 0,\n display: 'none'\n });\n // prepare the z-index on the showing element\n slider.children.eq(slider.settings.startSlide).css({zIndex: slider.settings.slideZIndex, display: 'block'});\n }\n // create an element to contain all slider controls (pager, start / stop, etc)\n slider.controls.el = $('
');\n // if captions are requested, add them\n if (slider.settings.captions) { appendCaptions(); }\n // check if startSlide is last slide\n slider.active.last = slider.settings.startSlide === getPagerQty() - 1;\n // if video is true, set up the fitVids plugin\n if (slider.settings.video) { el.fitVids(); }\n if (slider.settings.preloadImages === 'all' || slider.settings.ticker) { preloadSelector = slider.children; }\n // only check for control addition if not in \"ticker\" mode\n if (!slider.settings.ticker) {\n // if controls are requested, add them\n if (slider.settings.controls) { appendControls(); }\n // if auto is true, and auto controls are requested, add them\n if (slider.settings.auto && slider.settings.autoControls) { appendControlsAuto(); }\n // if pager is requested, add it\n if (slider.settings.pager) { appendPager(); }\n // if any control option is requested, add the controls wrapper\n if (slider.settings.controls || slider.settings.autoControls || slider.settings.pager) { slider.viewport.after(slider.controls.el); }\n // if ticker mode, do not allow a pager\n } else {\n slider.settings.pager = false;\n }\n loadElements(preloadSelector, start);\n };\n\n var loadElements = function(selector, callback) {\n var total = selector.find('img:not([src=\"\"]), iframe').length,\n count = 0;\n if (total === 0) {\n callback();\n return;\n }\n selector.find('img:not([src=\"\"]), iframe').each(function() {\n $(this).one('load error', function() {\n if (++count === total) { callback(); }\n }).each(function() {\n if (this.complete) { $(this).trigger('load'); }\n });\n });\n };\n\n /**\n * Start the slider\n */\n var start = function() {\n // if infinite loop, prepare additional slides\n if (slider.settings.infiniteLoop && slider.settings.mode !== 'fade' && !slider.settings.ticker) {\n var slice = slider.settings.mode === 'vertical' ? slider.settings.minSlides : slider.settings.maxSlides,\n sliceAppend = slider.children.slice(0, slice).clone(true).addClass('bx-clone'),\n slicePrepend = slider.children.slice(-slice).clone(true).addClass('bx-clone');\n if (slider.settings.ariaHidden) {\n sliceAppend.attr('aria-hidden', true);\n slicePrepend.attr('aria-hidden', true);\n }\n el.append(sliceAppend).prepend(slicePrepend);\n }\n // remove the loading DOM element\n slider.loader.remove();\n // set the left / top position of \"el\"\n setSlidePosition();\n // if \"vertical\" mode, always use adaptiveHeight to prevent odd behavior\n if (slider.settings.mode === 'vertical') { slider.settings.adaptiveHeight = true; }\n // set the viewport height\n slider.viewport.height(getViewportHeight());\n // make sure everything is positioned just right (same as a window resize)\n el.redrawSlider();\n // onSliderLoad callback\n slider.settings.onSliderLoad.call(el, slider.active.index);\n // slider has been fully initialized\n slider.initialized = true;\n // bind the resize call to the window\n if (slider.settings.responsive) { $(window).bind('resize', resizeWindow); }\n // if auto is true and has more than 1 page, start the show\n if (slider.settings.auto && slider.settings.autoStart && (getPagerQty() > 1 || slider.settings.autoSlideForOnePage)) { initAuto(); }\n // if ticker is true, start the ticker\n if (slider.settings.ticker) { initTicker(); }\n // if pager is requested, make the appropriate pager link active\n if (slider.settings.pager) { updatePagerActive(slider.settings.startSlide); }\n // check for any updates to the controls (like hideControlOnEnd updates)\n if (slider.settings.controls) { updateDirectionControls(); }\n // if touchEnabled is true, setup the touch events\n if (slider.settings.touchEnabled && !slider.settings.ticker) { initTouch(); }\n // if keyboardEnabled is true, setup the keyboard events\n if (slider.settings.keyboardEnabled && !slider.settings.ticker) {\n $(document).keydown(keyPress);\n }\n };\n\n /**\n * Returns the calculated height of the viewport, used to determine either adaptiveHeight or the maxHeight value\n */\n var getViewportHeight = function() {\n var height = 0;\n // first determine which children (slides) should be used in our height calculation\n var children = $();\n // if mode is not \"vertical\" and adaptiveHeight is false, include all children\n if (slider.settings.mode !== 'vertical' && !slider.settings.adaptiveHeight) {\n children = slider.children;\n } else {\n // if not carousel, return the single active child\n if (!slider.carousel) {\n children = slider.children.eq(slider.active.index);\n // if carousel, return a slice of children\n } else {\n // get the individual slide index\n var currentIndex = slider.settings.moveSlides === 1 ? slider.active.index : slider.active.index * getMoveBy();\n // add the current slide to the children\n children = slider.children.eq(currentIndex);\n // cycle through the remaining \"showing\" slides\n for (i = 1; i <= slider.settings.maxSlides - 1; i++) {\n // if looped back to the start\n if (currentIndex + i >= slider.children.length) {\n children = children.add(slider.children.eq(i - 1));\n } else {\n children = children.add(slider.children.eq(currentIndex + i));\n }\n }\n }\n }\n // if \"vertical\" mode, calculate the sum of the heights of the children\n if (slider.settings.mode === 'vertical') {\n children.each(function(index) {\n height += $(this).outerHeight();\n });\n // add user-supplied margins\n if (slider.settings.slideMargin > 0) {\n height += slider.settings.slideMargin * (slider.settings.minSlides - 1);\n }\n // if not \"vertical\" mode, calculate the max height of the children\n } else {\n height = Math.max.apply(Math, children.map(function() {\n return $(this).outerHeight(false);\n }).get());\n }\n\n if (slider.viewport.css('box-sizing') === 'border-box') {\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom')) +\n parseFloat(slider.viewport.css('border-top-width')) + parseFloat(slider.viewport.css('border-bottom-width'));\n } else if (slider.viewport.css('box-sizing') === 'padding-box') {\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom'));\n }\n\n return height;\n };\n\n /**\n * Returns the calculated width to be used for the outer wrapper / viewport\n */\n var getViewportMaxWidth = function() {\n var width = '100%';\n if (slider.settings.slideWidth > 0) {\n if (slider.settings.mode === 'horizontal') {\n width = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\n } else {\n width = slider.settings.slideWidth;\n }\n }\n return width;\n };\n\n /**\n * Returns the calculated width to be applied to each slide\n */\n var getSlideWidth = function() {\n var newElWidth = slider.settings.slideWidth, // start with any user-supplied slide width\n wrapWidth = slider.viewport.width(); // get the current viewport width\n // if slide width was not supplied, or is larger than the viewport use the viewport width\n if (slider.settings.slideWidth === 0 ||\n (slider.settings.slideWidth > wrapWidth && !slider.carousel) ||\n slider.settings.mode === 'vertical') {\n newElWidth = wrapWidth;\n // if carousel, use the thresholds to determine the width\n } else if (slider.settings.maxSlides > 1 && slider.settings.mode === 'horizontal') {\n if (wrapWidth > slider.maxThreshold) {\n return newElWidth;\n } else if (wrapWidth < slider.minThreshold) {\n newElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.minSlides - 1))) / slider.settings.minSlides;\n } else if (slider.settings.shrinkItems) {\n newElWidth = Math.floor((wrapWidth + slider.settings.slideMargin) / (Math.ceil((wrapWidth + slider.settings.slideMargin) / (newElWidth + slider.settings.slideMargin))) - slider.settings.slideMargin);\n }\n }\n return newElWidth;\n };\n\n /**\n * Returns the number of slides currently visible in the viewport (includes partially visible slides)\n */\n var getNumberSlidesShowing = function() {\n var slidesShowing = 1,\n childWidth = null;\n if (slider.settings.mode === 'horizontal' && slider.settings.slideWidth > 0) {\n // if viewport is smaller than minThreshold, return minSlides\n if (slider.viewport.width() < slider.minThreshold) {\n slidesShowing = slider.settings.minSlides;\n // if viewport is larger than maxThreshold, return maxSlides\n } else if (slider.viewport.width() > slider.maxThreshold) {\n slidesShowing = slider.settings.maxSlides;\n // if viewport is between min / max thresholds, divide viewport width by first child width\n } else {\n childWidth = slider.children.first().width() + slider.settings.slideMargin;\n slidesShowing = Math.floor((slider.viewport.width() +\n slider.settings.slideMargin) / childWidth);\n }\n // if \"vertical\" mode, slides showing will always be minSlides\n } else if (slider.settings.mode === 'vertical') {\n slidesShowing = slider.settings.minSlides;\n }\n return slidesShowing;\n };\n\n /**\n * Returns the number of pages (one full viewport of slides is one \"page\")\n */\n var getPagerQty = function() {\n var pagerQty = 0,\n breakPoint = 0,\n counter = 0;\n // if moveSlides is specified by the user\n if (slider.settings.moveSlides > 0) {\n if (slider.settings.infiniteLoop) {\n pagerQty = Math.ceil(slider.children.length / getMoveBy());\n } else {\n // when breakpoint goes above children length, counter is the number of pages\n while (breakPoint < slider.children.length) {\n ++pagerQty;\n breakPoint = counter + getNumberSlidesShowing();\n counter += slider.settings.moveSlides <= getNumberSlidesShowing() ? slider.settings.moveSlides : getNumberSlidesShowing();\n }\n }\n // if moveSlides is 0 (auto) divide children length by sides showing, then round up\n } else {\n pagerQty = Math.ceil(slider.children.length / getNumberSlidesShowing());\n }\n return pagerQty;\n };\n\n /**\n * Returns the number of individual slides by which to shift the slider\n */\n var getMoveBy = function() {\n // if moveSlides was set by the user and moveSlides is less than number of slides showing\n if (slider.settings.moveSlides > 0 && slider.settings.moveSlides <= getNumberSlidesShowing()) {\n return slider.settings.moveSlides;\n }\n // if moveSlides is 0 (auto)\n return getNumberSlidesShowing();\n };\n\n /**\n * Sets the slider's (el) left or top position\n */\n var setSlidePosition = function() {\n var position, lastChild, lastShowingIndex;\n // if last slide, not infinite loop, and number of children is larger than specified maxSlides\n if (slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop) {\n if (slider.settings.mode === 'horizontal') {\n // get the last child's position\n lastChild = slider.children.last();\n position = lastChild.position();\n // set the left position\n setPositionProperty(-(position.left - (slider.viewport.width() - lastChild.outerWidth())), 'reset', 0);\n } else if (slider.settings.mode === 'vertical') {\n // get the last showing index's position\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\n position = slider.children.eq(lastShowingIndex).position();\n // set the top position\n setPositionProperty(-position.top, 'reset', 0);\n }\n // if not last slide\n } else {\n // get the position of the first showing slide\n position = slider.children.eq(slider.active.index * getMoveBy()).position();\n // check for last slide\n if (slider.active.index === getPagerQty() - 1) { slider.active.last = true; }\n // set the respective position\n if (position !== undefined) {\n if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }\n else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }\n }\n }\n };\n\n /**\n * Sets the el's animating property position (which in turn will sometimes animate el).\n * If using CSS, sets the transform property. If not using CSS, sets the top / left property.\n *\n * @param value (int)\n * - the animating property's value\n *\n * @param type (string) 'slide', 'reset', 'ticker'\n * - the type of instance for which the function is being\n *\n * @param duration (int)\n * - the amount of time (in ms) the transition should occupy\n *\n * @param params (array) optional\n * - an optional parameter containing any variables that need to be passed in\n */\n var setPositionProperty = function(value, type, duration, params) {\n var animateObj, propValue;\n // use CSS transform\n if (slider.usingCSS) {\n // determine the translate3d value\n propValue = slider.settings.mode === 'vertical' ? 'translate3d(0, ' + value + 'px, 0)' : 'translate3d(' + value + 'px, 0, 0)';\n // add the CSS transition-duration\n el.css('-' + slider.cssPrefix + '-transition-duration', duration / 1000 + 's');\n if (type === 'slide') {\n // set the property value\n el.css(slider.animProp, propValue);\n if (duration !== 0) {\n // bind a callback method - executes when CSS transition completes\n el.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(e) {\n //make sure it's the correct one\n if (!$(e.target).is(el)) { return; }\n // unbind the callback\n el.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\n updateAfterSlideTransition();\n });\n } else { //duration = 0\n updateAfterSlideTransition();\n }\n } else if (type === 'reset') {\n el.css(slider.animProp, propValue);\n } else if (type === 'ticker') {\n // make the transition use 'linear'\n el.css('-' + slider.cssPrefix + '-transition-timing-function', 'linear');\n el.css(slider.animProp, propValue);\n if (duration !== 0) {\n el.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(e) {\n //make sure it's the correct one\n if (!$(e.target).is(el)) { return; }\n // unbind the callback\n el.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\n // reset the position\n setPositionProperty(params.resetValue, 'reset', 0);\n // start the loop again\n tickerLoop();\n });\n } else { //duration = 0\n setPositionProperty(params.resetValue, 'reset', 0);\n tickerLoop();\n }\n }\n // use JS animate\n } else {\n animateObj = {};\n animateObj[slider.animProp] = value;\n if (type === 'slide') {\n el.animate(animateObj, duration, slider.settings.easing, function() {\n updateAfterSlideTransition();\n });\n } else if (type === 'reset') {\n el.css(slider.animProp, value);\n } else if (type === 'ticker') {\n el.animate(animateObj, duration, 'linear', function() {\n setPositionProperty(params.resetValue, 'reset', 0);\n // run the recursive loop after animation\n tickerLoop();\n });\n }\n }\n };\n\n /**\n * Populates the pager with proper amount of pages\n */\n var populatePager = function() {\n var pagerHtml = '',\n linkContent = '',\n pagerQty = getPagerQty();\n // loop through each pager item\n for (var i = 0; i < pagerQty; i++) {\n linkContent = '';\n // if a buildPager function is supplied, use it to get pager link value, else use index + 1\n if (slider.settings.buildPager && $.isFunction(slider.settings.buildPager) || slider.settings.pagerCustom) {\n linkContent = slider.settings.buildPager(i);\n slider.pagerEl.addClass('bx-custom-pager');\n } else {\n linkContent = i + 1;\n slider.pagerEl.addClass('bx-default-pager');\n }\n // var linkContent = slider.settings.buildPager && $.isFunction(slider.settings.buildPager) ? slider.settings.buildPager(i) : i + 1;\n // add the markup to the string\n pagerHtml += '';\n }\n // populate the pager element with pager links\n slider.pagerEl.html(pagerHtml);\n };\n\n /**\n * Appends the pager to the controls element\n */\n var appendPager = function() {\n if (!slider.settings.pagerCustom) {\n // create the pager DOM element\n slider.pagerEl = $('
');\n // if a pager selector was supplied, populate it with the pager\n if (slider.settings.pagerSelector) {\n $(slider.settings.pagerSelector).html(slider.pagerEl);\n // if no pager selector was supplied, add it after the wrapper\n } else {\n slider.controls.el.addClass('bx-has-pager').append(slider.pagerEl);\n }\n // populate the pager\n populatePager();\n } else {\n slider.pagerEl = $(slider.settings.pagerCustom);\n }\n // assign the pager click binding\n slider.pagerEl.on('click touchend', 'a', clickPagerBind);\n };\n\n /**\n * Appends prev / next controls to the controls element\n */\n var appendControls = function() {\n slider.controls.next = $('' + slider.settings.nextText + '');\n slider.controls.prev = $('' + slider.settings.prevText + '');\n // bind click actions to the controls\n slider.controls.next.bind('click touchend', clickNextBind);\n slider.controls.prev.bind('click touchend', clickPrevBind);\n // if nextSelector was supplied, populate it\n if (slider.settings.nextSelector) {\n $(slider.settings.nextSelector).append(slider.controls.next);\n }\n // if prevSelector was supplied, populate it\n if (slider.settings.prevSelector) {\n $(slider.settings.prevSelector).append(slider.controls.prev);\n }\n // if no custom selectors were supplied\n if (!slider.settings.nextSelector && !slider.settings.prevSelector) {\n // add the controls to the DOM\n slider.controls.directionEl = $('
');\n // add the control elements to the directionEl\n slider.controls.directionEl.append(slider.controls.prev).append(slider.controls.next);\n // slider.viewport.append(slider.controls.directionEl);\n slider.controls.el.addClass('bx-has-controls-direction').append(slider.controls.directionEl);\n }\n };\n\n /**\n * Appends start / stop auto controls to the controls element\n */\n var appendControlsAuto = function() {\n slider.controls.start = $('');\n slider.controls.stop = $('');\n // add the controls to the DOM\n slider.controls.autoEl = $('
');\n // bind click actions to the controls\n slider.controls.autoEl.on('click', '.bx-start', clickStartBind);\n slider.controls.autoEl.on('click', '.bx-stop', clickStopBind);\n // if autoControlsCombine, insert only the \"start\" control\n if (slider.settings.autoControlsCombine) {\n slider.controls.autoEl.append(slider.controls.start);\n // if autoControlsCombine is false, insert both controls\n } else {\n slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop);\n }\n // if auto controls selector was supplied, populate it with the controls\n if (slider.settings.autoControlsSelector) {\n $(slider.settings.autoControlsSelector).html(slider.controls.autoEl);\n // if auto controls selector was not supplied, add it after the wrapper\n } else {\n slider.controls.el.addClass('bx-has-controls-auto').append(slider.controls.autoEl);\n }\n // update the auto controls\n updateAutoControls(slider.settings.autoStart ? 'stop' : 'start');\n };\n\n /**\n * Appends image captions to the DOM\n */\n var appendCaptions = function() {\n // cycle through each child\n slider.children.each(function(index) {\n // get the image title attribute\n var title = $(this).find('img:first').attr('title');\n // append the caption\n if (title !== undefined && ('' + title).length) {\n $(this).append('
' + title + '
');\n }\n });\n };\n\n /**\n * Click next binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickNextBind = function(e) {\n e.preventDefault();\n if (slider.controls.el.hasClass('disabled')) { return; }\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\n el.goToNextSlide();\n };\n\n /**\n * Click prev binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickPrevBind = function(e) {\n e.preventDefault();\n if (slider.controls.el.hasClass('disabled')) { return; }\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\n el.goToPrevSlide();\n };\n\n /**\n * Click start binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickStartBind = function(e) {\n el.startAuto();\n e.preventDefault();\n };\n\n /**\n * Click stop binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickStopBind = function(e) {\n el.stopAuto();\n e.preventDefault();\n };\n\n /**\n * Click pager binding\n *\n * @param e (event)\n * - DOM event object\n */\n var clickPagerBind = function(e) {\n var pagerLink, pagerIndex;\n e.preventDefault();\n if (slider.controls.el.hasClass('disabled')) {\n return;\n }\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\n pagerLink = $(e.currentTarget);\n if (pagerLink.attr('data-slide-index') !== undefined) {\n pagerIndex = parseInt(pagerLink.attr('data-slide-index'));\n // if clicked pager link is not active, continue with the goToSlide call\n if (pagerIndex !== slider.active.index) { el.goToSlide(pagerIndex); }\n }\n };\n\n /**\n * Updates the pager links with an active class\n *\n * @param slideIndex (int)\n * - index of slide to make active\n */\n var updatePagerActive = function(slideIndex) {\n // if \"short\" pager type\n var len = slider.children.length; // nb of children\n if (slider.settings.pagerType === 'short') {\n if (slider.settings.maxSlides > 1) {\n len = Math.ceil(slider.children.length / slider.settings.maxSlides);\n }\n slider.pagerEl.html((slideIndex + 1) + slider.settings.pagerShortSeparator + len);\n return;\n }\n // remove all pager active classes\n slider.pagerEl.find('a').removeClass('active');\n // apply the active class for all pagers\n slider.pagerEl.each(function(i, el) { $(el).find('a').eq(slideIndex).addClass('active'); });\n };\n\n /**\n * Performs needed actions after a slide transition\n */\n var updateAfterSlideTransition = function() {\n // if infinite loop is true\n if (slider.settings.infiniteLoop) {\n var position = '';\n // first slide\n if (slider.active.index === 0) {\n // set the new position\n position = slider.children.eq(0).position();\n // carousel, last slide\n } else if (slider.active.index === getPagerQty() - 1 && slider.carousel) {\n position = slider.children.eq((getPagerQty() - 1) * getMoveBy()).position();\n // last slide\n } else if (slider.active.index === slider.children.length - 1) {\n position = slider.children.eq(slider.children.length - 1).position();\n }\n if (position) {\n if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }\n else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }\n }\n }\n // declare that the transition is complete\n slider.working = false;\n // onSlideAfter callback\n slider.settings.onSlideAfter.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n };\n\n /**\n * Updates the auto controls state (either active, or combined switch)\n *\n * @param state (string) \"start\", \"stop\"\n * - the new state of the auto show\n */\n var updateAutoControls = function(state) {\n // if autoControlsCombine is true, replace the current control with the new state\n if (slider.settings.autoControlsCombine) {\n slider.controls.autoEl.html(slider.controls[state]);\n // if autoControlsCombine is false, apply the \"active\" class to the appropriate control\n } else {\n slider.controls.autoEl.find('a').removeClass('active');\n slider.controls.autoEl.find('a:not(.bx-' + state + ')').addClass('active');\n }\n };\n\n /**\n * Updates the direction controls (checks if either should be hidden)\n */\n var updateDirectionControls = function() {\n if (getPagerQty() === 1) {\n slider.controls.prev.addClass('disabled');\n slider.controls.next.addClass('disabled');\n } else if (!slider.settings.infiniteLoop && slider.settings.hideControlOnEnd) {\n // if first slide\n if (slider.active.index === 0) {\n slider.controls.prev.addClass('disabled');\n slider.controls.next.removeClass('disabled');\n // if last slide\n } else if (slider.active.index === getPagerQty() - 1) {\n slider.controls.next.addClass('disabled');\n slider.controls.prev.removeClass('disabled');\n // if any slide in the middle\n } else {\n slider.controls.prev.removeClass('disabled');\n slider.controls.next.removeClass('disabled');\n }\n }\n };\n\n /**\n * Initializes the auto process\n */\n var initAuto = function() {\n // if autoDelay was supplied, launch the auto show using a setTimeout() call\n if (slider.settings.autoDelay > 0) {\n var timeout = setTimeout(el.startAuto, slider.settings.autoDelay);\n // if autoDelay was not supplied, start the auto show normally\n } else {\n el.startAuto();\n\n //add focus and blur events to ensure its running if timeout gets paused\n $(window).focus(function() {\n el.startAuto();\n }).blur(function() {\n el.stopAuto();\n });\n }\n // if autoHover is requested\n if (slider.settings.autoHover) {\n // on el hover\n el.hover(function() {\n // if the auto show is currently playing (has an active interval)\n if (slider.interval) {\n // stop the auto show and pass true argument which will prevent control update\n el.stopAuto(true);\n // create a new autoPaused value which will be used by the relative \"mouseout\" event\n slider.autoPaused = true;\n }\n }, function() {\n // if the autoPaused value was created be the prior \"mouseover\" event\n if (slider.autoPaused) {\n // start the auto show and pass true argument which will prevent control update\n el.startAuto(true);\n // reset the autoPaused value\n slider.autoPaused = null;\n }\n });\n }\n };\n\n /**\n * Initializes the ticker process\n */\n var initTicker = function() {\n var startPosition = 0,\n position, transform, value, idx, ratio, property, newSpeed, totalDimens;\n // if autoDirection is \"next\", append a clone of the entire slider\n if (slider.settings.autoDirection === 'next') {\n el.append(slider.children.clone().addClass('bx-clone'));\n // if autoDirection is \"prev\", prepend a clone of the entire slider, and set the left position\n } else {\n el.prepend(slider.children.clone().addClass('bx-clone'));\n position = slider.children.first().position();\n startPosition = slider.settings.mode === 'horizontal' ? -position.left : -position.top;\n }\n setPositionProperty(startPosition, 'reset', 0);\n // do not allow controls in ticker mode\n slider.settings.pager = false;\n slider.settings.controls = false;\n slider.settings.autoControls = false;\n // if autoHover is requested\n if (slider.settings.tickerHover) {\n if (slider.usingCSS) {\n idx = slider.settings.mode === 'horizontal' ? 4 : 5;\n slider.viewport.hover(function() {\n transform = el.css('-' + slider.cssPrefix + '-transform');\n value = parseFloat(transform.split(',')[idx]);\n setPositionProperty(value, 'reset', 0);\n }, function() {\n totalDimens = 0;\n slider.children.each(function(index) {\n totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\n });\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\n ratio = slider.settings.speed / totalDimens;\n // determine which property to use\n property = slider.settings.mode === 'horizontal' ? 'left' : 'top';\n // calculate the new speed\n newSpeed = ratio * (totalDimens - (Math.abs(parseInt(value))));\n tickerLoop(newSpeed);\n });\n } else {\n // on el hover\n slider.viewport.hover(function() {\n el.stop();\n }, function() {\n // calculate the total width of children (used to calculate the speed ratio)\n totalDimens = 0;\n slider.children.each(function(index) {\n totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\n });\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\n ratio = slider.settings.speed / totalDimens;\n // determine which property to use\n property = slider.settings.mode === 'horizontal' ? 'left' : 'top';\n // calculate the new speed\n newSpeed = ratio * (totalDimens - (Math.abs(parseInt(el.css(property)))));\n tickerLoop(newSpeed);\n });\n }\n }\n // start the ticker loop\n tickerLoop();\n };\n\n /**\n * Runs a continuous loop, news ticker-style\n */\n var tickerLoop = function(resumeSpeed) {\n var speed = resumeSpeed ? resumeSpeed : slider.settings.speed,\n position = {left: 0, top: 0},\n reset = {left: 0, top: 0},\n animateProperty, resetValue, params;\n\n // if \"next\" animate left position to last child, then reset left to 0\n if (slider.settings.autoDirection === 'next') {\n position = el.find('.bx-clone').first().position();\n // if \"prev\" animate left position to 0, then reset left to first non-clone child\n } else {\n reset = slider.children.first().position();\n }\n animateProperty = slider.settings.mode === 'horizontal' ? -position.left : -position.top;\n resetValue = slider.settings.mode === 'horizontal' ? -reset.left : -reset.top;\n params = {resetValue: resetValue};\n setPositionProperty(animateProperty, 'ticker', speed, params);\n };\n\n /**\n * Check if el is on screen\n */\n var isOnScreen = function(el) {\n var win = $(window),\n viewport = {\n top: win.scrollTop(),\n left: win.scrollLeft()\n },\n bounds = el.offset();\n\n viewport.right = viewport.left + win.width();\n viewport.bottom = viewport.top + win.height();\n bounds.right = bounds.left + el.outerWidth();\n bounds.bottom = bounds.top + el.outerHeight();\n\n return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));\n };\n\n /**\n * Initializes keyboard events\n */\n var keyPress = function(e) {\n var activeElementTag = document.activeElement.tagName.toLowerCase(),\n tagFilters = 'input|textarea',\n p = new RegExp(activeElementTag,['i']),\n result = p.exec(tagFilters);\n\n if (result == null && isOnScreen(el)) {\n if (e.keyCode === 39) {\n clickNextBind(e);\n return false;\n } else if (e.keyCode === 37) {\n clickPrevBind(e);\n return false;\n }\n }\n };\n\n /**\n * Initializes touch events\n */\n var initTouch = function() {\n // initialize object to contain all touch values\n slider.touch = {\n start: {x: 0, y: 0},\n end: {x: 0, y: 0}\n };\n slider.viewport.bind('touchstart MSPointerDown pointerdown', onTouchStart);\n\n //for browsers that have implemented pointer events and fire a click after\n //every pointerup regardless of whether pointerup is on same screen location as pointerdown or not\n slider.viewport.on('click', '.bxslider a', function(e) {\n if (slider.viewport.hasClass('click-disabled')) {\n e.preventDefault();\n slider.viewport.removeClass('click-disabled');\n }\n });\n };\n\n /**\n * Event handler for \"touchstart\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchStart = function(e) {\n //disable slider controls while user is interacting with slides to avoid slider freeze that happens on touch devices when a slide swipe happens immediately after interacting with slider controls\n slider.controls.el.addClass('disabled');\n\n if (slider.working) {\n e.preventDefault();\n slider.controls.el.removeClass('disabled');\n } else {\n // record the original position when touch starts\n slider.touch.originalPos = el.position();\n var orig = e.originalEvent,\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig];\n // record the starting touch x, y coordinates\n slider.touch.start.x = touchPoints[0].pageX;\n slider.touch.start.y = touchPoints[0].pageY;\n\n if (slider.viewport.get(0).setPointerCapture) {\n slider.pointerId = orig.pointerId;\n slider.viewport.get(0).setPointerCapture(slider.pointerId);\n }\n // bind a \"touchmove\" event to the viewport\n slider.viewport.bind('touchmove MSPointerMove pointermove', onTouchMove);\n // bind a \"touchend\" event to the viewport\n slider.viewport.bind('touchend MSPointerUp pointerup', onTouchEnd);\n slider.viewport.bind('MSPointerCancel pointercancel', onPointerCancel);\n }\n };\n\n /**\n * Cancel Pointer for Windows Phone\n *\n * @param e (event)\n * - DOM event object\n */\n var onPointerCancel = function(e) {\n /* onPointerCancel handler is needed to deal with situations when a touchend\n doesn't fire after a touchstart (this happens on windows phones only) */\n setPositionProperty(slider.touch.originalPos.left, 'reset', 0);\n\n //remove handlers\n slider.controls.el.removeClass('disabled');\n slider.viewport.unbind('MSPointerCancel pointercancel', onPointerCancel);\n slider.viewport.unbind('touchmove MSPointerMove pointermove', onTouchMove);\n slider.viewport.unbind('touchend MSPointerUp pointerup', onTouchEnd);\n if (slider.viewport.get(0).releasePointerCapture) {\n slider.viewport.get(0).releasePointerCapture(slider.pointerId);\n }\n };\n\n /**\n * Event handler for \"touchmove\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchMove = function(e) {\n var orig = e.originalEvent,\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],\n // if scrolling on y axis, do not prevent default\n xMovement = Math.abs(touchPoints[0].pageX - slider.touch.start.x),\n yMovement = Math.abs(touchPoints[0].pageY - slider.touch.start.y),\n value = 0,\n change = 0;\n\n // x axis swipe\n if ((xMovement * 3) > yMovement && slider.settings.preventDefaultSwipeX) {\n e.preventDefault();\n // y axis swipe\n } else if ((yMovement * 3) > xMovement && slider.settings.preventDefaultSwipeY) {\n e.preventDefault();\n }\n if (slider.settings.mode !== 'fade' && slider.settings.oneToOneTouch) {\n // if horizontal, drag along x axis\n if (slider.settings.mode === 'horizontal') {\n change = touchPoints[0].pageX - slider.touch.start.x;\n value = slider.touch.originalPos.left + change;\n // if vertical, drag along y axis\n } else {\n change = touchPoints[0].pageY - slider.touch.start.y;\n value = slider.touch.originalPos.top + change;\n }\n setPositionProperty(value, 'reset', 0);\n }\n };\n\n /**\n * Event handler for \"touchend\"\n *\n * @param e (event)\n * - DOM event object\n */\n var onTouchEnd = function(e) {\n slider.viewport.unbind('touchmove MSPointerMove pointermove', onTouchMove);\n //enable slider controls as soon as user stops interacing with slides\n slider.controls.el.removeClass('disabled');\n var orig = e.originalEvent,\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],\n value = 0,\n distance = 0;\n // record end x, y positions\n slider.touch.end.x = touchPoints[0].pageX;\n slider.touch.end.y = touchPoints[0].pageY;\n // if fade mode, check if absolute x distance clears the threshold\n if (slider.settings.mode === 'fade') {\n distance = Math.abs(slider.touch.start.x - slider.touch.end.x);\n if (distance >= slider.settings.swipeThreshold) {\n if (slider.touch.start.x > slider.touch.end.x) {\n el.goToNextSlide();\n } else {\n el.goToPrevSlide();\n }\n el.stopAuto();\n }\n // not fade mode\n } else {\n // calculate distance and el's animate property\n if (slider.settings.mode === 'horizontal') {\n distance = slider.touch.end.x - slider.touch.start.x;\n value = slider.touch.originalPos.left;\n } else {\n distance = slider.touch.end.y - slider.touch.start.y;\n value = slider.touch.originalPos.top;\n }\n // if not infinite loop and first / last slide, do not attempt a slide transition\n if (!slider.settings.infiniteLoop && ((slider.active.index === 0 && distance > 0) || (slider.active.last && distance < 0))) {\n setPositionProperty(value, 'reset', 200);\n } else {\n // check if distance clears threshold\n if (Math.abs(distance) >= slider.settings.swipeThreshold) {\n if (distance < 0) {\n el.goToNextSlide();\n } else {\n el.goToPrevSlide();\n }\n el.stopAuto();\n } else {\n // el.animate(property, 200);\n setPositionProperty(value, 'reset', 200);\n }\n }\n }\n slider.viewport.unbind('touchend MSPointerUp pointerup', onTouchEnd);\n if (slider.viewport.get(0).releasePointerCapture) {\n slider.viewport.get(0).releasePointerCapture(slider.pointerId);\n }\n };\n\n /**\n * Window resize event callback\n */\n var resizeWindow = function(e) {\n // don't do anything if slider isn't initialized.\n if (!slider.initialized) { return; }\n // Delay if slider working.\n if (slider.working) {\n window.setTimeout(resizeWindow, 10);\n } else {\n // get the new window dimens (again, thank you IE)\n var windowWidthNew = $(window).width(),\n windowHeightNew = $(window).height();\n // make sure that it is a true window resize\n // *we must check this because our dinosaur friend IE fires a window resize event when certain DOM elements\n // are resized. Can you just die already?*\n if (windowWidth !== windowWidthNew || windowHeight !== windowHeightNew) {\n // set the new window dimens\n windowWidth = windowWidthNew;\n windowHeight = windowHeightNew;\n // update all dynamic elements\n el.redrawSlider();\n // Call user resize handler\n slider.settings.onSliderResize.call(el, slider.active.index);\n }\n }\n };\n\n /**\n * Adds an aria-hidden=true attribute to each element\n *\n * @param startVisibleIndex (int)\n * - the first visible element's index\n */\n var applyAriaHiddenAttributes = function(startVisibleIndex) {\n var numberOfSlidesShowing = getNumberSlidesShowing();\n // only apply attributes if the setting is enabled and not in ticker mode\n if (slider.settings.ariaHidden && !slider.settings.ticker) {\n // add aria-hidden=true to all elements\n slider.children.attr('aria-hidden', 'true');\n // get the visible elements and change to aria-hidden=false\n slider.children.slice(startVisibleIndex, startVisibleIndex + numberOfSlidesShowing).attr('aria-hidden', 'false');\n }\n };\n\n /**\n * Returns index according to present page range\n *\n * @param slideOndex (int)\n * - the desired slide index\n */\n var setSlideIndex = function(slideIndex) {\n if (slideIndex < 0) {\n if (slider.settings.infiniteLoop) {\n return getPagerQty() - 1;\n }else {\n //we don't go to undefined slides\n return slider.active.index;\n }\n // if slideIndex is greater than children length, set active index to 0 (this happens during infinite loop)\n } else if (slideIndex >= getPagerQty()) {\n if (slider.settings.infiniteLoop) {\n return 0;\n } else {\n //we don't move to undefined pages\n return slider.active.index;\n }\n // set active index to requested slide\n } else {\n return slideIndex;\n }\n };\n\n /**\n * ===================================================================================\n * = PUBLIC FUNCTIONS\n * ===================================================================================\n */\n\n /**\n * Performs slide transition to the specified slide\n *\n * @param slideIndex (int)\n * - the destination slide's index (zero-based)\n *\n * @param direction (string)\n * - INTERNAL USE ONLY - the direction of travel (\"prev\" / \"next\")\n */\n el.goToSlide = function(slideIndex, direction) {\n // onSlideBefore, onSlideNext, onSlidePrev callbacks\n // Allow transition canceling based on returned value\n var performTransition = true,\n moveBy = 0,\n position = {left: 0, top: 0},\n lastChild = null,\n lastShowingIndex, eq, value, requestEl;\n // store the old index\n slider.oldIndex = slider.active.index;\n //set new index\n slider.active.index = setSlideIndex(slideIndex);\n\n // if plugin is currently in motion, ignore request\n if (slider.working || slider.active.index === slider.oldIndex) { return; }\n // declare that plugin is in motion\n slider.working = true;\n\n performTransition = slider.settings.onSlideBefore.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n\n // If transitions canceled, reset and return\n if (typeof (performTransition) !== 'undefined' && !performTransition) {\n slider.active.index = slider.oldIndex; // restore old index\n slider.working = false; // is not in motion\n return;\n }\n\n if (direction === 'next') {\n // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\n if (!slider.settings.onSlideNext.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {\n performTransition = false;\n }\n } else if (direction === 'prev') {\n // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\n if (!slider.settings.onSlidePrev.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {\n performTransition = false;\n }\n }\n\n // check if last slide\n slider.active.last = slider.active.index >= getPagerQty() - 1;\n // update the pager with active class\n if (slider.settings.pager || slider.settings.pagerCustom) { updatePagerActive(slider.active.index); }\n // // check for direction control update\n if (slider.settings.controls) { updateDirectionControls(); }\n // if slider is set to mode: \"fade\"\n if (slider.settings.mode === 'fade') {\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {\n slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);\n }\n // fade out the visible child and reset its z-index value\n slider.children.filter(':visible').fadeOut(slider.settings.speed).css({zIndex: 0});\n // fade in the newly requested slide\n slider.children.eq(slider.active.index).css('zIndex', slider.settings.slideZIndex + 1).fadeIn(slider.settings.speed, function() {\n $(this).css('zIndex', slider.settings.slideZIndex);\n updateAfterSlideTransition();\n });\n // slider mode is not \"fade\"\n } else {\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {\n slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);\n }\n // if carousel and not infinite loop\n if (!slider.settings.infiniteLoop && slider.carousel && slider.active.last) {\n if (slider.settings.mode === 'horizontal') {\n // get the last child position\n lastChild = slider.children.eq(slider.children.length - 1);\n position = lastChild.position();\n // calculate the position of the last slide\n moveBy = slider.viewport.width() - lastChild.outerWidth();\n } else {\n // get last showing index position\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\n position = slider.children.eq(lastShowingIndex).position();\n }\n // horizontal carousel, going previous while on first slide (infiniteLoop mode)\n } else if (slider.carousel && slider.active.last && direction === 'prev') {\n // get the last child position\n eq = slider.settings.moveSlides === 1 ? slider.settings.maxSlides - getMoveBy() : ((getPagerQty() - 1) * getMoveBy()) - (slider.children.length - slider.settings.maxSlides);\n lastChild = el.children('.bx-clone').eq(eq);\n position = lastChild.position();\n // if infinite loop and \"Next\" is clicked on the last slide\n } else if (direction === 'next' && slider.active.index === 0) {\n // get the last clone position\n position = el.find('> .bx-clone').eq(slider.settings.maxSlides).position();\n slider.active.last = false;\n // normal non-zero requests\n } else if (slideIndex >= 0) {\n //parseInt is applied to allow floats for slides/page\n requestEl = slideIndex * parseInt(getMoveBy());\n position = slider.children.eq(requestEl).position();\n }\n\n /* If the position doesn't exist\n * (e.g. if you destroy the slider on a next click),\n * it doesn't throw an error.\n */\n if (typeof (position) !== 'undefined') {\n value = slider.settings.mode === 'horizontal' ? -(position.left - moveBy) : -position.top;\n // plugin values to be animated\n setPositionProperty(value, 'slide', slider.settings.speed);\n } else {\n slider.working = false;\n }\n }\n if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }\n };\n\n /**\n * Transitions to the next slide in the show\n */\n el.goToNextSlide = function() {\n // if infiniteLoop is false and last page is showing, disregard call\n if (!slider.settings.infiniteLoop && slider.active.last) { return; }\n var pagerIndex = parseInt(slider.active.index) + 1;\n el.goToSlide(pagerIndex, 'next');\n };\n\n /**\n * Transitions to the prev slide in the show\n */\n el.goToPrevSlide = function() {\n // if infiniteLoop is false and last page is showing, disregard call\n if (!slider.settings.infiniteLoop && slider.active.index === 0) { return; }\n var pagerIndex = parseInt(slider.active.index) - 1;\n el.goToSlide(pagerIndex, 'prev');\n };\n\n /**\n * Starts the auto show\n *\n * @param preventControlUpdate (boolean)\n * - if true, auto controls state will not be updated\n */\n el.startAuto = function(preventControlUpdate) {\n // if an interval already exists, disregard call\n if (slider.interval) { return; }\n // create an interval\n slider.interval = setInterval(function() {\n if (slider.settings.autoDirection === 'next') {\n el.goToNextSlide();\n } else {\n el.goToPrevSlide();\n }\n }, slider.settings.pause);\n // if auto controls are displayed and preventControlUpdate is not true\n if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('stop'); }\n };\n\n /**\n * Stops the auto show\n *\n * @param preventControlUpdate (boolean)\n * - if true, auto controls state will not be updated\n */\n el.stopAuto = function(preventControlUpdate) {\n // if no interval exists, disregard call\n if (!slider.interval) { return; }\n // clear the interval\n clearInterval(slider.interval);\n slider.interval = null;\n // if auto controls are displayed and preventControlUpdate is not true\n if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('start'); }\n };\n\n /**\n * Returns current slide index (zero-based)\n */\n el.getCurrentSlide = function() {\n return slider.active.index;\n };\n\n /**\n * Returns current slide element\n */\n el.getCurrentSlideElement = function() {\n return slider.children.eq(slider.active.index);\n };\n\n /**\n * Returns a slide element\n * @param index (int)\n * - The index (zero-based) of the element you want returned.\n */\n el.getSlideElement = function(index) {\n return slider.children.eq(index);\n };\n\n /**\n * Returns number of slides in show\n */\n el.getSlideCount = function() {\n return slider.children.length;\n };\n\n /**\n * Return slider.working variable\n */\n el.isWorking = function() {\n return slider.working;\n };\n\n /**\n * Update all dynamic slider elements\n */\n el.redrawSlider = function() {\n // resize all children in ratio to new screen size\n slider.children.add(el.find('.bx-clone')).outerWidth(getSlideWidth());\n // adjust the height\n slider.viewport.css('height', getViewportHeight());\n // update the slide position\n if (!slider.settings.ticker) { setSlidePosition(); }\n // if active.last was true before the screen resize, we want\n // to keep it last no matter what screen size we end on\n if (slider.active.last) { slider.active.index = getPagerQty() - 1; }\n // if the active index (page) no longer exists due to the resize, simply set the index as last\n if (slider.active.index >= getPagerQty()) { slider.active.last = true; }\n // if a pager is being displayed and a custom pager is not being used, update it\n if (slider.settings.pager && !slider.settings.pagerCustom) {\n populatePager();\n updatePagerActive(slider.active.index);\n }\n if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }\n };\n\n /**\n * Destroy the current instance of the slider (revert everything back to original state)\n */\n el.destroySlider = function() {\n // don't do anything if slider has already been destroyed\n if (!slider.initialized) { return; }\n slider.initialized = false;\n $('.bx-clone', this).remove();\n slider.children.each(function() {\n if ($(this).data('origStyle') !== undefined) {\n $(this).attr('style', $(this).data('origStyle'));\n } else {\n $(this).removeAttr('style');\n }\n });\n if ($(this).data('origStyle') !== undefined) {\n this.attr('style', $(this).data('origStyle'));\n } else {\n $(this).removeAttr('style');\n }\n $(this).unwrap().unwrap();\n if (slider.controls.el) { slider.controls.el.remove(); }\n if (slider.controls.next) { slider.controls.next.remove(); }\n if (slider.controls.prev) { slider.controls.prev.remove(); }\n if (slider.pagerEl && slider.settings.controls && !slider.settings.pagerCustom) { slider.pagerEl.remove(); }\n $('.bx-caption', this).remove();\n if (slider.controls.autoEl) { slider.controls.autoEl.remove(); }\n clearInterval(slider.interval);\n if (slider.settings.responsive) { $(window).unbind('resize', resizeWindow); }\n if (slider.settings.keyboardEnabled) { $(document).unbind('keydown', keyPress); }\n //remove self reference in data\n $(this).removeData('bxSlider');\n };\n\n /**\n * Reload the slider (revert all DOM changes, and re-initialize)\n */\n el.reloadSlider = function(settings) {\n if (settings !== undefined) { options = settings; }\n el.destroySlider();\n init();\n //store reference to self in order to access public functions later\n $(el).data('bxSlider', this);\n };\n\n init();\n\n $(el).data('bxSlider', this);\n\n // returns the current jQuery object\n return this;\n };\n\n})(jQuery);\n","/* ========================================================================\n * DOM-based Routing\n * Based on http://goo.gl/EUTi53 by Paul Irish\n *\n * Only fires on body classes that match. If a body class contains a dash,\n * replace the dash with an underscore when adding it to the object below.\n *\n * .noConflict()\n * The routing is enclosed within an anonymous function so that you can\n * always reference jQuery with $, even when in .noConflict() mode.\n * ======================================================================== */\n(function($) {\n // Use this variable to set up the common and page specific functions. If you\n // rename this variable, you will also need to rename the namespace below.\n var Sage = {\n // All pages\n 'common': {\n init: function() {\n var currentSlider;\n // JavaScript to be fired on all pages\n var windowHeight = $(window).height();\n var windowWidth = $(window).width();\n var curPrevArrow = $('#prevSelector');\n var curNextArrow = $('#nextSelector');\n var contentWrapperH;\n var imgWrapper;\n $('#nav-icon4').click(function() {\n $(this).toggleClass('open');\n $('header').toggleClass('shown');\n $('#navigation-overlay').toggleClass('shown');\n $('body').toggleClass('fixed');\n });\n // $('#hamburger').on('click', function(){\n // $('#navigation-overlay').addClass('shown');\n // });\n // $('#close-menu').on('click', function(){\n // $('#navigation-overlay').removeClass('shown');\n // });\n $('#mob-search-trigger').on('click', function() {\n $('.search-input').toggleClass('open');\n });\n $(document).on('click', function(e) {\n if ($(e.target).closest('.fa-search').length) {\n $('#search-form').addClass(\"open\");\n $('.searchfield-cont').addClass('open');\n } else if (!$(e.target).closest('#search-form').length) {\n $('#search-form').removeClass(\"open\");\n $('.searchfield-cont').removeClass('open');\n }\n });\n var contentWrapperWidth;\n\n function gallerySlidesWidth() {\n contentWrapperWidth = $('.content-wrapper').width();\n }\n var width = $('.content-wrapper.gallery .container').width();\n var sliderWidth = 640;\n var slider = null;\n var gallerySlideWidth = 300;\n var maxSlides = 4;\n if (windowHeight < 1024) {\n gallerySlideWidth = 250;\n }\n // if(windowHeight < 1024 && windowWidth < 1300){\n // maxSlides = 3;\n // contentWrapperWidth = $('.content-wrapper').width();\n // gallerySlideWidth = contentWrapperWidth / 2;\n // }else if(windowHeight < 1024 && windowWidth > 1300){\n // maxSlides = 4;\n // contentWrapperWidth = $('.content-wrapper').width();\n // gallerySlideWidth = contentWrapperWidth / 4;\n // }\n var slider_config;\n var slider_config_references;\n var refContWidth;\n var maxSlidesReferenz;\n var partnerSlider;\n var gallerySlider;\n var bxslider = $('.bxslider');\n\n function checkSlider() {\n contentWrapperH = $('.content-wrapper').height();\n windowHeight = $(window).height();\n windowWidth = $(window).width();\n // console.log(windowHeight);\n // console.log(currentSlider);\n // if(windowHeight < 1024){\n // gallerySlideWidth = 250;\n // if(currentSlider != null){\n // $('#gallery-bxslider .slider').width(250);\n // }\n // } \n\n // console.log(currentSlider);\n \n if ((windowWidth >= 768) || (contentWrapperH >= 943)) {\n // if(currentSlider != null){\n // currentSlider.reloadSlider();\n // }\n // if(partnerSlider != null){\n // partnerSlider.reloadSlider();\n // }\n } else {\n // if(partnerSlider != null){\n // partnerSlider.destroySlider();\n // }\n }\n // currentSlider.reloadSlider();\n }\n\n function sliderConfig() {\n contentWrapperWidth = $('.get-width .container').width();\n refContWidth = $('#refCont').width();\n if (windowWidth >= 1300) {\n maxSlides = 4;\n maxSlidesReferenz = 3;\n contentWrapperWidth = $('.get-width .container').width();\n gallerySlideWidth = contentWrapperWidth / 4;\n } else if (windowWidth < 1300) {\n maxSlides = 3;\n maxSlidesReferenz = 2;\n contentWrapperWidth = $('.get-width .container').width();\n gallerySlideWidth = contentWrapperWidth / 3;\n }\n // Gallery Slider\n slider_config = {\n minSlides: 1,\n maxSlides: 4,\n shrinkItems: true,\n slideSelector: 'div.slide',\n slideWidth: gallerySlideWidth,\n startSlide: 0,\n responsive: true,\n controls: true,\n pager: true,\n randomStart: false,\n touchEnabled: false,\n slideMargin: 40,\n nextSelector: curNextArrow,\n prevSelector: curPrevArrow,\n nextText: '',\n prevText: '',\n hideControlOnEnd: true,\n autoHidePager: true,\n onSliderResize: function(e) {}\n };\n // Refferenzen Slider\n slider_config_references = {\n minSlides: 1,\n maxSlides: 4,\n shrinkItems: true,\n slideSelector: 'div.slide',\n slideWidth: contentWrapperWidth / maxSlidesReferenz,\n startSlide: 0,\n responsive: true,\n controls: true,\n pager: true,\n randomStart: false,\n touchEnabled: false,\n slideMargin: 10,\n nextText: '',\n prevText: '',\n hideControlOnEnd: true,\n autoHidePager: true,\n onSliderResize: function() {}\n };\n if (bxslider.attr(\"id\") === \"partner-bxslider\") {\n partnerSlider = $('#partner-bxslider').bxSlider(slider_config);\n currentSlider = partnerSlider;\n } else if (bxslider.attr(\"id\") === \"gallery-bxslider\") {\n currentSlider = $('#gallery-bxslider').bxSlider(slider_config);\n partnerSlider = null;\n } else if (bxslider.attr(\"id\") === \"groups-bxslider\") {\n currentSlider = $('#groups-bxslider').bxSlider(slider_config);\n partnerSlider = null;\n } else if (bxslider.attr(\"id\") === \"references-bxslider\") {\n currentSlider = $('#references-bxslider').bxSlider(slider_config_references);\n partnerSlider = null;\n refContWidth = $('#refCont').width();\n } else {\n partnerSlider = null;\n currentSlider = null;\n }\n // currentSlider.reloadSlider();\n checkSlider();\n }\n\n\n // FILTER BY CONTACT PERSONS\n var curFilter;\n $(document).on('click', '.filter-radio input', function() {\n\n var link = null;\n curFilter = $(this).val();\n if (curFilter !== '') {\n link = $('#partner-bxslider').attr('data-link') + '?curterm=' + curFilter;\n } else {\n link = $('#partner-bxslider').attr('data-link');\n }\n $.get(link, function(data) {\n $('#partner-bxslider').html($(data).find('#partner-bxslider').html());\n // $('#partner-bxslider')\n // var partnerSlider = $('#partner-bxslider').bxSlider(slider_config);\n currentSlider.reloadSlider();\n // console.log(currentSlider);\n $('#mobile-partner').html($(data).find('#mobile-partner').html());\n });\n });\n $('.slide-with-gallery').on('click', function(event) {\n event.preventDefault();\n var gallery = $(this).data('gallery');\n $(gallery).magnificPopup({\n delegate: 'a',\n type: 'image',\n gallery: {\n enabled: true\n }\n }).magnificPopup('open');\n });\n $('.mygallery').each(function() { // the containers for all your galleries\n $(this).magnificPopup({\n delegate: 'a', // the selector for gallery item\n type: 'image',\n gallery: {\n enabled: true\n }\n });\n });\n $('.popup').each(function() { // the containers for all your galleries\n $(this).magnificPopup({\n delegate: 'a', // the selector for gallery item\n type: 'image',\n gallery: {\n enabled: true\n }\n });\n });\n var curclass;\n var curSlide;\n $(\".subpages-wrapper.gallery li\").hover(function() {\n $(this).delay(500).queue(function() {\n curclass = $(this).attr('class');\n curSlide = document.getElementById(curclass);\n $(curSlide).addClass('hover');\n });\n }, function() {\n $(this).finish();\n $(curSlide).removeClass('hover');\n });\n $(document).on('click', '[data-toggle=\"lightbox\"]', function(event) {\n event.preventDefault();\n $(this).ekkoLightbox();\n });\n $(window).on('resize', function() {\n if (currentSlider) {\n currentSlider.reloadSlider();\n }\n // if(partnerSlider != null){\n // partnerSlider.reloadSlider();\n // }\n });\n\n\n setTimeout(function() {\n sliderConfig();\n }, 100);\n\n\n },\n finalize: function() {\n\n // JavaScript to be fired on all pages, after page specific JS is fired\n }\n },\n // Geschichte page\n 'geschichte': {\n init: function() {\n var newTop;\n var curYear;\n var imagebox;\n var newCurYear;\n var curbox;\n var position;\n var nextbox;\n var mousewheelevt = (/Firefox/i.test(navigator.userAgent)) ? \"DOMMouseScroll touchmove\" : \"mousewheel touchmove\"; //FF doesn't recognize mousewheel as of FF3.x\n var minPosition;\n var maxPosition;\n var mindingMousewheel = true;\n\n function setPosition(position) {\n position = position;\n if (position > 0) {\n position = -Math.abs(position);\n }\n $(\"#timeline-content .inner .scroll\").animate({\n top: position\n }, 1000, function() {\n //$('#timeline-content .inner .scroll').css('top', position+'px');\n //$('#timeline-content .inner').bind('mousewheel');\n mindingMousewheel = true;\n });\n }\n\n function SwipeUp() {\n if (position === minPosition) {\n mindingMousewheel = true;\n } else {\n $('.box.active').removeClass('active');\n $('.box.prev').addClass('active');\n position = $('.box.prev').data('offset');\n setPosition(position);\n checkPoint($('.box.prev').data('year'));\n checkbox();\n }\n }\n\n function SwipeDown() {\n if (position === maxPosition) {\n mindingMousewheel = true;\n } else {\n $('.box.active').removeClass('active');\n $('.box.next').addClass('active');\n position = $('.box.next').data('offset');\n setPosition(position);\n checkPoint($('.box.next').data('year'));\n checkbox();\n }\n }\n\n function checkTouchDevice() {\n return 'ontouchstart' in document.documentElement;\n }\n if (checkTouchDevice()) {\n $(window).on(\"orientationchange\", function(event) {\n location.reload();\n });\n // Mobile device\n $(window).on('touchstart', function(e) {\n // console.log('touchstart');\n var swipe = e.originalEvent.touches,\n start = swipe[0].pageY;\n $(this).one('touchmove', function(e) {\n // console.log(e);\n var contact = e.originalEvent.touches,\n end = contact[0].pageY,\n distance = end - start;\n // console.log(distance);\n if (distance < -10) {\n console.log('up');\n SwipeDown();\n }\n if (distance > 10) {\n console.log('down');\n SwipeUp();\n }\n }).one('touchend', function() {\n $(this).off('touchmove touchend');\n });\n });\n } else {\n // Desktop\n $('#timeline-content .inner').bind(mousewheelevt, function(e) {\n if (!mindingMousewheel) return;\n var evt = window.event || e; //equalize event object \n evt = evt.originalEvent ? evt.originalEvent : evt; //convert to originalEvent if possible \n var delta = evt.detail ? evt.detail * (-40) : evt.wheelDelta; //check for detail first, because it is used by Opera and FF\n mindingMousewheel = false;\n // $('#timeline-content .inner').unbind('mousewheel');\n // console.log('curpos: ' + position);\n if (delta > 0) {\n //scroll up\n // console.log('up');\n SwipeUp()\n } else {\n // console.log('down');\n SwipeDown();\n }\n });\n }\n\n function checkbox() {\n if ($('.box.active').next('.box')) {\n $('.box').removeClass('next');\n $('.box.active').next('.box').addClass('next');\n }\n if ($('.box.active').prev('.box')) {\n $('.box').removeClass('prev');\n $('.box.active').prev('.box').addClass('prev');\n }\n }\n $('.point').on('click', function() {\n //$('#timeline-content .inner .scroll').css('top', '-20px');\n $('#timeline-content .inner .box').removeClass('active');\n $('.point').removeClass('active');\n $(this).addClass('active');\n curYear = $(this).data('year');\n curbox = $('#y' + curYear);\n curbox.addClass('active');\n position = curbox.data('offset');\n checkbox();\n setPosition(position);\n });\n\n function checkPoint(curYear) {\n $('.point').removeClass('active');\n $('.timeline').find(\"[data-year='\" + curYear + \"']\").addClass('active');\n newCurYear = $('#timeline-content .inner').find(\"[data-year='\" + curYear + \"']\");\n }\n\n function initTimeline() {\n position = 0;\n $('.box').each(function() {\n var boxposition = $(this).position();\n boxposition = boxposition.top;\n $(this).attr('data-offset', boxposition); // sets \n });\n minPosition = $('.box').first().data('offset');\n maxPosition = $('.box').last().data('offset');\n $('.box').first().addClass('start');\n $('.box').last().addClass('end');\n checkbox();\n }\n initTimeline();\n },\n finalize: function() {\n // JavaScript to be fired on the home page, after the init JS\n }\n },\n // Contact persons \n 'kontakt': {\n init: function() {},\n finalize: function() {\n // JavaScript to be fired on the home page, after the init JS\n }\n },\n // Home page\n 'home': {\n init: function() {\n // JavaScript to be fired on the home page\n },\n finalize: function() {\n // JavaScript to be fired on the home page, after the init JS\n }\n },\n // About us page, note the change from about-us to about_us.\n 'about_us': {\n init: function() {\n // JavaScript to be fired on the about us page\n }\n }\n };\n // The routing fires all common scripts, followed by the page specific scripts.\n // Add additional events for more control over timing e.g. a finalize event\n var UTIL = {\n fire: function(func, funcname, args) {\n var fire;\n var namespace = Sage;\n funcname = (funcname === undefined) ? 'init' : funcname;\n fire = func !== '';\n fire = fire && namespace[func];\n fire = fire && typeof namespace[func][funcname] === 'function';\n if (fire) {\n namespace[func][funcname](args);\n }\n },\n loadEvents: function() {\n // Fire common init JS\n UTIL.fire('common');\n // Fire page-specific init JS, and then finalize JS\n $.each(document.body.className.replace(/-/g, '_').split(/\\s+/), function(i, classnm) {\n UTIL.fire(classnm);\n UTIL.fire(classnm, 'finalize');\n });\n // Fire common finalize JS\n UTIL.fire('common', 'finalize');\n }\n };\n // Load Events\n $(document).ready(UTIL.loadEvents);\n})(jQuery); // Fully reference jQuery after this point."],"sourceRoot":"assets/scripts/"}