{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lazysizes/lazysizes.js","webpack:///./node_modules/headroom.js/dist/headroom.js","webpack:///sal/webpack/universalModuleDefinition","webpack:///sal/webpack/bootstrap","webpack:///sal/src/sal.js","webpack:///./js/global.js","webpack:///./node_modules/lazysizes/plugins/unveilhooks/ls.unveilhooks.js","webpack:///./node_modules/magnific-popup/dist/jquery.magnific-popup.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","jQuery","webpackPolyfill","deprecate","paths","children","window","lazySizes","document","Date","lazysizes","lazySizesCfg","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","init","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","docElem","documentElement","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","addEventListener","setTimeout","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","forEach","Array","hasClass","ele","cls","RegExp","test","addClass","setAttribute","trim","removeClass","reg","replace","addRemoveLoadEvents","dom","fn","add","action","evt","triggerEvent","elem","detail","noBubbles","noCancelable","event","createEvent","instance","initEvent","dispatchEvent","updatePolyfill","el","full","polyfill","picturefill","pf","src","reevaluate","elements","getCSS","style","getComputedStyle","getWidth","parent","width","offsetWidth","_lazysizesWidth","parentNode","rAF","running","waiting","firstFns","secondFns","fns","run","runFns","length","shift","rafBatch","queue","apply","this","arguments","push","hidden","_lsFlush","rAFIt","simple","that","args","throttle","lastTime","gDelay","rICTimeout","now","idleCallback","timeout","isPriority","delay","debounce","func","timestamp","wait","later","last","loader","preloadElems","isCompleted","resetPreloadingTimer","started","eLvW","elvH","eLtop","eLleft","eLright","eLbottom","isBodyHidden","regImg","regIframe","supportScroll","navigator","userAgent","shrinkExpand","currentExpand","isLoading","lowRuns","resetPreloading","e","target","isVisible","body","isNestedVisible","elemExpand","outerRect","visible","offsetParent","getBoundingClientRect","left","right","top","bottom","checkElements","eLlen","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","clientHeight","clientWidth","_defEx","innerWidth","innerHeight","preloadAfterLoad","throttledCheckElements","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","changeIframeSrc","contentWindow","location","handleSources","source","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","clearTimeout","getElementsByTagName","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","_","persisted","loadingElements","querySelectorAll","img","MutationObserver","observe","childList","subtree","attributes","setInterval","readyState","checkElems","unveil","_aLSL","autosizesElems","sizeElement","sources","len","dataAttr","getSizeElement","updateElementsSizes","debouncedUpdateElementsSizes","uP","aC","rC","hC","fire","gW","factory","isBrowser","createScroller","element","obj","nodeType","doc","win","html","scrollHeight","Math","max","offsetHeight","height","scrollY","undefined","pageYOffset","scrollTop","trackScroll","options","callback","rafId","isPassiveSupported","supported","removeEventListener","err","passiveEventsSupported","scrolled","scroller","lastScrollY","details","update","round","direction","distance","abs","isOutOfBounds","offset","toleranceExceeded","tolerance","handleScroll","eventOptions","passive","capture","destroy","cancelAnimationFrame","Headroom","assign","classes","down","up","initialised","frozen","constructor","cutsTheMustard","self","scrollTracker","keys","unpin","onUnpin","pin","onPin","freeze","unfreeze","onTop","notTop","onNotTop","onBottom","notBottom","onNotBottom","shouldUnpin","shouldPin","className","classList","split","remove","every","contains","pinned","unpinned","initial","define","setOptions","settings","clearAnimation","animateClassName","fireEvent","entry","CustomEvent","bubbles","disableAnimations","disabledClassName","clearObserver","intersectionObserver","disconnect","onIntersection","entries","observer","intersectionRatio","threshold","enterEventName","once","unobserve","exitEventName","disable","enable","IntersectionObserver","rootMargin","filter","selector","reset","from","disabled","console","warn","Error","cache","events","modals","formActions","initSal","checkAgreementCookie","$","handleAccordion","$doc","$win","$html","$body","$mainWrap","$header","$mobileNav","$hamburger","on","showMobileNav","showMobileSubnav","openShareWindow","scrollToSection","scrollToNext","handleOnLdCourseSelect","handleCookieAgreement","sal","link","currentTarget","attr","substr","preventDefault","open","initHeadroom","theHeader","querySelector","tolearnce","each","$input","siblings","show","hide","toggleClass","removeAttr","$item","$form","closest","ldid","data","ldurl","val","submit","noLinkItem","log","find","section","first","animate","initCountdown","endDate","getElementById","dataset","enddate","countDown","getTime","x","hour","innerText","floor","minute","second","clearInterval","cookie","magnificPopup","items","type","callbacks","close","proto","set","domain","expires","acceptAgreement","declineAgreement","encodeURI","pair","match","decodeURI","days","setDate","getDate","toUTCString","$agreement","outerHeight","css","hideAgreement","paddingTop","paddingBottom","overflow","globalInstall","bgLoad","regBgUrlEscape","uniqueUrls","addStyleScript","createElement","insertElem","rel","href","insertBefore","url","cb","onerror","tmp","bg","poster","preload","getAttribute","autoplay","play","er","requireJs","backgroundImage","JSON","stringify","require","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","mfp","MagnificPopup","_isJQ","_prevStatus","_window","_document","_prevContentType","_wrapClasses","_currPopupType","_mfpOn","f","ev","_getEl","appendTo","raw","innerHTML","appendChild","_mfpTrigger","triggerHandler","st","charAt","toLowerCase","slice","isArray","_getCloseBtn","currTemplate","closeBtn","closeMarkup","tClose","_checkInstance","supportsTransitions","v","pop","appVersion","isLowIE","isIE8","all","isAndroid","isIOS","supportsTransition","probablyMobile","popupsCache","isObj","toArray","index","item","parsed","isOpen","updateItemHTML","types","mainEl","eq","extend","defaults","fixedContentPos","modal","closeOnContentClick","closeOnBgClick","showCloseBtn","enableEscapeKey","bgOverlay","wrap","_checkIfClose","container","contentContainer","preloader","tLoading","toUpperCase","closeBtnInside","append","template","values","close_replaceWith","alignTop","overflowY","overflowX","position","fixedBgPos","keyCode","updateSize","windowHeight","wH","windowStyles","_hasScrollBar","_getScrollbarSize","marginRight","isIE7","classesToadd","mainClass","_addClassToMFP","prependTo","_lastFocusedEl","activeElement","content","_setFocus","_onFocusIn","removalDelay","_close","classesToRemove","detach","empty","_removeClassFromMFP","off","currItem","autoFocusLast","focus","prevHeight","winHeight","zoomLevel","parseEl","markup","newContent","appendContent","preloaded","prepend","tagName","addGroup","eHandler","mfpEl","_openClick","eName","delegate","midClick","which","ctrlKey","metaKey","altKey","shiftKey","disableOn","isFunction","stopPropagation","updateStatus","status","text","stopImmediatePropagation","closeOnContent","closeOnBg","cName","_parseMarkup","arr","replaceWith","is","scrollbarSize","scrollDiv","cssText","removeChild","registerModule","jqEl","itemOpts","parseInt","INLINE_NS","_hiddenClass","_inlinePlaceholder","_lastInlineElement","_putInlineElementsBack","after","hiddenClass","tNotFound","initInline","getInline","inlineSt","inline","inlineElement","AJAX_NS","_ajaxCur","_removeAjaxCursor","_destroyAjaxRequest","req","abort","cursor","tError","initAjax","ajax","getAjax","opts","success","textStatus","jqXHR","temp","xhr","finished","error","loadError","_imgInterval","_getTitle","title","image","titleSrc","verticalFit","initImage","imgSt","resizeImage","decr","_onImageHasSize","hasSize","isCheckingImgSize","imgHidden","findImageSize","counter","mfpSetInterval","getImage","guard","onLoadComplete","loaded","onLoadError","alt","clone","img_replaceWith","hasMozTransform","getHasMozTransform","MozTransform","enabled","easing","duration","opener","initZoom","zoomSt","zoom","getElToAnimate","newImg","transition","cssObj","zIndex","showMainContent","openTimeout","animatedImg","_allowZoom","_getItemToZoom","_getOffset","isLarge","IFRAME_NS","_emptyPage","_fixIframeBugs","isShowing","srcAction","patterns","youtube","id","vimeo","gmaps","initIframe","prevType","newType","getIframe","embedSrc","iframeSt","iframe","indexOf","lastIndexOf","dataObj","_getLoopedId","numSlides","_replaceCurrTotal","curr","total","arrowMarkup","navigateByImgClick","arrows","tPrev","tNext","tCounter","initGallery","gSt","gallery","next","prev","arrowLeft","arrowRight","click","_preloadTimeout","preloadNearbyImages","goTo","newIndex","preloadBefore","min","preloadAfter","_preloadItem","RETINA_NS","replaceSrc","ratio","initRetina","devicePixelRatio","retina","isNaN"],"mappings":"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","file":"js/global.30686a37915f06923e7d.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/wp-content/themes/_authoritive-generic/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","module.exports = jQuery;","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, function l(window, document, Date) { // Pass in the windoe Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes, lazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\tcfg: lazySizesCfg,\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\ttry {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} catch(e){\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, 'ls-is-cached');\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\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\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","/*!\n * headroom.js v0.11.0 - Give your page some headroom. Hide your header until you need it\n * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js\n * License: MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Headroom = factory());\n}(this, function () { 'use strict';\n\n function isBrowser() {\n return typeof window !== \"undefined\";\n }\n\n /**\n * Used to detect browser support for adding an event listener with options\n * Credit: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n */\n function passiveEventsSupported() {\n var supported = false;\n\n try {\n var options = {\n // eslint-disable-next-line getter-return\n get passive() {\n supported = true;\n }\n };\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (err) {\n supported = false;\n }\n\n return supported;\n }\n\n function isSupported() {\n return !!(\n isBrowser() &&\n function() {}.bind &&\n \"classList\" in document.documentElement &&\n Object.assign &&\n Object.keys &&\n requestAnimationFrame\n );\n }\n\n function isDocument(obj) {\n return obj.nodeType === 9; // Node.DOCUMENT_NODE === 9\n }\n\n function isWindow(obj) {\n // `obj === window` or `obj instanceof Window` is not sufficient,\n // as the obj may be the window of an iframe.\n return obj && obj.document && isDocument(obj.document);\n }\n\n function windowScroller(win) {\n var doc = win.document;\n var body = doc.body;\n var html = doc.documentElement;\n\n return {\n /**\n * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/\n * @return {Number} the scroll height of the document in pixels\n */\n scrollHeight: function() {\n return Math.max(\n body.scrollHeight,\n html.scrollHeight,\n body.offsetHeight,\n html.offsetHeight,\n body.clientHeight,\n html.clientHeight\n );\n },\n\n /**\n * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript\n * @return {Number} the height of the viewport in pixels\n */\n height: function() {\n return win.innerHeight || html.clientHeight || body.clientHeight;\n },\n\n /**\n * Gets the Y scroll position\n * @return {Number} pixels the page has scrolled along the Y-axis\n */\n scrollY: function() {\n if (win.pageYOffset !== undefined) {\n return win.pageYOffset;\n }\n\n return (html || body.parentNode || body).scrollTop;\n }\n };\n }\n\n function elementScroller(element) {\n return {\n /**\n * @return {Number} the scroll height of the element in pixels\n */\n scrollHeight: function() {\n return Math.max(\n element.scrollHeight,\n element.offsetHeight,\n element.clientHeight\n );\n },\n\n /**\n * @return {Number} the height of the element in pixels\n */\n height: function() {\n return Math.max(element.offsetHeight, element.clientHeight);\n },\n\n /**\n * Gets the Y scroll position\n * @return {Number} pixels the element has scrolled along the Y-axis\n */\n scrollY: function() {\n return element.scrollTop;\n }\n };\n }\n\n function createScroller(element) {\n return isWindow(element) ? windowScroller(element) : elementScroller(element);\n }\n\n /**\n * @param element EventTarget\n */\n function trackScroll(element, options, callback) {\n var isPassiveSupported = passiveEventsSupported();\n var rafId;\n var scrolled = false;\n var scroller = createScroller(element);\n var lastScrollY = scroller.scrollY();\n var details = {};\n\n function update() {\n var scrollY = Math.round(scroller.scrollY());\n var height = scroller.height();\n var scrollHeight = scroller.scrollHeight();\n\n // reuse object for less memory churn\n details.scrollY = scrollY;\n details.lastScrollY = lastScrollY;\n details.direction = scrollY > lastScrollY ? \"down\" : \"up\";\n details.distance = Math.abs(scrollY - lastScrollY);\n details.isOutOfBounds = scrollY < 0 || scrollY + height > scrollHeight;\n details.top = scrollY <= options.offset;\n details.bottom = scrollY + height >= scrollHeight;\n details.toleranceExceeded =\n details.distance > options.tolerance[details.direction];\n\n callback(details);\n\n lastScrollY = scrollY;\n scrolled = false;\n }\n\n function handleScroll() {\n if (!scrolled) {\n scrolled = true;\n rafId = requestAnimationFrame(update);\n }\n }\n\n var eventOptions = isPassiveSupported\n ? { passive: true, capture: false }\n : false;\n\n element.addEventListener(\"scroll\", handleScroll, eventOptions);\n update();\n\n return {\n destroy: function() {\n cancelAnimationFrame(rafId);\n element.removeEventListener(\"scroll\", handleScroll, eventOptions);\n }\n };\n }\n\n function normalizeTolerance(t) {\n return t === Object(t) ? t : { down: t, up: t };\n }\n\n /**\n * UI enhancement for fixed headers.\n * Hides header when scrolling down\n * Shows header when scrolling up\n * @constructor\n * @param {DOMElement} elem the header element\n * @param {Object} options options for the widget\n */\n function Headroom(elem, options) {\n options = options || {};\n Object.assign(this, Headroom.options, options);\n this.classes = Object.assign({}, Headroom.options.classes, options.classes);\n\n this.elem = elem;\n this.tolerance = normalizeTolerance(this.tolerance);\n this.initialised = false;\n this.frozen = false;\n }\n Headroom.prototype = {\n constructor: Headroom,\n\n /**\n * Start listening to scrolling\n * @public\n */\n init: function() {\n if (Headroom.cutsTheMustard && !this.initialised) {\n this.addClass(\"initial\");\n this.initialised = true;\n\n // defer event registration to handle browser\n // potentially restoring previous scroll position\n setTimeout(\n function(self) {\n self.scrollTracker = trackScroll(\n self.scroller,\n { offset: self.offset, tolerance: self.tolerance },\n self.update.bind(self)\n );\n },\n 100,\n this\n );\n }\n\n return this;\n },\n\n /**\n * Destroy the widget, clearing up after itself\n * @public\n */\n destroy: function() {\n this.initialised = false;\n Object.keys(this.classes).forEach(this.removeClass, this);\n this.scrollTracker.destroy();\n },\n\n /**\n * Unpin the element\n * @public\n */\n unpin: function() {\n if (this.hasClass(\"pinned\") || !this.hasClass(\"unpinned\")) {\n this.addClass(\"unpinned\");\n this.removeClass(\"pinned\");\n\n if (this.onUnpin) {\n this.onUnpin.call(this);\n }\n }\n },\n\n /**\n * Pin the element\n * @public\n */\n pin: function() {\n if (this.hasClass(\"unpinned\")) {\n this.addClass(\"pinned\");\n this.removeClass(\"unpinned\");\n\n if (this.onPin) {\n this.onPin.call(this);\n }\n }\n },\n\n /**\n * Freezes the current state of the widget\n * @public\n */\n freeze: function() {\n this.frozen = true;\n this.addClass(\"frozen\");\n },\n\n /**\n * Re-enables the default behaviour of the widget\n * @public\n */\n unfreeze: function() {\n this.frozen = false;\n this.removeClass(\"frozen\");\n },\n\n top: function() {\n if (!this.hasClass(\"top\")) {\n this.addClass(\"top\");\n this.removeClass(\"notTop\");\n\n if (this.onTop) {\n this.onTop.call(this);\n }\n }\n },\n\n notTop: function() {\n if (!this.hasClass(\"notTop\")) {\n this.addClass(\"notTop\");\n this.removeClass(\"top\");\n\n if (this.onNotTop) {\n this.onNotTop.call(this);\n }\n }\n },\n\n bottom: function() {\n if (!this.hasClass(\"bottom\")) {\n this.addClass(\"bottom\");\n this.removeClass(\"notBottom\");\n\n if (this.onBottom) {\n this.onBottom.call(this);\n }\n }\n },\n\n notBottom: function() {\n if (!this.hasClass(\"notBottom\")) {\n this.addClass(\"notBottom\");\n this.removeClass(\"bottom\");\n\n if (this.onNotBottom) {\n this.onNotBottom.call(this);\n }\n }\n },\n\n shouldUnpin: function(details) {\n var scrollingDown = details.direction === \"down\";\n\n return scrollingDown && !details.top && details.toleranceExceeded;\n },\n\n shouldPin: function(details) {\n var scrollingUp = details.direction === \"up\";\n\n return (scrollingUp && details.toleranceExceeded) || details.top;\n },\n\n addClass: function(className) {\n this.elem.classList.add.apply(\n this.elem.classList,\n this.classes[className].split(\" \")\n );\n },\n\n removeClass: function(className) {\n this.elem.classList.remove.apply(\n this.elem.classList,\n this.classes[className].split(\" \")\n );\n },\n\n hasClass: function(className) {\n return this.classes[className].split(\" \").every(function(cls) {\n return this.classList.contains(cls);\n }, this.elem);\n },\n\n update: function(details) {\n if (details.isOutOfBounds) {\n // Ignore bouncy scrolling in OSX\n return;\n }\n\n if (this.frozen === true) {\n return;\n }\n\n if (details.top) {\n this.top();\n } else {\n this.notTop();\n }\n\n if (details.bottom) {\n this.bottom();\n } else {\n this.notBottom();\n }\n\n if (this.shouldUnpin(details)) {\n this.unpin();\n } else if (this.shouldPin(details)) {\n this.pin();\n }\n }\n };\n\n /**\n * Default options\n * @type {Object}\n */\n Headroom.options = {\n tolerance: {\n up: 0,\n down: 0\n },\n offset: 0,\n scroller: isBrowser() ? window : null,\n classes: {\n frozen: \"headroom--frozen\",\n pinned: \"headroom--pinned\",\n unpinned: \"headroom--unpinned\",\n top: \"headroom--top\",\n notTop: \"headroom--not-top\",\n bottom: \"headroom--bottom\",\n notBottom: \"headroom--not-bottom\",\n initial: \"headroom\"\n }\n };\n\n Headroom.cutsTheMustard = isSupported();\n\n return Headroom;\n\n}));\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sal\"] = factory();\n\telse\n\t\troot[\"sal\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/**\n * Sal - Scroll Animation Library\n * Performance focused, lightweight scroll animation library\n */\n\nimport './sal.scss';\n\nconst SSR_MESSAGE = 'Sal was not initialised! Probably it is used in SSR.';\n\nconst NOT_SUPPORTED_MESSAGE = ''\n + 'Your browser does not support IntersectionObserver!\\n'\n + 'Get a polyfill from here:\\n'\n + 'https://github.com/w3c/IntersectionObserver/tree/master/polyfill';\n\n/**\n * Default options\n */\nlet options = {\n rootMargin: '0% 50%',\n threshold: 0.5,\n animateClassName: 'sal-animate',\n disabledClassName: 'sal-disabled',\n enterEventName: 'sal:in',\n exitEventName: 'sal:out',\n selector: '[data-sal]',\n once: true,\n disabled: false,\n};\n\n/**\n * Private\n */\nlet elements = [];\nlet intersectionObserver = null;\n\n/**\n * Set options\n * @param {Object} settings\n */\nconst setOptions = (settings) => {\n if (settings && settings !== options) {\n options = {\n ...options,\n ...settings,\n };\n }\n};\n\n/**\n * Clear animation for given element\n * @param {HTMLElement} element\n */\nconst clearAnimation = (element) => {\n element.classList.remove(options.animateClassName);\n};\n\n/**\n * Dispatches the animate event on the intersection observer entry.\n * @param {IntersectionObserverEntry} detail The entry to fire event on.\n */\nconst fireEvent = (name, entry) => {\n const event = new CustomEvent(name, {\n bubbles: true,\n detail: entry,\n });\n\n entry.target.dispatchEvent(event);\n};\n\n/**\n * Launch animation by adding class\n * @param {IntersectionObserverEntry} entry\n */\nconst animate = (entry) => {\n entry.target.classList.add(options.animateClassName);\n fireEvent(options.enterEventName, entry);\n};\n\n/**\n * Reverse animation by removing class\n * @param {IntersectionObserverEntry} entry\n */\nconst reverse = (entry) => {\n clearAnimation(entry.target);\n fireEvent(options.exitEventName, entry);\n};\n\n/**\n * Check if element was animated\n * @param {HTMLElement} element\n */\nconst isAnimated = (element) => (\n element.classList.contains(options.animateClassName)\n);\n\n/**\n * Enable animations by remove class from body\n */\nconst enableAnimations = () => {\n document.body.classList.remove(options.disabledClassName);\n};\n\n/**\n * Disable animations by add class from body\n */\nconst disableAnimations = () => {\n document.body.classList.add(options.disabledClassName);\n};\n\n/**\n * Clears observer\n */\nconst clearObserver = () => {\n intersectionObserver.disconnect();\n intersectionObserver = null;\n};\n\n/**\n * Check if should be disabled\n * @return {Boolean}\n */\nconst isDisabled = () => (\n options.disabled\n || (\n (typeof options.disabled === 'function')\n && options.disabled()\n )\n);\n\n/**\n * IntersectionObserver callback\n * @param {Array} entries\n * @param {IntersectionObserver} observer\n */\nconst onIntersection = (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.intersectionRatio >= options.threshold) {\n animate(entry);\n\n if (options.once) {\n observer.unobserve(entry.target);\n }\n } else if (!options.once) {\n reverse(entry);\n }\n });\n};\n\n/**\n * Disable sal\n */\nconst disable = () => {\n disableAnimations();\n clearObserver();\n};\n\n/**\n * Enable sal by launching new IntersectionObserver\n */\nconst enable = () => {\n enableAnimations();\n\n intersectionObserver = new IntersectionObserver(onIntersection, {\n rootMargin: options.rootMargin,\n threshold: options.threshold,\n });\n\n elements = [].filter.call(\n document.querySelectorAll(options.selector),\n (element) => !isAnimated(element, options.animateClassName),\n );\n\n elements.forEach((element) => intersectionObserver.observe(element));\n};\n\n/**\n * Reset instance and provide new settings\n * @param {Object} settings\n */\nconst reset = (settings = {}) => {\n clearObserver();\n\n Array.from(document.querySelectorAll(options.selector))\n .forEach(clearAnimation);\n\n setOptions(settings);\n enable();\n};\n\n/**\n * Init\n * @param {Object} settings\n * @return {Object} public API\n */\nconst init = (settings = options) => {\n setOptions(settings);\n\n // Early return, when window object is not defined\n // e.g. during Server Side Rendering\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(SSR_MESSAGE);\n\n return {\n elements,\n disable,\n enable,\n reset,\n };\n }\n\n if (!window.IntersectionObserver) {\n disableAnimations();\n\n throw Error(NOT_SUPPORTED_MESSAGE);\n }\n\n if (!isDisabled()) {\n enable();\n } else {\n disableAnimations();\n }\n\n return {\n elements,\n disable,\n enable,\n reset,\n };\n};\n\nexport default init;\n","import $ from 'jquery';\nimport 'lazysizes';\nimport 'lazysizes/plugins/unveilhooks/ls.unveilhooks';\nimport 'magnific-popup';\nimport Headroom from 'headroom.js';\nimport sal from 'sal.js';\n\nconst Mangrove = {\n init() {\n this.cache();\n this.events();\n this.modals();\n this.formActions();\n this.initSal();\n this.checkAgreementCookie();\n $('.gb-accordion').length && this.handleAccordion()\n },\n cache() {\n this.$doc = $(document);\n this.$win = $(window);\n this.$html = $('html');\n this.$body = $('body');\n this.$mainWrap = $('main');\n this.$header = $('.js-header');\n this.$mobileNav = $('.js-mobile-nav');\n this.$hamburger = $('.js-hamburger');\n },\n events() {\n this.$doc.on('click', '.js-hamburger', event => this.showMobileNav(event));\n this.$doc.on('click', '.js-mobile-nav .menu-item-has-children > a', event => this.showMobileSubnav(event));\n this.$doc.on('click', '.js-share', event => this.openShareWindow(event));\n this.$doc.on('click', '.js-scroll-to-section', event => this.scrollToSection(event));\n this.$doc.on('click', '.js-scroll-to-section a', event => this.scrollToSection(event));\n this.$doc.on('click', '.js-scroll-to-next', event => this.scrollToNext(event));\n this.$doc.on('click', '.js-select-course', event => this.handleOnLdCourseSelect(event));\n this.$doc.on('click', '.js-cookie-agreement', event => this.handleCookieAgreement(event))\n },\n initSal() {\n sal();\n },\n openShareWindow(event) {\n let link = $(event.currentTarget).attr('href');\n if (link.substr(0, 6) != 'mailto') {\n event.preventDefault();\n window.open(link, '', 'width=600, height=400');\n }\n },\n initHeadroom() {\n let theHeader = document.querySelector('.js-header');\n let headroom = new Headroom(theHeader, { offset: 100, tolearnce: 5 });\n headroom.init();\n },\n formActions(event) {\n if ($('.frm_other_input').length) {\n $('.frm_other_input').each(function() {\n const $input = $(this);\n const $select = $input.siblings('select');\n\n $select.on('change', function() {\n if ( $(this).children(\"option:selected\").hasClass('frm_other_trigger') ) {\n $input.show()\n } else {\n $input.hide()\n }\n })\n })\n\n }\n },\n showMobileNav(event) {\n event.preventDefault();\n this.$mobileNav.toggleClass('is-active');\n this.$hamburger.toggleClass('is-active');\n if (this.$mobileNav.hasClass('is-active')) {\n this.$hamburger.attr('aria-pressed', 'true');\n this.$mobileNav.attr('aria-expanded','true');\n } else {\n this.$hamburger.removeAttr('aria-pressed');\n this.$mobileNav.attr('aria-expanded','false');\n }\n },\n handleAccordion() {\n $('.gb-accordion').on('click', function(e) {\n $(e.currentTarget).toggleClass('gb-accordion--open')\n })\n },\n handleOnLdCourseSelect(event) {\n const $item = $(event.currentTarget);\n const $form = $(event.currentTarget).closest('form');\n const ldid = $item.data('ldid');\n const ldurl = $item.attr('href');\n \n event.preventDefault();\n\n $('#ldurl').val(ldurl);\n $('#ldid').val(ldid);\n $form.submit()\n },\n showMobileSubnav(event) {\n event.preventDefault();\n var noLinkItem = $(event.currentTarget).parent();\n noLinkItem.toggleClass('is-active');\n if (noLinkItem.hasClass('is-active')) {\n console.log($(this).find('.sub-menu'));\n $(this).find('.sub-menu').attr('aria-expanded', 'true');\n } else {\n $(this).find('.sub-menu').removeAttr('aria-expanded', 'false');\n }\n },\n scrollToNext(event) {\n const el = $(event.currentTarget);\n let section = $('section.gb-section').first();\n event.preventDefault();\n\n if (section) {\n $('html, body').animate({\n scrollTop: $(section).offset().top-20\n }, 1000);\n }\n },\n scrollToSection(event) {\n const el = $(event.currentTarget);\n let section = el.attr('href');\n event.preventDefault();\n console.log($(section));\n\n if (section) {\n $('html, body').animate({\n scrollTop: $(section).offset().top-100\n }, 1000);\n }\n },\n initCountdown() {\n const second = 1000,\n minute = second * 60,\n hour = minute * 60,\n day = hour * 24,\n endDate = document.getElementById('_cd').dataset.enddate\n\n let countDown = new Date( endDate ).getTime(),\n x = setInterval(function() {\n \n let now = new Date().getTime(),\n distance = countDown - now;\n \n if ( (distance / day) >= 1 ) {\n document.getElementById('cd_days').innerText = Math.floor(distance / (day))\n } else {\n document.getElementById('cd_days').style = 'display: none'\n }\n \n document.getElementById('cd_hours').innerText = Math.floor((distance % (day)) / (hour));\n document.getElementById('cd_minutes').innerText = Math.floor((distance % (hour)) / (minute));\n document.getElementById('cd_seconds').innerText = Math.floor((distance % (minute)) / second);\n \n if (distance < 0) {\n clearInterval(x);\n\n }\n\n $('.cd-time').addClass('is-visible');\n }, second)\n },\n modals() {\n const { initCountdown, cookie } = this\n \n $('.js-sales-popup.active').length && $('.home').length && !cookie.get('cksale') &&\n $.magnificPopup.open({\n items: { \n src: $('.js-sales-popup'), \n type: 'inline' \n },\n callbacks : {\n open: () => {\n initCountdown()\n }\n }\n });\n $.magnificPopup.instance.close = function () {\n\n if ( $('.js-sales-popup.active').length ) {\n \n $.magnificPopup.proto.close.call(self);\n \n cookie.set('cksale', {\n value: 1,\n domain: '',\n expires: cookie.expires(1)\n });\n \n } else {\n $.magnificPopup.proto.close.call(self);\n }\n }\n\n },\n handleCookieAgreement(event) {\n if ( $(event.currentTarget).hasClass('accept') ) {\n this.acceptAgreement()\n } else {\n this.declineAgreement()\n }\n },\n cookie : {\n set: function(name, options) {\n document.cookie = name + \"=\" + encodeURI(options.value) + \";path=/;domain=\" + options.domain +\";expires=\" + options.expires;\n },\n get: function(name) {\n var pair = document.cookie.match(new RegExp(name + '=([^;]+)'));\n return !!pair ? decodeURI(pair[1]) : null;\n },\n expires: function(days) {\n var d = new Date();\n d.setDate(d.getDate() + days);\n return d.toUTCString();\n }\n },\n checkAgreementCookie() {\n const { cookie } = this;\n const $agreement = $('.footer__agreement');\n\n if (!cookie.get('ckconsent')) {\n const height = $agreement.outerHeight()\n\n $agreement.css('height', height)\n $agreement.removeClass('is-hidden')\n }\n },\n declineAgreement(event) {\n const { hideAgreement } = this;\n hideAgreement()\n },\n hideAgreement() {\n $('.footer__agreement').css({\n paddingTop: 0,\n paddingBottom: 0,\n height: 0,\n overflow: 'hidden'\n })\n\n setTimeout(function() {\n $('.footer__agreement').addClass('is-hidden');\n }, 500)\n },\n acceptAgreement(event) {\n event.preventDefault();\n const { cookie, hideAgreement } = this;\n \n hideAgreement();\n\n cookie.set('ckconsent', {\n value: 1,\n domain: '',\n expires: cookie.expires(30)\n });\n\n }\n};\n\nMangrove.init();\n","/*\nThis plugin extends lazySizes to lazyLoad:\nbackground images, videos/posters and scripts\n\nBackground-Image:\nFor background images, use data-bg attribute:\n
\n\n Video:\n For video/audio use data-poster and preload=\"none\":\n \n\n For video that plays automatically if in view:\n \n\n\n Scripts:\n For scripts use data-script:\n
\n\n\n Script modules using require:\n For modules using require use data-require:\n
\n*/\n\n(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t/*jshint eqnull:true */\n\t'use strict';\n\tvar bgLoad, regBgUrlEscape;\n\tvar uniqueUrls = {};\n\n\tif(document.addEventListener){\n\t\tregBgUrlEscape = /\\(|\\)|\\s|'/;\n\n\t\tbgLoad = function (url, cb){\n\t\t\tvar img = document.createElement('img');\n\t\t\timg.onload = function(){\n\t\t\t\timg.onload = null;\n\t\t\t\timg.onerror = null;\n\t\t\t\timg = null;\n\t\t\t\tcb();\n\t\t\t};\n\t\t\timg.onerror = img.onload;\n\n\t\t\timg.src = url;\n\n\t\t\tif(img && img.complete && img.onload){\n\t\t\t\timg.onload();\n\t\t\t}\n\t\t};\n\n\t\taddEventListener('lazybeforeunveil', function(e){\n\t\t\tif(e.detail.instance != lazySizes){return;}\n\n\t\t\tvar tmp, load, bg, poster;\n\t\t\tif(!e.defaultPrevented) {\n\n\t\t\t\tvar target = e.target;\n\n\t\t\t\tif(target.preload == 'none'){\n\t\t\t\t\ttarget.preload = target.getAttribute('data-preload') || 'auto';\n\t\t\t\t}\n\n\t\t\t\tif (target.getAttribute('data-autoplay') != null) {\n\t\t\t\t\tif (target.getAttribute('data-expand') && !target.autoplay) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\ttarget.play();\n\t\t\t\t\t\t} catch (er) {}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\ttarget.setAttribute('data-expand', '-10');\n\t\t\t\t\t\t\tlazySizes.aC(target, lazySizes.cfg.lazyClass);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttmp = target.getAttribute('data-link');\n\t\t\t\tif(tmp){\n\t\t\t\t\taddStyleScript(tmp, true);\n\t\t\t\t}\n\n\t\t\t\t// handle data-script\n\t\t\t\ttmp = target.getAttribute('data-script');\n\t\t\t\tif(tmp){\n\t\t\t\t\taddStyleScript(tmp);\n\t\t\t\t}\n\n\t\t\t\t// handle data-require\n\t\t\t\ttmp = target.getAttribute('data-require');\n\t\t\t\tif(tmp){\n\t\t\t\t\tif(lazySizes.cfg.requireJs){\n\t\t\t\t\t\tlazySizes.cfg.requireJs([tmp]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddStyleScript(tmp);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// handle data-bg\n\t\t\t\tbg = target.getAttribute('data-bg');\n\t\t\t\tif (bg) {\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\ttarget.style.backgroundImage = 'url(' + (regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg ) + ')';\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\n\t\t\t\t\tbgLoad(bg, load);\n\t\t\t\t}\n\n\t\t\t\t// handle data-poster\n\t\t\t\tposter = target.getAttribute('data-poster');\n\t\t\t\tif(poster){\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\ttarget.poster = poster;\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\n\t\t\t\t\tbgLoad(poster, load);\n\n\t\t\t\t}\n\t\t\t}\n\t\t}, false);\n\n\t}\n\n\tfunction addStyleScript(src, style){\n\t\tif(uniqueUrls[src]){\n\t\t\treturn;\n\t\t}\n\t\tvar elem = document.createElement(style ? 'link' : 'script');\n\t\tvar insertElem = document.getElementsByTagName('script')[0];\n\n\t\tif(style){\n\t\t\telem.rel = 'stylesheet';\n\t\t\telem.href = src;\n\t\t} else {\n\t\t\telem.src = src;\n\t\t}\n\t\tuniqueUrls[src] = true;\n\t\tuniqueUrls[elem.src || elem.href] = true;\n\t\tinsertElem.parentNode.insertBefore(elem, insertElem);\n\t}\n}));\n","/*! 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(); }));"],"sourceRoot":""}