{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/pjax/lib/foreach-els.js","webpack:///./node_modules/pjax/lib/events/on.js","webpack:///./node_modules/pjax/lib/util/clone.js","webpack:///./node_modules/topbar/topbar.js","webpack:///./node_modules/pjax/lib/switches.js","webpack:///./node_modules/pjax/index.js","webpack:///./node_modules/pjax/lib/uniqueid.js","webpack:///./node_modules/pjax/lib/events/trigger.js","webpack:///./node_modules/pjax/lib/util/noop.js","webpack:///./node_modules/aos/dist/aos.js","webpack:///./node_modules/siema/dist/siema.min.js","webpack:///./node_modules/picturefill/dist/picturefill.js","webpack:///./node_modules/pjax/lib/execute-scripts.js","webpack:///./node_modules/pjax/lib/eval-script.js","webpack:///./node_modules/pjax/lib/parse-options.js","webpack:///./node_modules/pjax/lib/util/contains.js","webpack:///./node_modules/pjax/lib/util/extend.js","webpack:///./node_modules/pjax/lib/proto/log.js","webpack:///./node_modules/pjax/lib/proto/parse-element.js","webpack:///./node_modules/pjax/lib/proto/attach-link.js","webpack:///./node_modules/pjax/lib/proto/attach-form.js","webpack:///./node_modules/pjax/lib/foreach-selectors.js","webpack:///./node_modules/pjax/lib/switches-selectors.js","webpack:///./node_modules/pjax/lib/abort-request.js","webpack:///./node_modules/pjax/lib/send-request.js","webpack:///./node_modules/pjax/lib/util/update-query-string.js","webpack:///./node_modules/pjax/lib/proto/handle-response.js","webpack:///./node_modules/pjax/lib/is-supported.js","webpack:///./node_modules/tiny-slider/src/helpers/Object.keys.js","webpack:///./node_modules/tiny-slider/src/helpers/childNode.remove.js","webpack:///./node_modules/photoswipe/dist/photoswipe.js","webpack:///./node_modules/photoswipe/dist/photoswipe-ui-default.js","webpack:///./src/js/modules/galleries/image-galleries.js","webpack:///./src/js/modules/galleries/photoswipe-markup.js","webpack:///./src/js/modules/share/sharer.js","webpack:///./src/js/modules/smooth-scroll/smooth-scroll.js","webpack:///./src/js/modules/videos/autoresize.js","webpack:///./node_modules/tiny-slider/src/helpers/raf.js","webpack:///./node_modules/tiny-slider/src/helpers/caf.js","webpack:///./node_modules/tiny-slider/src/helpers/extend.js","webpack:///./node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack:///./node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///./node_modules/tiny-slider/src/helpers/getBody.js","webpack:///./node_modules/tiny-slider/src/helpers/docElement.js","webpack:///./node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack:///./node_modules/tiny-slider/src/helpers/forEach.js","webpack:///./node_modules/tiny-slider/src/helpers/classListSupport.js","webpack:///./node_modules/tiny-slider/src/helpers/hasClass.js","webpack:///./node_modules/tiny-slider/src/helpers/addClass.js","webpack:///./node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///./node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/setAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/hideElement.js","webpack:///./node_modules/tiny-slider/src/helpers/showElement.js","webpack:///./node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///./node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///./node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/events.js","webpack:///./node_modules/tiny-slider/src/tiny-slider.module.js","webpack:///./node_modules/tiny-slider/src/helpers/calc.js","webpack:///./node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack:///./node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack:///./node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack:///./node_modules/tiny-slider/src/helpers/getSlideId.js","webpack:///./node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack:///./node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///./node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/toDegree.js","webpack:///./node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack:///./src/js/modules/carousels/carousels.js","webpack:///./src/js/modules/carousels/testimonials.js","webpack:///./src/js/app.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","els","fn","context","HTMLCollection","NodeList","Array","forEach","forEachEls","events","listener","useCapture","split","e","el","addEventListener","obj","copy","constructor","attr","__WEBPACK_AMD_DEFINE_RESULT__","window","document","lastTime","vendors","x","length","requestAnimationFrame","cancelAnimationFrame","callback","element","currTime","Date","getTime","timeToCall","Math","max","id","setTimeout","clearTimeout","canvas","progressTimerId","fadeTimerId","currentProgress","showing","options","autoRun","barThickness","barColors","0",".25",".50",".75","1.0","shadowBlur","shadowColor","repaint","width","innerWidth","height","ctx","getContext","lineGradient","createLinearGradient","stop","addColorStop","lineWidth","beginPath","moveTo","lineTo","ceil","strokeStyle","stroke","topbar","config","opts","show","elem","type","handler","style","createElement","position","top","left","right","margin","padding","zIndex","display","body","appendChild","attachEvent","opacity","progress","loop","pow","sqrt","to","indexOf","parseFloat","hide","undefined","this","on","outerHTML","oldEl","newEl","onSwitch","innerHTML","className","removeAttribute","switchElementsAlt","hasAttributes","attrs","attributes","setNamedItem","cloneNode","replaceNode","parentNode","replaceChild","sideBySide","switchOptions","elsToRemove","elsToAdd","fragToAppend","createDocumentFragment","animationEventNames","animatedElsNumber","sexyAnimationEnd","target","currentTarget","removeChild","replace","getAttribute","childNodes","push","classList","contains","hasAttribute","add","callbacks","removeElement","classNames","remove","backward","forward","addClasses","addElement","setAttribute","executeScripts","parseOptions","switches","newUid","trigger","clone","extend","noop","Pjax","state","numPendingSwitches","href","log","scrollRestoration","history","maxUid","lastUid","parseDOM","st","opt","url","title","scrollPos","uid","loadUrl","getElements","querySelectorAll","elements","parseElement","refresh","reload","location","attachLink","attachForm","forEachSelectors","cb","DOMcontext","selectors","switchSelectors","fromEl","toEl","switchesOptions","latestChance","afterAllSwitches","loadContent","html","tmpEl","implementation","createHTMLDocument","matches","match","shift","htmlAttrib","trim","documentElement","slice","activeElement","blur","abortRequest","doRequest","handleResponse","request","autofocusEl","pop","focus","selector","replaceState","pushState","analytics","a","hash","decodeURIComponent","curtop","getElementById","getElementsByName","offsetParent","offsetTop","scrollTo","isSupported","stupidPjax","counter","event","createEvent","initEvent","eventName","keys","domFix","dispatchEvent","loaded","default","assign","arguments","u","f","b","v","y","g","h","w","k","offset","delay","easing","duration","disable","once","startEvent","throttleDelay","debounceDelay","disableMutationObserver","j","O","init","all","atob","mobile","phone","tablet","S","node","console","info","querySelector","readyState","ready","refreshHard","apply","_","M","TypeError","leading","maxWait","trailing","cancel","flush","valueOf","test","iterator","NaN","parseInt","self","Function","toString","min","now","MutationObserver","WebKitMutationObserver","MozMutationObserver","addedNodes","removedNodes","concat","dataset","aos","children","observe","childList","subtree","navigator","userAgent","vendor","opera","configurable","writable","substr","pageYOffset","innerHeight","anchor","anchorPlacement","isNaN","offsetHeight","offsetLeft","tagName","scrollLeft","scrollTop","map","mergeSettings","Error","resolveSlidesNumber","selectorWidth","offsetWidth","innerElements","currentSlide","startIndex","perPage","transformProperty","webkitOrNot","resizeHandler","draggable","pointerDown","drag","startX","endX","startY","letItGo","preventClick","touchstartHandler","touchendHandler","touchmoveHandler","mousedownHandler","mouseupHandler","mouseleaveHandler","mousemoveHandler","clickHandler","removeEventListener","attachEvents","overflow","direction","rtl","buildSliderFrame","onInit","sliderFrame","enableTransition","cursor","buildSliderFrameItem","slideToCurrent","cssFloat","float","disableTransition","onChange","webkitTransition","transition","abs","multipleDrag","threshold","prev","next","nodeName","stopPropagation","touches","pageX","pageY","updateAfterDrag","clearDrag","preventDefault","splice","insert","detachEvents","transform","timer","dummySrc","fixRespimg","findPictureImgs","onResize","mq","ua","HTMLPictureElement","RegExp","$1","img","source","sizes","picture","toUpperCase","insertBefore","firstElementChild","_pfLastSize","imgs","matchMedia","addListener","srcset","eminpx","alwaysCheckWDescriptor","evalId","pf","isSupportTestReady","image","getImgAttr","setImgAttr","removeImgAttr","docElem","types","cfg","algorithm","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","fsCss","isVwDirty","cssCache","sizeLengthCache","DPR","devicePixelRatio","units","px","in","alreadyRun","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","evt","capture","memoize","cache","input","isSpace","regLength","buildStr","image2","width1","isDomReady","func","wait","timeout","timestamp","later","regReady","run","timerId","lastClientWidth","evalCSS","css","args","index","string","toLowerCase","parsedLength","setResolution","candidate","sizesattr","cWidth","calcListLength","res","picturefill","plen","nodeType","qsa","reevaluate","reselect","sel","selShort","setupRun","fillImg","teardownRun","ascendingSort","getCandidateForSrc","src","set","candidates","parseSet","makeUrl","warn","hasFeature","supSrcset","supSizes","supPicture","complete","onload","onerror","setSize","matchesMedia","media","mMQ","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","collectCharacters","regEx","chars","exec","substring","pos","descriptors","currentDescriptor","inputLength","parseDescriptors","desc","lastChar","intVal","floatVal","pError","has1x","tokenize","charAt","parseSrcset","getEmValue","div","originalHTMLCSS","cssText","originalBodyCSS","sourceSizeListStr","uT","winningLength","strValue","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","size","regexCssLengthWithUnits","regexCssCalc","str","chrctr","component","componentArray","listArray","parenDepth","inComment","pushComponent","pushComponentArray","parseComponentValues","join","parseSizes","setRes","len","applySetCandidate","bestCandidate","curSrc","curCan","candidateSrc","abortCurSrc","lowerValue","higherValue","dprValue","isCached","bonusFactor","bonus","meanDensity","imageData","dpr","sets","setSrcToCur","cached","sort","setSrc","origWidth","getSet","parseSets","parent","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","sources","getElementsByTagName","getAllSourceElements","supported","srcAttr","parsed","extreme","evaled","srcSetCandidates","matchingSet","evaluated","applyBestCandidate","clientWidth","clientHeight","vw","vh","em","rem","fillImgs","last","typeUri","Image","detectTypeSupport","evalScript","script","code","text","textContent","async","createTextNode","HTMLHeadElement","HTMLBodyElement","defaultSwitches","defaultAnalytics","_gaq","ga","page","pathname","cacheBust","debug","currentUrlFullReload","head","doc","selectedEls","attrState","linkAction","isDefaultPrevented","attrValue","which","metaKey","ctrlKey","shiftKey","altKey","protocol","host","checkIfShouldAbort","triggerElement","defaultPrevented","returnValue","that","keyCode","formAction","requestOptions","requestUrl","requestMethod","virtLinkElement","enctype","formData","FormData","requestParams","formElements","checked","values","selected","disabled","encodeURIComponent","parseFormElements","switchesQueue","newEls","oldEls","queuedSwitch","onreadystatechange","abort","updateQueryString","queryString","requestPayload","XMLHttpRequest","status","responseText","ontimeout","param","open","setRequestHeader","JSON","stringify","send","uri","re","separator","currentState","oldHref","responseURL","getResponseHeader","oldHash","error","Element","__WEBPACK_AMD_DEFINE_FACTORY__","template","UiClass","items","framework","features","unbind","methodName","isArray","createEl","classes","tag","getScrollY","yOffset","removeClass","reg","addClass","hasClass","getChildByClass","parentEl","childClassName","firstChild","nextSibling","arraySearch","array","o1","o2","preventOverwrite","prop","sine","out","sin","PI","inOut","cos","cubic","detectFeatures","helperEl","helperStyle","oldIE","touch","raf","caf","pointerEvent","msPointerEnabled","platform","isOldIOSPhone","androidversion","isOldAndroid","androidVersion","isMobileOpera","styleCheckItem","styleName","styleChecks","svg","createElementNS","createSVGRect","evName","_handleEv","handleEvent","_options","allowPanToNext","spacing","bgOpacity","mouseUsed","pinchToClose","closeOnScroll","closeOnVerticalDrag","verticalDragRange","hideAnimationDuration","showAnimationDuration","showHideOpacity","escKey","arrowKeys","mainScrollEndFriction","panEndFriction","isClickableElement","getDoubleTapZoom","isMouseClick","item","initialZoomLevel","maxSpreadZoom","modal","scaleMode","_isOpen","_isDestroying","_closedByScroll","_currentItemIndex","_containerStyle","_containerShiftIndex","_upMoveEvents","_downEvents","_globalEventHandlers","_currZoomLevel","_startZoomLevel","_translatePrefix","_translateSufix","_updateSizeInterval","_itemsNeedUpdate","_itemHolders","_prevItemIndex","_dragStartEvent","_dragMoveEvent","_dragEndEvent","_dragCancelEvent","_transformKey","_pointerEventEnabled","_likelyTouchDevice","_requestAF","_cancelAF","_initalClassName","_initalWindowScrollY","_oldIE","_currentWindowScrollY","_features","_orientationChangeTimeout","_gestureStartTime","_gestureCheckSpeedTime","_releaseAnimData","_isZoomingIn","_verticalDragInitiated","_oldAndroidTouchEndTimeout","_isDragging","_isMultitouch","_zoomStarted","_moved","_dragAnimFrame","_mainScrollShifted","_currentPoints","_isZooming","_startPointsDistance","_currPanBounds","_currZoomElementStyle","_mainScrollAnimating","_direction","_isFirstMove","_opacityChanged","_bgOpacity","_wasOverInitialZoom","_tempCounter","_currPanDist","_startPanOffset","_panOffset","_viewportSize","_currPositionIndex","_offset","_slideSize","_indexDiff","_isFixedPosition","_modules","_windowVisibleSize","_renderMaxResolution","_registerModule","publicMethods","_getLoopedId","numSlides","_getNumItems","_listeners","_listen","_shout","listeners","_getCurrentTime","_applyBgOpacity","bg","_applyZoomTransform","styleObj","zoom","currItem","fitRatio","_applyCurrentZoomPan","allowRenderResolution","_setImageSize","_applyZoomPanToItem","container","initialPosition","_setTranslateX","elStyle","_moveMainScroll","dragging","newSlideIndexOffset","delta","round","_mainScrollPos","_calculatePanOffset","axis","zoomLevel","_midZoomPoint","_equalizePoints","p1","p2","_roundPoint","_mouseMoveTimeout","_onFirstMouseMove","_calculatePanBounds","update","bounds","_calculateItemSize","_getMinZoomLevel","_getMaxZoomLevel","_modifyDestPanOffset","destPanBounds","destPanOffset","destZoomLevel","_onKeyDown","keydownAction","_onGlobalClick","_updatePageScrollOffset","setScrollOffset","_animations","_numAnimations","_stopAnimation","_registerStartAnimation","_stopAllAnimations","_animateProp","endProp","easingFn","onUpdate","onComplete","startAnimTime","animloop","shout","listen","viewportSize","isMainScrollAnimating","getZoomLevel","getCurrentIndex","isDragging","isZooming","applyZoomPan","panX","panY","scrollWrap","itemHolders","wrap","allow3dTransform","perspective","zoomRatio","_setupTransforms","resize","updateSize","orientationchange","scroll","keydown","click","oldPhone","animationName","ui","_getItemAt","rootClasses","mainClass","setContent","updateCurrItem","setInterval","close","_showOrHide","destroy","_showOrHideTimeout","clearInterval","_stopDragUpdateLoop","panTo","force","goTo","diff","updateCurrZoomItem","emulateSetContent","zoomElement","center","invalidateCurrItems","needsUpdate","beforeAnimation","tempHolder","diffAbs","NUM_HOLDERS","unshift","prevItem","windowScrollY","holder","hIndex","cleanSlide","zoomTo","centerPoint","speed","updateFn","initialPanOffset","_currPoint","_startPoint","_currPointers","_startMainScrollPos","_posPoints","_tempPoint","_currZoomedItemIndex","_centerPoint","_lastReleaseTime","_currCenterPoint","_calculatePointsDistance","_dragUpdateLoop","_renderMovement","_closestElement","_preventObj","_preventDefaultEventBehaviour","isDown","prevent","_convertTouchToPoint","identifier","_findCenterOfPoints","pCenter","_calculateVerticalDragOpacityRatio","_ePoint1","_ePoint2","_tempPointsArr","_getTouchPoints","_panOrMoveMainScroll","panFriction","startOverDiff","newPanPos","newMainScrollPos","newOffset","dir","newMainScrollPosition","mainScrollDiff","_onDragStart","button","_initialZoomRunning","pointerIndex","pointerId","startPointsList","numPoints","_onDragMove","touchesList","_isEqualPoints","pointsDistance","_calculateZoomLevel","zoomFriction","minZoomLevel","maxZoomLevel","minusDiff","percent","opacityRatio","time","_pushPosPoint","mainScrollChanged","_onDragRelease","releasePoint","4","2","3","pointerType","gestureType","touchList","changedTouches","releaseTimeDiff","_initDragReleaseAnimationData","calculateSwipeSpeed","initalPanY","initialBgOpacity","itemChanged","_finishSwipeMainScrollGesture","_completePanGesture","_completeZoomGesture","lastFlickDuration","tempReleasePos","lastFlickOffset","lastFlickDist","lastFlickSpeed","slowDownRatio","slowDownRatioReverse","speedDecelerationRatio","speedDecelerationRatioAbs","distanceOffset","backAnimDestination","backAnimStarted","calculateOverBoundsAnimOffset","calculateAnimOffset","timeDiff","panAnimLoop","zoomPan","lastNow","animData","itemsDiff","nextCircle","totalShiftDist","isFastLastFlick","finishAnimDuration","animateToX","animateToDist","touchesDistance","initialOpacity","initGestures","addEventNames","pref","down","move","up","maxTouchPoints","msMaxTouchPoints","likelyTouchDevice","mousedown","mousemove","mouseup","_items","_initialContentSet","completeFn","thumbBounds","initialLayout","getThumbBoundsFn","closeWithRaf","fadeEverything","loadError","miniImg","webkitBackfaceVisibility","initalBgOpacity","_tempPanAreaSize","_imagesToAppendPool","_controllerDefaultOptions","errorMsg","forceProgressiveLoading","preload","getNumItemsFn","isInitial","vGap","bottom","hRatio","vRatio","realPanElementW","realPanElementH","_calculateSingleItemPanBounds","_appendImage","baseDiv","preventAnimation","keepPlaceholder","imageAppended","placeholder","_preloadImage","loading","loadComplete","_checkForError","cleanUp","maxRes","lastChild","_appendImagesPool","poolItem","clearPlaceholder","lazyLoadItem","initController","getItemAt","isNext","preloadBefore","preloadAfter","preloader","allowProgressiveImg","screen","placeholderClassName","msrc","tapTimer","_wheelDelta","tapReleasePoint","_dispatchTapEvent","origEvent","eDetail","initCustomEvent","initTap","onTapStart","onTapRelease","touch0","touch1","p0","clickedTagName","initDesktopZoom","setupDesktopZoom","handleMouseWheel","mouseZoomedIn","hasDraggingClass","updateZoomable","removeDraggingClass","deltaY","deltaMode","deltaX","wheelDeltaX","wheelDeltaY","wheelDelta","detail","newPanX","newPanY","toggleDesktopZoom","doubleTapZoomLevel","zoomOut","_historyUpdateTimeout","_hashChangeTimeout","_hashAnimCheckTimeout","_hashChangedByScript","_hashChangedByHistory","_hashReseted","_initialHash","_historyChanged","_closedFromURL","_urlChangedOnce","_windowLoc","_supportsPushState","_historyDefaultOptions","galleryUID","_getHash","_cleanHistoryTimeouts","_parseItemIndexFromURL","params","vars","pair","galleryPIDs","searchfor","pid","_updateHash","newHash","newURL","initHistory","updateURL","onHashChange","returnToOriginal","back","search","pswp","_fullscrenAPI","_controls","_captionContainer","_fakeCaptionContainer","_indexIndicator","_shareButton","_shareModal","_initalCloseOnScrollValue","_isIdle","_loadingIndicator","_loadingIndicatorHidden","_loadingIndicatorTimeout","_galleryHasOneSlide","_blockControlsTap","_idleInterval","_idleTimer","_overlayUIUpdated","_controlsVisible","_shareModalHidden","_defaultUIOptions","barsSize","closeElClasses","timeToIdle","timeToIdleOutside","loadingIndicatorDelay","addCaptionHTMLFn","captionEl","closeEl","fullscreenEl","zoomEl","shareEl","counterEl","arrowEl","preloaderEl","tapToClose","tapToToggleControls","clickToCloseNonZoomable","shareButtons","label","download","getImageURLForShare","getPageURLForShare","getTextForShare","indexIndicatorSep","fitControlsWidth","_onControlsTap","_onIdleMouseMove","uiElement","found","srcElement","clickedClass","_uiElements","onTap","tapDelay","_togglePswpClass","cName","_countNumItems","hasOneSlide","_toggleShareModalClass","_toggleShareModal","_updateShareURLs","_openWindowPopup","shareButtonData","shareURL","image_url","page_url","share_text","shareButtonOut","parseShareButtonOut","onclick","_hasCloseClass","_idleIncrement","setIdle","_onMouseLeaveWindow","from","relatedTarget","toElement","_toggleLoadingIndicator","_applyNavBarGaps","gap","bars","captionSize","option","isFullscreen","exit","enter","pinchControlsHidden","hideControls","showControls","point","preventObj","onGlobalTap","onMouseOver","eventK","updateFullscreen","classAttr","loopThroughChildElements","sChildren","topBar","_setupUIElements","getFullscreenAPI","naturalWidth","isIdle","updateIndexIndicator","supportsFullscreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","api","dE","tF","requestFullscreen","enterK","exitK","elementK","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","ALLOW_KEYBOARD_INPUT","image_galleries","ImageGalleries","_classCallCheck","_galleries","_pswpEl","_galleryToggles","insertAdjacentHTML","pswpMarkup","_gallery","buildGalleries","_this","gallery","images","slides","srcLrg","srcMed","caption","PhotoSwipe","PhotoSwipeUI_Default","toggle","parentElement","sharer","Sharer","sharer_classCallCheck","_shareLinks","updateShareLinks","shareLink","share","uiTitle","uiDesc","uiUrl","then","catch","nextElementSibling","smooth_scroll","SmoothScroll","smooth_scroll_classCallCheck","_anchorLinks","targetEl","scrollIntoView","behavior","autoresize","AutoResizeVideos","autoresize_classCallCheck","_allVideos","aspectRatio","resizeVideoHeights","raf_win","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","caf_win","mozCancelAnimationFrame","checkStorageValue","parse","setLocalStorage","storage","access","setItem","getBody","fake","docElement","setFakeBody","docOverflow","background","resetFakeBody","addCSSRule","sheet","rules","insertRule","addRule","getCssRulesLength","cssRules","arr","scope","classListSupport","hasAttr","getAttr","isNodeList","setAttrs","removeAttrs","attrLength","arrayFromNodeList","nl","hideElement","forceHide","showElement","isVisible","getComputedStyle","whichProperty","props","Props","prefix","getEndProperty","propIn","propOut","supportsPassive","passiveOption_opts","passiveOption","passive","addEvents","preventScrolling","removeEvents","Events","topics","off","emit","data","tns","gutter","edgePadding","fixedWidth","autoWidth","viewportMax","slideBy","controls","controlsPosition","controlsText","controlsContainer","prevButton","nextButton","nav","navPosition","navContainer","navAsThumbnails","autoplay","autoplayPosition","autoplayTimeout","autoplayDirection","autoplayText","autoplayHoverPause","autoplayButton","autoplayButtonOutput","autoplayResetOnVisibility","animateIn","animateOut","animateNormal","animateDelay","rewind","autoHeight","responsive","lazyload","lazyloadSelector","mouseDrag","swipeAngle","nested","preventActionWhenRunning","preventScrollOnTouch","freezable","useLocalStorage","win","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","localStorage","getItem","removeItem","CALC","result","val","vals","calc","PERCENTAGELAYOUT","wrapper","outer","getBoundingClientRect","count","percentageLayout","CSSMQ","rule","styleSheet","currentStyle","mediaquerySupport","TRANSFORM","HAS3DTRANSFORMS","tf","has3d","cssTF","getPropertyValue","has3DTransforms","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","tnsList","optionsElements","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","containerHTML","slideItems","slideCount","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","getOption","viewport","getViewportWidth","floor","fixedWidthViewportWidth","slideItemsOut","cloneCount","bp","tem","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","indexMin","getCurrentSlide","indexMax","moveDirectionExpected","running","newContainerClasses","slideId","tnsId","freeze","getFreeze","frozen","controlsEvents","onControlsClick","getEvent","keyIndex","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","Number","targetIndexBase","pages","targetIndex","navCurrentIndex","animating","stopAutoplay","curElement","setFocus","navItems","hoverEvents","mouseover","stopAutoplayTimer","autoplayHoverPaused","mouseout","setAutoplayTimer","visibilityEvent","visibilitychange","hidden","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","touchstart","onPanStart","touchmove","onPanMove","touchend","onPanEnd","touchcancel","dragEvents","mouseleave","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","imgCompleteClass","imgEvents","load","imgLoaded","imgCompleted","preventScroll","prevIsButton","nextIsButton","controlsContainerHTML","prevButtonHTML","nextButtonHTML","navContainerHTML","getPages","pagesCached","getCurrentNavIndex","navCurrentIndexCached","navActiveClass","navStr","navStrCurrent","autoplayTimer","autoplayUserPaused","autoplayButtonHTML","autoplayHtmlStrings","translateInit","rafIndex","initPosition","lastPosition","panStart","getDist","resetVariblesWhenDisable","wp","aria-hidden","tabindex","fragmentBefore","fragmentAfter","num","cloneFirst","cloneLast","initStructure","fontSize","slide","marginLeft","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","update_carousel_transition_duration","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","postfix","tick","unit","positionTick","resetDuration","doContainerTransform","getContainerTransformValue","moveElement","updateContentWrapperHeight","eve","animateSlide","version","getInfo","play","startAutoplay","pause","updateSliderHeight","updateInnerWrapperHeight","ownerNode","toggleAutoplay","htmlList","prevEl","previousElementSibling","rebuild","condition","ind","getAbsIndex","absIndex","getInsertPosition","getClientWidth","rect","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","toFixed","initSliderTransformCore","setSlidePositions","updateSlideStatus","getLiveRegionStr","txt","data-action","aria-label","data-nav","aria-controls","navHtml","hiddenStr","updateNavVisibility","data-controls","isButton","updateControlsStatus","disableUI","resizeTasks","doAutoHeight","doLazyLoad","disableSlider","freezeSlider","additionalUpdates","bpChanged","breakpointZoneTem","needContainerTransform","indChanged","itemsChanged","disableTem","freezeTem","arrowKeysTem","controlsTem","navTem","touchTem","mouseDragTem","autoplayTem","autoplayHoverPauseTem","autoplayResetOnVisibilityTem","indexTem","autoHeightTem","controlsTextTem","centerTem","autoplayTextTem","classN","enableUI","enableSlider","unfreezeSlider","updateLiveRegion","updateGallerySlidePositions","autoheightTem","deleteRule","removeRule","removeCSSRule","vp","getVisibleSlideRange","start","end","rangestart","rangeend","cell","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","attr2","base","range","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","number","classOut","classIn","isOut","render","sliderMoved","strTrans","propertyName","indexGap","factor","passEventObject","targetIn","updateAutoplayButton","action","isTouchEvent","preventDefaultBehavior","getMoveDirectionExpected","angle","atan2","$","clientX","clientY","panUpdate","err","dist","percentageX","indexMoved","moved","rough","displayIndex","carousels","Carousels","carousels_classCallCheck","carouselEls","buildCarousels","carouselEl","testimonials","TestimonialsCarousel","testimonials_classCallCheck","SLIDE_DURATION","CarouselWrapperEl","CarouselEl","NextBtn","PrevBtn","activeSlideIndex","buildCarousel","SlideEls","Carousel","Siema","setActiveSlide","isPaused","frame","clearTimer","_this2","AOS","pjax","oldMetaEls","newMetaEls","[data-ui-section=\"main\"]","triggerEl","pjaxAnchor","anchorEl"],"mappings":"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","file":"./js/bundle.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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 32);\n","/* global HTMLCollection: true */\n\nmodule.exports = function(els, fn, context) {\n if (\n els instanceof HTMLCollection ||\n els instanceof NodeList ||\n els instanceof Array\n ) {\n return Array.prototype.forEach.call(els, fn, context);\n }\n // assume simple DOM element\n return fn.call(context, els);\n};\n","var forEachEls = require(\"../foreach-els\");\n\nmodule.exports = function(els, events, listener, useCapture) {\n events = typeof events === \"string\" ? events.split(\" \") : events;\n\n events.forEach(function(e) {\n forEachEls(els, function(el) {\n el.addEventListener(e, listener, useCapture);\n });\n });\n};\n","module.exports = function(obj) {\n /* istanbul ignore if */\n if (null === obj || \"object\" !== typeof obj) {\n return obj;\n }\n var copy = obj.constructor();\n for (var attr in obj) {\n if (obj.hasOwnProperty(attr)) {\n copy[attr] = obj[attr];\n }\n }\n return copy;\n};\n","/*! topbar 0.1.3, 2014-12-09\n * http://buunguyen.github.io/topbar\n * Copyright (c) 2014 Buu Nguyen\n * Licensed under the MIT License */\n;(function(window, document) {\n 'use strict'\n \n // https://gist.github.com/paulirish/1579671\n ;(function() {\n var lastTime = 0;\n var vendors = ['ms', 'moz', 'webkit', 'o'];\n for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']\n || window[vendors[x]+'CancelRequestAnimationFrame'];\n }\n if (!window.requestAnimationFrame)\n window.requestAnimationFrame = function(callback, element) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function() { callback(currTime + timeToCall); },\n timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n if (!window.cancelAnimationFrame)\n window.cancelAnimationFrame = function(id) {\n clearTimeout(id);\n };\n }());\n\n var canvas, progressTimerId, fadeTimerId, currentProgress, showing,\n addEvent = function(elem, type, handler) {\n if (elem.addEventListener) elem.addEventListener(type, handler, false)\n else if (elem.attachEvent) elem.attachEvent('on' + type, handler)\n else elem['on' + type] = handler\n },\n options = {\n autoRun : true,\n barThickness : 3,\n barColors : {\n '0' : 'rgba(26, 188, 156, .9)',\n '.25' : 'rgba(52, 152, 219, .9)',\n '.50' : 'rgba(241, 196, 15, .9)',\n '.75' : 'rgba(230, 126, 34, .9)',\n '1.0' : 'rgba(211, 84, 0, .9)'\n },\n shadowBlur : 10,\n shadowColor : 'rgba(0, 0, 0, .6)'\n },\n repaint = function() {\n canvas.width = window.innerWidth\n canvas.height = options.barThickness * 5 // need space for shadow\n\n var ctx = canvas.getContext('2d')\n ctx.shadowBlur = options.shadowBlur\n ctx.shadowColor = options.shadowColor\n\n var lineGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n for (var stop in options.barColors)\n lineGradient.addColorStop(stop, options.barColors[stop])\n ctx.lineWidth = options.barThickness\n ctx.beginPath()\n ctx.moveTo(0, options.barThickness/2)\n ctx.lineTo(Math.ceil(currentProgress * canvas.width), options.barThickness/2)\n ctx.strokeStyle = lineGradient\n ctx.stroke()\n },\n createCanvas = function() {\n canvas = document.createElement('canvas')\n var style = canvas.style\n style.position = 'fixed'\n style.top = style.left = style.right = style.margin = style.padding = 0\n style.zIndex = 100001\n style.display = 'none'\n document.body.appendChild(canvas)\n addEvent(window, 'resize', repaint)\n },\n topbar = {\n config: function(opts) {\n for (var key in opts)\n if (options.hasOwnProperty(key))\n options[key] = opts[key]\n },\n show: function() {\n if (showing) return\n showing = true\n if (fadeTimerId !== null)\n window.cancelAnimationFrame(fadeTimerId) \n if (!canvas) createCanvas()\n canvas.style.opacity = 1\n canvas.style.display = 'block'\n topbar.progress(0)\n if (options.autoRun) {\n (function loop() {\n progressTimerId = window.requestAnimationFrame(loop)\n topbar.progress('+' + (.05 * Math.pow(1-Math.sqrt(currentProgress), 2)))\n })()\n }\n },\n progress: function(to) {\n if (typeof to === \"undefined\")\n return currentProgress\n if (typeof to === \"string\") {\n to = (to.indexOf('+') >= 0 || to.indexOf('-') >= 0 ? currentProgress : 0) + parseFloat(to)\n }\n currentProgress = to > 1 ? 1 : to\n repaint()\n return currentProgress\n },\n hide: function() {\n if (!showing) return\n showing = false\n if (progressTimerId != null) {\n window.cancelAnimationFrame(progressTimerId)\n progressTimerId = null\n }\n (function loop() {\n if (topbar.progress('+.1') >= 1) {\n canvas.style.opacity -= .05\n if (canvas.style.opacity <= .05) {\n canvas.style.display = 'none'\n fadeTimerId = null\n return\n } \n }\n fadeTimerId = window.requestAnimationFrame(loop)\n })()\n }\n }\n\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = topbar\n } else if (typeof define === 'function' && define.amd) {\n define(function() { return topbar })\n } else {\n this.topbar = topbar\n }\n}).call(this, window, document)","var on = require(\"./events/on\");\n\nmodule.exports = {\n outerHTML: function(oldEl, newEl) {\n oldEl.outerHTML = newEl.outerHTML;\n this.onSwitch();\n },\n\n innerHTML: function(oldEl, newEl) {\n oldEl.innerHTML = newEl.innerHTML;\n\n if (newEl.className === \"\") {\n oldEl.removeAttribute(\"class\");\n } else {\n oldEl.className = newEl.className;\n }\n\n this.onSwitch();\n },\n\n switchElementsAlt: function(oldEl, newEl) {\n oldEl.innerHTML = newEl.innerHTML;\n\n // Copy attributes from the new element to the old one\n if (newEl.hasAttributes()) {\n var attrs = newEl.attributes;\n for (var i = 0; i < attrs.length; i++) {\n oldEl.attributes.setNamedItem(attrs[i].cloneNode());\n }\n }\n\n this.onSwitch();\n },\n\n // Equivalent to outerHTML(), but doesn't require switchElementsAlt() for and \n replaceNode: function(oldEl, newEl) {\n oldEl.parentNode.replaceChild(newEl, oldEl);\n this.onSwitch();\n },\n\n sideBySide: function(oldEl, newEl, options, switchOptions) {\n var forEach = Array.prototype.forEach;\n var elsToRemove = [];\n var elsToAdd = [];\n var fragToAppend = document.createDocumentFragment();\n var animationEventNames =\n \"animationend webkitAnimationEnd MSAnimationEnd oanimationend\";\n var animatedElsNumber = 0;\n var sexyAnimationEnd = function(e) {\n if (e.target !== e.currentTarget) {\n // end triggered by an animation on a child\n return;\n }\n\n animatedElsNumber--;\n if (animatedElsNumber <= 0 && elsToRemove) {\n elsToRemove.forEach(function(el) {\n // browsing quickly can make the el\n // already removed by last page update ?\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n });\n\n elsToAdd.forEach(function(el) {\n el.className = el.className.replace(\n el.getAttribute(\"data-pjax-classes\"),\n \"\"\n );\n el.removeAttribute(\"data-pjax-classes\");\n });\n\n elsToAdd = null; // free memory\n elsToRemove = null; // free memory\n\n // this is to trigger some repaint (example: picturefill)\n this.onSwitch();\n }\n }.bind(this);\n\n switchOptions = switchOptions || {};\n\n forEach.call(oldEl.childNodes, function(el) {\n elsToRemove.push(el);\n if (el.classList && !el.classList.contains(\"js-Pjax-remove\")) {\n // for fast switch, clean element that just have been added, & not cleaned yet.\n if (el.hasAttribute(\"data-pjax-classes\")) {\n el.className = el.className.replace(\n el.getAttribute(\"data-pjax-classes\"),\n \"\"\n );\n el.removeAttribute(\"data-pjax-classes\");\n }\n el.classList.add(\"js-Pjax-remove\");\n if (switchOptions.callbacks && switchOptions.callbacks.removeElement) {\n switchOptions.callbacks.removeElement(el);\n }\n if (switchOptions.classNames) {\n el.className +=\n \" \" +\n switchOptions.classNames.remove +\n \" \" +\n (options.backward\n ? switchOptions.classNames.backward\n : switchOptions.classNames.forward);\n }\n animatedElsNumber++;\n on(el, animationEventNames, sexyAnimationEnd, true);\n }\n });\n\n forEach.call(newEl.childNodes, function(el) {\n if (el.classList) {\n var addClasses = \"\";\n if (switchOptions.classNames) {\n addClasses =\n \" js-Pjax-add \" +\n switchOptions.classNames.add +\n \" \" +\n (options.backward\n ? switchOptions.classNames.forward\n : switchOptions.classNames.backward);\n }\n if (switchOptions.callbacks && switchOptions.callbacks.addElement) {\n switchOptions.callbacks.addElement(el);\n }\n el.className += addClasses;\n el.setAttribute(\"data-pjax-classes\", addClasses);\n elsToAdd.push(el);\n fragToAppend.appendChild(el);\n animatedElsNumber++;\n on(el, animationEventNames, sexyAnimationEnd, true);\n }\n });\n\n // pass all className of the parent\n oldEl.className = newEl.className;\n oldEl.appendChild(fragToAppend);\n }\n};\n","var executeScripts = require(\"./lib/execute-scripts\");\nvar forEachEls = require(\"./lib/foreach-els\");\nvar parseOptions = require(\"./lib/parse-options\");\nvar switches = require(\"./lib/switches\");\nvar newUid = require(\"./lib/uniqueid\");\n\nvar on = require(\"./lib/events/on\");\nvar trigger = require(\"./lib/events/trigger\");\n\nvar clone = require(\"./lib/util/clone\");\nvar contains = require(\"./lib/util/contains\");\nvar extend = require(\"./lib/util/extend\");\nvar noop = require(\"./lib/util/noop\");\n\nvar Pjax = function(options) {\n this.state = {\n numPendingSwitches: 0,\n href: null,\n options: null\n };\n\n this.options = parseOptions(options);\n this.log(\"Pjax options\", this.options);\n\n if (this.options.scrollRestoration && \"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\";\n }\n\n this.maxUid = this.lastUid = newUid();\n\n this.parseDOM(document);\n\n on(\n window,\n \"popstate\",\n function(st) {\n if (st.state) {\n var opt = clone(this.options);\n opt.url = st.state.url;\n opt.title = st.state.title;\n // Since state already exists, prevent it from being pushed again\n opt.history = false;\n opt.scrollPos = st.state.scrollPos;\n if (st.state.uid < this.lastUid) {\n opt.backward = true;\n } else {\n opt.forward = true;\n }\n this.lastUid = st.state.uid;\n\n // @todo implement history cache here, based on uid\n this.loadUrl(st.state.url, opt);\n }\n }.bind(this)\n );\n};\n\nPjax.switches = switches;\n\nPjax.prototype = {\n log: require(\"./lib/proto/log\"),\n\n getElements: function(el) {\n return el.querySelectorAll(this.options.elements);\n },\n\n parseDOM: function(el) {\n var parseElement = require(\"./lib/proto/parse-element\");\n forEachEls(this.getElements(el), parseElement, this);\n },\n\n refresh: function(el) {\n this.parseDOM(el || document);\n },\n\n reload: function() {\n window.location.reload();\n },\n\n attachLink: require(\"./lib/proto/attach-link\"),\n\n attachForm: require(\"./lib/proto/attach-form\"),\n\n forEachSelectors: function(cb, context, DOMcontext) {\n return require(\"./lib/foreach-selectors\").bind(this)(\n this.options.selectors,\n cb,\n context,\n DOMcontext\n );\n },\n\n switchSelectors: function(selectors, fromEl, toEl, options) {\n return require(\"./lib/switches-selectors\").bind(this)(\n this.options.switches,\n this.options.switchesOptions,\n selectors,\n fromEl,\n toEl,\n options\n );\n },\n\n latestChance: function(href) {\n window.location = href;\n },\n\n onSwitch: function() {\n trigger(window, \"resize scroll\");\n\n this.state.numPendingSwitches--;\n\n // debounce calls, so we only run this once after all switches are finished.\n if (this.state.numPendingSwitches === 0) {\n this.afterAllSwitches();\n }\n },\n\n loadContent: function(html, options) {\n if (typeof html !== \"string\") {\n trigger(document, \"pjax:complete pjax:error\", options);\n\n return;\n }\n\n var tmpEl = document.implementation.createHTMLDocument(\"pjax\");\n\n // parse HTML attributes to copy them\n // since we are forced to use documentElement.innerHTML (outerHTML can't be used for )\n var htmlRegex = /]+>/gi;\n var htmlAttribsRegex = /\\s?[a-z:]+(?:=['\"][^'\">]+['\"])*/gi;\n var matches = html.match(htmlRegex);\n if (matches && matches.length) {\n matches = matches[0].match(htmlAttribsRegex);\n if (matches.length) {\n matches.shift();\n matches.forEach(function(htmlAttrib) {\n var attr = htmlAttrib.trim().split(\"=\");\n if (attr.length === 1) {\n tmpEl.documentElement.setAttribute(attr[0], true);\n } else {\n tmpEl.documentElement.setAttribute(attr[0], attr[1].slice(1, -1));\n }\n });\n }\n }\n\n tmpEl.documentElement.innerHTML = html;\n this.log(\n \"load content\",\n tmpEl.documentElement.attributes,\n tmpEl.documentElement.innerHTML.length\n );\n\n // Clear out any focused controls before inserting new page contents.\n if (\n document.activeElement &&\n contains(document, this.options.selectors, document.activeElement)\n ) {\n try {\n document.activeElement.blur();\n } catch (e) {} // eslint-disable-line no-empty\n }\n\n this.switchSelectors(this.options.selectors, tmpEl, document, options);\n },\n\n abortRequest: require(\"./lib/abort-request\"),\n\n doRequest: require(\"./lib/send-request\"),\n\n handleResponse: require(\"./lib/proto/handle-response\"),\n\n loadUrl: function(href, options) {\n options =\n typeof options === \"object\"\n ? extend({}, this.options, options)\n : clone(this.options);\n\n this.log(\"load href\", href, options);\n\n // Abort any previous request\n this.abortRequest(this.request);\n\n trigger(document, \"pjax:send\", options);\n\n // Do the request\n this.request = this.doRequest(\n href,\n options,\n this.handleResponse.bind(this)\n );\n },\n\n afterAllSwitches: function() {\n // FF bug: Won’t autofocus fields that are inserted via JS.\n // This behavior is incorrect. So if theres no current focus, autofocus\n // the last field.\n //\n // http://www.w3.org/html/wg/drafts/html/master/forms.html\n var autofocusEl = Array.prototype.slice\n .call(document.querySelectorAll(\"[autofocus]\"))\n .pop();\n if (autofocusEl && document.activeElement !== autofocusEl) {\n autofocusEl.focus();\n }\n\n // execute scripts when DOM have been completely updated\n this.options.selectors.forEach(function(selector) {\n forEachEls(document.querySelectorAll(selector), function(el) {\n executeScripts(el);\n });\n });\n\n var state = this.state;\n\n if (state.options.history) {\n if (!window.history.state) {\n this.lastUid = this.maxUid = newUid();\n window.history.replaceState(\n {\n url: window.location.href,\n title: document.title,\n uid: this.maxUid,\n scrollPos: [0, 0]\n },\n document.title\n );\n }\n\n // Update browser history\n this.lastUid = this.maxUid = newUid();\n\n window.history.pushState(\n {\n url: state.href,\n title: state.options.title,\n uid: this.maxUid,\n scrollPos: [0, 0]\n },\n state.options.title,\n state.href\n );\n }\n\n this.forEachSelectors(function(el) {\n this.parseDOM(el);\n }, this);\n\n // Fire Events\n trigger(document, \"pjax:complete pjax:success\", state.options);\n\n if (typeof state.options.analytics === \"function\") {\n state.options.analytics();\n }\n\n if (state.options.history) {\n // First parse url and check for hash to override scroll\n var a = document.createElement(\"a\");\n a.href = this.state.href;\n if (a.hash) {\n var name = a.hash.slice(1);\n name = decodeURIComponent(name);\n\n var curtop = 0;\n var target =\n document.getElementById(name) || document.getElementsByName(name)[0];\n if (target) {\n // http://stackoverflow.com/questions/8111094/cross-browser-javascript-function-to-find-actual-position-of-an-element-in-page\n if (target.offsetParent) {\n do {\n curtop += target.offsetTop;\n\n target = target.offsetParent;\n } while (target);\n }\n }\n window.scrollTo(0, curtop);\n } else if (state.options.scrollTo !== false) {\n // Scroll page to top on new page load\n if (state.options.scrollTo.length > 1) {\n window.scrollTo(state.options.scrollTo[0], state.options.scrollTo[1]);\n } else {\n window.scrollTo(0, state.options.scrollTo);\n }\n }\n } else if (state.options.scrollRestoration && state.options.scrollPos) {\n window.scrollTo(state.options.scrollPos[0], state.options.scrollPos[1]);\n }\n\n this.state = {\n numPendingSwitches: 0,\n href: null,\n options: null\n };\n }\n};\n\nPjax.isSupported = require(\"./lib/is-supported\");\n\n// arguably could do `if( require(\"./lib/is-supported\")()) {` but that might be a little to simple\nif (Pjax.isSupported()) {\n module.exports = Pjax;\n}\n// if there isn’t required browser functions, returning stupid api\nelse {\n var stupidPjax = noop;\n for (var key in Pjax.prototype) {\n if (\n Pjax.prototype.hasOwnProperty(key) &&\n typeof Pjax.prototype[key] === \"function\"\n ) {\n stupidPjax[key] = noop;\n }\n }\n\n module.exports = stupidPjax;\n}\n","module.exports = (function() {\n var counter = 0;\n return function() {\n var id = \"pjax\" + new Date().getTime() + \"_\" + counter;\n counter++;\n return id;\n };\n})();\n","var forEachEls = require(\"../foreach-els\");\n\nmodule.exports = function(els, events, opts) {\n events = typeof events === \"string\" ? events.split(\" \") : events;\n\n events.forEach(function(e) {\n var event;\n event = document.createEvent(\"HTMLEvents\");\n event.initEvent(e, true, true);\n event.eventName = e;\n if (opts) {\n Object.keys(opts).forEach(function(key) {\n event[key] = opts[key];\n });\n }\n\n forEachEls(els, function(el) {\n var domFix = false;\n if (!el.parentNode && el !== document && el !== window) {\n // THANK YOU IE (9/10/11)\n // dispatchEvent doesn't work if the element is not in the DOM\n domFix = true;\n document.body.appendChild(el);\n }\n el.dispatchEvent(event);\n if (domFix) {\n el.parentNode.removeChild(el);\n }\n });\n });\n};\n","module.exports = function() {};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"Siema\",[],t):\"object\"==typeof exports?exports.Siema=t():e.Siema=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){function t(r){if(i[r])return i[r].exports;var n=i[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var i={};return t.m=e,t.c=i,t.d=function(e,i,r){t.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,\"a\",i),i},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=0)}([function(e,t,i){\"use strict\";function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=function(){function e(e,t){for(var i=0;i=e&&(this.perPage=this.config.perPage[e])}}},{key:\"prev\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments[1];if(!(this.innerElements.length<=this.perPage)){var i=this.currentSlide;if(this.config.loop){if(this.currentSlide-e<0){this.disableTransition();var r=this.currentSlide+this.innerElements.length,n=this.perPage,s=r+n,l=(this.config.rtl?1:-1)*s*(this.selectorWidth/this.perPage),o=this.config.draggable?this.drag.endX-this.drag.startX:0;this.sliderFrame.style[this.transformProperty]=\"translate3d(\"+(l+o)+\"px, 0, 0)\",this.currentSlide=r-e}else this.currentSlide=this.currentSlide-e}else this.currentSlide=Math.max(this.currentSlide-e,0);i!==this.currentSlide&&(this.slideToCurrent(this.config.loop),this.config.onChange.call(this),t&&t.call(this))}}},{key:\"next\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments[1];if(!(this.innerElements.length<=this.perPage)){var i=this.currentSlide;if(this.config.loop){if(this.currentSlide+e>this.innerElements.length-this.perPage){this.disableTransition();var r=this.currentSlide-this.innerElements.length,n=this.perPage,s=r+n,l=(this.config.rtl?1:-1)*s*(this.selectorWidth/this.perPage),o=this.config.draggable?this.drag.endX-this.drag.startX:0;this.sliderFrame.style[this.transformProperty]=\"translate3d(\"+(l+o)+\"px, 0, 0)\",this.currentSlide=r+e}else this.currentSlide=this.currentSlide+e}else this.currentSlide=Math.min(this.currentSlide+e,this.innerElements.length-this.perPage);i!==this.currentSlide&&(this.slideToCurrent(this.config.loop),this.config.onChange.call(this),t&&t.call(this))}}},{key:\"disableTransition\",value:function(){this.sliderFrame.style.webkitTransition=\"all 0ms \"+this.config.easing,this.sliderFrame.style.transition=\"all 0ms \"+this.config.easing}},{key:\"enableTransition\",value:function(){this.sliderFrame.style.webkitTransition=\"all \"+this.config.duration+\"ms \"+this.config.easing,this.sliderFrame.style.transition=\"all \"+this.config.duration+\"ms \"+this.config.easing}},{key:\"goTo\",value:function(e,t){if(!(this.innerElements.length<=this.perPage)){var i=this.currentSlide;this.currentSlide=this.config.loop?e%this.innerElements.length:Math.min(Math.max(e,0),this.innerElements.length-this.perPage),i!==this.currentSlide&&(this.slideToCurrent(),this.config.onChange.call(this),t&&t.call(this))}}},{key:\"slideToCurrent\",value:function(e){var t=this,i=this.config.loop?this.currentSlide+this.perPage:this.currentSlide,r=(this.config.rtl?1:-1)*i*(this.selectorWidth/this.perPage);e?requestAnimationFrame(function(){requestAnimationFrame(function(){t.enableTransition(),t.sliderFrame.style[t.transformProperty]=\"translate3d(\"+r+\"px, 0, 0)\"})}):this.sliderFrame.style[this.transformProperty]=\"translate3d(\"+r+\"px, 0, 0)\"}},{key:\"updateAfterDrag\",value:function(){var e=(this.config.rtl?-1:1)*(this.drag.endX-this.drag.startX),t=Math.abs(e),i=this.config.multipleDrag?Math.ceil(t/(this.selectorWidth/this.perPage)):1,r=e>0&&this.currentSlide-i<0,n=e<0&&this.currentSlide+i>this.innerElements.length-this.perPage;e>0&&t>this.config.threshold&&this.innerElements.length>this.perPage?this.prev(i):e<0&&t>this.config.threshold&&this.innerElements.length>this.perPage&&this.next(i),this.slideToCurrent(r||n)}},{key:\"resizeHandler\",value:function(){this.resolveSlidesNumber(),this.currentSlide+this.perPage>this.innerElements.length&&(this.currentSlide=this.innerElements.length<=this.perPage?0:this.innerElements.length-this.perPage),this.selectorWidth=this.selector.offsetWidth,this.buildSliderFrame()}},{key:\"clearDrag\",value:function(){this.drag={startX:0,endX:0,startY:0,letItGo:null,preventClick:this.drag.preventClick}}},{key:\"touchstartHandler\",value:function(e){-1!==[\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\"].indexOf(e.target.nodeName)||(e.stopPropagation(),this.pointerDown=!0,this.drag.startX=e.touches[0].pageX,this.drag.startY=e.touches[0].pageY)}},{key:\"touchendHandler\",value:function(e){e.stopPropagation(),this.pointerDown=!1,this.enableTransition(),this.drag.endX&&this.updateAfterDrag(),this.clearDrag()}},{key:\"touchmoveHandler\",value:function(e){if(e.stopPropagation(),null===this.drag.letItGo&&(this.drag.letItGo=Math.abs(this.drag.startY-e.touches[0].pageY)=this.innerElements.length)throw new Error(\"Item to remove doesn't exist 😭\");var i=ethis.innerElements.length+1)throw new Error(\"Unable to inset it at this index 😭\");if(-1!==this.innerElements.indexOf(e))throw new Error(\"The same item in a carousel? Really? Nope 😭\");var r=t<=this.currentSlide>0&&this.innerElements.length;this.currentSlide=r?this.currentSlide+1:this.currentSlide,this.innerElements.splice(t,0,e),this.buildSliderFrame(),i&&i.call(this)}},{key:\"prepend\",value:function(e,t){this.insert(e,0),t&&t.call(this)}},{key:\"append\",value:function(e,t){this.insert(e,this.innerElements.length+1),t&&t.call(this)}},{key:\"destroy\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(this.detachEvents(),this.selector.style.cursor=\"auto\",e){for(var i=document.createDocumentFragment(),r=0;r img._pfLastSize) {\n\t\t\t\t\timg._pfLastSize = img.offsetWidth;\n\t\t\t\t\tsizes = img.sizes;\n\t\t\t\t\timg.sizes += \",100vw\";\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\timg.sizes = sizes;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar findPictureImgs = function() {\n\t\t\t\tvar i;\n\t\t\t\tvar imgs = document.querySelectorAll(\"picture > img, img[srcset][sizes]\");\n\t\t\t\tfor (i = 0; i < imgs.length; i++) {\n\t\t\t\t\tfixRespimg(imgs[i]);\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onResize = function() {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = setTimeout(findPictureImgs, 99);\n\t\t\t};\n\t\t\tvar mq = window.matchMedia && matchMedia(\"(orientation: landscape)\");\n\t\t\tvar init = function() {\n\t\t\t\tonResize();\n\n\t\t\t\tif (mq && mq.addListener) {\n\t\t\t\t\tmq.addListener(onResize);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdummySrc.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n\t\t\tif (/^[c|i]|d$/.test(document.readyState || \"\")) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t\t\t}\n\n\t\t\treturn onResize;\n\t\t})());\n\t}\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n * License: MIT\n */\n\n(function( window, document, undefined ) {\n\t// Enable strict mode\n\t\"use strict\";\n\n\t// HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n\tdocument.createElement( \"picture\" );\n\n\tvar warn, eminpx, alwaysCheckWDescriptor, evalId;\n\t// local object for method references and testing exposure\n\tvar pf = {};\n\tvar isSupportTestReady = false;\n\tvar noop = function() {};\n\tvar image = document.createElement( \"img\" );\n\tvar getImgAttr = image.getAttribute;\n\tvar setImgAttr = image.setAttribute;\n\tvar removeImgAttr = image.removeAttribute;\n\tvar docElem = document.documentElement;\n\tvar types = {};\n\tvar cfg = {\n\t\t//resource selection:\n\t\talgorithm: \"\"\n\t};\n\tvar srcAttr = \"data-pfsrc\";\n\tvar srcsetAttr = srcAttr + \"set\";\n\t// ua sniffing is done for undetectable img loading features,\n\t// to do some non crucial perf optimizations\n\tvar ua = navigator.userAgent;\n\tvar supportAbort = (/rident/).test(ua) || ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35 );\n\tvar curSrcProp = \"currentSrc\";\n\tvar regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n\tvar regSize = /(\\([^)]+\\))?\\s*(.+)/;\n\tvar setOptions = window.picturefillCFG;\n\t/**\n\t * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n\t */\n\t// baseStyle also used by getEmValue (i.e.: width: 1em is important)\n\tvar baseStyle = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\";\n\tvar fsCss = \"font-size:100%!important;\";\n\tvar isVwDirty = true;\n\n\tvar cssCache = {};\n\tvar sizeLengthCache = {};\n\tvar DPR = window.devicePixelRatio;\n\tvar units = {\n\t\tpx: 1,\n\t\t\"in\": 96\n\t};\n\tvar anchor = document.createElement( \"a\" );\n\t/**\n\t * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n\t * @type {boolean}\n\t */\n\tvar alreadyRun = false;\n\n\t// Reusable, non-\"g\" Regexes\n\n\t// (Don't use \\s, to avoid matching non-breaking space.)\n\tvar regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t regexTrailingCommas = /[,]+$/,\n\t regexNonNegativeInteger = /^\\d+$/,\n\n\t // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t // Must include at least one digit.\n\t // According to spec tests any decimal point must be followed by a digit.\n\t // No leading plus sign is allowed.)\n\t // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n\n\tvar on = function(obj, evt, fn, capture) {\n\t\tif ( obj.addEventListener ) {\n\t\t\tobj.addEventListener(evt, fn, capture || false);\n\t\t} else if ( obj.attachEvent ) {\n\t\t\tobj.attachEvent( \"on\" + evt, fn);\n\t\t}\n\t};\n\n\t/**\n\t * simple memoize function:\n\t */\n\n\tvar memoize = function(fn) {\n\t\tvar cache = {};\n\t\treturn function(input) {\n\t\t\tif ( !(input in cache) ) {\n\t\t\t\tcache[ input ] = fn(input);\n\t\t\t}\n\t\t\treturn cache[ input ];\n\t\t};\n\t};\n\n\t// UTILITY FUNCTIONS\n\n\t// Manual is faster than RegEx\n\t// http://jsperf.com/whitespace-character/5\n\tfunction isSpace(c) {\n\t\treturn (c === \"\\u0020\" || // space\n\t\t c === \"\\u0009\" || // horizontal tab\n\t\t c === \"\\u000A\" || // new line\n\t\t c === \"\\u000C\" || // form feed\n\t\t c === \"\\u000D\"); // carriage return\n\t}\n\n\t/**\n\t * gets a mediaquery and returns a boolean or gets a css length and returns a number\n\t * @param css mediaqueries or css length\n\t * @returns {boolean|number}\n\t *\n\t * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n\t */\n\tvar evalCSS = (function() {\n\n\t\tvar regLength = /^([\\d\\.]+)(em|vw|px)$/;\n\t\tvar replace = function() {\n\t\t\tvar args = arguments, index = 0, string = args[0];\n\t\t\twhile (++index in args) {\n\t\t\t\tstring = string.replace(args[index], args[++index]);\n\t\t\t}\n\t\t\treturn string;\n\t\t};\n\n\t\tvar buildStr = memoize(function(css) {\n\n\t\t\treturn \"return \" + replace((css || \"\").toLowerCase(),\n\t\t\t\t// interpret `and`\n\t\t\t\t/\\band\\b/g, \"&&\",\n\n\t\t\t\t// interpret `,`\n\t\t\t\t/,/g, \"||\",\n\n\t\t\t\t// interpret `min-` as >=\n\t\t\t\t/min-([a-z-\\s]+):/g, \"e.$1>=\",\n\n\t\t\t\t// interpret `max-` as <=\n\t\t\t\t/max-([a-z-\\s]+):/g, \"e.$1<=\",\n\n\t\t\t\t//calc value\n\t\t\t\t/calc([^)]+)/g, \"($1)\",\n\n\t\t\t\t// interpret css values\n\t\t\t\t/(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\",\n\t\t\t\t//make eval less evil\n\t\t\t\t/^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, \"\"\n\t\t\t) + \";\";\n\t\t});\n\n\t\treturn function(css, length) {\n\t\t\tvar parsedLength;\n\t\t\tif (!(css in cssCache)) {\n\t\t\t\tcssCache[css] = false;\n\t\t\t\tif (length && (parsedLength = css.match( regLength ))) {\n\t\t\t\t\tcssCache[css] = parsedLength[ 1 ] * units[parsedLength[ 2 ]];\n\t\t\t\t} else {\n\t\t\t\t\t/*jshint evil:true */\n\t\t\t\t\ttry{\n\t\t\t\t\t\tcssCache[css] = new Function(\"e\", buildStr(css))(units);\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t/*jshint evil:false */\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cssCache[css];\n\t\t};\n\t})();\n\n\tvar setResolution = function( candidate, sizesattr ) {\n\t\tif ( candidate.w ) { // h = means height: || descriptor.type === 'h' do not handle yet...\n\t\t\tcandidate.cWidth = pf.calcListLength( sizesattr || \"100vw\" );\n\t\t\tcandidate.res = candidate.w / candidate.cWidth ;\n\t\t} else {\n\t\t\tcandidate.res = candidate.d;\n\t\t}\n\t\treturn candidate;\n\t};\n\n\t/**\n\t *\n\t * @param opt\n\t */\n\tvar picturefill = function( opt ) {\n\n\t\tif (!isSupportTestReady) {return;}\n\n\t\tvar elements, i, plen;\n\n\t\tvar options = opt || {};\n\n\t\tif ( options.elements && options.elements.nodeType === 1 ) {\n\t\t\tif ( options.elements.nodeName.toUpperCase() === \"IMG\" ) {\n\t\t\t\toptions.elements = [ options.elements ];\n\t\t\t} else {\n\t\t\t\toptions.context = options.elements;\n\t\t\t\toptions.elements = null;\n\t\t\t}\n\t\t}\n\n\t\telements = options.elements || pf.qsa( (options.context || document), ( options.reevaluate || options.reselect ) ? pf.sel : pf.selShort );\n\n\t\tif ( (plen = elements.length) ) {\n\n\t\t\tpf.setupRun( options );\n\t\t\talreadyRun = true;\n\n\t\t\t// Loop through all elements\n\t\t\tfor ( i = 0; i < plen; i++ ) {\n\t\t\t\tpf.fillImg(elements[ i ], options);\n\t\t\t}\n\n\t\t\tpf.teardownRun( options );\n\t\t}\n\t};\n\n\t/**\n\t * outputs a warning for the developer\n\t * @param {message}\n\t * @type {Function}\n\t */\n\twarn = ( window.console && console.warn ) ?\n\t\tfunction( message ) {\n\t\t\tconsole.warn( message );\n\t\t} :\n\t\tnoop\n\t;\n\n\tif ( !(curSrcProp in image) ) {\n\t\tcurSrcProp = \"src\";\n\t}\n\n\t// Add support for standard mime types.\n\ttypes[ \"image/jpeg\" ] = true;\n\ttypes[ \"image/gif\" ] = true;\n\ttypes[ \"image/png\" ] = true;\n\n\tfunction detectTypeSupport( type, typeUri ) {\n\t\t// based on Modernizr's lossless img-webp test\n\t\t// note: asynchronous\n\t\tvar image = new window.Image();\n\t\timage.onerror = function() {\n\t\t\ttypes[ type ] = false;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.onload = function() {\n\t\t\ttypes[ type ] = image.width === 1;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.src = typeUri;\n\t\treturn \"pending\";\n\t}\n\n\t// test svg support\n\ttypes[ \"image/svg+xml\" ] = document.implementation.hasFeature( \"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\" );\n\n\t/**\n\t * updates the internal vW property with the current viewport width in px\n\t */\n\tfunction updateMetrics() {\n\n\t\tisVwDirty = false;\n\t\tDPR = window.devicePixelRatio;\n\t\tcssCache = {};\n\t\tsizeLengthCache = {};\n\n\t\tpf.DPR = DPR || 1;\n\n\t\tunits.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n\t\tunits.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n\n\t\tunits.vw = units.width / 100;\n\t\tunits.vh = units.height / 100;\n\n\t\tevalId = [ units.height, units.width, DPR ].join(\"-\");\n\n\t\tunits.em = pf.getEmValue();\n\t\tunits.rem = units.em;\n\t}\n\n\tfunction chooseLowRes( lowerValue, higherValue, dprValue, isCached ) {\n\t\tvar bonusFactor, tooMuch, bonus, meanDensity;\n\n\t\t//experimental\n\t\tif (cfg.algorithm === \"saveData\" ){\n\t\t\tif ( lowerValue > 2.7 ) {\n\t\t\t\tmeanDensity = dprValue + 1;\n\t\t\t} else {\n\t\t\t\ttooMuch = higherValue - dprValue;\n\t\t\t\tbonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n\n\t\t\t\tbonus = tooMuch * bonusFactor;\n\n\t\t\t\tif (isCached) {\n\t\t\t\t\tbonus += 0.1 * bonusFactor;\n\t\t\t\t}\n\n\t\t\t\tmeanDensity = lowerValue + bonus;\n\t\t\t}\n\t\t} else {\n\t\t\tmeanDensity = (dprValue > 1) ?\n\t\t\t\tMath.sqrt(lowerValue * higherValue) :\n\t\t\t\tlowerValue;\n\t\t}\n\n\t\treturn meanDensity > dprValue;\n\t}\n\n\tfunction applyBestCandidate( img ) {\n\t\tvar srcSetCandidates;\n\t\tvar matchingSet = pf.getSet( img );\n\t\tvar evaluated = false;\n\t\tif ( matchingSet !== \"pending\" ) {\n\t\t\tevaluated = evalId;\n\t\t\tif ( matchingSet ) {\n\t\t\t\tsrcSetCandidates = pf.setRes( matchingSet );\n\t\t\t\tpf.applySetCandidate( srcSetCandidates, img );\n\t\t\t}\n\t\t}\n\t\timg[ pf.ns ].evaled = evaluated;\n\t}\n\n\tfunction ascendingSort( a, b ) {\n\t\treturn a.res - b.res;\n\t}\n\n\tfunction setSrcToCur( img, src, set ) {\n\t\tvar candidate;\n\t\tif ( !set && src ) {\n\t\t\tset = img[ pf.ns ].sets;\n\t\t\tset = set && set[set.length - 1];\n\t\t}\n\n\t\tcandidate = getCandidateForSrc(src, set);\n\n\t\tif ( candidate ) {\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\timg[ pf.ns ].curSrc = src;\n\t\t\timg[ pf.ns ].curCan = candidate;\n\n\t\t\tif ( !candidate.res ) {\n\t\t\t\tsetResolution( candidate, candidate.set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getCandidateForSrc( src, set ) {\n\t\tvar i, candidate, candidates;\n\t\tif ( src && set ) {\n\t\t\tcandidates = pf.parseSet( set );\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\tfor ( i = 0; i < candidates.length; i++ ) {\n\t\t\t\tif ( src === pf.makeUrl(candidates[ i ].url) ) {\n\t\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getAllSourceElements( picture, candidates ) {\n\t\tvar i, len, source, srcset;\n\n\t\t// SPEC mismatch intended for size and perf:\n\t\t// actually only source elements preceding the img should be used\n\t\t// also note: don't use qsa here, because IE8 sometimes doesn't like source as the key part in a selector\n\t\tvar sources = picture.getElementsByTagName( \"source\" );\n\n\t\tfor ( i = 0, len = sources.length; i < len; i++ ) {\n\t\t\tsource = sources[ i ];\n\t\t\tsource[ pf.ns ] = true;\n\t\t\tsrcset = source.getAttribute( \"srcset\" );\n\n\t\t\t// if source does not have a srcset attribute, skip\n\t\t\tif ( srcset ) {\n\t\t\t\tcandidates.push( {\n\t\t\t\t\tsrcset: srcset,\n\t\t\t\t\tmedia: source.getAttribute( \"media\" ),\n\t\t\t\t\ttype: source.getAttribute( \"type\" ),\n\t\t\t\t\tsizes: source.getAttribute( \"sizes\" )\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Srcset Parser\n\t * By Alex Bell | MIT License\n\t *\n\t * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n\t *\n\t * Based super duper closely on the reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n\t */\n\n\t// 1. Let input be the value passed to this algorithm.\n\t// (TO-DO : Explain what \"set\" argument is here. Maybe choose a more\n\t// descriptive & more searchable name. Since passing the \"set\" in really has\n\t// nothing to do with parsing proper, I would prefer this assignment eventually\n\t// go in an external fn.)\n\tfunction parseSrcset(input, set) {\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t match = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\t\t url,\n\t\t descriptors,\n\t\t currentDescriptor,\n\t\t state,\n\t\t c,\n\n\t\t // 2. Let position be a pointer into input, initially pointing at the start\n\t\t // of the string.\n\t\t pos = 0,\n\n\t\t // 3. Let candidates be an initially empty source set.\n\t\t candidates = [];\n\n\t\t/**\n\t\t* Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t* @return undefined\n\t\t*/\n\t\t// (Declared outside of the while loop so that it's only created once.\n\t\t// (This fn is defined before it is used, in order to pass JSHINT.\n\t\t// Unfortunately this breaks the sequencing of the spec comments. :/ )\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t// 10. Let width be absent.\n\t\t\t// 11. Let density be absent.\n\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t w, d, h, i,\n\t\t\t candidate = {},\n\t\t\t desc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tif (!h && !d && !w) {candidate.d = 1;}\n\t\t\t\tif (candidate.d === 1) {set.has1x = true;}\n\t\t\t\tcandidate.set = set;\n\n\t\t\t\tcandidates.push(candidate);\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t\t/**\n\t\t* Tokenizes descriptor properties prior to parsing\n\t\t* Returns undefined.\n\t\t* (Again, this fn is defined before it is used, in order to pass JSHINT.\n\t\t* Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n\t\t*/\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t // Space character\n\t\t\t\t // If current descriptor is not empty, append current descriptor to\n\t\t\t\t // descriptors and let current descriptor be the empty string.\n\t\t\t\t // Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\t}\n\n\t/*\n\t * Sizes Parser\n\t *\n\t * By Alex Bell | MIT License\n\t *\n\t * Non-strict but accurate and lightweight JS Parser for the string value \n\t *\n\t * Reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n\t *\n\t * Most comments are copied in directly from the spec\n\t * (except for comments in parens).\n\t *\n\t * Grammar is:\n\t * = # [ , ]? | \n\t * = \n\t * = \n\t * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n\t *\n\t * E.g. \"(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw\"\n\t * or \"(min-width: 30em), calc(30vw - 15px)\" or just \"30vw\"\n\t *\n\t * Returns the first valid with a media condition that evaluates to true,\n\t * or \"100vw\" if all valid media conditions evaluate to false.\n\t *\n\t */\n\n\tfunction parseSizes(strValue) {\n\n\t\t// (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n\t\t// https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n\t\t// CSS allows a single optional plus or minus sign:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#numbers\n\t\t// CSS is ASCII case-insensitive:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#characters )\n\t\t// Spec allows exponential notation for type:\n\t\t// http://dev.w3.org/csswg/css-values/#numbers\n\t\tvar regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n\t\t// (This is a quick and lenient test. Because of optional unlimited-depth internal\n\t\t// grouping parens and strict spacing rules, this could get very complicated.)\n\t\tvar regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n\n\t\tvar i;\n\t\tvar unparsedSizesList;\n\t\tvar unparsedSizesListLength;\n\t\tvar unparsedSize;\n\t\tvar lastComponentValue;\n\t\tvar size;\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// (Toy CSS parser. The goals here are:\n\t\t// 1) expansive test coverage without the weight of a full CSS parser.\n\t\t// 2) Avoiding regex wherever convenient.\n\t\t// Quick tests: http://jsfiddle.net/gtntL4gr/3/\n\t\t// Returns an array of arrays.)\n\t\tfunction parseComponentValues(str) {\n\t\t\tvar chrctr;\n\t\t\tvar component = \"\";\n\t\t\tvar componentArray = [];\n\t\t\tvar listArray = [];\n\t\t\tvar parenDepth = 0;\n\t\t\tvar pos = 0;\n\t\t\tvar inComment = false;\n\n\t\t\tfunction pushComponent() {\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponentArray.push(component);\n\t\t\t\t\tcomponent = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushComponentArray() {\n\t\t\t\tif (componentArray[0]) {\n\t\t\t\t\tlistArray.push(componentArray);\n\t\t\t\t\tcomponentArray = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Loop forwards from the beginning of the string.)\n\t\t\twhile (true) {\n\t\t\t\tchrctr = str.charAt(pos);\n\n\t\t\t\tif (chrctr === \"\") { // ( End of string reached.)\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\treturn listArray;\n\t\t\t\t} else if (inComment) {\n\t\t\t\t\tif ((chrctr === \"*\") && (str[pos + 1] === \"/\")) { // (At end of a comment.)\n\t\t\t\t\t\tinComment = false;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpos += 1; // (Skip all characters inside comments.)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSpace(chrctr)) {\n\t\t\t\t\t// (If previous character in loop was also a space, or if\n\t\t\t\t\t// at the beginning of the string, do not add space char to\n\t\t\t\t\t// component.)\n\t\t\t\t\tif ( (str.charAt(pos - 1) && isSpace( str.charAt(pos - 1) ) ) || !component ) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (parenDepth === 0) {\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tpos +=1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// (Replace any space character with a plain space for legibility.)\n\t\t\t\t\t\tchrctr = \" \";\n\t\t\t\t\t}\n\t\t\t\t} else if (chrctr === \"(\") {\n\t\t\t\t\tparenDepth += 1;\n\t\t\t\t} else if (chrctr === \")\") {\n\t\t\t\t\tparenDepth -= 1;\n\t\t\t\t} else if (chrctr === \",\") {\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( (chrctr === \"/\") && (str.charAt(pos + 1) === \"*\") ) {\n\t\t\t\t\tinComment = true;\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcomponent = component + chrctr;\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tfunction isValidNonNegativeSourceSizeValue(s) {\n\t\t\tif (regexCssLengthWithUnits.test(s) && (parseFloat(s) >= 0)) {return true;}\n\t\t\tif (regexCssCalc.test(s)) {return true;}\n\t\t\t// ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n\t\t\t// \"-0 is equivalent to 0 and is not a negative number.\" which means that\n\t\t\t// unitless zero and unitless negative zero must be accepted as special cases.)\n\t\t\tif ((s === \"0\") || (s === \"-0\") || (s === \"+0\")) {return true;}\n\t\t\treturn false;\n\t\t}\n\n\t\t// When asked to parse a sizes attribute from an element, parse a\n\t\t// comma-separated list of component values from the value of the element's\n\t\t// sizes attribute (or the empty string, if the attribute is absent), and let\n\t\t// unparsed sizes list be the result.\n\t\t// http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n\t\tunparsedSizesList = parseComponentValues(strValue);\n\t\tunparsedSizesListLength = unparsedSizesList.length;\n\n\t\t// For each unparsed size in unparsed sizes list:\n\t\tfor (i = 0; i < unparsedSizesListLength; i++) {\n\t\t\tunparsedSize = unparsedSizesList[i];\n\n\t\t\t// 1. Remove all consecutive s from the end of unparsed size.\n\t\t\t// ( parseComponentValues() already omits spaces outside of parens. )\n\n\t\t\t// If unparsed size is now empty, that is a parse error; continue to the next\n\t\t\t// iteration of this algorithm.\n\t\t\t// ( parseComponentValues() won't push an empty array. )\n\n\t\t\t// 2. If the last component value in unparsed size is a valid non-negative\n\t\t\t// , let size be its value and remove the component value\n\t\t\t// from unparsed size. Any CSS function other than the calc() function is\n\t\t\t// invalid. Otherwise, there is a parse error; continue to the next iteration\n\t\t\t// of this algorithm.\n\t\t\t// http://dev.w3.org/csswg/css-syntax/#parse-component-value\n\t\t\tlastComponentValue = unparsedSize[unparsedSize.length - 1];\n\n\t\t\tif (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n\t\t\t\tsize = lastComponentValue;\n\t\t\t\tunparsedSize.pop();\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 3. Remove all consecutive s from the end of unparsed\n\t\t\t// size. If unparsed size is now empty, return size and exit this algorithm.\n\t\t\t// If this was not the last item in unparsed sizes list, that is a parse error.\n\t\t\tif (unparsedSize.length === 0) {\n\t\t\t\treturn size;\n\t\t\t}\n\n\t\t\t// 4. Parse the remaining component values in unparsed size as a\n\t\t\t// . If it does not parse correctly, or it does parse\n\t\t\t// correctly but the evaluates to false, continue to the\n\t\t\t// next iteration of this algorithm.\n\t\t\t// (Parsing all possible compound media conditions in JS is heavy, complicated,\n\t\t\t// and the payoff is unclear. Is there ever an situation where the\n\t\t\t// media condition parses incorrectly but still somehow evaluates to true?\n\t\t\t// Can we just rely on the browser/polyfill to do it?)\n\t\t\tunparsedSize = unparsedSize.join(\" \");\n\t\t\tif (!(pf.matchesMedia( unparsedSize ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 5. Return size and exit this algorithm.\n\t\t\treturn size;\n\t\t}\n\n\t\t// If the above algorithm exhausts unparsed sizes list without returning a\n\t\t// size value, return 100vw.\n\t\treturn \"100vw\";\n\t}\n\n\t// namespace\n\tpf.ns = (\"pf\" + new Date().getTime()).substr(0, 9);\n\n\t// srcset support test\n\tpf.supSrcset = \"srcset\" in image;\n\tpf.supSizes = \"sizes\" in image;\n\tpf.supPicture = !!window.HTMLPictureElement;\n\n\t// UC browser does claim to support srcset and picture, but not sizes,\n\t// this extended test reveals the browser does support nothing\n\tif (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n\t\t(function(image2) {\n\t\t\timage.srcset = \"data:,a\";\n\t\t\timage2.src = \"data:,a\";\n\t\t\tpf.supSrcset = image.complete === image2.complete;\n\t\t\tpf.supPicture = pf.supSrcset && pf.supPicture;\n\t\t})(document.createElement(\"img\"));\n\t}\n\n\t// Safari9 has basic support for sizes, but does't expose the `sizes` idl attribute\n\tif (pf.supSrcset && !pf.supSizes) {\n\n\t\t(function() {\n\t\t\tvar width2 = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\";\n\t\t\tvar width1 = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t\t\tvar img = document.createElement(\"img\");\n\t\t\tvar test = function() {\n\t\t\t\tvar width = img.width;\n\n\t\t\t\tif (width === 2) {\n\t\t\t\t\tpf.supSizes = true;\n\t\t\t\t}\n\n\t\t\t\talwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n\n\t\t\t\tisSupportTestReady = true;\n\t\t\t\t// force async\n\t\t\t\tsetTimeout(picturefill);\n\t\t\t};\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\t\t\timg.setAttribute(\"sizes\", \"9px\");\n\n\t\t\timg.srcset = width1 + \" 1w,\" + width2 + \" 9w\";\n\t\t\timg.src = width1;\n\t\t})();\n\n\t} else {\n\t\tisSupportTestReady = true;\n\t}\n\n\t// using pf.qsa instead of dom traversing does scale much better,\n\t// especially on sites mixing responsive and non-responsive images\n\tpf.selShort = \"picture>img,img[srcset]\";\n\tpf.sel = pf.selShort;\n\tpf.cfg = cfg;\n\n\t/**\n\t * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n\t */\n\tpf.DPR = (DPR || 1 );\n\tpf.u = units;\n\n\t// container of supported mime types that one might need to qualify before using\n\tpf.types = types;\n\n\tpf.setSize = noop;\n\n\t/**\n\t * Gets a string and returns the absolute URL\n\t * @param src\n\t * @returns {String} absolute URL\n\t */\n\n\tpf.makeUrl = memoize(function(src) {\n\t\tanchor.href = src;\n\t\treturn anchor.href;\n\t});\n\n\t/**\n\t * Gets a DOM element or document and a selctor and returns the found matches\n\t * Can be extended with jQuery/Sizzle for IE7 support\n\t * @param context\n\t * @param sel\n\t * @returns {NodeList|Array}\n\t */\n\tpf.qsa = function(context, sel) {\n\t\treturn ( \"querySelector\" in context ) ? context.querySelectorAll(sel) : [];\n\t};\n\n\t/**\n\t * Shortcut method for matchMedia ( for easy overriding in tests )\n\t * wether native or pf.mMQ is used will be decided lazy on first call\n\t * @returns {boolean}\n\t */\n\tpf.matchesMedia = function() {\n\t\tif ( window.matchMedia && (matchMedia( \"(min-width: 0.1em)\" ) || {}).matches ) {\n\t\t\tpf.matchesMedia = function( media ) {\n\t\t\t\treturn !media || ( matchMedia( media ).matches );\n\t\t\t};\n\t\t} else {\n\t\t\tpf.matchesMedia = pf.mMQ;\n\t\t}\n\n\t\treturn pf.matchesMedia.apply( this, arguments );\n\t};\n\n\t/**\n\t * A simplified matchMedia implementation for IE8 and IE9\n\t * handles only min-width/max-width with px or em values\n\t * @param media\n\t * @returns {boolean}\n\t */\n\tpf.mMQ = function( media ) {\n\t\treturn media ? evalCSS(media) : true;\n\t};\n\n\t/**\n\t * Returns the calculated length in css pixel from the given sourceSizeValue\n\t * http://dev.w3.org/csswg/css-values-3/#length-value\n\t * intended Spec mismatches:\n\t * * Does not check for invalid use of CSS functions\n\t * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n\t * @param sourceSizeValue\n\t * @returns {Number}\n\t */\n\tpf.calcLength = function( sourceSizeValue ) {\n\n\t\tvar value = evalCSS(sourceSizeValue, true) || false;\n\t\tif (value < 0) {\n\t\t\tvalue = false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t/**\n\t * Takes a type string and checks if its supported\n\t */\n\n\tpf.supportsType = function( type ) {\n\t\treturn ( type ) ? types[ type ] : true;\n\t};\n\n\t/**\n\t * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n\t * @param sourceSizeStr\n\t * @returns {*}\n\t */\n\tpf.parseSize = memoize(function( sourceSizeStr ) {\n\t\tvar match = ( sourceSizeStr || \"\" ).match(regSize);\n\t\treturn {\n\t\t\tmedia: match && match[1],\n\t\t\tlength: match && match[2]\n\t\t};\n\t});\n\n\tpf.parseSet = function( set ) {\n\t\tif ( !set.cands ) {\n\t\t\tset.cands = parseSrcset(set.srcset, set);\n\t\t}\n\t\treturn set.cands;\n\t};\n\n\t/**\n\t * returns 1em in css px for html/body default size\n\t * function taken from respondjs\n\t * @returns {*|number}\n\t */\n\tpf.getEmValue = function() {\n\t\tvar body;\n\t\tif ( !eminpx && (body = document.body) ) {\n\t\t\tvar div = document.createElement( \"div\" ),\n\t\t\t\toriginalHTMLCSS = docElem.style.cssText,\n\t\t\t\toriginalBodyCSS = body.style.cssText;\n\n\t\t\tdiv.style.cssText = baseStyle;\n\n\t\t\t// 1em in a media query is the value of the default font size of the browser\n\t\t\t// reset docElem and body to ensure the correct value is returned\n\t\t\tdocElem.style.cssText = fsCss;\n\t\t\tbody.style.cssText = fsCss;\n\n\t\t\tbody.appendChild( div );\n\t\t\teminpx = div.offsetWidth;\n\t\t\tbody.removeChild( div );\n\n\t\t\t//also update eminpx before returning\n\t\t\teminpx = parseFloat( eminpx, 10 );\n\n\t\t\t// restore the original values\n\t\t\tdocElem.style.cssText = originalHTMLCSS;\n\t\t\tbody.style.cssText = originalBodyCSS;\n\n\t\t}\n\t\treturn eminpx || 16;\n\t};\n\n\t/**\n\t * Takes a string of sizes and returns the width in pixels as a number\n\t */\n\tpf.calcListLength = function( sourceSizeListStr ) {\n\t\t// Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n\t\t//\n\t\t// or (min-width:30em) calc(30% - 15px)\n\t\tif ( !(sourceSizeListStr in sizeLengthCache) || cfg.uT ) {\n\t\t\tvar winningLength = pf.calcLength( parseSizes( sourceSizeListStr ) );\n\n\t\t\tsizeLengthCache[ sourceSizeListStr ] = !winningLength ? units.width : winningLength;\n\t\t}\n\n\t\treturn sizeLengthCache[ sourceSizeListStr ];\n\t};\n\n\t/**\n\t * Takes a candidate object with a srcset property in the form of url/\n\t * ex. \"images/pic-medium.png 1x, images/pic-medium-2x.png 2x\" or\n\t * \"images/pic-medium.png 400w, images/pic-medium-2x.png 800w\" or\n\t * \"images/pic-small.png\"\n\t * Get an array of image candidates in the form of\n\t * {url: \"/foo/bar.png\", resolution: 1}\n\t * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n\t * If sizes is specified, res is calculated\n\t */\n\tpf.setRes = function( set ) {\n\t\tvar candidates;\n\t\tif ( set ) {\n\n\t\t\tcandidates = pf.parseSet( set );\n\n\t\t\tfor ( var i = 0, len = candidates.length; i < len; i++ ) {\n\t\t\t\tsetResolution( candidates[ i ], set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidates;\n\t};\n\n\tpf.setRes.res = setResolution;\n\n\tpf.applySetCandidate = function( candidates, img ) {\n\t\tif ( !candidates.length ) {return;}\n\t\tvar candidate,\n\t\t\ti,\n\t\t\tj,\n\t\t\tlength,\n\t\t\tbestCandidate,\n\t\t\tcurSrc,\n\t\t\tcurCan,\n\t\t\tcandidateSrc,\n\t\t\tabortCurSrc;\n\n\t\tvar imageData = img[ pf.ns ];\n\t\tvar dpr = pf.DPR;\n\n\t\tcurSrc = imageData.curSrc || img[curSrcProp];\n\n\t\tcurCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n\t\t// if we have a current source, we might either become lazy or give this source some advantage\n\t\tif ( curCan && curCan.set === candidates[ 0 ].set ) {\n\n\t\t\t// if browser can abort image request and the image has a higher pixel density than needed\n\t\t\t// and this image isn't downloaded yet, we skip next part and try to save bandwidth\n\t\t\tabortCurSrc = (supportAbort && !img.complete && curCan.res - 0.1 > dpr);\n\n\t\t\tif ( !abortCurSrc ) {\n\t\t\t\tcurCan.cached = true;\n\n\t\t\t\t// if current candidate is \"best\", \"better\" or \"okay\",\n\t\t\t\t// set it to bestCandidate\n\t\t\t\tif ( curCan.res >= dpr ) {\n\t\t\t\t\tbestCandidate = curCan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !bestCandidate ) {\n\n\t\t\tcandidates.sort( ascendingSort );\n\n\t\t\tlength = candidates.length;\n\t\t\tbestCandidate = candidates[ length - 1 ];\n\n\t\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\tif ( candidate.res >= dpr ) {\n\t\t\t\t\tj = i - 1;\n\n\t\t\t\t\t// we have found the perfect candidate,\n\t\t\t\t\t// but let's improve this a little bit with some assumptions ;-)\n\t\t\t\t\tif (candidates[ j ] &&\n\t\t\t\t\t\t(abortCurSrc || curSrc !== pf.makeUrl( candidate.url )) &&\n\t\t\t\t\t\tchooseLowRes(candidates[ j ].res, candidate.res, dpr, candidates[ j ].cached)) {\n\n\t\t\t\t\t\tbestCandidate = candidates[ j ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( bestCandidate ) {\n\n\t\t\tcandidateSrc = pf.makeUrl( bestCandidate.url );\n\n\t\t\timageData.curSrc = candidateSrc;\n\t\t\timageData.curCan = bestCandidate;\n\n\t\t\tif ( candidateSrc !== curSrc ) {\n\t\t\t\tpf.setSrc( img, bestCandidate );\n\t\t\t}\n\t\t\tpf.setSize( img );\n\t\t}\n\t};\n\n\tpf.setSrc = function( img, bestCandidate ) {\n\t\tvar origWidth;\n\t\timg.src = bestCandidate.url;\n\n\t\t// although this is a specific Safari issue, we don't want to take too much different code paths\n\t\tif ( bestCandidate.set.type === \"image/svg+xml\" ) {\n\t\t\torigWidth = img.style.width;\n\t\t\timg.style.width = (img.offsetWidth + 1) + \"px\";\n\n\t\t\t// next line only should trigger a repaint\n\t\t\t// if... is only done to trick dead code removal\n\t\t\tif ( img.offsetWidth + 1 ) {\n\t\t\t\timg.style.width = origWidth;\n\t\t\t}\n\t\t}\n\t};\n\n\tpf.getSet = function( img ) {\n\t\tvar i, set, supportsType;\n\t\tvar match = false;\n\t\tvar sets = img [ pf.ns ].sets;\n\n\t\tfor ( i = 0; i < sets.length && !match; i++ ) {\n\t\t\tset = sets[i];\n\n\t\t\tif ( !set.srcset || !pf.matchesMedia( set.media ) || !(supportsType = pf.supportsType( set.type )) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( supportsType === \"pending\" ) {\n\t\t\t\tset = supportsType;\n\t\t\t}\n\n\t\t\tmatch = set;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tpf.parseSets = function( element, parent, options ) {\n\t\tvar srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n\n\t\tvar hasPicture = parent && parent.nodeName.toUpperCase() === \"PICTURE\";\n\t\tvar imageData = element[ pf.ns ];\n\n\t\tif ( imageData.src === undefined || options.src ) {\n\t\t\timageData.src = getImgAttr.call( element, \"src\" );\n\t\t\tif ( imageData.src ) {\n\t\t\t\tsetImgAttr.call( element, srcAttr, imageData.src );\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcAttr );\n\t\t\t}\n\t\t}\n\n\t\tif ( imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset ) {\n\t\t\tsrcsetAttribute = getImgAttr.call( element, \"srcset\" );\n\t\t\timageData.srcset = srcsetAttribute;\n\t\t\tsrcsetParsed = true;\n\t\t}\n\n\t\timageData.sets = [];\n\n\t\tif ( hasPicture ) {\n\t\t\timageData.pic = true;\n\t\t\tgetAllSourceElements( parent, imageData.sets );\n\t\t}\n\n\t\tif ( imageData.srcset ) {\n\t\t\timageSet = {\n\t\t\t\tsrcset: imageData.srcset,\n\t\t\t\tsizes: getImgAttr.call( element, \"sizes\" )\n\t\t\t};\n\n\t\t\timageData.sets.push( imageSet );\n\n\t\t\tisWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || \"\");\n\n\t\t\t// add normal src as candidate, if source has no w descriptor\n\t\t\tif ( !isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x ) {\n\t\t\t\timageSet.srcset += \", \" + imageData.src;\n\t\t\t\timageSet.cands.push({\n\t\t\t\t\turl: imageData.src,\n\t\t\t\t\td: 1,\n\t\t\t\t\tset: imageSet\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if ( imageData.src ) {\n\t\t\timageData.sets.push( {\n\t\t\t\tsrcset: imageData.src,\n\t\t\t\tsizes: null\n\t\t\t} );\n\t\t}\n\n\t\timageData.curCan = null;\n\t\timageData.curSrc = undefined;\n\n\t\t// if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n\t\t// or has a w descriptor (and does not support sizes) set support to false to evaluate\n\t\timageData.supported = !( hasPicture || ( imageSet && !pf.supSrcset ) || (isWDescripor && !pf.supSizes) );\n\n\t\tif ( srcsetParsed && pf.supSrcset && !imageData.supported ) {\n\t\t\tif ( srcsetAttribute ) {\n\t\t\t\tsetImgAttr.call( element, srcsetAttr, srcsetAttribute );\n\t\t\t\telement.srcset = \"\";\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcsetAttr );\n\t\t\t}\n\t\t}\n\n\t\tif (imageData.supported && !imageData.srcset && ((!imageData.src && element.src) || element.src !== pf.makeUrl(imageData.src))) {\n\t\t\tif (imageData.src === null) {\n\t\t\t\telement.removeAttribute(\"src\");\n\t\t\t} else {\n\t\t\t\telement.src = imageData.src;\n\t\t\t}\n\t\t}\n\n\t\timageData.parsed = true;\n\t};\n\n\tpf.fillImg = function(element, options) {\n\t\tvar imageData;\n\t\tvar extreme = options.reselect || options.reevaluate;\n\n\t\t// expando for caching data on the img\n\t\tif ( !element[ pf.ns ] ) {\n\t\t\telement[ pf.ns ] = {};\n\t\t}\n\n\t\timageData = element[ pf.ns ];\n\n\t\t// if the element has already been evaluated, skip it\n\t\t// unless `options.reevaluate` is set to true ( this, for example,\n\t\t// is set to true when running `picturefill` on `resize` ).\n\t\tif ( !extreme && imageData.evaled === evalId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !imageData.parsed || options.reevaluate ) {\n\t\t\tpf.parseSets( element, element.parentNode, options );\n\t\t}\n\n\t\tif ( !imageData.supported ) {\n\t\t\tapplyBestCandidate( element );\n\t\t} else {\n\t\t\timageData.evaled = evalId;\n\t\t}\n\t};\n\n\tpf.setupRun = function() {\n\t\tif ( !alreadyRun || isVwDirty || (DPR !== window.devicePixelRatio) ) {\n\t\t\tupdateMetrics();\n\t\t}\n\t};\n\n\t// If picture is supported, well, that's awesome.\n\tif ( pf.supPicture ) {\n\t\tpicturefill = noop;\n\t\tpf.fillImg = noop;\n\t} else {\n\n\t\t // Set up picture polyfill by polling the document\n\t\t(function() {\n\t\t\tvar isDomReady;\n\t\t\tvar regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n\n\t\t\tvar run = function() {\n\t\t\t\tvar readyState = document.readyState || \"\";\n\n\t\t\t\ttimerId = setTimeout(run, readyState === \"loading\" ? 200 : 999);\n\t\t\t\tif ( document.body ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t\tisDomReady = isDomReady || regReady.test(readyState);\n\t\t\t\t\tif ( isDomReady ) {\n\t\t\t\t\t\tclearTimeout( timerId );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar timerId = setTimeout(run, document.body ? 9 : 99);\n\n\t\t\t// Also attach picturefill on resize and readystatechange\n\t\t\t// http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n\t\t\tvar debounce = function(func, wait) {\n\t\t\t\tvar timeout, timestamp;\n\t\t\t\tvar later = function() {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function() {\n\t\t\t\t\ttimestamp = new Date();\n\n\t\t\t\t\tif (!timeout) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tvar lastClientWidth = docElem.clientHeight;\n\t\t\tvar onResize = function() {\n\t\t\t\tisVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n\t\t\t\tlastClientWidth = docElem.clientHeight;\n\t\t\t\tif ( isVwDirty ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ton( window, \"resize\", debounce(onResize, 99 ) );\n\t\t\ton( document, \"readystatechange\", run );\n\t\t})();\n\t}\n\n\tpf.picturefill = picturefill;\n\t//use this internally for easy monkey patching/performance testing\n\tpf.fillImgs = picturefill;\n\tpf.teardownRun = noop;\n\n\t/* expose methods for testing */\n\tpicturefill._ = pf;\n\n\twindow.picturefillCFG = {\n\t\tpf: pf,\n\t\tpush: function(args) {\n\t\t\tvar name = args.shift();\n\t\t\tif (typeof pf[name] === \"function\") {\n\t\t\t\tpf[name].apply(pf, args);\n\t\t\t} else {\n\t\t\t\tcfg[name] = args[0];\n\t\t\t\tif (alreadyRun) {\n\t\t\t\t\tpf.fillImgs( { reselect: true } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\twhile (setOptions && setOptions.length) {\n\t\twindow.picturefillCFG.push(setOptions.shift());\n\t}\n\n\t/* expose picturefill */\n\twindow.picturefill = picturefill;\n\n\t/* expose picturefill */\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// CommonJS, just export\n\t\tmodule.exports = picturefill;\n\t} else if ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD support\n\t\tdefine( \"picturefill\", function() { return picturefill; } );\n\t}\n\n\t// IE8 evals this sync, so it must be the last thing we do\n\tif ( !pf.supPicture ) {\n\t\ttypes[ \"image/webp\" ] = detectTypeSupport(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\" );\n\t}\n\n} )( window, document );\n","var forEachEls = require(\"./foreach-els\");\nvar evalScript = require(\"./eval-script\");\n// Finds and executes scripts (used for newly added elements)\n// Needed since innerHTML does not run scripts\nmodule.exports = function(el) {\n if (el.tagName.toLowerCase() === \"script\") {\n evalScript(el);\n }\n\n forEachEls(el.querySelectorAll(\"script\"), function(script) {\n if (!script.type || script.type.toLowerCase() === \"text/javascript\") {\n if (script.parentNode) {\n script.parentNode.removeChild(script);\n }\n evalScript(script);\n }\n });\n};\n","module.exports = function(el) {\n var code = el.text || el.textContent || el.innerHTML || \"\";\n var src = el.src || \"\";\n var parent =\n el.parentNode || document.querySelector(\"head\") || document.documentElement;\n var script = document.createElement(\"script\");\n\n if (code.match(\"document.write\")) {\n if (console && console.log) {\n console.log(\n \"Script contains document.write. Can’t be executed correctly. Code skipped \",\n el\n );\n }\n return false;\n }\n\n script.type = \"text/javascript\";\n script.id = el.id;\n\n /* istanbul ignore if */\n if (src !== \"\") {\n script.src = src;\n script.async = false; // force synchronous loading of peripheral JS\n }\n\n if (code !== \"\") {\n try {\n script.appendChild(document.createTextNode(code));\n } catch (e) {\n /* istanbul ignore next */\n // old IEs have funky script nodes\n script.text = code;\n }\n }\n\n // execute\n parent.appendChild(script);\n // avoid pollution only in head or body tags\n if (\n (parent instanceof HTMLHeadElement || parent instanceof HTMLBodyElement) &&\n parent.contains(script)\n ) {\n parent.removeChild(script);\n }\n\n return true;\n};\n","/* global _gaq: true, ga: true */\n\nvar defaultSwitches = require(\"./switches\");\n\nmodule.exports = function(options) {\n options = options || {};\n options.elements = options.elements || \"a[href], form[action]\";\n options.selectors = options.selectors || [\"title\", \".js-Pjax\"];\n options.switches = options.switches || {};\n options.switchesOptions = options.switchesOptions || {};\n options.history =\n typeof options.history === \"undefined\" ? true : options.history;\n options.analytics =\n typeof options.analytics === \"function\" || options.analytics === false\n ? options.analytics\n : defaultAnalytics;\n options.scrollTo =\n typeof options.scrollTo === \"undefined\" ? 0 : options.scrollTo;\n options.scrollRestoration =\n typeof options.scrollRestoration !== \"undefined\"\n ? options.scrollRestoration\n : true;\n options.cacheBust =\n typeof options.cacheBust === \"undefined\" ? true : options.cacheBust;\n options.debug = options.debug || false;\n options.timeout = options.timeout || 0;\n options.currentUrlFullReload =\n typeof options.currentUrlFullReload === \"undefined\"\n ? false\n : options.currentUrlFullReload;\n\n // We can’t replace body.outerHTML or head.outerHTML.\n // It creates a bug where a new body or head are created in the DOM.\n // If you set head.outerHTML, a new body tag is appended, so the DOM has 2 body nodes, and vice versa\n if (!options.switches.head) {\n options.switches.head = defaultSwitches.switchElementsAlt;\n }\n if (!options.switches.body) {\n options.switches.body = defaultSwitches.switchElementsAlt;\n }\n\n return options;\n};\n\n/* istanbul ignore next */\nfunction defaultAnalytics() {\n if (window._gaq) {\n _gaq.push([\"_trackPageview\"]);\n }\n if (window.ga) {\n ga(\"send\", \"pageview\", { page: location.pathname, title: document.title });\n }\n}\n","module.exports = function contains(doc, selectors, el) {\n for (var i = 0; i < selectors.length; i++) {\n var selectedEls = doc.querySelectorAll(selectors[i]);\n for (var j = 0; j < selectedEls.length; j++) {\n if (selectedEls[j].contains(el)) {\n return true;\n }\n }\n }\n\n return false;\n};\n","module.exports = function(target) {\n if (target == null) {\n return null;\n }\n\n var to = Object(target);\n\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n if (source != null) {\n for (var key in source) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n to[key] = source[key];\n }\n }\n }\n }\n return to;\n};\n","module.exports = function() {\n if (this.options.debug && console) {\n if (typeof console.log === \"function\") {\n console.log.apply(console, arguments);\n }\n // IE is weird\n else if (console.log) {\n console.log(arguments);\n }\n }\n};\n","var attrState = \"data-pjax-state\";\n\nmodule.exports = function(el) {\n switch (el.tagName.toLowerCase()) {\n case \"a\":\n // only attach link if el does not already have link attached\n if (!el.hasAttribute(attrState)) {\n this.attachLink(el);\n }\n break;\n\n case \"form\":\n // only attach link if el does not already have link attached\n if (!el.hasAttribute(attrState)) {\n this.attachForm(el);\n }\n break;\n\n default:\n throw \"Pjax can only be applied on or
submit\";\n }\n};\n","var on = require(\"../events/on\");\nvar clone = require(\"../util/clone\");\n\nvar attrState = \"data-pjax-state\";\n\nvar linkAction = function(el, event) {\n if (isDefaultPrevented(event)) {\n return;\n }\n\n // Since loadUrl modifies options and we may add our own modifications below,\n // clone it so the changes don't persist\n var options = clone(this.options);\n\n var attrValue = checkIfShouldAbort(el, event);\n if (attrValue) {\n el.setAttribute(attrState, attrValue);\n return;\n }\n\n event.preventDefault();\n\n // don’t do \"nothing\" if user try to reload the page by clicking the same link twice\n if (\n this.options.currentUrlFullReload &&\n el.href === window.location.href.split(\"#\")[0]\n ) {\n el.setAttribute(attrState, \"reload\");\n this.reload();\n return;\n }\n\n el.setAttribute(attrState, \"load\");\n\n options.triggerElement = el;\n this.loadUrl(el.href, options);\n};\n\nfunction checkIfShouldAbort(el, event) {\n // Don’t break browser special behavior on links (like page in new window)\n if (\n event.which > 1 ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey\n ) {\n return \"modifier\";\n }\n\n // we do test on href now to prevent unexpected behavior if for some reason\n // user have href that can be dynamically updated\n\n // Ignore external links.\n if (\n el.protocol !== window.location.protocol ||\n el.host !== window.location.host\n ) {\n return \"external\";\n }\n\n // Ignore anchors on the same page (keep native behavior)\n if (\n el.hash &&\n el.href.replace(el.hash, \"\") ===\n window.location.href.replace(location.hash, \"\")\n ) {\n return \"anchor\";\n }\n\n // Ignore empty anchor \"foo.html#\"\n if (el.href === window.location.href.split(\"#\")[0] + \"#\") {\n return \"anchor-empty\";\n }\n}\n\nvar isDefaultPrevented = function(event) {\n return event.defaultPrevented || event.returnValue === false;\n};\n\nmodule.exports = function(el) {\n var that = this;\n\n el.setAttribute(attrState, \"\");\n\n on(el, \"click\", function(event) {\n linkAction.call(that, el, event);\n });\n\n on(\n el,\n \"keyup\",\n function(event) {\n if (event.keyCode === 13) {\n linkAction.call(that, el, event);\n }\n }.bind(this)\n );\n};\n","var on = require(\"../events/on\");\nvar clone = require(\"../util/clone\");\n\nvar attrState = \"data-pjax-state\";\n\nvar formAction = function(el, event) {\n if (isDefaultPrevented(event)) {\n return;\n }\n\n // Since loadUrl modifies options and we may add our own modifications below,\n // clone it so the changes don't persist\n var options = clone(this.options);\n\n // Initialize requestOptions\n options.requestOptions = {\n requestUrl: el.getAttribute(\"action\") || window.location.href,\n requestMethod: el.getAttribute(\"method\") || \"GET\"\n };\n\n // create a testable virtual link of the form action\n var virtLinkElement = document.createElement(\"a\");\n virtLinkElement.setAttribute(\"href\", options.requestOptions.requestUrl);\n\n var attrValue = checkIfShouldAbort(virtLinkElement, options);\n if (attrValue) {\n el.setAttribute(attrState, attrValue);\n return;\n }\n\n event.preventDefault();\n\n if (el.enctype === \"multipart/form-data\") {\n options.requestOptions.formData = new FormData(el);\n } else {\n options.requestOptions.requestParams = parseFormElements(el);\n }\n\n el.setAttribute(attrState, \"submit\");\n\n options.triggerElement = el;\n this.loadUrl(virtLinkElement.href, options);\n};\n\nfunction parseFormElements(el) {\n var requestParams = [];\n var formElements = el.elements;\n\n for (var i = 0; i < formElements.length; i++) {\n var element = formElements[i];\n var tagName = element.tagName.toLowerCase();\n // jscs:disable disallowImplicitTypeConversion\n if (\n !!element.name &&\n element.attributes !== undefined &&\n tagName !== \"button\"\n ) {\n // jscs:enable disallowImplicitTypeConversion\n var type = element.attributes.type;\n\n if (\n !type ||\n (type.value !== \"checkbox\" && type.value !== \"radio\") ||\n element.checked\n ) {\n // Build array of values to submit\n var values = [];\n\n if (tagName === \"select\") {\n var opt;\n\n for (var j = 0; j < element.options.length; j++) {\n opt = element.options[j];\n if (opt.selected && !opt.disabled) {\n values.push(opt.hasAttribute(\"value\") ? opt.value : opt.text);\n }\n }\n } else {\n values.push(element.value);\n }\n\n for (var k = 0; k < values.length; k++) {\n requestParams.push({\n name: encodeURIComponent(element.name),\n value: encodeURIComponent(values[k])\n });\n }\n }\n }\n }\n\n return requestParams;\n}\n\nfunction checkIfShouldAbort(virtLinkElement, options) {\n // Ignore external links.\n if (\n virtLinkElement.protocol !== window.location.protocol ||\n virtLinkElement.host !== window.location.host\n ) {\n return \"external\";\n }\n\n // Ignore click if we are on an anchor on the same page\n if (\n virtLinkElement.hash &&\n virtLinkElement.href.replace(virtLinkElement.hash, \"\") ===\n window.location.href.replace(location.hash, \"\")\n ) {\n return \"anchor\";\n }\n\n // Ignore empty anchor \"foo.html#\"\n if (virtLinkElement.href === window.location.href.split(\"#\")[0] + \"#\") {\n return \"anchor-empty\";\n }\n\n // if declared as a full reload, just normally submit the form\n if (\n options.currentUrlFullReload &&\n virtLinkElement.href === window.location.href.split(\"#\")[0]\n ) {\n return \"reload\";\n }\n}\n\nvar isDefaultPrevented = function(event) {\n return event.defaultPrevented || event.returnValue === false;\n};\n\nmodule.exports = function(el) {\n var that = this;\n\n el.setAttribute(attrState, \"\");\n\n on(el, \"submit\", function(event) {\n formAction.call(that, el, event);\n });\n};\n","var forEachEls = require(\"./foreach-els\");\n\nmodule.exports = function(selectors, cb, context, DOMcontext) {\n DOMcontext = DOMcontext || document;\n selectors.forEach(function(selector) {\n forEachEls(DOMcontext.querySelectorAll(selector), cb, context);\n });\n};\n","var forEachEls = require(\"./foreach-els\");\n\nvar defaultSwitches = require(\"./switches\");\n\nmodule.exports = function(\n switches,\n switchesOptions,\n selectors,\n fromEl,\n toEl,\n options\n) {\n var switchesQueue = [];\n\n selectors.forEach(function(selector) {\n var newEls = fromEl.querySelectorAll(selector);\n var oldEls = toEl.querySelectorAll(selector);\n if (this.log) {\n this.log(\"Pjax switch\", selector, newEls, oldEls);\n }\n if (newEls.length !== oldEls.length) {\n throw \"DOM doesn’t look the same on new loaded page: ’\" +\n selector +\n \"’ - new \" +\n newEls.length +\n \", old \" +\n oldEls.length;\n }\n\n forEachEls(\n newEls,\n function(newEl, i) {\n var oldEl = oldEls[i];\n if (this.log) {\n this.log(\"newEl\", newEl, \"oldEl\", oldEl);\n }\n\n var callback = switches[selector]\n ? switches[selector].bind(\n this,\n oldEl,\n newEl,\n options,\n switchesOptions[selector]\n )\n : defaultSwitches.outerHTML.bind(this, oldEl, newEl, options);\n\n switchesQueue.push(callback);\n },\n this\n );\n }, this);\n\n this.state.numPendingSwitches = switchesQueue.length;\n\n switchesQueue.forEach(function(queuedSwitch) {\n queuedSwitch();\n });\n};\n","var noop = require(\"./util/noop\");\n\nmodule.exports = function(request) {\n if (request && request.readyState < 4) {\n request.onreadystatechange = noop;\n request.abort();\n }\n};\n","var updateQueryString = require(\"./util/update-query-string\");\n\nmodule.exports = function(location, options, callback) {\n options = options || {};\n var queryString;\n var requestOptions = options.requestOptions || {};\n var requestMethod = (requestOptions.requestMethod || \"GET\").toUpperCase();\n var requestParams = requestOptions.requestParams || null;\n var formData = requestOptions.formData || null;\n var requestPayload = null;\n var request = new XMLHttpRequest();\n var timeout = options.timeout || 0;\n\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n callback(request.responseText, request, location, options);\n } else if (request.status !== 0) {\n callback(null, request, location, options);\n }\n }\n };\n\n request.onerror = function(e) {\n console.log(e);\n callback(null, request, location, options);\n };\n\n request.ontimeout = function() {\n callback(null, request, location, options);\n };\n\n // Prepare the request payload for forms, if available\n if (requestParams && requestParams.length) {\n // Build query string\n queryString = requestParams\n .map(function(param) {\n return param.name + \"=\" + param.value;\n })\n .join(\"&\");\n\n switch (requestMethod) {\n case \"GET\":\n // Reset query string to avoid an issue with repeat submissions where checkboxes that were\n // previously checked are incorrectly preserved\n location = location.split(\"?\")[0];\n\n // Append new query string\n location += \"?\" + queryString;\n break;\n\n case \"POST\":\n // Send query string as request payload\n requestPayload = queryString;\n break;\n }\n } else if (formData) {\n requestPayload = formData;\n }\n\n // Add a timestamp as part of the query string if cache busting is enabled\n if (options.cacheBust) {\n location = updateQueryString(location, \"t\", Date.now());\n }\n\n request.open(requestMethod, location, true);\n request.timeout = timeout;\n request.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n request.setRequestHeader(\"X-PJAX\", \"true\");\n request.setRequestHeader(\n \"X-PJAX-Selectors\",\n JSON.stringify(options.selectors)\n );\n\n // Send the proper header information for POST forms\n if (requestPayload && requestMethod === \"POST\" && !formData) {\n request.setRequestHeader(\n \"Content-Type\",\n \"application/x-www-form-urlencoded\"\n );\n }\n\n request.send(requestPayload);\n\n return request;\n};\n","module.exports = function(uri, key, value) {\n var re = new RegExp(\"([?&])\" + key + \"=.*?(&|$)\", \"i\");\n var separator = uri.indexOf(\"?\") !== -1 ? \"&\" : \"?\";\n if (uri.match(re)) {\n return uri.replace(re, \"$1\" + key + \"=\" + value + \"$2\");\n } else {\n return uri + separator + key + \"=\" + value;\n }\n};\n","var clone = require(\"../util/clone\");\nvar newUid = require(\"../uniqueid\");\nvar trigger = require(\"../events/trigger\");\n\nmodule.exports = function(responseText, request, href, options) {\n options = clone(options || this.options);\n options.request = request;\n\n // Fail if unable to load HTML via AJAX\n if (responseText === false) {\n trigger(document, \"pjax:complete pjax:error\", options);\n\n return;\n }\n\n // push scroll position to history\n var currentState = window.history.state || {};\n window.history.replaceState(\n {\n url: currentState.url || window.location.href,\n title: currentState.title || document.title,\n uid: currentState.uid || newUid(),\n scrollPos: [\n document.documentElement.scrollLeft || document.body.scrollLeft,\n document.documentElement.scrollTop || document.body.scrollTop\n ]\n },\n document.title,\n window.location.href\n );\n\n // Check for redirects\n var oldHref = href;\n if (request.responseURL) {\n if (href !== request.responseURL) {\n href = request.responseURL;\n }\n } else if (request.getResponseHeader(\"X-PJAX-URL\")) {\n href = request.getResponseHeader(\"X-PJAX-URL\");\n } else if (request.getResponseHeader(\"X-XHR-Redirected-To\")) {\n href = request.getResponseHeader(\"X-XHR-Redirected-To\");\n }\n\n // Add back the hash if it was removed\n var a = document.createElement(\"a\");\n a.href = oldHref;\n var oldHash = a.hash;\n a.href = href;\n if (oldHash && !a.hash) {\n a.hash = oldHash;\n href = a.href;\n }\n\n this.state.href = href;\n this.state.options = options;\n\n try {\n this.loadContent(responseText, options);\n } catch (e) {\n trigger(document, \"pjax:error\", options);\n\n if (!this.options.debug) {\n if (console && console.error) {\n console.error(\"Pjax switch fail: \", e);\n }\n return this.latestChance(href);\n } else {\n throw e;\n }\n }\n};\n","module.exports = function() {\n // Borrowed wholesale from https://github.com/defunkt/jquery-pjax\n return (\n window.history &&\n window.history.pushState &&\n window.history.replaceState &&\n // pushState isn’t reliable on iOS until 5.\n !navigator.userAgent.match(\n /((iPod|iPhone|iPad).+\\bOS\\s+[1-4]\\D|WebApps\\/.+CFNetwork)/\n )\n );\n};\n","// Object.keys\nif (!Object.keys) {\n Object.keys = function(object) {\n var keys = [];\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n return keys;\n };\n}","// ChildNode.remove\nif(!(\"remove\" in Element.prototype)){\n Element.prototype.remove = function(){\n if(this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}","/*! PhotoSwipe - v4.1.3 - 2019-01-08\n* http://photoswipe.com\n* Copyright (c) 2019 Dmitry Semenov; */\n(function (root, factory) { \n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\troot.PhotoSwipe = factory();\n\t}\n})(this, function () {\n\n\t'use strict';\n\tvar PhotoSwipe = function(template, UiClass, items, options){\n\n/*>>framework-bridge*/\n/**\n *\n * Set of generic functions used by gallery.\n * \n * You're free to modify anything here as long as functionality is kept.\n * \n */\nvar framework = {\n\tfeatures: null,\n\tbind: function(target, type, listener, unbind) {\n\t\tvar methodName = (unbind ? 'remove' : 'add') + 'EventListener';\n\t\ttype = type.split(' ');\n\t\tfor(var i = 0; i < type.length; i++) {\n\t\t\tif(type[i]) {\n\t\t\t\ttarget[methodName]( type[i], listener, false);\n\t\t\t}\n\t\t}\n\t},\n\tisArray: function(obj) {\n\t\treturn (obj instanceof Array);\n\t},\n\tcreateEl: function(classes, tag) {\n\t\tvar el = document.createElement(tag || 'div');\n\t\tif(classes) {\n\t\t\tel.className = classes;\n\t\t}\n\t\treturn el;\n\t},\n\tgetScrollY: function() {\n\t\tvar yOffset = window.pageYOffset;\n\t\treturn yOffset !== undefined ? yOffset : document.documentElement.scrollTop;\n\t},\n\tunbind: function(target, type, listener) {\n\t\tframework.bind(target,type,listener,true);\n\t},\n\tremoveClass: function(el, className) {\n\t\tvar reg = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\n\t\tel.className = el.className.replace(reg, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, ''); \n\t},\n\taddClass: function(el, className) {\n\t\tif( !framework.hasClass(el,className) ) {\n\t\t\tel.className += (el.className ? ' ' : '') + className;\n\t\t}\n\t},\n\thasClass: function(el, className) {\n\t\treturn el.className && new RegExp('(^|\\\\s)' + className + '(\\\\s|$)').test(el.className);\n\t},\n\tgetChildByClass: function(parentEl, childClassName) {\n\t\tvar node = parentEl.firstChild;\n\t\twhile(node) {\n\t\t\tif( framework.hasClass(node, childClassName) ) {\n\t\t\t\treturn node;\n\t\t\t}\n\t\t\tnode = node.nextSibling;\n\t\t}\n\t},\n\tarraySearch: function(array, value, key) {\n\t\tvar i = array.length;\n\t\twhile(i--) {\n\t\t\tif(array[i][key] === value) {\n\t\t\t\treturn i;\n\t\t\t} \n\t\t}\n\t\treturn -1;\n\t},\n\textend: function(o1, o2, preventOverwrite) {\n\t\tfor (var prop in o2) {\n\t\t\tif (o2.hasOwnProperty(prop)) {\n\t\t\t\tif(preventOverwrite && o1.hasOwnProperty(prop)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\to1[prop] = o2[prop];\n\t\t\t}\n\t\t}\n\t},\n\teasing: {\n\t\tsine: {\n\t\t\tout: function(k) {\n\t\t\t\treturn Math.sin(k * (Math.PI / 2));\n\t\t\t},\n\t\t\tinOut: function(k) {\n\t\t\t\treturn - (Math.cos(Math.PI * k) - 1) / 2;\n\t\t\t}\n\t\t},\n\t\tcubic: {\n\t\t\tout: function(k) {\n\t\t\t\treturn --k * k * k + 1;\n\t\t\t}\n\t\t}\n\t\t/*\n\t\t\telastic: {\n\t\t\t\tout: function ( k ) {\n\n\t\t\t\t\tvar s, a = 0.1, p = 0.4;\n\t\t\t\t\tif ( k === 0 ) return 0;\n\t\t\t\t\tif ( k === 1 ) return 1;\n\t\t\t\t\tif ( !a || a < 1 ) { a = 1; s = p / 4; }\n\t\t\t\t\telse s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );\n\t\t\t\t\treturn ( a * Math.pow( 2, - 10 * k) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) + 1 );\n\n\t\t\t\t},\n\t\t\t},\n\t\t\tback: {\n\t\t\t\tout: function ( k ) {\n\t\t\t\t\tvar s = 1.70158;\n\t\t\t\t\treturn --k * k * ( ( s + 1 ) * k + s ) + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t*/\n\t},\n\n\t/**\n\t * \n\t * @return {object}\n\t * \n\t * {\n\t * raf : request animation frame function\n\t * caf : cancel animation frame function\n\t * transfrom : transform property key (with vendor), or null if not supported\n\t * oldIE : IE8 or below\n\t * }\n\t * \n\t */\n\tdetectFeatures: function() {\n\t\tif(framework.features) {\n\t\t\treturn framework.features;\n\t\t}\n\t\tvar helperEl = framework.createEl(),\n\t\t\thelperStyle = helperEl.style,\n\t\t\tvendor = '',\n\t\t\tfeatures = {};\n\n\t\t// IE8 and below\n\t\tfeatures.oldIE = document.all && !document.addEventListener;\n\n\t\tfeatures.touch = 'ontouchstart' in window;\n\n\t\tif(window.requestAnimationFrame) {\n\t\t\tfeatures.raf = window.requestAnimationFrame;\n\t\t\tfeatures.caf = window.cancelAnimationFrame;\n\t\t}\n\n\t\tfeatures.pointerEvent = !!(window.PointerEvent) || navigator.msPointerEnabled;\n\n\t\t// fix false-positive detection of old Android in new IE\n\t\t// (IE11 ua string contains \"Android 4.0\")\n\t\t\n\t\tif(!features.pointerEvent) { \n\n\t\t\tvar ua = navigator.userAgent;\n\n\t\t\t// Detect if device is iPhone or iPod and if it's older than iOS 8\n\t\t\t// http://stackoverflow.com/a/14223920\n\t\t\t// \n\t\t\t// This detection is made because of buggy top/bottom toolbars\n\t\t\t// that don't trigger window.resize event.\n\t\t\t// For more info refer to _isFixedPosition variable in core.js\n\n\t\t\tif (/iP(hone|od)/.test(navigator.platform)) {\n\t\t\t\tvar v = (navigator.appVersion).match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n\t\t\t\tif(v && v.length > 0) {\n\t\t\t\t\tv = parseInt(v[1], 10);\n\t\t\t\t\tif(v >= 1 && v < 8 ) {\n\t\t\t\t\t\tfeatures.isOldIOSPhone = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Detect old Android (before KitKat)\n\t\t\t// due to bugs related to position:fixed\n\t\t\t// http://stackoverflow.com/questions/7184573/pick-up-the-android-version-in-the-browser-by-javascript\n\t\t\t\n\t\t\tvar match = ua.match(/Android\\s([0-9\\.]*)/);\n\t\t\tvar androidversion = match ? match[1] : 0;\n\t\t\tandroidversion = parseFloat(androidversion);\n\t\t\tif(androidversion >= 1 ) {\n\t\t\t\tif(androidversion < 4.4) {\n\t\t\t\t\tfeatures.isOldAndroid = true; // for fixed position bug & performance\n\t\t\t\t}\n\t\t\t\tfeatures.androidVersion = androidversion; // for touchend bug\n\t\t\t}\t\n\t\t\tfeatures.isMobileOpera = /opera mini|opera mobi/i.test(ua);\n\n\t\t\t// p.s. yes, yes, UA sniffing is bad, propose your solution for above bugs.\n\t\t}\n\t\t\n\t\tvar styleChecks = ['transform', 'perspective', 'animationName'],\n\t\t\tvendors = ['', 'webkit','Moz','ms','O'],\n\t\t\tstyleCheckItem,\n\t\t\tstyleName;\n\n\t\tfor(var i = 0; i < 4; i++) {\n\t\t\tvendor = vendors[i];\n\n\t\t\tfor(var a = 0; a < 3; a++) {\n\t\t\t\tstyleCheckItem = styleChecks[a];\n\n\t\t\t\t// uppercase first letter of property name, if vendor is present\n\t\t\t\tstyleName = vendor + (vendor ? \n\t\t\t\t\t\t\t\t\t\tstyleCheckItem.charAt(0).toUpperCase() + styleCheckItem.slice(1) : \n\t\t\t\t\t\t\t\t\t\tstyleCheckItem);\n\t\t\t\n\t\t\t\tif(!features[styleCheckItem] && styleName in helperStyle ) {\n\t\t\t\t\tfeatures[styleCheckItem] = styleName;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(vendor && !features.raf) {\n\t\t\t\tvendor = vendor.toLowerCase();\n\t\t\t\tfeatures.raf = window[vendor+'RequestAnimationFrame'];\n\t\t\t\tif(features.raf) {\n\t\t\t\t\tfeatures.caf = window[vendor+'CancelAnimationFrame'] || \n\t\t\t\t\t\t\t\t\twindow[vendor+'CancelRequestAnimationFrame'];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\t\n\t\tif(!features.raf) {\n\t\t\tvar lastTime = 0;\n\t\t\tfeatures.raf = function(fn) {\n\t\t\t\tvar currTime = new Date().getTime();\n\t\t\t\tvar timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\t\t\t\tvar id = window.setTimeout(function() { fn(currTime + timeToCall); }, timeToCall);\n\t\t\t\tlastTime = currTime + timeToCall;\n\t\t\t\treturn id;\n\t\t\t};\n\t\t\tfeatures.caf = function(id) { clearTimeout(id); };\n\t\t}\n\n\t\t// Detect SVG support\n\t\tfeatures.svg = !!document.createElementNS && \n\t\t\t\t\t\t!!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect;\n\n\t\tframework.features = features;\n\n\t\treturn features;\n\t}\n};\n\nframework.detectFeatures();\n\n// Override addEventListener for old versions of IE\nif(framework.features.oldIE) {\n\n\tframework.bind = function(target, type, listener, unbind) {\n\t\t\n\t\ttype = type.split(' ');\n\n\t\tvar methodName = (unbind ? 'detach' : 'attach') + 'Event',\n\t\t\tevName,\n\t\t\t_handleEv = function() {\n\t\t\t\tlistener.handleEvent.call(listener);\n\t\t\t};\n\n\t\tfor(var i = 0; i < type.length; i++) {\n\t\t\tevName = type[i];\n\t\t\tif(evName) {\n\n\t\t\t\tif(typeof listener === 'object' && listener.handleEvent) {\n\t\t\t\t\tif(!unbind) {\n\t\t\t\t\t\tlistener['oldIE' + evName] = _handleEv;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(!listener['oldIE' + evName]) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttarget[methodName]( 'on' + evName, listener['oldIE' + evName]);\n\t\t\t\t} else {\n\t\t\t\t\ttarget[methodName]( 'on' + evName, listener);\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t};\n\t\n}\n\n/*>>framework-bridge*/\n\n/*>>core*/\n//function(template, UiClass, items, options)\n\nvar self = this;\n\n/**\n * Static vars, don't change unless you know what you're doing.\n */\nvar DOUBLE_TAP_RADIUS = 25, \n\tNUM_HOLDERS = 3;\n\n/**\n * Options\n */\nvar _options = {\n\tallowPanToNext:true,\n\tspacing: 0.12,\n\tbgOpacity: 1,\n\tmouseUsed: false,\n\tloop: true,\n\tpinchToClose: true,\n\tcloseOnScroll: true,\n\tcloseOnVerticalDrag: true,\n\tverticalDragRange: 0.75,\n\thideAnimationDuration: 333,\n\tshowAnimationDuration: 333,\n\tshowHideOpacity: false,\n\tfocus: true,\n\tescKey: true,\n\tarrowKeys: true,\n\tmainScrollEndFriction: 0.35,\n\tpanEndFriction: 0.35,\n\tisClickableElement: function(el) {\n return el.tagName === 'A';\n },\n getDoubleTapZoom: function(isMouseClick, item) {\n \tif(isMouseClick) {\n \t\treturn 1;\n \t} else {\n \t\treturn item.initialZoomLevel < 0.7 ? 1 : 1.33;\n \t}\n },\n maxSpreadZoom: 1.33,\n\tmodal: true,\n\n\t// not fully implemented yet\n\tscaleMode: 'fit' // TODO\n};\nframework.extend(_options, options);\n\n\n/**\n * Private helper variables & functions\n */\n\nvar _getEmptyPoint = function() { \n\t\treturn {x:0,y:0}; \n\t};\n\nvar _isOpen,\n\t_isDestroying,\n\t_closedByScroll,\n\t_currentItemIndex,\n\t_containerStyle,\n\t_containerShiftIndex,\n\t_currPanDist = _getEmptyPoint(),\n\t_startPanOffset = _getEmptyPoint(),\n\t_panOffset = _getEmptyPoint(),\n\t_upMoveEvents, // drag move, drag end & drag cancel events array\n\t_downEvents, // drag start events array\n\t_globalEventHandlers,\n\t_viewportSize = {},\n\t_currZoomLevel,\n\t_startZoomLevel,\n\t_translatePrefix,\n\t_translateSufix,\n\t_updateSizeInterval,\n\t_itemsNeedUpdate,\n\t_currPositionIndex = 0,\n\t_offset = {},\n\t_slideSize = _getEmptyPoint(), // size of slide area, including spacing\n\t_itemHolders,\n\t_prevItemIndex,\n\t_indexDiff = 0, // difference of indexes since last content update\n\t_dragStartEvent,\n\t_dragMoveEvent,\n\t_dragEndEvent,\n\t_dragCancelEvent,\n\t_transformKey,\n\t_pointerEventEnabled,\n\t_isFixedPosition = true,\n\t_likelyTouchDevice,\n\t_modules = [],\n\t_requestAF,\n\t_cancelAF,\n\t_initalClassName,\n\t_initalWindowScrollY,\n\t_oldIE,\n\t_currentWindowScrollY,\n\t_features,\n\t_windowVisibleSize = {},\n\t_renderMaxResolution = false,\n\t_orientationChangeTimeout,\n\n\n\t// Registers PhotoSWipe module (History, Controller ...)\n\t_registerModule = function(name, module) {\n\t\tframework.extend(self, module.publicMethods);\n\t\t_modules.push(name);\n\t},\n\n\t_getLoopedId = function(index) {\n\t\tvar numSlides = _getNumItems();\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\n\t// Micro bind/trigger\n\t_listeners = {},\n\t_listen = function(name, fn) {\n\t\tif(!_listeners[name]) {\n\t\t\t_listeners[name] = [];\n\t\t}\n\t\treturn _listeners[name].push(fn);\n\t},\n\t_shout = function(name) {\n\t\tvar listeners = _listeners[name];\n\n\t\tif(listeners) {\n\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\targs.shift();\n\n\t\t\tfor(var i = 0; i < listeners.length; i++) {\n\t\t\t\tlisteners[i].apply(self, args);\n\t\t\t}\n\t\t}\n\t},\n\n\t_getCurrentTime = function() {\n\t\treturn new Date().getTime();\n\t},\n\t_applyBgOpacity = function(opacity) {\n\t\t_bgOpacity = opacity;\n\t\tself.bg.style.opacity = opacity * _options.bgOpacity;\n\t},\n\n\t_applyZoomTransform = function(styleObj,x,y,zoom,item) {\n\t\tif(!_renderMaxResolution || (item && item !== self.currItem) ) {\n\t\t\tzoom = zoom / (item ? item.fitRatio : self.currItem.fitRatio);\t\n\t\t}\n\t\t\t\n\t\tstyleObj[_transformKey] = _translatePrefix + x + 'px, ' + y + 'px' + _translateSufix + ' scale(' + zoom + ')';\n\t},\n\t_applyCurrentZoomPan = function( allowRenderResolution ) {\n\t\tif(_currZoomElementStyle) {\n\n\t\t\tif(allowRenderResolution) {\n\t\t\t\tif(_currZoomLevel > self.currItem.fitRatio) {\n\t\t\t\t\tif(!_renderMaxResolution) {\n\t\t\t\t\t\t_setImageSize(self.currItem, false, true);\n\t\t\t\t\t\t_renderMaxResolution = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif(_renderMaxResolution) {\n\t\t\t\t\t\t_setImageSize(self.currItem);\n\t\t\t\t\t\t_renderMaxResolution = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\t_applyZoomTransform(_currZoomElementStyle, _panOffset.x, _panOffset.y, _currZoomLevel);\n\t\t}\n\t},\n\t_applyZoomPanToItem = function(item) {\n\t\tif(item.container) {\n\n\t\t\t_applyZoomTransform(item.container.style, \n\t\t\t\t\t\t\t\titem.initialPosition.x, \n\t\t\t\t\t\t\t\titem.initialPosition.y, \n\t\t\t\t\t\t\t\titem.initialZoomLevel,\n\t\t\t\t\t\t\t\titem);\n\t\t}\n\t},\n\t_setTranslateX = function(x, elStyle) {\n\t\telStyle[_transformKey] = _translatePrefix + x + 'px, 0px' + _translateSufix;\n\t},\n\t_moveMainScroll = function(x, dragging) {\n\n\t\tif(!_options.loop && dragging) {\n\t\t\tvar newSlideIndexOffset = _currentItemIndex + (_slideSize.x * _currPositionIndex - x) / _slideSize.x,\n\t\t\t\tdelta = Math.round(x - _mainScrollPos.x);\n\n\t\t\tif( (newSlideIndexOffset < 0 && delta > 0) || \n\t\t\t\t(newSlideIndexOffset >= _getNumItems() - 1 && delta < 0) ) {\n\t\t\t\tx = _mainScrollPos.x + delta * _options.mainScrollEndFriction;\n\t\t\t} \n\t\t}\n\t\t\n\t\t_mainScrollPos.x = x;\n\t\t_setTranslateX(x, _containerStyle);\n\t},\n\t_calculatePanOffset = function(axis, zoomLevel) {\n\t\tvar m = _midZoomPoint[axis] - _offset[axis];\n\t\treturn _startPanOffset[axis] + _currPanDist[axis] + m - m * ( zoomLevel / _startZoomLevel );\n\t},\n\t\n\t_equalizePoints = function(p1, p2) {\n\t\tp1.x = p2.x;\n\t\tp1.y = p2.y;\n\t\tif(p2.id) {\n\t\t\tp1.id = p2.id;\n\t\t}\n\t},\n\t_roundPoint = function(p) {\n\t\tp.x = Math.round(p.x);\n\t\tp.y = Math.round(p.y);\n\t},\n\n\t_mouseMoveTimeout = null,\n\t_onFirstMouseMove = function() {\n\t\t// Wait until mouse move event is fired at least twice during 100ms\n\t\t// We do this, because some mobile browsers trigger it on touchstart\n\t\tif(_mouseMoveTimeout ) { \n\t\t\tframework.unbind(document, 'mousemove', _onFirstMouseMove);\n\t\t\tframework.addClass(template, 'pswp--has_mouse');\n\t\t\t_options.mouseUsed = true;\n\t\t\t_shout('mouseUsed');\n\t\t}\n\t\t_mouseMoveTimeout = setTimeout(function() {\n\t\t\t_mouseMoveTimeout = null;\n\t\t}, 100);\n\t},\n\n\t_bindEvents = function() {\n\t\tframework.bind(document, 'keydown', self);\n\n\t\tif(_features.transform) {\n\t\t\t// don't bind click event in browsers that don't support transform (mostly IE8)\n\t\t\tframework.bind(self.scrollWrap, 'click', self);\n\t\t}\n\t\t\n\n\t\tif(!_options.mouseUsed) {\n\t\t\tframework.bind(document, 'mousemove', _onFirstMouseMove);\n\t\t}\n\n\t\tframework.bind(window, 'resize scroll orientationchange', self);\n\n\t\t_shout('bindEvents');\n\t},\n\n\t_unbindEvents = function() {\n\t\tframework.unbind(window, 'resize scroll orientationchange', self);\n\t\tframework.unbind(window, 'scroll', _globalEventHandlers.scroll);\n\t\tframework.unbind(document, 'keydown', self);\n\t\tframework.unbind(document, 'mousemove', _onFirstMouseMove);\n\n\t\tif(_features.transform) {\n\t\t\tframework.unbind(self.scrollWrap, 'click', self);\n\t\t}\n\n\t\tif(_isDragging) {\n\t\t\tframework.unbind(window, _upMoveEvents, self);\n\t\t}\n\n\t\tclearTimeout(_orientationChangeTimeout);\n\n\t\t_shout('unbindEvents');\n\t},\n\t\n\t_calculatePanBounds = function(zoomLevel, update) {\n\t\tvar bounds = _calculateItemSize( self.currItem, _viewportSize, zoomLevel );\n\t\tif(update) {\n\t\t\t_currPanBounds = bounds;\n\t\t}\n\t\treturn bounds;\n\t},\n\t\n\t_getMinZoomLevel = function(item) {\n\t\tif(!item) {\n\t\t\titem = self.currItem;\n\t\t}\n\t\treturn item.initialZoomLevel;\n\t},\n\t_getMaxZoomLevel = function(item) {\n\t\tif(!item) {\n\t\t\titem = self.currItem;\n\t\t}\n\t\treturn item.w > 0 ? _options.maxSpreadZoom : 1;\n\t},\n\n\t// Return true if offset is out of the bounds\n\t_modifyDestPanOffset = function(axis, destPanBounds, destPanOffset, destZoomLevel) {\n\t\tif(destZoomLevel === self.currItem.initialZoomLevel) {\n\t\t\tdestPanOffset[axis] = self.currItem.initialPosition[axis];\n\t\t\treturn true;\n\t\t} else {\n\t\t\tdestPanOffset[axis] = _calculatePanOffset(axis, destZoomLevel); \n\n\t\t\tif(destPanOffset[axis] > destPanBounds.min[axis]) {\n\t\t\t\tdestPanOffset[axis] = destPanBounds.min[axis];\n\t\t\t\treturn true;\n\t\t\t} else if(destPanOffset[axis] < destPanBounds.max[axis] ) {\n\t\t\t\tdestPanOffset[axis] = destPanBounds.max[axis];\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t_setupTransforms = function() {\n\n\t\tif(_transformKey) {\n\t\t\t// setup 3d transforms\n\t\t\tvar allow3dTransform = _features.perspective && !_likelyTouchDevice;\n\t\t\t_translatePrefix = 'translate' + (allow3dTransform ? '3d(' : '(');\n\t\t\t_translateSufix = _features.perspective ? ', 0px)' : ')';\t\n\t\t\treturn;\n\t\t}\n\n\t\t// Override zoom/pan/move functions in case old browser is used (most likely IE)\n\t\t// (so they use left/top/width/height, instead of CSS transform)\n\t\n\t\t_transformKey = 'left';\n\t\tframework.addClass(template, 'pswp--ie');\n\n\t\t_setTranslateX = function(x, elStyle) {\n\t\t\telStyle.left = x + 'px';\n\t\t};\n\t\t_applyZoomPanToItem = function(item) {\n\n\t\t\tvar zoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,\n\t\t\t\ts = item.container.style,\n\t\t\t\tw = zoomRatio * item.w,\n\t\t\t\th = zoomRatio * item.h;\n\n\t\t\ts.width = w + 'px';\n\t\t\ts.height = h + 'px';\n\t\t\ts.left = item.initialPosition.x + 'px';\n\t\t\ts.top = item.initialPosition.y + 'px';\n\n\t\t};\n\t\t_applyCurrentZoomPan = function() {\n\t\t\tif(_currZoomElementStyle) {\n\n\t\t\t\tvar s = _currZoomElementStyle,\n\t\t\t\t\titem = self.currItem,\n\t\t\t\t\tzoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,\n\t\t\t\t\tw = zoomRatio * item.w,\n\t\t\t\t\th = zoomRatio * item.h;\n\n\t\t\t\ts.width = w + 'px';\n\t\t\t\ts.height = h + 'px';\n\n\n\t\t\t\ts.left = _panOffset.x + 'px';\n\t\t\t\ts.top = _panOffset.y + 'px';\n\t\t\t}\n\t\t\t\n\t\t};\n\t},\n\n\t_onKeyDown = function(e) {\n\t\tvar keydownAction = '';\n\t\tif(_options.escKey && e.keyCode === 27) { \n\t\t\tkeydownAction = 'close';\n\t\t} else if(_options.arrowKeys) {\n\t\t\tif(e.keyCode === 37) {\n\t\t\t\tkeydownAction = 'prev';\n\t\t\t} else if(e.keyCode === 39) { \n\t\t\t\tkeydownAction = 'next';\n\t\t\t}\n\t\t}\n\n\t\tif(keydownAction) {\n\t\t\t// don't do anything if special key pressed to prevent from overriding default browser actions\n\t\t\t// e.g. in Chrome on Mac cmd+arrow-left returns to previous page\n\t\t\tif( !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey ) {\n\t\t\t\tif(e.preventDefault) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t} else {\n\t\t\t\t\te.returnValue = false;\n\t\t\t\t} \n\t\t\t\tself[keydownAction]();\n\t\t\t}\n\t\t}\n\t},\n\n\t_onGlobalClick = function(e) {\n\t\tif(!e) {\n\t\t\treturn;\n\t\t}\n\n\t\t// don't allow click event to pass through when triggering after drag or some other gesture\n\t\tif(_moved || _zoomStarted || _mainScrollAnimating || _verticalDragInitiated) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\n\t_updatePageScrollOffset = function() {\n\t\tself.setScrollOffset(0, framework.getScrollY());\t\t\n\t};\n\t\n\n\n\t\n\n\n\n// Micro animation engine\nvar _animations = {},\n\t_numAnimations = 0,\n\t_stopAnimation = function(name) {\n\t\tif(_animations[name]) {\n\t\t\tif(_animations[name].raf) {\n\t\t\t\t_cancelAF( _animations[name].raf );\n\t\t\t}\n\t\t\t_numAnimations--;\n\t\t\tdelete _animations[name];\n\t\t}\n\t},\n\t_registerStartAnimation = function(name) {\n\t\tif(_animations[name]) {\n\t\t\t_stopAnimation(name);\n\t\t}\n\t\tif(!_animations[name]) {\n\t\t\t_numAnimations++;\n\t\t\t_animations[name] = {};\n\t\t}\n\t},\n\t_stopAllAnimations = function() {\n\t\tfor (var prop in _animations) {\n\n\t\t\tif( _animations.hasOwnProperty( prop ) ) {\n\t\t\t\t_stopAnimation(prop);\n\t\t\t} \n\t\t\t\n\t\t}\n\t},\n\t_animateProp = function(name, b, endProp, d, easingFn, onUpdate, onComplete) {\n\t\tvar startAnimTime = _getCurrentTime(), t;\n\t\t_registerStartAnimation(name);\n\n\t\tvar animloop = function(){\n\t\t\tif ( _animations[name] ) {\n\t\t\t\t\n\t\t\t\tt = _getCurrentTime() - startAnimTime; // time diff\n\t\t\t\t//b - beginning (start prop)\n\t\t\t\t//d - anim duration\n\n\t\t\t\tif ( t >= d ) {\n\t\t\t\t\t_stopAnimation(name);\n\t\t\t\t\tonUpdate(endProp);\n\t\t\t\t\tif(onComplete) {\n\t\t\t\t\t\tonComplete();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonUpdate( (endProp - b) * easingFn(t/d) + b );\n\n\t\t\t\t_animations[name].raf = _requestAF(animloop);\n\t\t\t}\n\t\t};\n\t\tanimloop();\n\t};\n\t\n\n\nvar publicMethods = {\n\n\t// make a few local variables and functions public\n\tshout: _shout,\n\tlisten: _listen,\n\tviewportSize: _viewportSize,\n\toptions: _options,\n\n\tisMainScrollAnimating: function() {\n\t\treturn _mainScrollAnimating;\n\t},\n\tgetZoomLevel: function() {\n\t\treturn _currZoomLevel;\n\t},\n\tgetCurrentIndex: function() {\n\t\treturn _currentItemIndex;\n\t},\n\tisDragging: function() {\n\t\treturn _isDragging;\n\t},\t\n\tisZooming: function() {\n\t\treturn _isZooming;\n\t},\n\tsetScrollOffset: function(x,y) {\n\t\t_offset.x = x;\n\t\t_currentWindowScrollY = _offset.y = y;\n\t\t_shout('updateScrollOffset', _offset);\n\t},\n\tapplyZoomPan: function(zoomLevel,panX,panY,allowRenderResolution) {\n\t\t_panOffset.x = panX;\n\t\t_panOffset.y = panY;\n\t\t_currZoomLevel = zoomLevel;\n\t\t_applyCurrentZoomPan( allowRenderResolution );\n\t},\n\n\tinit: function() {\n\n\t\tif(_isOpen || _isDestroying) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar i;\n\n\t\tself.framework = framework; // basic functionality\n\t\tself.template = template; // root DOM element of PhotoSwipe\n\t\tself.bg = framework.getChildByClass(template, 'pswp__bg');\n\n\t\t_initalClassName = template.className;\n\t\t_isOpen = true;\n\t\t\t\t\n\t\t_features = framework.detectFeatures();\n\t\t_requestAF = _features.raf;\n\t\t_cancelAF = _features.caf;\n\t\t_transformKey = _features.transform;\n\t\t_oldIE = _features.oldIE;\n\t\t\n\t\tself.scrollWrap = framework.getChildByClass(template, 'pswp__scroll-wrap');\n\t\tself.container = framework.getChildByClass(self.scrollWrap, 'pswp__container');\n\n\t\t_containerStyle = self.container.style; // for fast access\n\n\t\t// Objects that hold slides (there are only 3 in DOM)\n\t\tself.itemHolders = _itemHolders = [\n\t\t\t{el:self.container.children[0] , wrap:0, index: -1},\n\t\t\t{el:self.container.children[1] , wrap:0, index: -1},\n\t\t\t{el:self.container.children[2] , wrap:0, index: -1}\n\t\t];\n\n\t\t// hide nearby item holders until initial zoom animation finishes (to avoid extra Paints)\n\t\t_itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'none';\n\n\t\t_setupTransforms();\n\n\t\t// Setup global events\n\t\t_globalEventHandlers = {\n\t\t\tresize: self.updateSize,\n\n\t\t\t// Fixes: iOS 10.3 resize event\n\t\t\t// does not update scrollWrap.clientWidth instantly after resize\n\t\t\t// https://github.com/dimsemenov/PhotoSwipe/issues/1315\n\t\t\torientationchange: function() {\n\t\t\t\tclearTimeout(_orientationChangeTimeout);\n\t\t\t\t_orientationChangeTimeout = setTimeout(function() {\n\t\t\t\t\tif(_viewportSize.x !== self.scrollWrap.clientWidth) {\n\t\t\t\t\t\tself.updateSize();\n\t\t\t\t\t}\n\t\t\t\t}, 500);\n\t\t\t},\n\t\t\tscroll: _updatePageScrollOffset,\n\t\t\tkeydown: _onKeyDown,\n\t\t\tclick: _onGlobalClick\n\t\t};\n\n\t\t// disable show/hide effects on old browsers that don't support CSS animations or transforms, \n\t\t// old IOS, Android and Opera mobile. Blackberry seems to work fine, even older models.\n\t\tvar oldPhone = _features.isOldIOSPhone || _features.isOldAndroid || _features.isMobileOpera;\n\t\tif(!_features.animationName || !_features.transform || oldPhone) {\n\t\t\t_options.showAnimationDuration = _options.hideAnimationDuration = 0;\n\t\t}\n\n\t\t// init modules\n\t\tfor(i = 0; i < _modules.length; i++) {\n\t\t\tself['init' + _modules[i]]();\n\t\t}\n\t\t\n\t\t// init\n\t\tif(UiClass) {\n\t\t\tvar ui = self.ui = new UiClass(self, framework);\n\t\t\tui.init();\n\t\t}\n\n\t\t_shout('firstUpdate');\n\t\t_currentItemIndex = _currentItemIndex || _options.index || 0;\n\t\t// validate index\n\t\tif( isNaN(_currentItemIndex) || _currentItemIndex < 0 || _currentItemIndex >= _getNumItems() ) {\n\t\t\t_currentItemIndex = 0;\n\t\t}\n\t\tself.currItem = _getItemAt( _currentItemIndex );\n\n\t\t\n\t\tif(_features.isOldIOSPhone || _features.isOldAndroid) {\n\t\t\t_isFixedPosition = false;\n\t\t}\n\t\t\n\t\ttemplate.setAttribute('aria-hidden', 'false');\n\t\tif(_options.modal) {\n\t\t\tif(!_isFixedPosition) {\n\t\t\t\ttemplate.style.position = 'absolute';\n\t\t\t\ttemplate.style.top = framework.getScrollY() + 'px';\n\t\t\t} else {\n\t\t\t\ttemplate.style.position = 'fixed';\n\t\t\t}\n\t\t}\n\n\t\tif(_currentWindowScrollY === undefined) {\n\t\t\t_shout('initialLayout');\n\t\t\t_currentWindowScrollY = _initalWindowScrollY = framework.getScrollY();\n\t\t}\n\t\t\n\t\t// add classes to root element of PhotoSwipe\n\t\tvar rootClasses = 'pswp--open ';\n\t\tif(_options.mainClass) {\n\t\t\trootClasses += _options.mainClass + ' ';\n\t\t}\n\t\tif(_options.showHideOpacity) {\n\t\t\trootClasses += 'pswp--animate_opacity ';\n\t\t}\n\t\trootClasses += _likelyTouchDevice ? 'pswp--touch' : 'pswp--notouch';\n\t\trootClasses += _features.animationName ? ' pswp--css_animation' : '';\n\t\trootClasses += _features.svg ? ' pswp--svg' : '';\n\t\tframework.addClass(template, rootClasses);\n\n\t\tself.updateSize();\n\n\t\t// initial update\n\t\t_containerShiftIndex = -1;\n\t\t_indexDiff = null;\n\t\tfor(i = 0; i < NUM_HOLDERS; i++) {\n\t\t\t_setTranslateX( (i+_containerShiftIndex) * _slideSize.x, _itemHolders[i].el.style);\n\t\t}\n\n\t\tif(!_oldIE) {\n\t\t\tframework.bind(self.scrollWrap, _downEvents, self); // no dragging for old IE\n\t\t}\t\n\n\t\t_listen('initialZoomInEnd', function() {\n\t\t\tself.setContent(_itemHolders[0], _currentItemIndex-1);\n\t\t\tself.setContent(_itemHolders[2], _currentItemIndex+1);\n\n\t\t\t_itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'block';\n\n\t\t\tif(_options.focus) {\n\t\t\t\t// focus causes layout, \n\t\t\t\t// which causes lag during the animation, \n\t\t\t\t// that's why we delay it untill the initial zoom transition ends\n\t\t\t\ttemplate.focus();\n\t\t\t}\n\t\t\t \n\n\t\t\t_bindEvents();\n\t\t});\n\n\t\t// set content for center slide (first time)\n\t\tself.setContent(_itemHolders[1], _currentItemIndex);\n\t\t\n\t\tself.updateCurrItem();\n\n\t\t_shout('afterInit');\n\n\t\tif(!_isFixedPosition) {\n\n\t\t\t// On all versions of iOS lower than 8.0, we check size of viewport every second.\n\t\t\t// \n\t\t\t// This is done to detect when Safari top & bottom bars appear, \n\t\t\t// as this action doesn't trigger any events (like resize). \n\t\t\t// \n\t\t\t// On iOS8 they fixed this.\n\t\t\t// \n\t\t\t// 10 Nov 2014: iOS 7 usage ~40%. iOS 8 usage 56%.\n\t\t\t\n\t\t\t_updateSizeInterval = setInterval(function() {\n\t\t\t\tif(!_numAnimations && !_isDragging && !_isZooming && (_currZoomLevel === self.currItem.initialZoomLevel) ) {\n\t\t\t\t\tself.updateSize();\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\n\t\tframework.addClass(template, 'pswp--visible');\n\t},\n\n\t// Close the gallery, then destroy it\n\tclose: function() {\n\t\tif(!_isOpen) {\n\t\t\treturn;\n\t\t}\n\n\t\t_isOpen = false;\n\t\t_isDestroying = true;\n\t\t_shout('close');\n\t\t_unbindEvents();\n\n\t\t_showOrHide(self.currItem, null, true, self.destroy);\n\t},\n\n\t// destroys the gallery (unbinds events, cleans up intervals and timeouts to avoid memory leaks)\n\tdestroy: function() {\n\t\t_shout('destroy');\n\n\t\tif(_showOrHideTimeout) {\n\t\t\tclearTimeout(_showOrHideTimeout);\n\t\t}\n\t\t\n\t\ttemplate.setAttribute('aria-hidden', 'true');\n\t\ttemplate.className = _initalClassName;\n\n\t\tif(_updateSizeInterval) {\n\t\t\tclearInterval(_updateSizeInterval);\n\t\t}\n\n\t\tframework.unbind(self.scrollWrap, _downEvents, self);\n\n\t\t// we unbind scroll event at the end, as closing animation may depend on it\n\t\tframework.unbind(window, 'scroll', self);\n\n\t\t_stopDragUpdateLoop();\n\n\t\t_stopAllAnimations();\n\n\t\t_listeners = null;\n\t},\n\n\t/**\n\t * Pan image to position\n\t * @param {Number} x \n\t * @param {Number} y \n\t * @param {Boolean} force Will ignore bounds if set to true.\n\t */\n\tpanTo: function(x,y,force) {\n\t\tif(!force) {\n\t\t\tif(x > _currPanBounds.min.x) {\n\t\t\t\tx = _currPanBounds.min.x;\n\t\t\t} else if(x < _currPanBounds.max.x) {\n\t\t\t\tx = _currPanBounds.max.x;\n\t\t\t}\n\n\t\t\tif(y > _currPanBounds.min.y) {\n\t\t\t\ty = _currPanBounds.min.y;\n\t\t\t} else if(y < _currPanBounds.max.y) {\n\t\t\t\ty = _currPanBounds.max.y;\n\t\t\t}\n\t\t}\n\t\t\n\t\t_panOffset.x = x;\n\t\t_panOffset.y = y;\n\t\t_applyCurrentZoomPan();\n\t},\n\t\n\thandleEvent: function (e) {\n\t\te = e || window.event;\n\t\tif(_globalEventHandlers[e.type]) {\n\t\t\t_globalEventHandlers[e.type](e);\n\t\t}\n\t},\n\n\n\tgoTo: function(index) {\n\n\t\tindex = _getLoopedId(index);\n\n\t\tvar diff = index - _currentItemIndex;\n\t\t_indexDiff = diff;\n\n\t\t_currentItemIndex = index;\n\t\tself.currItem = _getItemAt( _currentItemIndex );\n\t\t_currPositionIndex -= diff;\n\t\t\n\t\t_moveMainScroll(_slideSize.x * _currPositionIndex);\n\t\t\n\n\t\t_stopAllAnimations();\n\t\t_mainScrollAnimating = false;\n\n\t\tself.updateCurrItem();\n\t},\n\tnext: function() {\n\t\tself.goTo( _currentItemIndex + 1);\n\t},\n\tprev: function() {\n\t\tself.goTo( _currentItemIndex - 1);\n\t},\n\n\t// update current zoom/pan objects\n\tupdateCurrZoomItem: function(emulateSetContent) {\n\t\tif(emulateSetContent) {\n\t\t\t_shout('beforeChange', 0);\n\t\t}\n\n\t\t// itemHolder[1] is middle (current) item\n\t\tif(_itemHolders[1].el.children.length) {\n\t\t\tvar zoomElement = _itemHolders[1].el.children[0];\n\t\t\tif( framework.hasClass(zoomElement, 'pswp__zoom-wrap') ) {\n\t\t\t\t_currZoomElementStyle = zoomElement.style;\n\t\t\t} else {\n\t\t\t\t_currZoomElementStyle = null;\n\t\t\t}\n\t\t} else {\n\t\t\t_currZoomElementStyle = null;\n\t\t}\n\t\t\n\t\t_currPanBounds = self.currItem.bounds;\t\n\t\t_startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;\n\n\t\t_panOffset.x = _currPanBounds.center.x;\n\t\t_panOffset.y = _currPanBounds.center.y;\n\n\t\tif(emulateSetContent) {\n\t\t\t_shout('afterChange');\n\t\t}\n\t},\n\n\n\tinvalidateCurrItems: function() {\n\t\t_itemsNeedUpdate = true;\n\t\tfor(var i = 0; i < NUM_HOLDERS; i++) {\n\t\t\tif( _itemHolders[i].item ) {\n\t\t\t\t_itemHolders[i].item.needsUpdate = true;\n\t\t\t}\n\t\t}\n\t},\n\n\tupdateCurrItem: function(beforeAnimation) {\n\n\t\tif(_indexDiff === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar diffAbs = Math.abs(_indexDiff),\n\t\t\ttempHolder;\n\n\t\tif(beforeAnimation && diffAbs < 2) {\n\t\t\treturn;\n\t\t}\n\n\n\t\tself.currItem = _getItemAt( _currentItemIndex );\n\t\t_renderMaxResolution = false;\n\t\t\n\t\t_shout('beforeChange', _indexDiff);\n\n\t\tif(diffAbs >= NUM_HOLDERS) {\n\t\t\t_containerShiftIndex += _indexDiff + (_indexDiff > 0 ? -NUM_HOLDERS : NUM_HOLDERS);\n\t\t\tdiffAbs = NUM_HOLDERS;\n\t\t}\n\t\tfor(var i = 0; i < diffAbs; i++) {\n\t\t\tif(_indexDiff > 0) {\n\t\t\t\ttempHolder = _itemHolders.shift();\n\t\t\t\t_itemHolders[NUM_HOLDERS-1] = tempHolder; // move first to last\n\n\t\t\t\t_containerShiftIndex++;\n\t\t\t\t_setTranslateX( (_containerShiftIndex+2) * _slideSize.x, tempHolder.el.style);\n\t\t\t\tself.setContent(tempHolder, _currentItemIndex - diffAbs + i + 1 + 1);\n\t\t\t} else {\n\t\t\t\ttempHolder = _itemHolders.pop();\n\t\t\t\t_itemHolders.unshift( tempHolder ); // move last to first\n\n\t\t\t\t_containerShiftIndex--;\n\t\t\t\t_setTranslateX( _containerShiftIndex * _slideSize.x, tempHolder.el.style);\n\t\t\t\tself.setContent(tempHolder, _currentItemIndex + diffAbs - i - 1 - 1);\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t// reset zoom/pan on previous item\n\t\tif(_currZoomElementStyle && Math.abs(_indexDiff) === 1) {\n\n\t\t\tvar prevItem = _getItemAt(_prevItemIndex);\n\t\t\tif(prevItem.initialZoomLevel !== _currZoomLevel) {\n\t\t\t\t_calculateItemSize(prevItem , _viewportSize );\n\t\t\t\t_setImageSize(prevItem);\n\t\t\t\t_applyZoomPanToItem( prevItem ); \t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\t// reset diff after update\n\t\t_indexDiff = 0;\n\n\t\tself.updateCurrZoomItem();\n\n\t\t_prevItemIndex = _currentItemIndex;\n\n\t\t_shout('afterChange');\n\t\t\n\t},\n\n\n\n\tupdateSize: function(force) {\n\t\t\n\t\tif(!_isFixedPosition && _options.modal) {\n\t\t\tvar windowScrollY = framework.getScrollY();\n\t\t\tif(_currentWindowScrollY !== windowScrollY) {\n\t\t\t\ttemplate.style.top = windowScrollY + 'px';\n\t\t\t\t_currentWindowScrollY = windowScrollY;\n\t\t\t}\n\t\t\tif(!force && _windowVisibleSize.x === window.innerWidth && _windowVisibleSize.y === window.innerHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_windowVisibleSize.x = window.innerWidth;\n\t\t\t_windowVisibleSize.y = window.innerHeight;\n\n\t\t\t//template.style.width = _windowVisibleSize.x + 'px';\n\t\t\ttemplate.style.height = _windowVisibleSize.y + 'px';\n\t\t}\n\n\n\n\t\t_viewportSize.x = self.scrollWrap.clientWidth;\n\t\t_viewportSize.y = self.scrollWrap.clientHeight;\n\n\t\t_updatePageScrollOffset();\n\n\t\t_slideSize.x = _viewportSize.x + Math.round(_viewportSize.x * _options.spacing);\n\t\t_slideSize.y = _viewportSize.y;\n\n\t\t_moveMainScroll(_slideSize.x * _currPositionIndex);\n\n\t\t_shout('beforeResize'); // even may be used for example to switch image sources\n\n\n\t\t// don't re-calculate size on inital size update\n\t\tif(_containerShiftIndex !== undefined) {\n\n\t\t\tvar holder,\n\t\t\t\titem,\n\t\t\t\thIndex;\n\n\t\t\tfor(var i = 0; i < NUM_HOLDERS; i++) {\n\t\t\t\tholder = _itemHolders[i];\n\t\t\t\t_setTranslateX( (i+_containerShiftIndex) * _slideSize.x, holder.el.style);\n\n\t\t\t\thIndex = _currentItemIndex+i-1;\n\n\t\t\t\tif(_options.loop && _getNumItems() > 2) {\n\t\t\t\t\thIndex = _getLoopedId(hIndex);\n\t\t\t\t}\n\n\t\t\t\t// update zoom level on items and refresh source (if needsUpdate)\n\t\t\t\titem = _getItemAt( hIndex );\n\n\t\t\t\t// re-render gallery item if `needsUpdate`,\n\t\t\t\t// or doesn't have `bounds` (entirely new slide object)\n\t\t\t\tif( item && (_itemsNeedUpdate || item.needsUpdate || !item.bounds) ) {\n\n\t\t\t\t\tself.cleanSlide( item );\n\t\t\t\t\t\n\t\t\t\t\tself.setContent( holder, hIndex );\n\n\t\t\t\t\t// if \"center\" slide\n\t\t\t\t\tif(i === 1) {\n\t\t\t\t\t\tself.currItem = item;\n\t\t\t\t\t\tself.updateCurrZoomItem(true);\n\t\t\t\t\t}\n\n\t\t\t\t\titem.needsUpdate = false;\n\n\t\t\t\t} else if(holder.index === -1 && hIndex >= 0) {\n\t\t\t\t\t// add content first time\n\t\t\t\t\tself.setContent( holder, hIndex );\n\t\t\t\t}\n\t\t\t\tif(item && item.container) {\n\t\t\t\t\t_calculateItemSize(item, _viewportSize);\n\t\t\t\t\t_setImageSize(item);\n\t\t\t\t\t_applyZoomPanToItem( item );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t_itemsNeedUpdate = false;\n\t\t}\t\n\n\t\t_startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;\n\t\t_currPanBounds = self.currItem.bounds;\n\n\t\tif(_currPanBounds) {\n\t\t\t_panOffset.x = _currPanBounds.center.x;\n\t\t\t_panOffset.y = _currPanBounds.center.y;\n\t\t\t_applyCurrentZoomPan( true );\n\t\t}\n\t\t\n\t\t_shout('resize');\n\t},\n\t\n\t// Zoom current item to\n\tzoomTo: function(destZoomLevel, centerPoint, speed, easingFn, updateFn) {\n\t\t/*\n\t\t\tif(destZoomLevel === 'fit') {\n\t\t\t\tdestZoomLevel = self.currItem.fitRatio;\n\t\t\t} else if(destZoomLevel === 'fill') {\n\t\t\t\tdestZoomLevel = self.currItem.fillRatio;\n\t\t\t}\n\t\t*/\n\n\t\tif(centerPoint) {\n\t\t\t_startZoomLevel = _currZoomLevel;\n\t\t\t_midZoomPoint.x = Math.abs(centerPoint.x) - _panOffset.x ;\n\t\t\t_midZoomPoint.y = Math.abs(centerPoint.y) - _panOffset.y ;\n\t\t\t_equalizePoints(_startPanOffset, _panOffset);\n\t\t}\n\n\t\tvar destPanBounds = _calculatePanBounds(destZoomLevel, false),\n\t\t\tdestPanOffset = {};\n\n\t\t_modifyDestPanOffset('x', destPanBounds, destPanOffset, destZoomLevel);\n\t\t_modifyDestPanOffset('y', destPanBounds, destPanOffset, destZoomLevel);\n\n\t\tvar initialZoomLevel = _currZoomLevel;\n\t\tvar initialPanOffset = {\n\t\t\tx: _panOffset.x,\n\t\t\ty: _panOffset.y\n\t\t};\n\n\t\t_roundPoint(destPanOffset);\n\n\t\tvar onUpdate = function(now) {\n\t\t\tif(now === 1) {\n\t\t\t\t_currZoomLevel = destZoomLevel;\n\t\t\t\t_panOffset.x = destPanOffset.x;\n\t\t\t\t_panOffset.y = destPanOffset.y;\n\t\t\t} else {\n\t\t\t\t_currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;\n\t\t\t\t_panOffset.x = (destPanOffset.x - initialPanOffset.x) * now + initialPanOffset.x;\n\t\t\t\t_panOffset.y = (destPanOffset.y - initialPanOffset.y) * now + initialPanOffset.y;\n\t\t\t}\n\n\t\t\tif(updateFn) {\n\t\t\t\tupdateFn(now);\n\t\t\t}\n\n\t\t\t_applyCurrentZoomPan( now === 1 );\n\t\t};\n\n\t\tif(speed) {\n\t\t\t_animateProp('customZoomTo', 0, 1, speed, easingFn || framework.easing.sine.inOut, onUpdate);\n\t\t} else {\n\t\t\tonUpdate(1);\n\t\t}\n\t}\n\n\n};\n\n\n/*>>core*/\n\n/*>>gestures*/\n/**\n * Mouse/touch/pointer event handlers.\n * \n * separated from @core.js for readability\n */\n\nvar MIN_SWIPE_DISTANCE = 30,\n\tDIRECTION_CHECK_OFFSET = 10; // amount of pixels to drag to determine direction of swipe\n\nvar _gestureStartTime,\n\t_gestureCheckSpeedTime,\n\n\t// pool of objects that are used during dragging of zooming\n\tp = {}, // first point\n\tp2 = {}, // second point (for zoom gesture)\n\tdelta = {},\n\t_currPoint = {},\n\t_startPoint = {},\n\t_currPointers = [],\n\t_startMainScrollPos = {},\n\t_releaseAnimData,\n\t_posPoints = [], // array of points during dragging, used to determine type of gesture\n\t_tempPoint = {},\n\n\t_isZoomingIn,\n\t_verticalDragInitiated,\n\t_oldAndroidTouchEndTimeout,\n\t_currZoomedItemIndex = 0,\n\t_centerPoint = _getEmptyPoint(),\n\t_lastReleaseTime = 0,\n\t_isDragging, // at least one pointer is down\n\t_isMultitouch, // at least two _pointers are down\n\t_zoomStarted, // zoom level changed during zoom gesture\n\t_moved,\n\t_dragAnimFrame,\n\t_mainScrollShifted,\n\t_currentPoints, // array of current touch points\n\t_isZooming,\n\t_currPointsDistance,\n\t_startPointsDistance,\n\t_currPanBounds,\n\t_mainScrollPos = _getEmptyPoint(),\n\t_currZoomElementStyle,\n\t_mainScrollAnimating, // true, if animation after swipe gesture is running\n\t_midZoomPoint = _getEmptyPoint(),\n\t_currCenterPoint = _getEmptyPoint(),\n\t_direction,\n\t_isFirstMove,\n\t_opacityChanged,\n\t_bgOpacity,\n\t_wasOverInitialZoom,\n\n\t_isEqualPoints = function(p1, p2) {\n\t\treturn p1.x === p2.x && p1.y === p2.y;\n\t},\n\t_isNearbyPoints = function(touch0, touch1) {\n\t\treturn Math.abs(touch0.x - touch1.x) < DOUBLE_TAP_RADIUS && Math.abs(touch0.y - touch1.y) < DOUBLE_TAP_RADIUS;\n\t},\n\t_calculatePointsDistance = function(p1, p2) {\n\t\t_tempPoint.x = Math.abs( p1.x - p2.x );\n\t\t_tempPoint.y = Math.abs( p1.y - p2.y );\n\t\treturn Math.sqrt(_tempPoint.x * _tempPoint.x + _tempPoint.y * _tempPoint.y);\n\t},\n\t_stopDragUpdateLoop = function() {\n\t\tif(_dragAnimFrame) {\n\t\t\t_cancelAF(_dragAnimFrame);\n\t\t\t_dragAnimFrame = null;\n\t\t}\n\t},\n\t_dragUpdateLoop = function() {\n\t\tif(_isDragging) {\n\t\t\t_dragAnimFrame = _requestAF(_dragUpdateLoop);\n\t\t\t_renderMovement();\n\t\t}\n\t},\n\t_canPan = function() {\n\t\treturn !(_options.scaleMode === 'fit' && _currZoomLevel === self.currItem.initialZoomLevel);\n\t},\n\t\n\t// find the closest parent DOM element\n\t_closestElement = function(el, fn) {\n\t \tif(!el || el === document) {\n\t \t\treturn false;\n\t \t}\n\n\t \t// don't search elements above pswp__scroll-wrap\n\t \tif(el.getAttribute('class') && el.getAttribute('class').indexOf('pswp__scroll-wrap') > -1 ) {\n\t \t\treturn false;\n\t \t}\n\n\t \tif( fn(el) ) {\n\t \t\treturn el;\n\t \t}\n\n\t \treturn _closestElement(el.parentNode, fn);\n\t},\n\n\t_preventObj = {},\n\t_preventDefaultEventBehaviour = function(e, isDown) {\n\t _preventObj.prevent = !_closestElement(e.target, _options.isClickableElement);\n\n\t\t_shout('preventDragEvent', e, isDown, _preventObj);\n\t\treturn _preventObj.prevent;\n\n\t},\n\t_convertTouchToPoint = function(touch, p) {\n\t\tp.x = touch.pageX;\n\t\tp.y = touch.pageY;\n\t\tp.id = touch.identifier;\n\t\treturn p;\n\t},\n\t_findCenterOfPoints = function(p1, p2, pCenter) {\n\t\tpCenter.x = (p1.x + p2.x) * 0.5;\n\t\tpCenter.y = (p1.y + p2.y) * 0.5;\n\t},\n\t_pushPosPoint = function(time, x, y) {\n\t\tif(time - _gestureCheckSpeedTime > 50) {\n\t\t\tvar o = _posPoints.length > 2 ? _posPoints.shift() : {};\n\t\t\to.x = x;\n\t\t\to.y = y; \n\t\t\t_posPoints.push(o);\n\t\t\t_gestureCheckSpeedTime = time;\n\t\t}\n\t},\n\n\t_calculateVerticalDragOpacityRatio = function() {\n\t\tvar yOffset = _panOffset.y - self.currItem.initialPosition.y; // difference between initial and current position\n\t\treturn 1 - Math.abs( yOffset / (_viewportSize.y / 2) );\n\t},\n\n\t\n\t// points pool, reused during touch events\n\t_ePoint1 = {},\n\t_ePoint2 = {},\n\t_tempPointsArr = [],\n\t_tempCounter,\n\t_getTouchPoints = function(e) {\n\t\t// clean up previous points, without recreating array\n\t\twhile(_tempPointsArr.length > 0) {\n\t\t\t_tempPointsArr.pop();\n\t\t}\n\n\t\tif(!_pointerEventEnabled) {\n\t\t\tif(e.type.indexOf('touch') > -1) {\n\n\t\t\t\tif(e.touches && e.touches.length > 0) {\n\t\t\t\t\t_tempPointsArr[0] = _convertTouchToPoint(e.touches[0], _ePoint1);\n\t\t\t\t\tif(e.touches.length > 1) {\n\t\t\t\t\t\t_tempPointsArr[1] = _convertTouchToPoint(e.touches[1], _ePoint2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t_ePoint1.x = e.pageX;\n\t\t\t\t_ePoint1.y = e.pageY;\n\t\t\t\t_ePoint1.id = '';\n\t\t\t\t_tempPointsArr[0] = _ePoint1;//_ePoint1;\n\t\t\t}\n\t\t} else {\n\t\t\t_tempCounter = 0;\n\t\t\t// we can use forEach, as pointer events are supported only in modern browsers\n\t\t\t_currPointers.forEach(function(p) {\n\t\t\t\tif(_tempCounter === 0) {\n\t\t\t\t\t_tempPointsArr[0] = p;\n\t\t\t\t} else if(_tempCounter === 1) {\n\t\t\t\t\t_tempPointsArr[1] = p;\n\t\t\t\t}\n\t\t\t\t_tempCounter++;\n\n\t\t\t});\n\t\t}\n\t\treturn _tempPointsArr;\n\t},\n\n\t_panOrMoveMainScroll = function(axis, delta) {\n\n\t\tvar panFriction,\n\t\t\toverDiff = 0,\n\t\t\tnewOffset = _panOffset[axis] + delta[axis],\n\t\t\tstartOverDiff,\n\t\t\tdir = delta[axis] > 0,\n\t\t\tnewMainScrollPosition = _mainScrollPos.x + delta.x,\n\t\t\tmainScrollDiff = _mainScrollPos.x - _startMainScrollPos.x,\n\t\t\tnewPanPos,\n\t\t\tnewMainScrollPos;\n\n\t\t// calculate fdistance over the bounds and friction\n\t\tif(newOffset > _currPanBounds.min[axis] || newOffset < _currPanBounds.max[axis]) {\n\t\t\tpanFriction = _options.panEndFriction;\n\t\t\t// Linear increasing of friction, so at 1/4 of viewport it's at max value. \n\t\t\t// Looks not as nice as was expected. Left for history.\n\t\t\t// panFriction = (1 - (_panOffset[axis] + delta[axis] + panBounds.min[axis]) / (_viewportSize[axis] / 4) );\n\t\t} else {\n\t\t\tpanFriction = 1;\n\t\t}\n\t\t\n\t\tnewOffset = _panOffset[axis] + delta[axis] * panFriction;\n\n\t\t// move main scroll or start panning\n\t\tif(_options.allowPanToNext || _currZoomLevel === self.currItem.initialZoomLevel) {\n\n\n\t\t\tif(!_currZoomElementStyle) {\n\t\t\t\t\n\t\t\t\tnewMainScrollPos = newMainScrollPosition;\n\n\t\t\t} else if(_direction === 'h' && axis === 'x' && !_zoomStarted ) {\n\t\t\t\t\n\t\t\t\tif(dir) {\n\t\t\t\t\tif(newOffset > _currPanBounds.min[axis]) {\n\t\t\t\t\t\tpanFriction = _options.panEndFriction;\n\t\t\t\t\t\toverDiff = _currPanBounds.min[axis] - newOffset;\n\t\t\t\t\t\tstartOverDiff = _currPanBounds.min[axis] - _startPanOffset[axis];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// drag right\n\t\t\t\t\tif( (startOverDiff <= 0 || mainScrollDiff < 0) && _getNumItems() > 1 ) {\n\t\t\t\t\t\tnewMainScrollPos = newMainScrollPosition;\n\t\t\t\t\t\tif(mainScrollDiff < 0 && newMainScrollPosition > _startMainScrollPos.x) {\n\t\t\t\t\t\t\tnewMainScrollPos = _startMainScrollPos.x;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(_currPanBounds.min.x !== _currPanBounds.max.x) {\n\t\t\t\t\t\t\tnewPanPos = newOffset;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif(newOffset < _currPanBounds.max[axis] ) {\n\t\t\t\t\t\tpanFriction =_options.panEndFriction;\n\t\t\t\t\t\toverDiff = newOffset - _currPanBounds.max[axis];\n\t\t\t\t\t\tstartOverDiff = _startPanOffset[axis] - _currPanBounds.max[axis];\n\t\t\t\t\t}\n\n\t\t\t\t\tif( (startOverDiff <= 0 || mainScrollDiff > 0) && _getNumItems() > 1 ) {\n\t\t\t\t\t\tnewMainScrollPos = newMainScrollPosition;\n\n\t\t\t\t\t\tif(mainScrollDiff > 0 && newMainScrollPosition < _startMainScrollPos.x) {\n\t\t\t\t\t\t\tnewMainScrollPos = _startMainScrollPos.x;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(_currPanBounds.min.x !== _currPanBounds.max.x) {\n\t\t\t\t\t\t\tnewPanPos = newOffset;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\n\t\t\t\t//\n\t\t\t}\n\n\t\t\tif(axis === 'x') {\n\n\t\t\t\tif(newMainScrollPos !== undefined) {\n\t\t\t\t\t_moveMainScroll(newMainScrollPos, true);\n\t\t\t\t\tif(newMainScrollPos === _startMainScrollPos.x) {\n\t\t\t\t\t\t_mainScrollShifted = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_mainScrollShifted = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(_currPanBounds.min.x !== _currPanBounds.max.x) {\n\t\t\t\t\tif(newPanPos !== undefined) {\n\t\t\t\t\t\t_panOffset.x = newPanPos;\n\t\t\t\t\t} else if(!_mainScrollShifted) {\n\t\t\t\t\t\t_panOffset.x += delta.x * panFriction;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn newMainScrollPos !== undefined;\n\t\t\t}\n\n\t\t}\n\n\t\tif(!_mainScrollAnimating) {\n\t\t\t\n\t\t\tif(!_mainScrollShifted) {\n\t\t\t\tif(_currZoomLevel > self.currItem.fitRatio) {\n\t\t\t\t\t_panOffset[axis] += delta[axis] * panFriction;\n\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t\n\t\t}\n\t\t\n\t},\n\n\t// Pointerdown/touchstart/mousedown handler\n\t_onDragStart = function(e) {\n\n\t\t// Allow dragging only via left mouse button.\n\t\t// As this handler is not added in IE8 - we ignore e.which\n\t\t// \n\t\t// http://www.quirksmode.org/js/events_properties.html\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/event.button\n\t\tif(e.type === 'mousedown' && e.button > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(_initialZoomRunning) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif(_oldAndroidTouchEndTimeout && e.type === 'mousedown') {\n\t\t\treturn;\n\t\t}\n\n\t\tif(_preventDefaultEventBehaviour(e, true)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\n\n\t\t_shout('pointerDown');\n\n\t\tif(_pointerEventEnabled) {\n\t\t\tvar pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\t\t\tif(pointerIndex < 0) {\n\t\t\t\tpointerIndex = _currPointers.length;\n\t\t\t}\n\t\t\t_currPointers[pointerIndex] = {x:e.pageX, y:e.pageY, id: e.pointerId};\n\t\t}\n\t\t\n\n\n\t\tvar startPointsList = _getTouchPoints(e),\n\t\t\tnumPoints = startPointsList.length;\n\n\t\t_currentPoints = null;\n\n\t\t_stopAllAnimations();\n\n\t\t// init drag\n\t\tif(!_isDragging || numPoints === 1) {\n\n\t\t\t\n\n\t\t\t_isDragging = _isFirstMove = true;\n\t\t\tframework.bind(window, _upMoveEvents, self);\n\n\t\t\t_isZoomingIn = \n\t\t\t\t_wasOverInitialZoom = \n\t\t\t\t_opacityChanged = \n\t\t\t\t_verticalDragInitiated = \n\t\t\t\t_mainScrollShifted = \n\t\t\t\t_moved = \n\t\t\t\t_isMultitouch = \n\t\t\t\t_zoomStarted = false;\n\n\t\t\t_direction = null;\n\n\t\t\t_shout('firstTouchStart', startPointsList);\n\n\t\t\t_equalizePoints(_startPanOffset, _panOffset);\n\n\t\t\t_currPanDist.x = _currPanDist.y = 0;\n\t\t\t_equalizePoints(_currPoint, startPointsList[0]);\n\t\t\t_equalizePoints(_startPoint, _currPoint);\n\n\t\t\t//_equalizePoints(_startMainScrollPos, _mainScrollPos);\n\t\t\t_startMainScrollPos.x = _slideSize.x * _currPositionIndex;\n\n\t\t\t_posPoints = [{\n\t\t\t\tx: _currPoint.x,\n\t\t\t\ty: _currPoint.y\n\t\t\t}];\n\n\t\t\t_gestureCheckSpeedTime = _gestureStartTime = _getCurrentTime();\n\n\t\t\t//_mainScrollAnimationEnd(true);\n\t\t\t_calculatePanBounds( _currZoomLevel, true );\n\t\t\t\n\t\t\t// Start rendering\n\t\t\t_stopDragUpdateLoop();\n\t\t\t_dragUpdateLoop();\n\t\t\t\n\t\t}\n\n\t\t// init zoom\n\t\tif(!_isZooming && numPoints > 1 && !_mainScrollAnimating && !_mainScrollShifted) {\n\t\t\t_startZoomLevel = _currZoomLevel;\n\t\t\t_zoomStarted = false; // true if zoom changed at least once\n\n\t\t\t_isZooming = _isMultitouch = true;\n\t\t\t_currPanDist.y = _currPanDist.x = 0;\n\n\t\t\t_equalizePoints(_startPanOffset, _panOffset);\n\n\t\t\t_equalizePoints(p, startPointsList[0]);\n\t\t\t_equalizePoints(p2, startPointsList[1]);\n\n\t\t\t_findCenterOfPoints(p, p2, _currCenterPoint);\n\n\t\t\t_midZoomPoint.x = Math.abs(_currCenterPoint.x) - _panOffset.x;\n\t\t\t_midZoomPoint.y = Math.abs(_currCenterPoint.y) - _panOffset.y;\n\t\t\t_currPointsDistance = _startPointsDistance = _calculatePointsDistance(p, p2);\n\t\t}\n\n\n\t},\n\n\t// Pointermove/touchmove/mousemove handler\n\t_onDragMove = function(e) {\n\n\t\te.preventDefault();\n\n\t\tif(_pointerEventEnabled) {\n\t\t\tvar pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\t\t\tif(pointerIndex > -1) {\n\t\t\t\tvar p = _currPointers[pointerIndex];\n\t\t\t\tp.x = e.pageX;\n\t\t\t\tp.y = e.pageY; \n\t\t\t}\n\t\t}\n\n\t\tif(_isDragging) {\n\t\t\tvar touchesList = _getTouchPoints(e);\n\t\t\tif(!_direction && !_moved && !_isZooming) {\n\n\t\t\t\tif(_mainScrollPos.x !== _slideSize.x * _currPositionIndex) {\n\t\t\t\t\t// if main scroll position is shifted – direction is always horizontal\n\t\t\t\t\t_direction = 'h';\n\t\t\t\t} else {\n\t\t\t\t\tvar diff = Math.abs(touchesList[0].x - _currPoint.x) - Math.abs(touchesList[0].y - _currPoint.y);\n\t\t\t\t\t// check the direction of movement\n\t\t\t\t\tif(Math.abs(diff) >= DIRECTION_CHECK_OFFSET) {\n\t\t\t\t\t\t_direction = diff > 0 ? 'h' : 'v';\n\t\t\t\t\t\t_currentPoints = touchesList;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t_currentPoints = touchesList;\n\t\t\t}\n\t\t}\t\n\t},\n\t// \n\t_renderMovement = function() {\n\n\t\tif(!_currentPoints) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar numPoints = _currentPoints.length;\n\n\t\tif(numPoints === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t_equalizePoints(p, _currentPoints[0]);\n\n\t\tdelta.x = p.x - _currPoint.x;\n\t\tdelta.y = p.y - _currPoint.y;\n\n\t\tif(_isZooming && numPoints > 1) {\n\t\t\t// Handle behaviour for more than 1 point\n\n\t\t\t_currPoint.x = p.x;\n\t\t\t_currPoint.y = p.y;\n\t\t\n\t\t\t// check if one of two points changed\n\t\t\tif( !delta.x && !delta.y && _isEqualPoints(_currentPoints[1], p2) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_equalizePoints(p2, _currentPoints[1]);\n\n\n\t\t\tif(!_zoomStarted) {\n\t\t\t\t_zoomStarted = true;\n\t\t\t\t_shout('zoomGestureStarted');\n\t\t\t}\n\t\t\t\n\t\t\t// Distance between two points\n\t\t\tvar pointsDistance = _calculatePointsDistance(p,p2);\n\n\t\t\tvar zoomLevel = _calculateZoomLevel(pointsDistance);\n\n\t\t\t// slightly over the of initial zoom level\n\t\t\tif(zoomLevel > self.currItem.initialZoomLevel + self.currItem.initialZoomLevel / 15) {\n\t\t\t\t_wasOverInitialZoom = true;\n\t\t\t}\n\n\t\t\t// Apply the friction if zoom level is out of the bounds\n\t\t\tvar zoomFriction = 1,\n\t\t\t\tminZoomLevel = _getMinZoomLevel(),\n\t\t\t\tmaxZoomLevel = _getMaxZoomLevel();\n\n\t\t\tif ( zoomLevel < minZoomLevel ) {\n\t\t\t\t\n\t\t\t\tif(_options.pinchToClose && !_wasOverInitialZoom && _startZoomLevel <= self.currItem.initialZoomLevel) {\n\t\t\t\t\t// fade out background if zooming out\n\t\t\t\t\tvar minusDiff = minZoomLevel - zoomLevel;\n\t\t\t\t\tvar percent = 1 - minusDiff / (minZoomLevel / 1.2);\n\n\t\t\t\t\t_applyBgOpacity(percent);\n\t\t\t\t\t_shout('onPinchClose', percent);\n\t\t\t\t\t_opacityChanged = true;\n\t\t\t\t} else {\n\t\t\t\t\tzoomFriction = (minZoomLevel - zoomLevel) / minZoomLevel;\n\t\t\t\t\tif(zoomFriction > 1) {\n\t\t\t\t\t\tzoomFriction = 1;\n\t\t\t\t\t}\n\t\t\t\t\tzoomLevel = minZoomLevel - zoomFriction * (minZoomLevel / 3);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else if ( zoomLevel > maxZoomLevel ) {\n\t\t\t\t// 1.5 - extra zoom level above the max. E.g. if max is x6, real max 6 + 1.5 = 7.5\n\t\t\t\tzoomFriction = (zoomLevel - maxZoomLevel) / ( minZoomLevel * 6 );\n\t\t\t\tif(zoomFriction > 1) {\n\t\t\t\t\tzoomFriction = 1;\n\t\t\t\t}\n\t\t\t\tzoomLevel = maxZoomLevel + zoomFriction * minZoomLevel;\n\t\t\t}\n\n\t\t\tif(zoomFriction < 0) {\n\t\t\t\tzoomFriction = 0;\n\t\t\t}\n\n\t\t\t// distance between touch points after friction is applied\n\t\t\t_currPointsDistance = pointsDistance;\n\n\t\t\t// _centerPoint - The point in the middle of two pointers\n\t\t\t_findCenterOfPoints(p, p2, _centerPoint);\n\t\t\n\t\t\t// paning with two pointers pressed\n\t\t\t_currPanDist.x += _centerPoint.x - _currCenterPoint.x;\n\t\t\t_currPanDist.y += _centerPoint.y - _currCenterPoint.y;\n\t\t\t_equalizePoints(_currCenterPoint, _centerPoint);\n\n\t\t\t_panOffset.x = _calculatePanOffset('x', zoomLevel);\n\t\t\t_panOffset.y = _calculatePanOffset('y', zoomLevel);\n\n\t\t\t_isZoomingIn = zoomLevel > _currZoomLevel;\n\t\t\t_currZoomLevel = zoomLevel;\n\t\t\t_applyCurrentZoomPan();\n\n\t\t} else {\n\n\t\t\t// handle behaviour for one point (dragging or panning)\n\n\t\t\tif(!_direction) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(_isFirstMove) {\n\t\t\t\t_isFirstMove = false;\n\n\t\t\t\t// subtract drag distance that was used during the detection direction \n\n\t\t\t\tif( Math.abs(delta.x) >= DIRECTION_CHECK_OFFSET) {\n\t\t\t\t\tdelta.x -= _currentPoints[0].x - _startPoint.x;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( Math.abs(delta.y) >= DIRECTION_CHECK_OFFSET) {\n\t\t\t\t\tdelta.y -= _currentPoints[0].y - _startPoint.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_currPoint.x = p.x;\n\t\t\t_currPoint.y = p.y;\n\n\t\t\t// do nothing if pointers position hasn't changed\n\t\t\tif(delta.x === 0 && delta.y === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(_direction === 'v' && _options.closeOnVerticalDrag) {\n\t\t\t\tif(!_canPan()) {\n\t\t\t\t\t_currPanDist.y += delta.y;\n\t\t\t\t\t_panOffset.y += delta.y;\n\n\t\t\t\t\tvar opacityRatio = _calculateVerticalDragOpacityRatio();\n\n\t\t\t\t\t_verticalDragInitiated = true;\n\t\t\t\t\t_shout('onVerticalDrag', opacityRatio);\n\n\t\t\t\t\t_applyBgOpacity(opacityRatio);\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\treturn ;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_pushPosPoint(_getCurrentTime(), p.x, p.y);\n\n\t\t\t_moved = true;\n\t\t\t_currPanBounds = self.currItem.bounds;\n\t\t\t\n\t\t\tvar mainScrollChanged = _panOrMoveMainScroll('x', delta);\n\t\t\tif(!mainScrollChanged) {\n\t\t\t\t_panOrMoveMainScroll('y', delta);\n\n\t\t\t\t_roundPoint(_panOffset);\n\t\t\t\t_applyCurrentZoomPan();\n\t\t\t}\n\n\t\t}\n\n\t},\n\t\n\t// Pointerup/pointercancel/touchend/touchcancel/mouseup event handler\n\t_onDragRelease = function(e) {\n\n\t\tif(_features.isOldAndroid ) {\n\n\t\t\tif(_oldAndroidTouchEndTimeout && e.type === 'mouseup') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// on Android (v4.1, 4.2, 4.3 & possibly older) \n\t\t\t// ghost mousedown/up event isn't preventable via e.preventDefault,\n\t\t\t// which causes fake mousedown event\n\t\t\t// so we block mousedown/up for 600ms\n\t\t\tif( e.type.indexOf('touch') > -1 ) {\n\t\t\t\tclearTimeout(_oldAndroidTouchEndTimeout);\n\t\t\t\t_oldAndroidTouchEndTimeout = setTimeout(function() {\n\t\t\t\t\t_oldAndroidTouchEndTimeout = 0;\n\t\t\t\t}, 600);\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t_shout('pointerUp');\n\n\t\tif(_preventDefaultEventBehaviour(e, false)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tvar releasePoint;\n\n\t\tif(_pointerEventEnabled) {\n\t\t\tvar pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\t\t\t\n\t\t\tif(pointerIndex > -1) {\n\t\t\t\treleasePoint = _currPointers.splice(pointerIndex, 1)[0];\n\n\t\t\t\tif(navigator.msPointerEnabled) {\n\t\t\t\t\tvar MSPOINTER_TYPES = {\n\t\t\t\t\t\t4: 'mouse', // event.MSPOINTER_TYPE_MOUSE\n\t\t\t\t\t\t2: 'touch', // event.MSPOINTER_TYPE_TOUCH \n\t\t\t\t\t\t3: 'pen' // event.MSPOINTER_TYPE_PEN\n\t\t\t\t\t};\n\t\t\t\t\treleasePoint.type = MSPOINTER_TYPES[e.pointerType];\n\n\t\t\t\t\tif(!releasePoint.type) {\n\t\t\t\t\t\treleasePoint.type = e.pointerType || 'mouse';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treleasePoint.type = e.pointerType || 'mouse';\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tvar touchList = _getTouchPoints(e),\n\t\t\tgestureType,\n\t\t\tnumPoints = touchList.length;\n\n\t\tif(e.type === 'mouseup') {\n\t\t\tnumPoints = 0;\n\t\t}\n\n\t\t// Do nothing if there were 3 touch points or more\n\t\tif(numPoints === 2) {\n\t\t\t_currentPoints = null;\n\t\t\treturn true;\n\t\t}\n\n\t\t// if second pointer released\n\t\tif(numPoints === 1) {\n\t\t\t_equalizePoints(_startPoint, touchList[0]);\n\t\t}\t\t\t\t\n\n\n\t\t// pointer hasn't moved, send \"tap release\" point\n\t\tif(numPoints === 0 && !_direction && !_mainScrollAnimating) {\n\t\t\tif(!releasePoint) {\n\t\t\t\tif(e.type === 'mouseup') {\n\t\t\t\t\treleasePoint = {x: e.pageX, y: e.pageY, type:'mouse'};\n\t\t\t\t} else if(e.changedTouches && e.changedTouches[0]) {\n\t\t\t\t\treleasePoint = {x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY, type:'touch'};\n\t\t\t\t}\t\t\n\t\t\t}\n\n\t\t\t_shout('touchRelease', e, releasePoint);\n\t\t}\n\n\t\t// Difference in time between releasing of two last touch points (zoom gesture)\n\t\tvar releaseTimeDiff = -1;\n\n\t\t// Gesture completed, no pointers left\n\t\tif(numPoints === 0) {\n\t\t\t_isDragging = false;\n\t\t\tframework.unbind(window, _upMoveEvents, self);\n\n\t\t\t_stopDragUpdateLoop();\n\n\t\t\tif(_isZooming) {\n\t\t\t\t// Two points released at the same time\n\t\t\t\treleaseTimeDiff = 0;\n\t\t\t} else if(_lastReleaseTime !== -1) {\n\t\t\t\treleaseTimeDiff = _getCurrentTime() - _lastReleaseTime;\n\t\t\t}\n\t\t}\n\t\t_lastReleaseTime = numPoints === 1 ? _getCurrentTime() : -1;\n\t\t\n\t\tif(releaseTimeDiff !== -1 && releaseTimeDiff < 150) {\n\t\t\tgestureType = 'zoom';\n\t\t} else {\n\t\t\tgestureType = 'swipe';\n\t\t}\n\n\t\tif(_isZooming && numPoints < 2) {\n\t\t\t_isZooming = false;\n\n\t\t\t// Only second point released\n\t\t\tif(numPoints === 1) {\n\t\t\t\tgestureType = 'zoomPointerUp';\n\t\t\t}\n\t\t\t_shout('zoomGestureEnded');\n\t\t}\n\n\t\t_currentPoints = null;\n\t\tif(!_moved && !_zoomStarted && !_mainScrollAnimating && !_verticalDragInitiated) {\n\t\t\t// nothing to animate\n\t\t\treturn;\n\t\t}\n\t\n\t\t_stopAllAnimations();\n\n\t\t\n\t\tif(!_releaseAnimData) {\n\t\t\t_releaseAnimData = _initDragReleaseAnimationData();\n\t\t}\n\t\t\n\t\t_releaseAnimData.calculateSwipeSpeed('x');\n\n\n\t\tif(_verticalDragInitiated) {\n\n\t\t\tvar opacityRatio = _calculateVerticalDragOpacityRatio();\n\n\t\t\tif(opacityRatio < _options.verticalDragRange) {\n\t\t\t\tself.close();\n\t\t\t} else {\n\t\t\t\tvar initalPanY = _panOffset.y,\n\t\t\t\t\tinitialBgOpacity = _bgOpacity;\n\n\t\t\t\t_animateProp('verticalDrag', 0, 1, 300, framework.easing.cubic.out, function(now) {\n\t\t\t\t\t\n\t\t\t\t\t_panOffset.y = (self.currItem.initialPosition.y - initalPanY) * now + initalPanY;\n\n\t\t\t\t\t_applyBgOpacity( (1 - initialBgOpacity) * now + initialBgOpacity );\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t});\n\n\t\t\t\t_shout('onVerticalDrag', 1);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\n\t\t// main scroll \n\t\tif( (_mainScrollShifted || _mainScrollAnimating) && numPoints === 0) {\n\t\t\tvar itemChanged = _finishSwipeMainScrollGesture(gestureType, _releaseAnimData);\n\t\t\tif(itemChanged) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tgestureType = 'zoomPointerUp';\n\t\t}\n\n\t\t// prevent zoom/pan animation when main scroll animation runs\n\t\tif(_mainScrollAnimating) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// Complete simple zoom gesture (reset zoom level if it's out of the bounds) \n\t\tif(gestureType !== 'swipe') {\n\t\t\t_completeZoomGesture();\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Complete pan gesture if main scroll is not shifted, and it's possible to pan current image\n\t\tif(!_mainScrollShifted && _currZoomLevel > self.currItem.fitRatio) {\n\t\t\t_completePanGesture(_releaseAnimData);\n\t\t}\n\t},\n\n\n\t// Returns object with data about gesture\n\t// It's created only once and then reused\n\t_initDragReleaseAnimationData = function() {\n\t\t// temp local vars\n\t\tvar lastFlickDuration,\n\t\t\ttempReleasePos;\n\n\t\t// s = this\n\t\tvar s = {\n\t\t\tlastFlickOffset: {},\n\t\t\tlastFlickDist: {},\n\t\t\tlastFlickSpeed: {},\n\t\t\tslowDownRatio: {},\n\t\t\tslowDownRatioReverse: {},\n\t\t\tspeedDecelerationRatio: {},\n\t\t\tspeedDecelerationRatioAbs: {},\n\t\t\tdistanceOffset: {},\n\t\t\tbackAnimDestination: {},\n\t\t\tbackAnimStarted: {},\n\t\t\tcalculateSwipeSpeed: function(axis) {\n\t\t\t\t\n\n\t\t\t\tif( _posPoints.length > 1) {\n\t\t\t\t\tlastFlickDuration = _getCurrentTime() - _gestureCheckSpeedTime + 50;\n\t\t\t\t\ttempReleasePos = _posPoints[_posPoints.length-2][axis];\n\t\t\t\t} else {\n\t\t\t\t\tlastFlickDuration = _getCurrentTime() - _gestureStartTime; // total gesture duration\n\t\t\t\t\ttempReleasePos = _startPoint[axis];\n\t\t\t\t}\n\t\t\t\ts.lastFlickOffset[axis] = _currPoint[axis] - tempReleasePos;\n\t\t\t\ts.lastFlickDist[axis] = Math.abs(s.lastFlickOffset[axis]);\n\t\t\t\tif(s.lastFlickDist[axis] > 20) {\n\t\t\t\t\ts.lastFlickSpeed[axis] = s.lastFlickOffset[axis] / lastFlickDuration;\n\t\t\t\t} else {\n\t\t\t\t\ts.lastFlickSpeed[axis] = 0;\n\t\t\t\t}\n\t\t\t\tif( Math.abs(s.lastFlickSpeed[axis]) < 0.1 ) {\n\t\t\t\t\ts.lastFlickSpeed[axis] = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ts.slowDownRatio[axis] = 0.95;\n\t\t\t\ts.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];\n\t\t\t\ts.speedDecelerationRatio[axis] = 1;\n\t\t\t},\n\n\t\t\tcalculateOverBoundsAnimOffset: function(axis, speed) {\n\t\t\t\tif(!s.backAnimStarted[axis]) {\n\n\t\t\t\t\tif(_panOffset[axis] > _currPanBounds.min[axis]) {\n\t\t\t\t\t\ts.backAnimDestination[axis] = _currPanBounds.min[axis];\n\t\t\t\t\t\t\n\t\t\t\t\t} else if(_panOffset[axis] < _currPanBounds.max[axis]) {\n\t\t\t\t\t\ts.backAnimDestination[axis] = _currPanBounds.max[axis];\n\t\t\t\t\t}\n\n\t\t\t\t\tif(s.backAnimDestination[axis] !== undefined) {\n\t\t\t\t\t\ts.slowDownRatio[axis] = 0.7;\n\t\t\t\t\t\ts.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];\n\t\t\t\t\t\tif(s.speedDecelerationRatioAbs[axis] < 0.05) {\n\n\t\t\t\t\t\t\ts.lastFlickSpeed[axis] = 0;\n\t\t\t\t\t\t\ts.backAnimStarted[axis] = true;\n\n\t\t\t\t\t\t\t_animateProp('bounceZoomPan'+axis,_panOffset[axis], \n\t\t\t\t\t\t\t\ts.backAnimDestination[axis], \n\t\t\t\t\t\t\t\tspeed || 300, \n\t\t\t\t\t\t\t\tframework.easing.sine.out, \n\t\t\t\t\t\t\t\tfunction(pos) {\n\t\t\t\t\t\t\t\t\t_panOffset[axis] = pos;\n\t\t\t\t\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Reduces the speed by slowDownRatio (per 10ms)\n\t\t\tcalculateAnimOffset: function(axis) {\n\t\t\t\tif(!s.backAnimStarted[axis]) {\n\t\t\t\t\ts.speedDecelerationRatio[axis] = s.speedDecelerationRatio[axis] * (s.slowDownRatio[axis] + \n\t\t\t\t\t\t\t\t\t\t\t\ts.slowDownRatioReverse[axis] - \n\t\t\t\t\t\t\t\t\t\t\t\ts.slowDownRatioReverse[axis] * s.timeDiff / 10);\n\n\t\t\t\t\ts.speedDecelerationRatioAbs[axis] = Math.abs(s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis]);\n\t\t\t\t\ts.distanceOffset[axis] = s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis] * s.timeDiff;\n\t\t\t\t\t_panOffset[axis] += s.distanceOffset[axis];\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tpanAnimLoop: function() {\n\t\t\t\tif ( _animations.zoomPan ) {\n\t\t\t\t\t_animations.zoomPan.raf = _requestAF(s.panAnimLoop);\n\n\t\t\t\t\ts.now = _getCurrentTime();\n\t\t\t\t\ts.timeDiff = s.now - s.lastNow;\n\t\t\t\t\ts.lastNow = s.now;\n\t\t\t\t\t\n\t\t\t\t\ts.calculateAnimOffset('x');\n\t\t\t\t\ts.calculateAnimOffset('y');\n\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\n\t\t\t\t\ts.calculateOverBoundsAnimOffset('x');\n\t\t\t\t\ts.calculateOverBoundsAnimOffset('y');\n\n\n\t\t\t\t\tif (s.speedDecelerationRatioAbs.x < 0.05 && s.speedDecelerationRatioAbs.y < 0.05) {\n\n\t\t\t\t\t\t// round pan position\n\t\t\t\t\t\t_panOffset.x = Math.round(_panOffset.x);\n\t\t\t\t\t\t_panOffset.y = Math.round(_panOffset.y);\n\t\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\t\n\t\t\t\t\t\t_stopAnimation('zoomPan');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t};\n\t\treturn s;\n\t},\n\n\t_completePanGesture = function(animData) {\n\t\t// calculate swipe speed for Y axis (paanning)\n\t\tanimData.calculateSwipeSpeed('y');\n\n\t\t_currPanBounds = self.currItem.bounds;\n\t\t\n\t\tanimData.backAnimDestination = {};\n\t\tanimData.backAnimStarted = {};\n\n\t\t// Avoid acceleration animation if speed is too low\n\t\tif(Math.abs(animData.lastFlickSpeed.x) <= 0.05 && Math.abs(animData.lastFlickSpeed.y) <= 0.05 ) {\n\t\t\tanimData.speedDecelerationRatioAbs.x = animData.speedDecelerationRatioAbs.y = 0;\n\n\t\t\t// Run pan drag release animation. E.g. if you drag image and release finger without momentum.\n\t\t\tanimData.calculateOverBoundsAnimOffset('x');\n\t\t\tanimData.calculateOverBoundsAnimOffset('y');\n\t\t\treturn true;\n\t\t}\n\n\t\t// Animation loop that controls the acceleration after pan gesture ends\n\t\t_registerStartAnimation('zoomPan');\n\t\tanimData.lastNow = _getCurrentTime();\n\t\tanimData.panAnimLoop();\n\t},\n\n\n\t_finishSwipeMainScrollGesture = function(gestureType, _releaseAnimData) {\n\t\tvar itemChanged;\n\t\tif(!_mainScrollAnimating) {\n\t\t\t_currZoomedItemIndex = _currentItemIndex;\n\t\t}\n\n\n\t\t\n\t\tvar itemsDiff;\n\n\t\tif(gestureType === 'swipe') {\n\t\t\tvar totalShiftDist = _currPoint.x - _startPoint.x,\n\t\t\t\tisFastLastFlick = _releaseAnimData.lastFlickDist.x < 10;\n\n\t\t\t// if container is shifted for more than MIN_SWIPE_DISTANCE, \n\t\t\t// and last flick gesture was in right direction\n\t\t\tif(totalShiftDist > MIN_SWIPE_DISTANCE && \n\t\t\t\t(isFastLastFlick || _releaseAnimData.lastFlickOffset.x > 20) ) {\n\t\t\t\t// go to prev item\n\t\t\t\titemsDiff = -1;\n\t\t\t} else if(totalShiftDist < -MIN_SWIPE_DISTANCE && \n\t\t\t\t(isFastLastFlick || _releaseAnimData.lastFlickOffset.x < -20) ) {\n\t\t\t\t// go to next item\n\t\t\t\titemsDiff = 1;\n\t\t\t}\n\t\t}\n\n\t\tvar nextCircle;\n\n\t\tif(itemsDiff) {\n\t\t\t\n\t\t\t_currentItemIndex += itemsDiff;\n\n\t\t\tif(_currentItemIndex < 0) {\n\t\t\t\t_currentItemIndex = _options.loop ? _getNumItems()-1 : 0;\n\t\t\t\tnextCircle = true;\n\t\t\t} else if(_currentItemIndex >= _getNumItems()) {\n\t\t\t\t_currentItemIndex = _options.loop ? 0 : _getNumItems()-1;\n\t\t\t\tnextCircle = true;\n\t\t\t}\n\n\t\t\tif(!nextCircle || _options.loop) {\n\t\t\t\t_indexDiff += itemsDiff;\n\t\t\t\t_currPositionIndex -= itemsDiff;\n\t\t\t\titemChanged = true;\n\t\t\t}\n\t\t\t\n\n\t\t\t\n\t\t}\n\n\t\tvar animateToX = _slideSize.x * _currPositionIndex;\n\t\tvar animateToDist = Math.abs( animateToX - _mainScrollPos.x );\n\t\tvar finishAnimDuration;\n\n\n\t\tif(!itemChanged && animateToX > _mainScrollPos.x !== _releaseAnimData.lastFlickSpeed.x > 0) {\n\t\t\t// \"return to current\" duration, e.g. when dragging from slide 0 to -1\n\t\t\tfinishAnimDuration = 333; \n\t\t} else {\n\t\t\tfinishAnimDuration = Math.abs(_releaseAnimData.lastFlickSpeed.x) > 0 ? \n\t\t\t\t\t\t\t\t\tanimateToDist / Math.abs(_releaseAnimData.lastFlickSpeed.x) : \n\t\t\t\t\t\t\t\t\t333;\n\n\t\t\tfinishAnimDuration = Math.min(finishAnimDuration, 400);\n\t\t\tfinishAnimDuration = Math.max(finishAnimDuration, 250);\n\t\t}\n\n\t\tif(_currZoomedItemIndex === _currentItemIndex) {\n\t\t\titemChanged = false;\n\t\t}\n\t\t\n\t\t_mainScrollAnimating = true;\n\t\t\n\t\t_shout('mainScrollAnimStart');\n\n\t\t_animateProp('mainScroll', _mainScrollPos.x, animateToX, finishAnimDuration, framework.easing.cubic.out, \n\t\t\t_moveMainScroll,\n\t\t\tfunction() {\n\t\t\t\t_stopAllAnimations();\n\t\t\t\t_mainScrollAnimating = false;\n\t\t\t\t_currZoomedItemIndex = -1;\n\t\t\t\t\n\t\t\t\tif(itemChanged || _currZoomedItemIndex !== _currentItemIndex) {\n\t\t\t\t\tself.updateCurrItem();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_shout('mainScrollAnimComplete');\n\t\t\t}\n\t\t);\n\n\t\tif(itemChanged) {\n\t\t\tself.updateCurrItem(true);\n\t\t}\n\n\t\treturn itemChanged;\n\t},\n\n\t_calculateZoomLevel = function(touchesDistance) {\n\t\treturn 1 / _startPointsDistance * touchesDistance * _startZoomLevel;\n\t},\n\n\t// Resets zoom if it's out of bounds\n\t_completeZoomGesture = function() {\n\t\tvar destZoomLevel = _currZoomLevel,\n\t\t\tminZoomLevel = _getMinZoomLevel(),\n\t\t\tmaxZoomLevel = _getMaxZoomLevel();\n\n\t\tif ( _currZoomLevel < minZoomLevel ) {\n\t\t\tdestZoomLevel = minZoomLevel;\n\t\t} else if ( _currZoomLevel > maxZoomLevel ) {\n\t\t\tdestZoomLevel = maxZoomLevel;\n\t\t}\n\n\t\tvar destOpacity = 1,\n\t\t\tonUpdate,\n\t\t\tinitialOpacity = _bgOpacity;\n\n\t\tif(_opacityChanged && !_isZoomingIn && !_wasOverInitialZoom && _currZoomLevel < minZoomLevel) {\n\t\t\t//_closedByScroll = true;\n\t\t\tself.close();\n\t\t\treturn true;\n\t\t}\n\n\t\tif(_opacityChanged) {\n\t\t\tonUpdate = function(now) {\n\t\t\t\t_applyBgOpacity( (destOpacity - initialOpacity) * now + initialOpacity );\n\t\t\t};\n\t\t}\n\n\t\tself.zoomTo(destZoomLevel, 0, 200, framework.easing.cubic.out, onUpdate);\n\t\treturn true;\n\t};\n\n\n_registerModule('Gestures', {\n\tpublicMethods: {\n\n\t\tinitGestures: function() {\n\n\t\t\t// helper function that builds touch/pointer/mouse events\n\t\t\tvar addEventNames = function(pref, down, move, up, cancel) {\n\t\t\t\t_dragStartEvent = pref + down;\n\t\t\t\t_dragMoveEvent = pref + move;\n\t\t\t\t_dragEndEvent = pref + up;\n\t\t\t\tif(cancel) {\n\t\t\t\t\t_dragCancelEvent = pref + cancel;\n\t\t\t\t} else {\n\t\t\t\t\t_dragCancelEvent = '';\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t_pointerEventEnabled = _features.pointerEvent;\n\t\t\tif(_pointerEventEnabled && _features.touch) {\n\t\t\t\t// we don't need touch events, if browser supports pointer events\n\t\t\t\t_features.touch = false;\n\t\t\t}\n\n\t\t\tif(_pointerEventEnabled) {\n\t\t\t\tif(navigator.msPointerEnabled) {\n\t\t\t\t\t// IE10 pointer events are case-sensitive\n\t\t\t\t\taddEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel');\n\t\t\t\t} else {\n\t\t\t\t\taddEventNames('pointer', 'down', 'move', 'up', 'cancel');\n\t\t\t\t}\n\t\t\t} else if(_features.touch) {\n\t\t\t\taddEventNames('touch', 'start', 'move', 'end', 'cancel');\n\t\t\t\t_likelyTouchDevice = true;\n\t\t\t} else {\n\t\t\t\taddEventNames('mouse', 'down', 'move', 'up');\t\n\t\t\t}\n\n\t\t\t_upMoveEvents = _dragMoveEvent + ' ' + _dragEndEvent + ' ' + _dragCancelEvent;\n\t\t\t_downEvents = _dragStartEvent;\n\n\t\t\tif(_pointerEventEnabled && !_likelyTouchDevice) {\n\t\t\t\t_likelyTouchDevice = (navigator.maxTouchPoints > 1) || (navigator.msMaxTouchPoints > 1);\n\t\t\t}\n\t\t\t// make variable public\n\t\t\tself.likelyTouchDevice = _likelyTouchDevice; \n\t\t\t\n\t\t\t_globalEventHandlers[_dragStartEvent] = _onDragStart;\n\t\t\t_globalEventHandlers[_dragMoveEvent] = _onDragMove;\n\t\t\t_globalEventHandlers[_dragEndEvent] = _onDragRelease; // the Kraken\n\n\t\t\tif(_dragCancelEvent) {\n\t\t\t\t_globalEventHandlers[_dragCancelEvent] = _globalEventHandlers[_dragEndEvent];\n\t\t\t}\n\n\t\t\t// Bind mouse events on device with detected hardware touch support, in case it supports multiple types of input.\n\t\t\tif(_features.touch) {\n\t\t\t\t_downEvents += ' mousedown';\n\t\t\t\t_upMoveEvents += ' mousemove mouseup';\n\t\t\t\t_globalEventHandlers.mousedown = _globalEventHandlers[_dragStartEvent];\n\t\t\t\t_globalEventHandlers.mousemove = _globalEventHandlers[_dragMoveEvent];\n\t\t\t\t_globalEventHandlers.mouseup = _globalEventHandlers[_dragEndEvent];\n\t\t\t}\n\n\t\t\tif(!_likelyTouchDevice) {\n\t\t\t\t// don't allow pan to next slide from zoomed state on Desktop\n\t\t\t\t_options.allowPanToNext = false;\n\t\t\t}\n\t\t}\n\n\t}\n});\n\n\n/*>>gestures*/\n\n/*>>show-hide-transition*/\n/**\n * show-hide-transition.js:\n *\n * Manages initial opening or closing transition.\n *\n * If you're not planning to use transition for gallery at all,\n * you may set options hideAnimationDuration and showAnimationDuration to 0,\n * and just delete startAnimation function.\n * \n */\n\n\nvar _showOrHideTimeout,\n\t_showOrHide = function(item, img, out, completeFn) {\n\n\t\tif(_showOrHideTimeout) {\n\t\t\tclearTimeout(_showOrHideTimeout);\n\t\t}\n\n\t\t_initialZoomRunning = true;\n\t\t_initialContentSet = true;\n\t\t\n\t\t// dimensions of small thumbnail {x:,y:,w:}.\n\t\t// Height is optional, as calculated based on large image.\n\t\tvar thumbBounds; \n\t\tif(item.initialLayout) {\n\t\t\tthumbBounds = item.initialLayout;\n\t\t\titem.initialLayout = null;\n\t\t} else {\n\t\t\tthumbBounds = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);\n\t\t}\n\n\t\tvar duration = out ? _options.hideAnimationDuration : _options.showAnimationDuration;\n\n\t\tvar onComplete = function() {\n\t\t\t_stopAnimation('initialZoom');\n\t\t\tif(!out) {\n\t\t\t\t_applyBgOpacity(1);\n\t\t\t\tif(img) {\n\t\t\t\t\timg.style.display = 'block';\n\t\t\t\t}\n\t\t\t\tframework.addClass(template, 'pswp--animated-in');\n\t\t\t\t_shout('initialZoom' + (out ? 'OutEnd' : 'InEnd'));\n\t\t\t} else {\n\t\t\t\tself.template.removeAttribute('style');\n\t\t\t\tself.bg.removeAttribute('style');\n\t\t\t}\n\n\t\t\tif(completeFn) {\n\t\t\t\tcompleteFn();\n\t\t\t}\n\t\t\t_initialZoomRunning = false;\n\t\t};\n\n\t\t// if bounds aren't provided, just open gallery without animation\n\t\tif(!duration || !thumbBounds || thumbBounds.x === undefined) {\n\n\t\t\t_shout('initialZoom' + (out ? 'Out' : 'In') );\n\n\t\t\t_currZoomLevel = item.initialZoomLevel;\n\t\t\t_equalizePoints(_panOffset, item.initialPosition );\n\t\t\t_applyCurrentZoomPan();\n\n\t\t\ttemplate.style.opacity = out ? 0 : 1;\n\t\t\t_applyBgOpacity(1);\n\n\t\t\tif(duration) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tonComplete();\n\t\t\t\t}, duration);\n\t\t\t} else {\n\t\t\t\tonComplete();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar startAnimation = function() {\n\t\t\tvar closeWithRaf = _closedByScroll,\n\t\t\t\tfadeEverything = !self.currItem.src || self.currItem.loadError || _options.showHideOpacity;\n\t\t\t\n\t\t\t// apply hw-acceleration to image\n\t\t\tif(item.miniImg) {\n\t\t\t\titem.miniImg.style.webkitBackfaceVisibility = 'hidden';\n\t\t\t}\n\n\t\t\tif(!out) {\n\t\t\t\t_currZoomLevel = thumbBounds.w / item.w;\n\t\t\t\t_panOffset.x = thumbBounds.x;\n\t\t\t\t_panOffset.y = thumbBounds.y - _initalWindowScrollY;\n\n\t\t\t\tself[fadeEverything ? 'template' : 'bg'].style.opacity = 0.001;\n\t\t\t\t_applyCurrentZoomPan();\n\t\t\t}\n\n\t\t\t_registerStartAnimation('initialZoom');\n\t\t\t\n\t\t\tif(out && !closeWithRaf) {\n\t\t\t\tframework.removeClass(template, 'pswp--animated-in');\n\t\t\t}\n\n\t\t\tif(fadeEverything) {\n\t\t\t\tif(out) {\n\t\t\t\t\tframework[ (closeWithRaf ? 'remove' : 'add') + 'Class' ](template, 'pswp--animate_opacity');\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tframework.addClass(template, 'pswp--animate_opacity');\n\t\t\t\t\t}, 30);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_showOrHideTimeout = setTimeout(function() {\n\n\t\t\t\t_shout('initialZoom' + (out ? 'Out' : 'In') );\n\t\t\t\t\n\n\t\t\t\tif(!out) {\n\n\t\t\t\t\t// \"in\" animation always uses CSS transitions (instead of rAF).\n\t\t\t\t\t// CSS transition work faster here, \n\t\t\t\t\t// as developer may also want to animate other things, \n\t\t\t\t\t// like ui on top of sliding area, which can be animated just via CSS\n\t\t\t\t\t\n\t\t\t\t\t_currZoomLevel = item.initialZoomLevel;\n\t\t\t\t\t_equalizePoints(_panOffset, item.initialPosition );\n\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t_applyBgOpacity(1);\n\n\t\t\t\t\tif(fadeEverything) {\n\t\t\t\t\t\ttemplate.style.opacity = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_applyBgOpacity(1);\n\t\t\t\t\t}\n\n\t\t\t\t\t_showOrHideTimeout = setTimeout(onComplete, duration + 20);\n\t\t\t\t} else {\n\n\t\t\t\t\t// \"out\" animation uses rAF only when PhotoSwipe is closed by browser scroll, to recalculate position\n\t\t\t\t\tvar destZoomLevel = thumbBounds.w / item.w,\n\t\t\t\t\t\tinitialPanOffset = {\n\t\t\t\t\t\t\tx: _panOffset.x,\n\t\t\t\t\t\t\ty: _panOffset.y\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinitialZoomLevel = _currZoomLevel,\n\t\t\t\t\t\tinitalBgOpacity = _bgOpacity,\n\t\t\t\t\t\tonUpdate = function(now) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(now === 1) {\n\t\t\t\t\t\t\t\t_currZoomLevel = destZoomLevel;\n\t\t\t\t\t\t\t\t_panOffset.x = thumbBounds.x;\n\t\t\t\t\t\t\t\t_panOffset.y = thumbBounds.y - _currentWindowScrollY;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;\n\t\t\t\t\t\t\t\t_panOffset.x = (thumbBounds.x - initialPanOffset.x) * now + initialPanOffset.x;\n\t\t\t\t\t\t\t\t_panOffset.y = (thumbBounds.y - _currentWindowScrollY - initialPanOffset.y) * now + initialPanOffset.y;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t_applyCurrentZoomPan();\n\t\t\t\t\t\t\tif(fadeEverything) {\n\t\t\t\t\t\t\t\ttemplate.style.opacity = 1 - now;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_applyBgOpacity( initalBgOpacity - now * initalBgOpacity );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\tif(closeWithRaf) {\n\t\t\t\t\t\t_animateProp('initialZoom', 0, 1, duration, framework.easing.cubic.out, onUpdate, onComplete);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonUpdate(1);\n\t\t\t\t\t\t_showOrHideTimeout = setTimeout(onComplete, duration + 20);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t}, out ? 25 : 90); // Main purpose of this delay is to give browser time to paint and\n\t\t\t\t\t// create composite layers of PhotoSwipe UI parts (background, controls, caption, arrows).\n\t\t\t\t\t// Which avoids lag at the beginning of scale transition.\n\t\t};\n\t\tstartAnimation();\n\n\t\t\n\t};\n\n/*>>show-hide-transition*/\n\n/*>>items-controller*/\n/**\n*\n* Controller manages gallery items, their dimensions, and their content.\n* \n*/\n\nvar _items,\n\t_tempPanAreaSize = {},\n\t_imagesToAppendPool = [],\n\t_initialContentSet,\n\t_initialZoomRunning,\n\t_controllerDefaultOptions = {\n\t\tindex: 0,\n\t\terrorMsg: '
The image could not be loaded.
',\n\t\tforceProgressiveLoading: false, // TODO\n\t\tpreload: [1,1],\n\t\tgetNumItemsFn: function() {\n\t\t\treturn _items.length;\n\t\t}\n\t};\n\n\nvar _getItemAt,\n\t_getNumItems,\n\t_initialIsLoop,\n\t_getZeroBounds = function() {\n\t\treturn {\n\t\t\tcenter:{x:0,y:0}, \n\t\t\tmax:{x:0,y:0}, \n\t\t\tmin:{x:0,y:0}\n\t\t};\n\t},\n\t_calculateSingleItemPanBounds = function(item, realPanElementW, realPanElementH ) {\n\t\tvar bounds = item.bounds;\n\n\t\t// position of element when it's centered\n\t\tbounds.center.x = Math.round((_tempPanAreaSize.x - realPanElementW) / 2);\n\t\tbounds.center.y = Math.round((_tempPanAreaSize.y - realPanElementH) / 2) + item.vGap.top;\n\n\t\t// maximum pan position\n\t\tbounds.max.x = (realPanElementW > _tempPanAreaSize.x) ? \n\t\t\t\t\t\t\tMath.round(_tempPanAreaSize.x - realPanElementW) : \n\t\t\t\t\t\t\tbounds.center.x;\n\t\t\n\t\tbounds.max.y = (realPanElementH > _tempPanAreaSize.y) ? \n\t\t\t\t\t\t\tMath.round(_tempPanAreaSize.y - realPanElementH) + item.vGap.top : \n\t\t\t\t\t\t\tbounds.center.y;\n\t\t\n\t\t// minimum pan position\n\t\tbounds.min.x = (realPanElementW > _tempPanAreaSize.x) ? 0 : bounds.center.x;\n\t\tbounds.min.y = (realPanElementH > _tempPanAreaSize.y) ? item.vGap.top : bounds.center.y;\n\t},\n\t_calculateItemSize = function(item, viewportSize, zoomLevel) {\n\n\t\tif (item.src && !item.loadError) {\n\t\t\tvar isInitial = !zoomLevel;\n\t\t\t\n\t\t\tif(isInitial) {\n\t\t\t\tif(!item.vGap) {\n\t\t\t\t\titem.vGap = {top:0,bottom:0};\n\t\t\t\t}\n\t\t\t\t// allows overriding vertical margin for individual items\n\t\t\t\t_shout('parseVerticalMargin', item);\n\t\t\t}\n\n\n\t\t\t_tempPanAreaSize.x = viewportSize.x;\n\t\t\t_tempPanAreaSize.y = viewportSize.y - item.vGap.top - item.vGap.bottom;\n\n\t\t\tif (isInitial) {\n\t\t\t\tvar hRatio = _tempPanAreaSize.x / item.w;\n\t\t\t\tvar vRatio = _tempPanAreaSize.y / item.h;\n\n\t\t\t\titem.fitRatio = hRatio < vRatio ? hRatio : vRatio;\n\t\t\t\t//item.fillRatio = hRatio > vRatio ? hRatio : vRatio;\n\n\t\t\t\tvar scaleMode = _options.scaleMode;\n\n\t\t\t\tif (scaleMode === 'orig') {\n\t\t\t\t\tzoomLevel = 1;\n\t\t\t\t} else if (scaleMode === 'fit') {\n\t\t\t\t\tzoomLevel = item.fitRatio;\n\t\t\t\t}\n\n\t\t\t\tif (zoomLevel > 1) {\n\t\t\t\t\tzoomLevel = 1;\n\t\t\t\t}\n\n\t\t\t\titem.initialZoomLevel = zoomLevel;\n\t\t\t\t\n\t\t\t\tif(!item.bounds) {\n\t\t\t\t\t// reuse bounds object\n\t\t\t\t\titem.bounds = _getZeroBounds(); \n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!zoomLevel) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_calculateSingleItemPanBounds(item, item.w * zoomLevel, item.h * zoomLevel);\n\n\t\t\tif (isInitial && zoomLevel === item.initialZoomLevel) {\n\t\t\t\titem.initialPosition = item.bounds.center;\n\t\t\t}\n\n\t\t\treturn item.bounds;\n\t\t} else {\n\t\t\titem.w = item.h = 0;\n\t\t\titem.initialZoomLevel = item.fitRatio = 1;\n\t\t\titem.bounds = _getZeroBounds();\n\t\t\titem.initialPosition = item.bounds.center;\n\n\t\t\t// if it's not image, we return zero bounds (content is not zoomable)\n\t\t\treturn item.bounds;\n\t\t}\n\t\t\n\t},\n\n\t\n\n\n\t_appendImage = function(index, item, baseDiv, img, preventAnimation, keepPlaceholder) {\n\t\t\n\n\t\tif(item.loadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(img) {\n\n\t\t\titem.imageAppended = true;\n\t\t\t_setImageSize(item, img, (item === self.currItem && _renderMaxResolution) );\n\t\t\t\n\t\t\tbaseDiv.appendChild(img);\n\n\t\t\tif(keepPlaceholder) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(item && item.loaded && item.placeholder) {\n\t\t\t\t\t\titem.placeholder.style.display = 'none';\n\t\t\t\t\t\titem.placeholder = null;\n\t\t\t\t\t}\n\t\t\t\t}, 500);\n\t\t\t}\n\t\t}\n\t},\n\t\n\n\n\t_preloadImage = function(item) {\n\t\titem.loading = true;\n\t\titem.loaded = false;\n\t\tvar img = item.img = framework.createEl('pswp__img', 'img');\n\t\tvar onComplete = function() {\n\t\t\titem.loading = false;\n\t\t\titem.loaded = true;\n\n\t\t\tif(item.loadComplete) {\n\t\t\t\titem.loadComplete(item);\n\t\t\t} else {\n\t\t\t\titem.img = null; // no need to store image object\n\t\t\t}\n\t\t\timg.onload = img.onerror = null;\n\t\t\timg = null;\n\t\t};\n\t\timg.onload = onComplete;\n\t\timg.onerror = function() {\n\t\t\titem.loadError = true;\n\t\t\tonComplete();\n\t\t};\t\t\n\n\t\timg.src = item.src;// + '?a=' + Math.random();\n\n\t\treturn img;\n\t},\n\t_checkForError = function(item, cleanUp) {\n\t\tif(item.src && item.loadError && item.container) {\n\n\t\t\tif(cleanUp) {\n\t\t\t\titem.container.innerHTML = '';\n\t\t\t}\n\n\t\t\titem.container.innerHTML = _options.errorMsg.replace('%url%', item.src );\n\t\t\treturn true;\n\t\t\t\n\t\t}\n\t},\n\t_setImageSize = function(item, img, maxRes) {\n\t\tif(!item.src) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(!img) {\n\t\t\timg = item.container.lastChild;\n\t\t}\n\n\t\tvar w = maxRes ? item.w : Math.round(item.w * item.fitRatio),\n\t\t\th = maxRes ? item.h : Math.round(item.h * item.fitRatio);\n\t\t\n\t\tif(item.placeholder && !item.loaded) {\n\t\t\titem.placeholder.style.width = w + 'px';\n\t\t\titem.placeholder.style.height = h + 'px';\n\t\t}\n\n\t\timg.style.width = w + 'px';\n\t\timg.style.height = h + 'px';\n\t},\n\t_appendImagesPool = function() {\n\n\t\tif(_imagesToAppendPool.length) {\n\t\t\tvar poolItem;\n\n\t\t\tfor(var i = 0; i < _imagesToAppendPool.length; i++) {\n\t\t\t\tpoolItem = _imagesToAppendPool[i];\n\t\t\t\tif( poolItem.holder.index === poolItem.index ) {\n\t\t\t\t\t_appendImage(poolItem.index, poolItem.item, poolItem.baseDiv, poolItem.img, false, poolItem.clearPlaceholder);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_imagesToAppendPool = [];\n\t\t}\n\t};\n\t\n\n\n_registerModule('Controller', {\n\n\tpublicMethods: {\n\n\t\tlazyLoadItem: function(index) {\n\t\t\tindex = _getLoopedId(index);\n\t\t\tvar item = _getItemAt(index);\n\n\t\t\tif(!item || ((item.loaded || item.loading) && !_itemsNeedUpdate)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_shout('gettingData', index, item);\n\n\t\t\tif (!item.src) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_preloadImage(item);\n\t\t},\n\t\tinitController: function() {\n\t\t\tframework.extend(_options, _controllerDefaultOptions, true);\n\t\t\tself.items = _items = items;\n\t\t\t_getItemAt = self.getItemAt;\n\t\t\t_getNumItems = _options.getNumItemsFn; //self.getNumItems;\n\n\n\n\t\t\t_initialIsLoop = _options.loop;\n\t\t\tif(_getNumItems() < 3) {\n\t\t\t\t_options.loop = false; // disable loop if less then 3 items\n\t\t\t}\n\n\t\t\t_listen('beforeChange', function(diff) {\n\n\t\t\t\tvar p = _options.preload,\n\t\t\t\t\tisNext = diff === null ? true : (diff >= 0),\n\t\t\t\t\tpreloadBefore = Math.min(p[0], _getNumItems() ),\n\t\t\t\t\tpreloadAfter = Math.min(p[1], _getNumItems() ),\n\t\t\t\t\ti;\n\n\n\t\t\t\tfor(i = 1; i <= (isNext ? preloadAfter : preloadBefore); i++) {\n\t\t\t\t\tself.lazyLoadItem(_currentItemIndex+i);\n\t\t\t\t}\n\t\t\t\tfor(i = 1; i <= (isNext ? preloadBefore : preloadAfter); i++) {\n\t\t\t\t\tself.lazyLoadItem(_currentItemIndex-i);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_listen('initialLayout', function() {\n\t\t\t\tself.currItem.initialLayout = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);\n\t\t\t});\n\n\t\t\t_listen('mainScrollAnimComplete', _appendImagesPool);\n\t\t\t_listen('initialZoomInEnd', _appendImagesPool);\n\n\n\n\t\t\t_listen('destroy', function() {\n\t\t\t\tvar item;\n\t\t\t\tfor(var i = 0; i < _items.length; i++) {\n\t\t\t\t\titem = _items[i];\n\t\t\t\t\t// remove reference to DOM elements, for GC\n\t\t\t\t\tif(item.container) {\n\t\t\t\t\t\titem.container = null; \n\t\t\t\t\t}\n\t\t\t\t\tif(item.placeholder) {\n\t\t\t\t\t\titem.placeholder = null;\n\t\t\t\t\t}\n\t\t\t\t\tif(item.img) {\n\t\t\t\t\t\titem.img = null;\n\t\t\t\t\t}\n\t\t\t\t\tif(item.preloader) {\n\t\t\t\t\t\titem.preloader = null;\n\t\t\t\t\t}\n\t\t\t\t\tif(item.loadError) {\n\t\t\t\t\t\titem.loaded = item.loadError = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t_imagesToAppendPool = null;\n\t\t\t});\n\t\t},\n\n\n\t\tgetItemAt: function(index) {\n\t\t\tif (index >= 0) {\n\t\t\t\treturn _items[index] !== undefined ? _items[index] : false;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tallowProgressiveImg: function() {\n\t\t\t// 1. Progressive image loading isn't working on webkit/blink \n\t\t\t// when hw-acceleration (e.g. translateZ) is applied to IMG element.\n\t\t\t// That's why in PhotoSwipe parent element gets zoom transform, not image itself.\n\t\t\t// \n\t\t\t// 2. Progressive image loading sometimes blinks in webkit/blink when applying animation to parent element.\n\t\t\t// That's why it's disabled on touch devices (mainly because of swipe transition)\n\t\t\t// \n\t\t\t// 3. Progressive image loading sometimes doesn't work in IE (up to 11).\n\n\t\t\t// Don't allow progressive loading on non-large touch devices\n\t\t\treturn _options.forceProgressiveLoading || !_likelyTouchDevice || _options.mouseUsed || screen.width > 1200; \n\t\t\t// 1200 - to eliminate touch devices with large screen (like Chromebook Pixel)\n\t\t},\n\n\t\tsetContent: function(holder, index) {\n\n\t\t\tif(_options.loop) {\n\t\t\t\tindex = _getLoopedId(index);\n\t\t\t}\n\n\t\t\tvar prevItem = self.getItemAt(holder.index);\n\t\t\tif(prevItem) {\n\t\t\t\tprevItem.container = null;\n\t\t\t}\n\t\n\t\t\tvar item = self.getItemAt(index),\n\t\t\t\timg;\n\t\t\t\n\t\t\tif(!item) {\n\t\t\t\tholder.el.innerHTML = '';\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// allow to override data\n\t\t\t_shout('gettingData', index, item);\n\n\t\t\tholder.index = index;\n\t\t\tholder.item = item;\n\n\t\t\t// base container DIV is created only once for each of 3 holders\n\t\t\tvar baseDiv = item.container = framework.createEl('pswp__zoom-wrap'); \n\n\t\t\t\n\n\t\t\tif(!item.src && item.html) {\n\t\t\t\tif(item.html.tagName) {\n\t\t\t\t\tbaseDiv.appendChild(item.html);\n\t\t\t\t} else {\n\t\t\t\t\tbaseDiv.innerHTML = item.html;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_checkForError(item);\n\n\t\t\t_calculateItemSize(item, _viewportSize);\n\t\t\t\n\t\t\tif(item.src && !item.loadError && !item.loaded) {\n\n\t\t\t\titem.loadComplete = function(item) {\n\n\t\t\t\t\t// gallery closed before image finished loading\n\t\t\t\t\tif(!_isOpen) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// check if holder hasn't changed while image was loading\n\t\t\t\t\tif(holder && holder.index === index ) {\n\t\t\t\t\t\tif( _checkForError(item, true) ) {\n\t\t\t\t\t\t\titem.loadComplete = item.img = null;\n\t\t\t\t\t\t\t_calculateItemSize(item, _viewportSize);\n\t\t\t\t\t\t\t_applyZoomPanToItem(item);\n\n\t\t\t\t\t\t\tif(holder.index === _currentItemIndex) {\n\t\t\t\t\t\t\t\t// recalculate dimensions\n\t\t\t\t\t\t\t\tself.updateCurrZoomItem();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( !item.imageAppended ) {\n\t\t\t\t\t\t\tif(_features.transform && (_mainScrollAnimating || _initialZoomRunning) ) {\n\t\t\t\t\t\t\t\t_imagesToAppendPool.push({\n\t\t\t\t\t\t\t\t\titem:item,\n\t\t\t\t\t\t\t\t\tbaseDiv:baseDiv,\n\t\t\t\t\t\t\t\t\timg:item.img,\n\t\t\t\t\t\t\t\t\tindex:index,\n\t\t\t\t\t\t\t\t\tholder:holder,\n\t\t\t\t\t\t\t\t\tclearPlaceholder:true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_appendImage(index, item, baseDiv, item.img, _mainScrollAnimating || _initialZoomRunning, true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// remove preloader & mini-img\n\t\t\t\t\t\t\tif(!_initialZoomRunning && item.placeholder) {\n\t\t\t\t\t\t\t\titem.placeholder.style.display = 'none';\n\t\t\t\t\t\t\t\titem.placeholder = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\titem.loadComplete = null;\n\t\t\t\t\titem.img = null; // no need to store image element after it's added\n\n\t\t\t\t\t_shout('imageLoadComplete', index, item);\n\t\t\t\t};\n\n\t\t\t\tif(framework.features.transform) {\n\t\t\t\t\t\n\t\t\t\t\tvar placeholderClassName = 'pswp__img pswp__img--placeholder'; \n\t\t\t\t\tplaceholderClassName += (item.msrc ? '' : ' pswp__img--placeholder--blank');\n\n\t\t\t\t\tvar placeholder = framework.createEl(placeholderClassName, item.msrc ? 'img' : '');\n\t\t\t\t\tif(item.msrc) {\n\t\t\t\t\t\tplaceholder.src = item.msrc;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t_setImageSize(item, placeholder);\n\n\t\t\t\t\tbaseDiv.appendChild(placeholder);\n\t\t\t\t\titem.placeholder = placeholder;\n\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\tif(!item.loading) {\n\t\t\t\t\t_preloadImage(item);\n\t\t\t\t}\n\n\n\t\t\t\tif( self.allowProgressiveImg() ) {\n\t\t\t\t\t// just append image\n\t\t\t\t\tif(!_initialContentSet && _features.transform) {\n\t\t\t\t\t\t_imagesToAppendPool.push({\n\t\t\t\t\t\t\titem:item, \n\t\t\t\t\t\t\tbaseDiv:baseDiv, \n\t\t\t\t\t\t\timg:item.img, \n\t\t\t\t\t\t\tindex:index, \n\t\t\t\t\t\t\tholder:holder\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_appendImage(index, item, baseDiv, item.img, true, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else if(item.src && !item.loadError) {\n\t\t\t\t// image object is created every time, due to bugs of image loading & delay when switching images\n\t\t\t\timg = framework.createEl('pswp__img', 'img');\n\t\t\t\timg.style.opacity = 1;\n\t\t\t\timg.src = item.src;\n\t\t\t\t_setImageSize(item, img);\n\t\t\t\t_appendImage(index, item, baseDiv, img, true);\n\t\t\t}\n\t\t\t\n\n\t\t\tif(!_initialContentSet && index === _currentItemIndex) {\n\t\t\t\t_currZoomElementStyle = baseDiv.style;\n\t\t\t\t_showOrHide(item, (img ||item.img) );\n\t\t\t} else {\n\t\t\t\t_applyZoomPanToItem(item);\n\t\t\t}\n\n\t\t\tholder.el.innerHTML = '';\n\t\t\tholder.el.appendChild(baseDiv);\n\t\t},\n\n\t\tcleanSlide: function( item ) {\n\t\t\tif(item.img ) {\n\t\t\t\titem.img.onload = item.img.onerror = null;\n\t\t\t}\n\t\t\titem.loaded = item.loading = item.img = item.imageAppended = false;\n\t\t}\n\n\t}\n});\n\n/*>>items-controller*/\n\n/*>>tap*/\n/**\n * tap.js:\n *\n * Displatches tap and double-tap events.\n * \n */\n\nvar tapTimer,\n\ttapReleasePoint = {},\n\t_dispatchTapEvent = function(origEvent, releasePoint, pointerType) {\t\t\n\t\tvar e = document.createEvent( 'CustomEvent' ),\n\t\t\teDetail = {\n\t\t\t\torigEvent:origEvent, \n\t\t\t\ttarget:origEvent.target, \n\t\t\t\treleasePoint: releasePoint, \n\t\t\t\tpointerType:pointerType || 'touch'\n\t\t\t};\n\n\t\te.initCustomEvent( 'pswpTap', true, true, eDetail );\n\t\torigEvent.target.dispatchEvent(e);\n\t};\n\n_registerModule('Tap', {\n\tpublicMethods: {\n\t\tinitTap: function() {\n\t\t\t_listen('firstTouchStart', self.onTapStart);\n\t\t\t_listen('touchRelease', self.onTapRelease);\n\t\t\t_listen('destroy', function() {\n\t\t\t\ttapReleasePoint = {};\n\t\t\t\ttapTimer = null;\n\t\t\t});\n\t\t},\n\t\tonTapStart: function(touchList) {\n\t\t\tif(touchList.length > 1) {\n\t\t\t\tclearTimeout(tapTimer);\n\t\t\t\ttapTimer = null;\n\t\t\t}\n\t\t},\n\t\tonTapRelease: function(e, releasePoint) {\n\t\t\tif(!releasePoint) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(!_moved && !_isMultitouch && !_numAnimations) {\n\t\t\t\tvar p0 = releasePoint;\n\t\t\t\tif(tapTimer) {\n\t\t\t\t\tclearTimeout(tapTimer);\n\t\t\t\t\ttapTimer = null;\n\n\t\t\t\t\t// Check if taped on the same place\n\t\t\t\t\tif ( _isNearbyPoints(p0, tapReleasePoint) ) {\n\t\t\t\t\t\t_shout('doubleTap', p0);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(releasePoint.type === 'mouse') {\n\t\t\t\t\t_dispatchTapEvent(e, releasePoint, 'mouse');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar clickedTagName = e.target.tagName.toUpperCase();\n\t\t\t\t// avoid double tap delay on buttons and elements that have class pswp__single-tap\n\t\t\t\tif(clickedTagName === 'BUTTON' || framework.hasClass(e.target, 'pswp__single-tap') ) {\n\t\t\t\t\t_dispatchTapEvent(e, releasePoint);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_equalizePoints(tapReleasePoint, p0);\n\n\t\t\t\ttapTimer = setTimeout(function() {\n\t\t\t\t\t_dispatchTapEvent(e, releasePoint);\n\t\t\t\t\ttapTimer = null;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t}\n\t}\n});\n\n/*>>tap*/\n\n/*>>desktop-zoom*/\n/**\n *\n * desktop-zoom.js:\n *\n * - Binds mousewheel event for paning zoomed image.\n * - Manages \"dragging\", \"zoomed-in\", \"zoom-out\" classes.\n * (which are used for cursors and zoom icon)\n * - Adds toggleDesktopZoom function.\n * \n */\n\nvar _wheelDelta;\n\t\n_registerModule('DesktopZoom', {\n\n\tpublicMethods: {\n\n\t\tinitDesktopZoom: function() {\n\n\t\t\tif(_oldIE) {\n\t\t\t\t// no zoom for old IE (<=8)\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(_likelyTouchDevice) {\n\t\t\t\t// if detected hardware touch support, we wait until mouse is used,\n\t\t\t\t// and only then apply desktop-zoom features\n\t\t\t\t_listen('mouseUsed', function() {\n\t\t\t\t\tself.setupDesktopZoom();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tself.setupDesktopZoom(true);\n\t\t\t}\n\n\t\t},\n\n\t\tsetupDesktopZoom: function(onInit) {\n\n\t\t\t_wheelDelta = {};\n\n\t\t\tvar events = 'wheel mousewheel DOMMouseScroll';\n\t\t\t\n\t\t\t_listen('bindEvents', function() {\n\t\t\t\tframework.bind(template, events, self.handleMouseWheel);\n\t\t\t});\n\n\t\t\t_listen('unbindEvents', function() {\n\t\t\t\tif(_wheelDelta) {\n\t\t\t\t\tframework.unbind(template, events, self.handleMouseWheel);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tself.mouseZoomedIn = false;\n\n\t\t\tvar hasDraggingClass,\n\t\t\t\tupdateZoomable = function() {\n\t\t\t\t\tif(self.mouseZoomedIn) {\n\t\t\t\t\t\tframework.removeClass(template, 'pswp--zoomed-in');\n\t\t\t\t\t\tself.mouseZoomedIn = false;\n\t\t\t\t\t}\n\t\t\t\t\tif(_currZoomLevel < 1) {\n\t\t\t\t\t\tframework.addClass(template, 'pswp--zoom-allowed');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tframework.removeClass(template, 'pswp--zoom-allowed');\n\t\t\t\t\t}\n\t\t\t\t\tremoveDraggingClass();\n\t\t\t\t},\n\t\t\t\tremoveDraggingClass = function() {\n\t\t\t\t\tif(hasDraggingClass) {\n\t\t\t\t\t\tframework.removeClass(template, 'pswp--dragging');\n\t\t\t\t\t\thasDraggingClass = false;\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t_listen('resize' , updateZoomable);\n\t\t\t_listen('afterChange' , updateZoomable);\n\t\t\t_listen('pointerDown', function() {\n\t\t\t\tif(self.mouseZoomedIn) {\n\t\t\t\t\thasDraggingClass = true;\n\t\t\t\t\tframework.addClass(template, 'pswp--dragging');\n\t\t\t\t}\n\t\t\t});\n\t\t\t_listen('pointerUp', removeDraggingClass);\n\n\t\t\tif(!onInit) {\n\t\t\t\tupdateZoomable();\n\t\t\t}\n\t\t\t\n\t\t},\n\n\t\thandleMouseWheel: function(e) {\n\n\t\t\tif(_currZoomLevel <= self.currItem.fitRatio) {\n\t\t\t\tif( _options.modal ) {\n\n\t\t\t\t\tif (!_options.closeOnScroll || _numAnimations || _isDragging) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t} else if(_transformKey && Math.abs(e.deltaY) > 2) {\n\t\t\t\t\t\t// close PhotoSwipe\n\t\t\t\t\t\t// if browser supports transforms & scroll changed enough\n\t\t\t\t\t\t_closedByScroll = true;\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// allow just one event to fire\n\t\t\te.stopPropagation();\n\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/Events/wheel\n\t\t\t_wheelDelta.x = 0;\n\n\t\t\tif('deltaX' in e) {\n\t\t\t\tif(e.deltaMode === 1 /* DOM_DELTA_LINE */) {\n\t\t\t\t\t// 18 - average line height\n\t\t\t\t\t_wheelDelta.x = e.deltaX * 18;\n\t\t\t\t\t_wheelDelta.y = e.deltaY * 18;\n\t\t\t\t} else {\n\t\t\t\t\t_wheelDelta.x = e.deltaX;\n\t\t\t\t\t_wheelDelta.y = e.deltaY;\n\t\t\t\t}\n\t\t\t} else if('wheelDelta' in e) {\n\t\t\t\tif(e.wheelDeltaX) {\n\t\t\t\t\t_wheelDelta.x = -0.16 * e.wheelDeltaX;\n\t\t\t\t}\n\t\t\t\tif(e.wheelDeltaY) {\n\t\t\t\t\t_wheelDelta.y = -0.16 * e.wheelDeltaY;\n\t\t\t\t} else {\n\t\t\t\t\t_wheelDelta.y = -0.16 * e.wheelDelta;\n\t\t\t\t}\n\t\t\t} else if('detail' in e) {\n\t\t\t\t_wheelDelta.y = e.detail;\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_calculatePanBounds(_currZoomLevel, true);\n\n\t\t\tvar newPanX = _panOffset.x - _wheelDelta.x,\n\t\t\t\tnewPanY = _panOffset.y - _wheelDelta.y;\n\n\t\t\t// only prevent scrolling in nonmodal mode when not at edges\n\t\t\tif (_options.modal ||\n\t\t\t\t(\n\t\t\t\tnewPanX <= _currPanBounds.min.x && newPanX >= _currPanBounds.max.x &&\n\t\t\t\tnewPanY <= _currPanBounds.min.y && newPanY >= _currPanBounds.max.y\n\t\t\t\t) ) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\t// TODO: use rAF instead of mousewheel?\n\t\t\tself.panTo(newPanX, newPanY);\n\t\t},\n\n\t\ttoggleDesktopZoom: function(centerPoint) {\n\t\t\tcenterPoint = centerPoint || {x:_viewportSize.x/2 + _offset.x, y:_viewportSize.y/2 + _offset.y };\n\n\t\t\tvar doubleTapZoomLevel = _options.getDoubleTapZoom(true, self.currItem);\n\t\t\tvar zoomOut = _currZoomLevel === doubleTapZoomLevel;\n\t\t\t\n\t\t\tself.mouseZoomedIn = !zoomOut;\n\n\t\t\tself.zoomTo(zoomOut ? self.currItem.initialZoomLevel : doubleTapZoomLevel, centerPoint, 333);\n\t\t\tframework[ (!zoomOut ? 'add' : 'remove') + 'Class'](template, 'pswp--zoomed-in');\n\t\t}\n\n\t}\n});\n\n\n/*>>desktop-zoom*/\n\n/*>>history*/\n/**\n *\n * history.js:\n *\n * - Back button to close gallery.\n * \n * - Unique URL for each slide: example.com/&pid=1&gid=3\n * (where PID is picture index, and GID and gallery index)\n * \n * - Switch URL when slides change.\n * \n */\n\n\nvar _historyDefaultOptions = {\n\thistory: true,\n\tgalleryUID: 1\n};\n\nvar _historyUpdateTimeout,\n\t_hashChangeTimeout,\n\t_hashAnimCheckTimeout,\n\t_hashChangedByScript,\n\t_hashChangedByHistory,\n\t_hashReseted,\n\t_initialHash,\n\t_historyChanged,\n\t_closedFromURL,\n\t_urlChangedOnce,\n\t_windowLoc,\n\n\t_supportsPushState,\n\n\t_getHash = function() {\n\t\treturn _windowLoc.hash.substring(1);\n\t},\n\t_cleanHistoryTimeouts = function() {\n\n\t\tif(_historyUpdateTimeout) {\n\t\t\tclearTimeout(_historyUpdateTimeout);\n\t\t}\n\n\t\tif(_hashAnimCheckTimeout) {\n\t\t\tclearTimeout(_hashAnimCheckTimeout);\n\t\t}\n\t},\n\n\t// pid - Picture index\n\t// gid - Gallery index\n\t_parseItemIndexFromURL = function() {\n\t\tvar hash = _getHash(),\n\t\t\tparams = {};\n\n\t\tif(hash.length < 5) { // pid=1\n\t\t\treturn params;\n\t\t}\n\n\t\tvar i, vars = hash.split('&');\n\t\tfor (i = 0; i < vars.length; i++) {\n\t\t\tif(!vars[i]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar pair = vars[i].split('=');\t\n\t\t\tif(pair.length < 2) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tparams[pair[0]] = pair[1];\n\t\t}\n\t\tif(_options.galleryPIDs) {\n\t\t\t// detect custom pid in hash and search for it among the items collection\n\t\t\tvar searchfor = params.pid;\n\t\t\tparams.pid = 0; // if custom pid cannot be found, fallback to the first item\n\t\t\tfor(i = 0; i < _items.length; i++) {\n\t\t\t\tif(_items[i].pid === searchfor) {\n\t\t\t\t\tparams.pid = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tparams.pid = parseInt(params.pid,10)-1;\n\t\t}\n\t\tif( params.pid < 0 ) {\n\t\t\tparams.pid = 0;\n\t\t}\n\t\treturn params;\n\t},\n\t_updateHash = function() {\n\n\t\tif(_hashAnimCheckTimeout) {\n\t\t\tclearTimeout(_hashAnimCheckTimeout);\n\t\t}\n\n\n\t\tif(_numAnimations || _isDragging) {\n\t\t\t// changing browser URL forces layout/paint in some browsers, which causes noticable lag during animation\n\t\t\t// that's why we update hash only when no animations running\n\t\t\t_hashAnimCheckTimeout = setTimeout(_updateHash, 500);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(_hashChangedByScript) {\n\t\t\tclearTimeout(_hashChangeTimeout);\n\t\t} else {\n\t\t\t_hashChangedByScript = true;\n\t\t}\n\n\n\t\tvar pid = (_currentItemIndex + 1);\n\t\tvar item = _getItemAt( _currentItemIndex );\n\t\tif(item.hasOwnProperty('pid')) {\n\t\t\t// carry forward any custom pid assigned to the item\n\t\t\tpid = item.pid;\n\t\t}\n\t\tvar newHash = _initialHash + '&' + 'gid=' + _options.galleryUID + '&' + 'pid=' + pid;\n\n\t\tif(!_historyChanged) {\n\t\t\tif(_windowLoc.hash.indexOf(newHash) === -1) {\n\t\t\t\t_urlChangedOnce = true;\n\t\t\t}\n\t\t\t// first time - add new hisory record, then just replace\n\t\t}\n\n\t\tvar newURL = _windowLoc.href.split('#')[0] + '#' + newHash;\n\n\t\tif( _supportsPushState ) {\n\n\t\t\tif('#' + newHash !== window.location.hash) {\n\t\t\t\thistory[_historyChanged ? 'replaceState' : 'pushState']('', document.title, newURL);\n\t\t\t}\n\n\t\t} else {\n\t\t\tif(_historyChanged) {\n\t\t\t\t_windowLoc.replace( newURL );\n\t\t\t} else {\n\t\t\t\t_windowLoc.hash = newHash;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\n\t\t_historyChanged = true;\n\t\t_hashChangeTimeout = setTimeout(function() {\n\t\t\t_hashChangedByScript = false;\n\t\t}, 60);\n\t};\n\n\n\n\t\n\n_registerModule('History', {\n\n\t\n\n\tpublicMethods: {\n\t\tinitHistory: function() {\n\n\t\t\tframework.extend(_options, _historyDefaultOptions, true);\n\n\t\t\tif( !_options.history ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t_windowLoc = window.location;\n\t\t\t_urlChangedOnce = false;\n\t\t\t_closedFromURL = false;\n\t\t\t_historyChanged = false;\n\t\t\t_initialHash = _getHash();\n\t\t\t_supportsPushState = ('pushState' in history);\n\n\n\t\t\tif(_initialHash.indexOf('gid=') > -1) {\n\t\t\t\t_initialHash = _initialHash.split('&gid=')[0];\n\t\t\t\t_initialHash = _initialHash.split('?gid=')[0];\n\t\t\t}\n\t\t\t\n\n\t\t\t_listen('afterChange', self.updateURL);\n\t\t\t_listen('unbindEvents', function() {\n\t\t\t\tframework.unbind(window, 'hashchange', self.onHashChange);\n\t\t\t});\n\n\n\t\t\tvar returnToOriginal = function() {\n\t\t\t\t_hashReseted = true;\n\t\t\t\tif(!_closedFromURL) {\n\n\t\t\t\t\tif(_urlChangedOnce) {\n\t\t\t\t\t\thistory.back();\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif(_initialHash) {\n\t\t\t\t\t\t\t_windowLoc.hash = _initialHash;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (_supportsPushState) {\n\n\t\t\t\t\t\t\t\t// remove hash from url without refreshing it or scrolling to top\n\t\t\t\t\t\t\t\thistory.pushState('', document.title, _windowLoc.pathname + _windowLoc.search );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_windowLoc.hash = '';\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\t\n\t\t\t\t}\n\n\t\t\t\t_cleanHistoryTimeouts();\n\t\t\t};\n\n\n\t\t\t_listen('unbindEvents', function() {\n\t\t\t\tif(_closedByScroll) {\n\t\t\t\t\t// if PhotoSwipe is closed by scroll, we go \"back\" before the closing animation starts\n\t\t\t\t\t// this is done to keep the scroll position\n\t\t\t\t\treturnToOriginal();\n\t\t\t\t}\n\t\t\t});\n\t\t\t_listen('destroy', function() {\n\t\t\t\tif(!_hashReseted) {\n\t\t\t\t\treturnToOriginal();\n\t\t\t\t}\n\t\t\t});\n\t\t\t_listen('firstUpdate', function() {\n\t\t\t\t_currentItemIndex = _parseItemIndexFromURL().pid;\n\t\t\t});\n\n\t\t\t\n\n\t\t\t\n\t\t\tvar index = _initialHash.indexOf('pid=');\n\t\t\tif(index > -1) {\n\t\t\t\t_initialHash = _initialHash.substring(0, index);\n\t\t\t\tif(_initialHash.slice(-1) === '&') {\n\t\t\t\t\t_initialHash = _initialHash.slice(0, -1);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\tsetTimeout(function() {\n\t\t\t\tif(_isOpen) { // hasn't destroyed yet\n\t\t\t\t\tframework.bind(window, 'hashchange', self.onHashChange);\n\t\t\t\t}\n\t\t\t}, 40);\n\t\t\t\n\t\t},\n\t\tonHashChange: function() {\n\n\t\t\tif(_getHash() === _initialHash) {\n\n\t\t\t\t_closedFromURL = true;\n\t\t\t\tself.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(!_hashChangedByScript) {\n\n\t\t\t\t_hashChangedByHistory = true;\n\t\t\t\tself.goTo( _parseItemIndexFromURL().pid );\n\t\t\t\t_hashChangedByHistory = false;\n\t\t\t}\n\t\t\t\n\t\t},\n\t\tupdateURL: function() {\n\n\t\t\t// Delay the update of URL, to avoid lag during transition, \n\t\t\t// and to not to trigger actions like \"refresh page sound\" or \"blinking favicon\" to often\n\t\t\t\n\t\t\t_cleanHistoryTimeouts();\n\t\t\t\n\n\t\t\tif(_hashChangedByHistory) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(!_historyChanged) {\n\t\t\t\t_updateHash(); // first time\n\t\t\t} else {\n\t\t\t\t_historyUpdateTimeout = setTimeout(_updateHash, 800);\n\t\t\t}\n\t\t}\n\t\n\t}\n});\n\n\n/*>>history*/\n\tframework.extend(self, publicMethods); };\n\treturn PhotoSwipe;\n});","/*! PhotoSwipe Default UI - 4.1.3 - 2019-01-08\n* http://photoswipe.com\n* Copyright (c) 2019 Dmitry Semenov; */\n/**\n*\n* UI on top of main sliding area (caption, arrows, close button, etc.).\n* Built just using public methods/properties of PhotoSwipe.\n* \n*/\n(function (root, factory) { \n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\troot.PhotoSwipeUI_Default = factory();\n\t}\n})(this, function () {\n\n\t'use strict';\n\n\n\nvar PhotoSwipeUI_Default =\n function(pswp, framework) {\n\n\tvar ui = this;\n\tvar _overlayUIUpdated = false,\n\t\t_controlsVisible = true,\n\t\t_fullscrenAPI,\n\t\t_controls,\n\t\t_captionContainer,\n\t\t_fakeCaptionContainer,\n\t\t_indexIndicator,\n\t\t_shareButton,\n\t\t_shareModal,\n\t\t_shareModalHidden = true,\n\t\t_initalCloseOnScrollValue,\n\t\t_isIdle,\n\t\t_listen,\n\n\t\t_loadingIndicator,\n\t\t_loadingIndicatorHidden,\n\t\t_loadingIndicatorTimeout,\n\n\t\t_galleryHasOneSlide,\n\n\t\t_options,\n\t\t_defaultUIOptions = {\n\t\t\tbarsSize: {top:44, bottom:'auto'},\n\t\t\tcloseElClasses: ['item', 'caption', 'zoom-wrap', 'ui', 'top-bar'], \n\t\t\ttimeToIdle: 4000, \n\t\t\ttimeToIdleOutside: 1000,\n\t\t\tloadingIndicatorDelay: 1000, // 2s\n\t\t\t\n\t\t\taddCaptionHTMLFn: function(item, captionEl /*, isFake */) {\n\t\t\t\tif(!item.title) {\n\t\t\t\t\tcaptionEl.children[0].innerHTML = '';\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcaptionEl.children[0].innerHTML = item.title;\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\tcloseEl:true,\n\t\t\tcaptionEl: true,\n\t\t\tfullscreenEl: true,\n\t\t\tzoomEl: true,\n\t\t\tshareEl: true,\n\t\t\tcounterEl: true,\n\t\t\tarrowEl: true,\n\t\t\tpreloaderEl: true,\n\n\t\t\ttapToClose: false,\n\t\t\ttapToToggleControls: true,\n\n\t\t\tclickToCloseNonZoomable: true,\n\n\t\t\tshareButtons: [\n\t\t\t\t{id:'facebook', label:'Share on Facebook', url:'https://www.facebook.com/sharer/sharer.php?u={{url}}'},\n\t\t\t\t{id:'twitter', label:'Tweet', url:'https://twitter.com/intent/tweet?text={{text}}&url={{url}}'},\n\t\t\t\t{id:'pinterest', label:'Pin it', url:'http://www.pinterest.com/pin/create/button/'+\n\t\t\t\t\t\t\t\t\t\t\t\t\t'?url={{url}}&media={{image_url}}&description={{text}}'},\n\t\t\t\t{id:'download', label:'Download image', url:'{{raw_image_url}}', download:true}\n\t\t\t],\n\t\t\tgetImageURLForShare: function( /* shareButtonData */ ) {\n\t\t\t\treturn pswp.currItem.src || '';\n\t\t\t},\n\t\t\tgetPageURLForShare: function( /* shareButtonData */ ) {\n\t\t\t\treturn window.location.href;\n\t\t\t},\n\t\t\tgetTextForShare: function( /* shareButtonData */ ) {\n\t\t\t\treturn pswp.currItem.title || '';\n\t\t\t},\n\t\t\t\t\n\t\t\tindexIndicatorSep: ' / ',\n\t\t\tfitControlsWidth: 1200\n\n\t\t},\n\t\t_blockControlsTap,\n\t\t_blockControlsTapTimeout;\n\n\n\n\tvar _onControlsTap = function(e) {\n\t\t\tif(_blockControlsTap) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\n\t\t\te = e || window.event;\n\n\t\t\tif(_options.timeToIdle && _options.mouseUsed && !_isIdle) {\n\t\t\t\t// reset idle timer\n\t\t\t\t_onIdleMouseMove();\n\t\t\t}\n\n\n\t\t\tvar target = e.target || e.srcElement,\n\t\t\t\tuiElement,\n\t\t\t\tclickedClass = target.getAttribute('class') || '',\n\t\t\t\tfound;\n\n\t\t\tfor(var i = 0; i < _uiElements.length; i++) {\n\t\t\t\tuiElement = _uiElements[i];\n\t\t\t\tif(uiElement.onTap && clickedClass.indexOf('pswp__' + uiElement.name ) > -1 ) {\n\t\t\t\t\tuiElement.onTap();\n\t\t\t\t\tfound = true;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(found) {\n\t\t\t\tif(e.stopPropagation) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\t_blockControlsTap = true;\n\n\t\t\t\t// Some versions of Android don't prevent ghost click event \n\t\t\t\t// when preventDefault() was called on touchstart and/or touchend.\n\t\t\t\t// \n\t\t\t\t// This happens on v4.3, 4.2, 4.1, \n\t\t\t\t// older versions strangely work correctly, \n\t\t\t\t// but just in case we add delay on all of them)\t\n\t\t\t\tvar tapDelay = framework.features.isOldAndroid ? 600 : 30;\n\t\t\t\t_blockControlsTapTimeout = setTimeout(function() {\n\t\t\t\t\t_blockControlsTap = false;\n\t\t\t\t}, tapDelay);\n\t\t\t}\n\n\t\t},\n\t\t_fitControlsInViewport = function() {\n\t\t\treturn !pswp.likelyTouchDevice || _options.mouseUsed || screen.width > _options.fitControlsWidth;\n\t\t},\n\t\t_togglePswpClass = function(el, cName, add) {\n\t\t\tframework[ (add ? 'add' : 'remove') + 'Class' ](el, 'pswp__' + cName);\n\t\t},\n\n\t\t// add class when there is just one item in the gallery\n\t\t// (by default it hides left/right arrows and 1ofX counter)\n\t\t_countNumItems = function() {\n\t\t\tvar hasOneSlide = (_options.getNumItemsFn() === 1);\n\n\t\t\tif(hasOneSlide !== _galleryHasOneSlide) {\n\t\t\t\t_togglePswpClass(_controls, 'ui--one-slide', hasOneSlide);\n\t\t\t\t_galleryHasOneSlide = hasOneSlide;\n\t\t\t}\n\t\t},\n\t\t_toggleShareModalClass = function() {\n\t\t\t_togglePswpClass(_shareModal, 'share-modal--hidden', _shareModalHidden);\n\t\t},\n\t\t_toggleShareModal = function() {\n\n\t\t\t_shareModalHidden = !_shareModalHidden;\n\t\t\t\n\t\t\t\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_toggleShareModalClass();\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(!_shareModalHidden) {\n\t\t\t\t\t\tframework.addClass(_shareModal, 'pswp__share-modal--fade-in');\n\t\t\t\t\t}\n\t\t\t\t}, 30);\n\t\t\t} else {\n\t\t\t\tframework.removeClass(_shareModal, 'pswp__share-modal--fade-in');\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(_shareModalHidden) {\n\t\t\t\t\t\t_toggleShareModalClass();\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t\t\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_updateShareURLs();\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t_openWindowPopup = function(e) {\n\t\t\te = e || window.event;\n\t\t\tvar target = e.target || e.srcElement;\n\n\t\t\tpswp.shout('shareLinkClick', e, target);\n\n\t\t\tif(!target.href) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif( target.hasAttribute('download') ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\twindow.open(target.href, 'pswp_share', 'scrollbars=yes,resizable=yes,toolbar=no,'+\n\t\t\t\t\t\t\t\t\t\t'location=yes,width=550,height=420,top=100,left=' + \n\t\t\t\t\t\t\t\t\t\t(window.screen ? Math.round(screen.width / 2 - 275) : 100) );\n\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_toggleShareModal();\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t},\n\t\t_updateShareURLs = function() {\n\t\t\tvar shareButtonOut = '',\n\t\t\t\tshareButtonData,\n\t\t\t\tshareURL,\n\t\t\t\timage_url,\n\t\t\t\tpage_url,\n\t\t\t\tshare_text;\n\n\t\t\tfor(var i = 0; i < _options.shareButtons.length; i++) {\n\t\t\t\tshareButtonData = _options.shareButtons[i];\n\n\t\t\t\timage_url = _options.getImageURLForShare(shareButtonData);\n\t\t\t\tpage_url = _options.getPageURLForShare(shareButtonData);\n\t\t\t\tshare_text = _options.getTextForShare(shareButtonData);\n\n\t\t\t\tshareURL = shareButtonData.url.replace('{{url}}', encodeURIComponent(page_url) )\n\t\t\t\t\t\t\t\t\t.replace('{{image_url}}', encodeURIComponent(image_url) )\n\t\t\t\t\t\t\t\t\t.replace('{{raw_image_url}}', image_url )\n\t\t\t\t\t\t\t\t\t.replace('{{text}}', encodeURIComponent(share_text) );\n\n\t\t\t\tshareButtonOut += '' + \n\t\t\t\t\t\t\t\t\tshareButtonData.label + '';\n\n\t\t\t\tif(_options.parseShareButtonOut) {\n\t\t\t\t\tshareButtonOut = _options.parseShareButtonOut(shareButtonData, shareButtonOut);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_shareModal.children[0].innerHTML = shareButtonOut;\n\t\t\t_shareModal.children[0].onclick = _openWindowPopup;\n\n\t\t},\n\t\t_hasCloseClass = function(target) {\n\t\t\tfor(var i = 0; i < _options.closeElClasses.length; i++) {\n\t\t\t\tif( framework.hasClass(target, 'pswp__' + _options.closeElClasses[i]) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_idleInterval,\n\t\t_idleTimer,\n\t\t_idleIncrement = 0,\n\t\t_onIdleMouseMove = function() {\n\t\t\tclearTimeout(_idleTimer);\n\t\t\t_idleIncrement = 0;\n\t\t\tif(_isIdle) {\n\t\t\t\tui.setIdle(false);\n\t\t\t}\n\t\t},\n\t\t_onMouseLeaveWindow = function(e) {\n\t\t\te = e ? e : window.event;\n\t\t\tvar from = e.relatedTarget || e.toElement;\n\t\t\tif (!from || from.nodeName === 'HTML') {\n\t\t\t\tclearTimeout(_idleTimer);\n\t\t\t\t_idleTimer = setTimeout(function() {\n\t\t\t\t\tui.setIdle(true);\n\t\t\t\t}, _options.timeToIdleOutside);\n\t\t\t}\n\t\t},\n\t\t_setupFullscreenAPI = function() {\n\t\t\tif(_options.fullscreenEl && !framework.features.isOldAndroid) {\n\t\t\t\tif(!_fullscrenAPI) {\n\t\t\t\t\t_fullscrenAPI = ui.getFullscreenAPI();\n\t\t\t\t}\n\t\t\t\tif(_fullscrenAPI) {\n\t\t\t\t\tframework.bind(document, _fullscrenAPI.eventK, ui.updateFullscreen);\n\t\t\t\t\tui.updateFullscreen();\n\t\t\t\t\tframework.addClass(pswp.template, 'pswp--supports-fs');\n\t\t\t\t} else {\n\t\t\t\t\tframework.removeClass(pswp.template, 'pswp--supports-fs');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_setupLoadingIndicator = function() {\n\t\t\t// Setup loading indicator\n\t\t\tif(_options.preloaderEl) {\n\t\t\t\n\t\t\t\t_toggleLoadingIndicator(true);\n\n\t\t\t\t_listen('beforeChange', function() {\n\n\t\t\t\t\tclearTimeout(_loadingIndicatorTimeout);\n\n\t\t\t\t\t// display loading indicator with delay\n\t\t\t\t\t_loadingIndicatorTimeout = setTimeout(function() {\n\n\t\t\t\t\t\tif(pswp.currItem && pswp.currItem.loading) {\n\n\t\t\t\t\t\t\tif( !pswp.allowProgressiveImg() || (pswp.currItem.img && !pswp.currItem.img.naturalWidth) ) {\n\t\t\t\t\t\t\t\t// show preloader if progressive loading is not enabled, \n\t\t\t\t\t\t\t\t// or image width is not defined yet (because of slow connection)\n\t\t\t\t\t\t\t\t_toggleLoadingIndicator(false); \n\t\t\t\t\t\t\t\t// items-controller.js function allowProgressiveImg\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_toggleLoadingIndicator(true); // hide preloader\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}, _options.loadingIndicatorDelay);\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\t_listen('imageLoadComplete', function(index, item) {\n\t\t\t\t\tif(pswp.currItem === item) {\n\t\t\t\t\t\t_toggleLoadingIndicator(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\t\t},\n\t\t_toggleLoadingIndicator = function(hide) {\n\t\t\tif( _loadingIndicatorHidden !== hide ) {\n\t\t\t\t_togglePswpClass(_loadingIndicator, 'preloader--active', !hide);\n\t\t\t\t_loadingIndicatorHidden = hide;\n\t\t\t}\n\t\t},\n\t\t_applyNavBarGaps = function(item) {\n\t\t\tvar gap = item.vGap;\n\n\t\t\tif( _fitControlsInViewport() ) {\n\t\t\t\t\n\t\t\t\tvar bars = _options.barsSize; \n\t\t\t\tif(_options.captionEl && bars.bottom === 'auto') {\n\t\t\t\t\tif(!_fakeCaptionContainer) {\n\t\t\t\t\t\t_fakeCaptionContainer = framework.createEl('pswp__caption pswp__caption--fake');\n\t\t\t\t\t\t_fakeCaptionContainer.appendChild( framework.createEl('pswp__caption__center') );\n\t\t\t\t\t\t_controls.insertBefore(_fakeCaptionContainer, _captionContainer);\n\t\t\t\t\t\tframework.addClass(_controls, 'pswp__ui--fit');\n\t\t\t\t\t}\n\t\t\t\t\tif( _options.addCaptionHTMLFn(item, _fakeCaptionContainer, true) ) {\n\n\t\t\t\t\t\tvar captionSize = _fakeCaptionContainer.clientHeight;\n\t\t\t\t\t\tgap.bottom = parseInt(captionSize,10) || 44;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgap.bottom = bars.top; // if no caption, set size of bottom gap to size of top\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tgap.bottom = bars.bottom === 'auto' ? 0 : bars.bottom;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// height of top bar is static, no need to calculate it\n\t\t\t\tgap.top = bars.top;\n\t\t\t} else {\n\t\t\t\tgap.top = gap.bottom = 0;\n\t\t\t}\n\t\t},\n\t\t_setupIdle = function() {\n\t\t\t// Hide controls when mouse is used\n\t\t\tif(_options.timeToIdle) {\n\t\t\t\t_listen('mouseUsed', function() {\n\t\t\t\t\t\n\t\t\t\t\tframework.bind(document, 'mousemove', _onIdleMouseMove);\n\t\t\t\t\tframework.bind(document, 'mouseout', _onMouseLeaveWindow);\n\n\t\t\t\t\t_idleInterval = setInterval(function() {\n\t\t\t\t\t\t_idleIncrement++;\n\t\t\t\t\t\tif(_idleIncrement === 2) {\n\t\t\t\t\t\t\tui.setIdle(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, _options.timeToIdle / 2);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t_setupHidingControlsDuringGestures = function() {\n\n\t\t\t// Hide controls on vertical drag\n\t\t\t_listen('onVerticalDrag', function(now) {\n\t\t\t\tif(_controlsVisible && now < 0.95) {\n\t\t\t\t\tui.hideControls();\n\t\t\t\t} else if(!_controlsVisible && now >= 0.95) {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Hide controls when pinching to close\n\t\t\tvar pinchControlsHidden;\n\t\t\t_listen('onPinchClose' , function(now) {\n\t\t\t\tif(_controlsVisible && now < 0.9) {\n\t\t\t\t\tui.hideControls();\n\t\t\t\t\tpinchControlsHidden = true;\n\t\t\t\t} else if(pinchControlsHidden && !_controlsVisible && now > 0.9) {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_listen('zoomGestureEnded', function() {\n\t\t\t\tpinchControlsHidden = false;\n\t\t\t\tif(pinchControlsHidden && !_controlsVisible) {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t});\n\n\t\t};\n\n\n\n\tvar _uiElements = [\n\t\t{ \n\t\t\tname: 'caption', \n\t\t\toption: 'captionEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_captionContainer = el; \n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'share-modal', \n\t\t\toption: 'shareEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_shareModal = el;\n\t\t\t},\n\t\t\tonTap: function() {\n\t\t\t\t_toggleShareModal();\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'button--share', \n\t\t\toption: 'shareEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_shareButton = el;\n\t\t\t},\n\t\t\tonTap: function() {\n\t\t\t\t_toggleShareModal();\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'button--zoom', \n\t\t\toption: 'zoomEl',\n\t\t\tonTap: pswp.toggleDesktopZoom\n\t\t},\n\t\t{ \n\t\t\tname: 'counter', \n\t\t\toption: 'counterEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_indexIndicator = el;\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'button--close', \n\t\t\toption: 'closeEl',\n\t\t\tonTap: pswp.close\n\t\t},\n\t\t{ \n\t\t\tname: 'button--arrow--left', \n\t\t\toption: 'arrowEl',\n\t\t\tonTap: pswp.prev\n\t\t},\n\t\t{ \n\t\t\tname: 'button--arrow--right', \n\t\t\toption: 'arrowEl',\n\t\t\tonTap: pswp.next\n\t\t},\n\t\t{ \n\t\t\tname: 'button--fs', \n\t\t\toption: 'fullscreenEl',\n\t\t\tonTap: function() { \n\t\t\t\tif(_fullscrenAPI.isFullscreen()) {\n\t\t\t\t\t_fullscrenAPI.exit();\n\t\t\t\t} else {\n\t\t\t\t\t_fullscrenAPI.enter();\n\t\t\t\t}\n\t\t\t} \n\t\t},\n\t\t{ \n\t\t\tname: 'preloader', \n\t\t\toption: 'preloaderEl',\n\t\t\tonInit: function(el) { \n\t\t\t\t_loadingIndicator = el;\n\t\t\t} \n\t\t}\n\n\t];\n\n\tvar _setupUIElements = function() {\n\t\tvar item,\n\t\t\tclassAttr,\n\t\t\tuiElement;\n\n\t\tvar loopThroughChildElements = function(sChildren) {\n\t\t\tif(!sChildren) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar l = sChildren.length;\n\t\t\tfor(var i = 0; i < l; i++) {\n\t\t\t\titem = sChildren[i];\n\t\t\t\tclassAttr = item.className;\n\n\t\t\t\tfor(var a = 0; a < _uiElements.length; a++) {\n\t\t\t\t\tuiElement = _uiElements[a];\n\n\t\t\t\t\tif(classAttr.indexOf('pswp__' + uiElement.name) > -1 ) {\n\n\t\t\t\t\t\tif( _options[uiElement.option] ) { // if element is not disabled from options\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tframework.removeClass(item, 'pswp__element--disabled');\n\t\t\t\t\t\t\tif(uiElement.onInit) {\n\t\t\t\t\t\t\t\tuiElement.onInit(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t//item.style.display = 'block';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tframework.addClass(item, 'pswp__element--disabled');\n\t\t\t\t\t\t\t//item.style.display = 'none';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tloopThroughChildElements(_controls.children);\n\n\t\tvar topBar = framework.getChildByClass(_controls, 'pswp__top-bar');\n\t\tif(topBar) {\n\t\t\tloopThroughChildElements( topBar.children );\n\t\t}\n\t};\n\n\n\t\n\n\tui.init = function() {\n\n\t\t// extend options\n\t\tframework.extend(pswp.options, _defaultUIOptions, true);\n\n\t\t// create local link for fast access\n\t\t_options = pswp.options;\n\n\t\t// find pswp__ui element\n\t\t_controls = framework.getChildByClass(pswp.scrollWrap, 'pswp__ui');\n\n\t\t// create local link\n\t\t_listen = pswp.listen;\n\n\n\t\t_setupHidingControlsDuringGestures();\n\n\t\t// update controls when slides change\n\t\t_listen('beforeChange', ui.update);\n\n\t\t// toggle zoom on double-tap\n\t\t_listen('doubleTap', function(point) {\n\t\t\tvar initialZoomLevel = pswp.currItem.initialZoomLevel;\n\t\t\tif(pswp.getZoomLevel() !== initialZoomLevel) {\n\t\t\t\tpswp.zoomTo(initialZoomLevel, point, 333);\n\t\t\t} else {\n\t\t\t\tpswp.zoomTo(_options.getDoubleTapZoom(false, pswp.currItem), point, 333);\n\t\t\t}\n\t\t});\n\n\t\t// Allow text selection in caption\n\t\t_listen('preventDragEvent', function(e, isDown, preventObj) {\n\t\t\tvar t = e.target || e.srcElement;\n\t\t\tif(\n\t\t\t\tt && \n\t\t\t\tt.getAttribute('class') && e.type.indexOf('mouse') > -1 && \n\t\t\t\t( t.getAttribute('class').indexOf('__caption') > 0 || (/(SMALL|STRONG|EM)/i).test(t.tagName) ) \n\t\t\t) {\n\t\t\t\tpreventObj.prevent = false;\n\t\t\t}\n\t\t});\n\n\t\t// bind events for UI\n\t\t_listen('bindEvents', function() {\n\t\t\tframework.bind(_controls, 'pswpTap click', _onControlsTap);\n\t\t\tframework.bind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);\n\n\t\t\tif(!pswp.likelyTouchDevice) {\n\t\t\t\tframework.bind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);\n\t\t\t}\n\t\t});\n\n\t\t// unbind events for UI\n\t\t_listen('unbindEvents', function() {\n\t\t\tif(!_shareModalHidden) {\n\t\t\t\t_toggleShareModal();\n\t\t\t}\n\n\t\t\tif(_idleInterval) {\n\t\t\t\tclearInterval(_idleInterval);\n\t\t\t}\n\t\t\tframework.unbind(document, 'mouseout', _onMouseLeaveWindow);\n\t\t\tframework.unbind(document, 'mousemove', _onIdleMouseMove);\n\t\t\tframework.unbind(_controls, 'pswpTap click', _onControlsTap);\n\t\t\tframework.unbind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);\n\t\t\tframework.unbind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);\n\n\t\t\tif(_fullscrenAPI) {\n\t\t\t\tframework.unbind(document, _fullscrenAPI.eventK, ui.updateFullscreen);\n\t\t\t\tif(_fullscrenAPI.isFullscreen()) {\n\t\t\t\t\t_options.hideAnimationDuration = 0;\n\t\t\t\t\t_fullscrenAPI.exit();\n\t\t\t\t}\n\t\t\t\t_fullscrenAPI = null;\n\t\t\t}\n\t\t});\n\n\n\t\t// clean up things when gallery is destroyed\n\t\t_listen('destroy', function() {\n\t\t\tif(_options.captionEl) {\n\t\t\t\tif(_fakeCaptionContainer) {\n\t\t\t\t\t_controls.removeChild(_fakeCaptionContainer);\n\t\t\t\t}\n\t\t\t\tframework.removeClass(_captionContainer, 'pswp__caption--empty');\n\t\t\t}\n\n\t\t\tif(_shareModal) {\n\t\t\t\t_shareModal.children[0].onclick = null;\n\t\t\t}\n\t\t\tframework.removeClass(_controls, 'pswp__ui--over-close');\n\t\t\tframework.addClass( _controls, 'pswp__ui--hidden');\n\t\t\tui.setIdle(false);\n\t\t});\n\t\t\n\n\t\tif(!_options.showAnimationDuration) {\n\t\t\tframework.removeClass( _controls, 'pswp__ui--hidden');\n\t\t}\n\t\t_listen('initialZoomIn', function() {\n\t\t\tif(_options.showAnimationDuration) {\n\t\t\t\tframework.removeClass( _controls, 'pswp__ui--hidden');\n\t\t\t}\n\t\t});\n\t\t_listen('initialZoomOut', function() {\n\t\t\tframework.addClass( _controls, 'pswp__ui--hidden');\n\t\t});\n\n\t\t_listen('parseVerticalMargin', _applyNavBarGaps);\n\t\t\n\t\t_setupUIElements();\n\n\t\tif(_options.shareEl && _shareButton && _shareModal) {\n\t\t\t_shareModalHidden = true;\n\t\t}\n\n\t\t_countNumItems();\n\n\t\t_setupIdle();\n\n\t\t_setupFullscreenAPI();\n\n\t\t_setupLoadingIndicator();\n\t};\n\n\tui.setIdle = function(isIdle) {\n\t\t_isIdle = isIdle;\n\t\t_togglePswpClass(_controls, 'ui--idle', isIdle);\n\t};\n\n\tui.update = function() {\n\t\t// Don't update UI if it's hidden\n\t\tif(_controlsVisible && pswp.currItem) {\n\t\t\t\n\t\t\tui.updateIndexIndicator();\n\n\t\t\tif(_options.captionEl) {\n\t\t\t\t_options.addCaptionHTMLFn(pswp.currItem, _captionContainer);\n\n\t\t\t\t_togglePswpClass(_captionContainer, 'caption--empty', !pswp.currItem.title);\n\t\t\t}\n\n\t\t\t_overlayUIUpdated = true;\n\n\t\t} else {\n\t\t\t_overlayUIUpdated = false;\n\t\t}\n\n\t\tif(!_shareModalHidden) {\n\t\t\t_toggleShareModal();\n\t\t}\n\n\t\t_countNumItems();\n\t};\n\n\tui.updateFullscreen = function(e) {\n\n\t\tif(e) {\n\t\t\t// some browsers change window scroll position during the fullscreen\n\t\t\t// so PhotoSwipe updates it just in case\n\t\t\tsetTimeout(function() {\n\t\t\t\tpswp.setScrollOffset( 0, framework.getScrollY() );\n\t\t\t}, 50);\n\t\t}\n\t\t\n\t\t// toogle pswp--fs class on root element\n\t\tframework[ (_fullscrenAPI.isFullscreen() ? 'add' : 'remove') + 'Class' ](pswp.template, 'pswp--fs');\n\t};\n\n\tui.updateIndexIndicator = function() {\n\t\tif(_options.counterEl) {\n\t\t\t_indexIndicator.innerHTML = (pswp.getCurrentIndex()+1) + \n\t\t\t\t\t\t\t\t\t\t_options.indexIndicatorSep + \n\t\t\t\t\t\t\t\t\t\t_options.getNumItemsFn();\n\t\t}\n\t};\n\t\n\tui.onGlobalTap = function(e) {\n\t\te = e || window.event;\n\t\tvar target = e.target || e.srcElement;\n\n\t\tif(_blockControlsTap) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(e.detail && e.detail.pointerType === 'mouse') {\n\n\t\t\t// close gallery if clicked outside of the image\n\t\t\tif(_hasCloseClass(target)) {\n\t\t\t\tpswp.close();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(framework.hasClass(target, 'pswp__img')) {\n\t\t\t\tif(pswp.getZoomLevel() === 1 && pswp.getZoomLevel() <= pswp.currItem.fitRatio) {\n\t\t\t\t\tif(_options.clickToCloseNonZoomable) {\n\t\t\t\t\t\tpswp.close();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpswp.toggleDesktopZoom(e.detail.releasePoint);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t} else {\n\n\t\t\t// tap anywhere (except buttons) to toggle visibility of controls\n\t\t\tif(_options.tapToToggleControls) {\n\t\t\t\tif(_controlsVisible) {\n\t\t\t\t\tui.hideControls();\n\t\t\t\t} else {\n\t\t\t\t\tui.showControls();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tap to close gallery\n\t\t\tif(_options.tapToClose && (framework.hasClass(target, 'pswp__img') || _hasCloseClass(target)) ) {\n\t\t\t\tpswp.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t}\n\t};\n\tui.onMouseOver = function(e) {\n\t\te = e || window.event;\n\t\tvar target = e.target || e.srcElement;\n\n\t\t// add class when mouse is over an element that should close the gallery\n\t\t_togglePswpClass(_controls, 'ui--over-close', _hasCloseClass(target));\n\t};\n\n\tui.hideControls = function() {\n\t\tframework.addClass(_controls,'pswp__ui--hidden');\n\t\t_controlsVisible = false;\n\t};\n\n\tui.showControls = function() {\n\t\t_controlsVisible = true;\n\t\tif(!_overlayUIUpdated) {\n\t\t\tui.update();\n\t\t}\n\t\tframework.removeClass(_controls,'pswp__ui--hidden');\n\t};\n\n\tui.supportsFullscreen = function() {\n\t\tvar d = document;\n\t\treturn !!(d.exitFullscreen || d.mozCancelFullScreen || d.webkitExitFullscreen || d.msExitFullscreen);\n\t};\n\n\tui.getFullscreenAPI = function() {\n\t\tvar dE = document.documentElement,\n\t\t\tapi,\n\t\t\ttF = 'fullscreenchange';\n\n\t\tif (dE.requestFullscreen) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'requestFullscreen',\n\t\t\t\texitK: 'exitFullscreen',\n\t\t\t\telementK: 'fullscreenElement',\n\t\t\t\teventK: tF\n\t\t\t};\n\n\t\t} else if(dE.mozRequestFullScreen ) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'mozRequestFullScreen',\n\t\t\t\texitK: 'mozCancelFullScreen',\n\t\t\t\telementK: 'mozFullScreenElement',\n\t\t\t\teventK: 'moz' + tF\n\t\t\t};\n\n\t\t\t\n\n\t\t} else if(dE.webkitRequestFullscreen) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'webkitRequestFullscreen',\n\t\t\t\texitK: 'webkitExitFullscreen',\n\t\t\t\telementK: 'webkitFullscreenElement',\n\t\t\t\teventK: 'webkit' + tF\n\t\t\t};\n\n\t\t} else if(dE.msRequestFullscreen) {\n\t\t\tapi = {\n\t\t\t\tenterK: 'msRequestFullscreen',\n\t\t\t\texitK: 'msExitFullscreen',\n\t\t\t\telementK: 'msFullscreenElement',\n\t\t\t\teventK: 'MSFullscreenChange'\n\t\t\t};\n\t\t}\n\n\t\tif(api) {\n\t\t\tapi.enter = function() { \n\t\t\t\t// disable close-on-scroll in fullscreen\n\t\t\t\t_initalCloseOnScrollValue = _options.closeOnScroll; \n\t\t\t\t_options.closeOnScroll = false; \n\n\t\t\t\tif(this.enterK === 'webkitRequestFullscreen') {\n\t\t\t\t\tpswp.template[this.enterK]( Element.ALLOW_KEYBOARD_INPUT );\n\t\t\t\t} else {\n\t\t\t\t\treturn pswp.template[this.enterK](); \n\t\t\t\t}\n\t\t\t};\n\t\t\tapi.exit = function() { \n\t\t\t\t_options.closeOnScroll = _initalCloseOnScrollValue;\n\n\t\t\t\treturn document[this.exitK](); \n\n\t\t\t};\n\t\t\tapi.isFullscreen = function() { return document[this.elementK]; };\n\t\t}\n\n\t\treturn api;\n\t};\n\n\n\n};\nreturn PhotoSwipeUI_Default;\n\n\n});\n","import PhotoSwipe from 'photoswipe';\r\nimport PhotoSwipeUI_Default from 'photoswipe/dist/photoswipe-ui-default.js';\r\nimport pswpMarkup from './photoswipe-markup';\r\n\r\nclass ImageGalleries {\r\n\tconstructor() {\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tinit() {\r\n\t\tthis._galleries = Array.from(document.querySelectorAll('[data-ncomponent=\"gallery\"]'));\r\n\t\tthis._pswpEl = document.querySelector('.pswp');\r\n\t\tthis._galleryToggles = Array.from(document.querySelectorAll('[data-ntoggle=\"gallery\"]'));\r\n\r\n\t\tif (this._galleries.length > 0 && !this._pswpEl) {\r\n\t\t\tdocument.body.insertAdjacentHTML('beforeend', pswpMarkup);\r\n\t\t\tthis._pswpEl = document.querySelector('.pswp');\r\n\t\t}\r\n\r\n\t\tif (this._galleries.length > 0 && this._pswpEl) {\r\n\t\t\tthis._gallery = null;\r\n\t\t\tthis.buildGalleries();\r\n\t\t}\r\n\t}\r\n\r\n\tbuildGalleries() {\r\n\t\tthis._galleries.forEach(gallery => {\r\n\t\t\tconst images = Array.from(gallery.querySelectorAll('[data-nelement=\"gallery-img\"]'));\r\n\r\n\t\t\t// Create a slide object from this gallery image element\r\n\t\t\tconst slides = images.map(img => ({\r\n\t\t\t\tsrc: img.dataset.srcLrg,\r\n\t\t\t\tmsrc: img.dataset.srcMed,\r\n\t\t\t\tw: img.dataset.size.split('x')[0],\r\n\t\t\t\th: img.dataset.size.split('x')[1],\r\n\t\t\t\ttitle: img.dataset.caption,\r\n\t\t\t}));\r\n\r\n\t\t\timages.forEach(img => {\r\n\t\t\t\t// Add a click event listener to this gallery image element\r\n\t\t\t\timg.addEventListener('click', e => {\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tconst options = {\r\n\t\t\t\t\t\tbgOpacity: 0.9,\r\n\t\t\t\t\t\tshowHideOpacity: true,\r\n\t\t\t\t\t\tindex: images.indexOf(img),\r\n\t\t\t\t\t\thistory: false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis._gallery = new PhotoSwipe(this._pswpEl, PhotoSwipeUI_Default, slides, options);\r\n\r\n\t\t\t\t\tthis._gallery.init();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// Register events on gallery open toggles\r\n\t\tthis._galleryToggles.forEach(toggle => {\r\n\t\t\ttoggle.addEventListener('click', e => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tconsole.log(toggle.parentElement);\r\n\t\t\t\ttoggle.parentElement.parentElement.querySelector('[data-nelement=\"gallery-img\"]').click();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default new ImageGalleries();\r\n","const pswpMarkup = `\r\n
\r\n\r\n\t\r\n\t
\r\n\r\n\t\r\n\t
\r\n\r\n\t\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t
\r\n\r\n\t\t\t
\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\r\n\t
\r\n\r\n
`;\r\n\r\nexport default pswpMarkup;","class Sharer {\r\n\tconstructor() {\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tinit() {\r\n\t\tthis._shareLinks = Array.from(document.querySelectorAll('[data-ui-component=\"sharer\"]'));\r\n\r\n\t\tif (this._shareLinks.length > 0) {\r\n\t\t\tthis.updateShareLinks();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateShareLinks() {\r\n\t\tthis._shareLinks.forEach(shareLink => {\r\n\t\t\t// Add the native share links if the browser supports them\r\n\t\t\t// and hide the href share links\r\n\t\t\tif (navigator.share) {\r\n\t\t\t\tshareLink.addEventListener('click', e => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tnavigator\r\n\t\t\t\t\t\t.share({\r\n\t\t\t\t\t\t\ttitle: shareLink.dataset.uiTitle,\r\n\t\t\t\t\t\t\ttext: shareLink.dataset.uiDesc,\r\n\t\t\t\t\t\t\turl: shareLink.dataset.uiUrl,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(() => console.log('Successful share'))\r\n\t\t\t\t\t\t.catch(error => console.log('Error sharing', error));\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tshareLink.classList.add('hide');\r\n\t\t\t\tconst nextSibling = shareLink.nextElementSibling;\r\n\t\t\t\tif (nextSibling.classList.contains('share-links')) {\r\n\t\t\t\t\tnextSibling.classList.remove('hide');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default new Sharer();\r\n","class SmoothScroll {\r\n\tconstructor() {\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tinit() {\r\n\t\tthis._anchorLinks = Array.from(document.querySelectorAll('a[href^=\"#\"]'));\r\n\r\n\t\tthis._anchorLinks.forEach(anchor => {\r\n\t\t\tanchor.addEventListener('click', function(e) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t// Do nothing if this is just an empty anchor\r\n\t\t\t\tif (this.getAttribute('href') === '#') return;\r\n\r\n\t\t\t\tconst targetEl = document.querySelector(this.getAttribute('href'));\r\n\r\n\t\t\t\tif (targetEl) {\r\n\t\t\t\t\ttargetEl.scrollIntoView({\r\n\t\t\t\t\t\tbehavior: 'smooth',\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default new SmoothScroll();\r\n","class AutoResizeVideos {\r\n\tconstructor() {\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tinit() {\r\n\t\tthis._allVideos = Array.from(document.querySelectorAll(\"iframe[src*='//www.youtube.com']\"));\r\n\r\n\t\tthis._allVideos.forEach(el => {\r\n\t\t\tel.dataset.aspectRatio = el.height / el.width;\r\n\t\t\tel.width = '100%';\r\n\t\t\tel.height = el.clientWidth * el.dataset.aspectRatio;\r\n\t\t});\r\n\r\n\t\tthis.resizeVideoHeights();\r\n\r\n\t\twindow.addEventListener('resize', () => this.resizeVideoHeights());\r\n\t}\r\n\r\n\tresizeVideoHeights() {\r\n\t\tthis._allVideos.forEach(el => {\r\n\t\t\tel.height = el.clientWidth * el.dataset.aspectRatio;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default new AutoResizeVideos();\r\n","var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n","var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n","export function extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}","export function checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}","export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}","export function getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}","export var docElement = document.documentElement;","import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}","import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}","export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}","export var classListSupport = 'classList' in document.createElement('_');","import { classListSupport } from './classListSupport.js';\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nexport { classListSupport, hasClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nexport { addClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar removeClass = classListSupport ?\n function (el, str) {\n if (hasClass(el, str)) { el.classList.remove(str); }\n } :\n function (el, str) {\n if (hasClass(el, str)) { el.className = el.className.replace(str, ''); }\n };\n\nexport { removeClass };","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function setAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') { return; }\n\n for (var i = els.length; i--;) {\n for(var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}","export function arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}","export function showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}","export function whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n","// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? { passive: true } : false;","import { passiveOption } from './passiveOption.js';\n\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}","import { passiveOption } from './passiveOption.js';\n\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}","export function Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function(eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function(fn) {\n fn(data, eventName);\n });\n }\n }\n };\n};","import './helpers/Object.keys';\nimport './helpers/childNode.remove';\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\n\nexport var tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true\n }, options || {});\n \n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'], \n optionsElements = {};\n \n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to: \n // 300: { \n // items: 2 \n // } \n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = slideCountNew; i--;) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['', ' animation'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ? \n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n \n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex : \n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : \n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ? \n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : \n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';'\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ? \n CALC + '(100% / ' + dividend + ')' : \n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes \n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(), \n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add complete class if all images are loaded/failed\n forEach(imgs, function(img) {\n var src = img.src;\n \n if (src && src.indexOf('data:image') < 0) {\n addEvents(img, imgEvents);\n img.src = '';\n img.src = src;\n addClass(img, 'loading');\n } else if (!lazyload) {\n imgLoaded(img);\n }\n });\n\n // All imgs are completed\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // Check imgs in window only for auto height\n if (!autoWidth && horizontal) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n (function stylesApplicationCheck() {\n slideItems[num - 1].getBoundingClientRect().right.toFixed(2) === slideItems[num].getBoundingClientRect().left.toFixed(2) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) { \n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '
slide ' + getLiveRegionStr() + ' of ' + slideCount + '
');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n \n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav \n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n navHtml = '
' + navHtml + '
';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '
');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n \n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object') {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n \n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n nav ?\n showElement(navContainer) :\n hideElement(navContainer);\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) { \n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-meduaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n if (autoHeight !== autoheightTem || speed !== speedTem) {\n update_carousel_transition_duration();\n }\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) + \n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ? \n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) { \n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) { \n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end; \n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n getImageArray.apply(null, getVisibleSlideRange()).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, 'tns-complete');\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end) {\n var imgs = [];\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll('img'), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // directly execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check selected image classes otherwise\n imgs.forEach(function (img, index) {\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n } \n\n function additionalUpdates () {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n \n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n \n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or \n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually \n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually \n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) { \n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event' \n * have to check event first, otherwise event.target will cause an error \n * => or 'gallery' mode: \n * + event target is slide item\n * => or 'carousel' mode: \n * + event target is container, \n * + event.property is the same with transform attribute\n */\n if (!event || \n !carousel && event.target.parentNode === container || \n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) { \n var indexTem = index;\n updateIndex();\n if (index !== indexTem) { \n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n } \n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(), \n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n \n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) { \n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) { \n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document \n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n \n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if (preventScroll) { e.preventDefault(); }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }}); \n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; } \n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.2',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '
';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function has3DTransforms(tf){\n if (!tf) { return false; }\n if (!window.getComputedStyle) { return false; }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n\n cssTF += 'transform';\n\n // Add it to the body to get the computed style\n body.insertBefore(el, null);\n\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n\n return (has3d !== undefined && has3d.length > 0 && has3d !== \"none\");\n}\n","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}","// create and append style sheet\nexport function createStyleSheet (media) {\n // Create the