{"version":3,"file":"js/813-4a260eb51e92c7fa75bc.js","mappings":"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","sources":["webpack://paint_pad/./node_modules/photoswipe/dist/photoswipe-ui-default.js","webpack://paint_pad/./node_modules/photoswipe/dist/photoswipe.js","webpack://paint_pad/./node_modules/turbolinks/dist/turbolinks.js"],"sourcesContent":["/*! 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","/*! 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: '