(function(window){if(!Function.prototype.bind){Function.prototype.bind=function(obj){var slice=[].slice,args=slice.call(arguments,1),self=this,nop=function(){},bound=function(){return self.apply(this instanceof nop?this:(obj||{}),args.concat(slice.call(arguments)))};nop.prototype=self.prototype;bound.prototype=new nop();return bound}}if(typeof Code==="undefined"){Code={};Code.PhotoSwipe={}}Code.PhotoSwipe.Util={browser:{version:(navigator.userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],webkit:/webkit/i.test(navigator.userAgent),opera:/opera/i.test(navigator.userAgent),msie:/msie/i.test(navigator.userAgent)&&!/opera/.test(navigator.userAgent),mozilla:/mozilla/i.test(navigator.userAgent)&&!/(compatible|webkit)/.test(navigator.userAgent),mobileSafari:/mobile.*safari/i.test(navigator.userAgent),is3dSupported:false,isAndroid:/android/i.test(navigator.userAgent),isBlackberry:/blackberry/i.test(navigator.userAgent),isApple:/apple/i.test(navigator.userAgent),touchSupported:false,gestureSupported:false,_eventTagNames:{'select':'input','change':'input','submit':'form','reset':'form','error':'img','load':'img','abort':'img'},isEventSupported:function(eventName){var el=document.createElement(this._eventTagNames[eventName]||'div');eventName='on'+eventName;var isSupported=(eventName in el);if(!isSupported){el.setAttribute(eventName,'return;');isSupported=typeof el[eventName]=='function'}el=null;return isSupported}},setElementData:function(el,key,value){if(this.isNothing(el.UtilData)){el.UtilData={}}el.UtilData[key]=value},getElementData:function(el,key,defaultValue){if(typeof defaultValue==="undefined"){defaultValue=null}if(this.isNothing(el.UtilData)){return defaultValue}if(this.isNothing(el.UtilData[key])){return defaultValue}return el.UtilData[key]},removeElementData:function(el,key){delete el.UtilData[key]},coalesce:function(){var i;for(i=0;i<arguments.length;i++){if(!this.isNothing(arguments[i])){return arguments[i]}}return null},registerNamespace:function(){var args=arguments,obj=null,i,j;for(i=0;i<args.length;++i){var ns=args[i];var nsParts=ns.split(".");var root=nsParts[0];eval('if (typeof '+root+' == "undefined"){'+root+' = {};} obj = '+root+';');for(j=1;j<nsParts.length;++j){obj[nsParts[j]]=obj[nsParts[j]]||{};obj=obj[nsParts[j]]}}},extend:function(destination,source,overwriteProperties){if(this.isNothing(overwriteProperties)){overwriteProperties=true}if(destination&&source&&this.isObject(source)){for(var prop in source){if(overwriteProperties){destination[prop]=source[prop]}else{if(typeof destination[prop]=="undefined"){destination[prop]=source[prop]}}}}},swapArrayElements:function(arr,i,j){var temp=arr[i];arr[i]=arr[j];arr[j]=temp},isObject:function(obj){return typeof obj=="object"},isNothing:function(obj){if(typeof obj==="undefined"||obj===null){return true}return false},isFunction:function(obj){return typeof obj=="function"},isArray:function(obj){return obj&&Code.PhotoSwipe.Util.isFunction(obj.pop)},isNumber:function(obj){return typeof obj=="number"},isString:function(obj){return typeof obj=="string"},trim:function(val){var re=new RegExp(/\s+?/);return val.replace(re,'')}};if(Code.PhotoSwipe.Util.browser.webkit){var test3DEl=document.createElement('div');Code.PhotoSwipe.Util.browser.is3dSupported=!Code.PhotoSwipe.Util.isNothing(test3DEl.style.WebkitPerspective)}Code.PhotoSwipe.Util.browser.touchSupported=Code.PhotoSwipe.Util.browser.isEventSupported('touchstart');Code.PhotoSwipe.Util.browser.gestureSupported=Code.PhotoSwipe.Util.browser.isEventSupported('gesturestart')})(window);(function(window,Util){Util.extend(Util,{DOM:{resetTranslate:function(el){if(Util.browser.webkit){if(Util.browser.is3dSupported){Util.DOM.setStyle(el,{webkitTransform:'translate3d(0px, 0px, 0px)'})}else{Util.DOM.setStyle(el,{webkitTransform:'translate(0px, 0px)'})}}else{Util.DOM.setStyle(el,{webkitTransform:'translate(0px, 0px)',MozTransform:'translate(0px, 0px)',transform:'translate(0px, 0px)'})}},createElement:function(type,attributes,content){var retval=document.createElement(type);for(var attribute in attributes){if(attributes.hasOwnProperty(attribute)){retval.setAttribute(attribute,attributes[attribute])}}retval.innerHTML=content||'';return retval},appendChild:function(childEl,parentEl){parentEl.appendChild(childEl)},appendText:function(text,parentEl){var textNode=document.createTextNode(text);Util.DOM.appendChild(textNode,parentEl)},appendToBody:function(childEl){this.appendChild(childEl,document.body)},removeChild:function(childEl,parentEl){parentEl.removeChild(childEl)},removeChildren:function(parentEl){if(parentEl.hasChildNodes()){while(parentEl.childNodes.length>=1){parentEl.removeChild(parentEl.childNodes[parentEl.childNodes.length-1])}}},hasAttribute:function(el,attributeName){return el.getAttribute(attributeName)},getAttribute:function(el,attributeName){if(!this.hasAttribute(el,attributeName)){return''}return el.getAttribute(attributeName)},setAttribute:function(el,attributeName,value){el.setAttribute(attributeName,value)},removeAttribute:function(el,attributeName){if(this.hasAttribute(el,attributeName)){el.removeAttribute(attributeName)}},addClass:function(el,className){var currentClassValue=Util.DOM.getAttribute(el,'class');var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');if(!re.test(currentClassValue)){if(currentClassValue!==''){currentClassValue=currentClassValue+' '}currentClassValue=currentClassValue+className;Util.DOM.setAttribute(el,'class',currentClassValue)}},removeClass:function(el,className){var currentClassValue=Util.DOM.getAttribute(el,'class');var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');if(re.test(currentClassValue)){currentClassValue=currentClassValue.replace(re,' ');Util.DOM.setAttribute(el,'class',currentClassValue);Util.DOM.removeClass(el,className)}else{currentClassValue=Util.trim(currentClassValue);if(currentClassValue===''){Util.DOM.removeAttribute(el,'class')}else{Util.DOM.setAttribute(el,'class',currentClassValue)}}},hasClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');return re.test(Util.DOM.getAttribute(el,'class'))},setStyle:function(el,style,value){if(Util.isObject(style)){for(var propertyName in style){if(style.hasOwnProperty(propertyName)){el.style[propertyName]=style[propertyName]}}}else{el.style[style]=value}},getStyle:function(el,styleName){return window.getComputedStyle(el,'').getPropertyValue(styleName)},hide:function(el){Util.setElementData(el,'oldDisplayValue',Util.DOM.getStyle(el,'display'));Util.DOM.setStyle(el,'display','none')},show:function(el){if(Util.DOM.getStyle(el,'display')=='none'){var oldDisplayValue=Util.getElementData(el,'oldDisplayValue','block');if(oldDisplayValue==='none'){oldDisplayValue='block'}Util.DOM.setStyle(el,'display',oldDisplayValue)}},width:function(el,value){if(!Util.isNothing(value)){if(Util.isNumber(value)){value=value+'px'}el.style.width=value}return this._getDimension(el,'width')},outerWidth:function(el){var retval=Util.DOM.width(el);retval+=parseInt(Util.DOM.getStyle(el,'padding-left'),10)+parseInt(Util.DOM.getStyle(el,'padding-right'),10);retval+=parseInt(Util.DOM.getStyle(el,'margin-left'),10)+parseInt(Util.DOM.getStyle(el,'margin-right'),10);retval+=parseInt(Util.DOM.getStyle(el,'border-left-width'),10)+parseInt(Util.DOM.getStyle(el,'border-right-width'),10);return retval},height:function(el,value){if(!Util.isNothing(value)){if(Util.isNumber(value)){value=value+'px'}el.style.height=value}return this._getDimension(el,'height')},_getDimension:function(el,dimension){var retval=window.parseInt(window.getComputedStyle(el,'').getPropertyValue(dimension));if(isNaN(retval)){var styleBackup={display:el.style.display,left:el.style.left};el.style.display='block';el.style.left='-1000000px';retval=window.parseInt(window.getComputedStyle(el,'').getPropertyValue(dimension));el.style.display=styleBackup.display;el.style.left=styleBackup.left}return retval},outerHeight:function(el){var retval=Util.DOM.height(el);retval+=parseInt(Util.DOM.getStyle(el,'padding-top'),10)+parseInt(Util.DOM.getStyle(el,'padding-bottom'),10);retval+=parseInt(Util.DOM.getStyle(el,'margin-top'),10)+parseInt(Util.DOM.getStyle(el,'margin-bottom'),10);retval+=parseInt(Util.DOM.getStyle(el,'border-top-width'),10)+parseInt(Util.DOM.getStyle(el,'border-bottom-width'),10);return retval},documentWidth:function(){return Util.DOM.width(document.documentElement)},documentHeight:function(){return Math.round(Util.DOM.height(document.documentElement))},bodyWidth:function(){return Util.DOM.width(document.body)},bodyHeight:function(){return Util.DOM.height(document.body)},windowWidth:function(){return window.innerWidth},windowHeight:function(){return window.innerHeight},windowScrollLeft:function(){return window.pageXOffset},windowScrollTop:function(){return window.pageYOffset},addEventListener:function(el,type,listener){el.addEventListener(type,listener,false)},removeEventListener:function(el,type,listener){el.removeEventListener(type,listener,false)},getMousePosition:function(event){var retval={x:0,y:0};if(event.pageX){retval.x=event.pageX}else if(event.clientX){retval.x=event.clientX+(document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft)}if(event.pageY){retval.y=event.pageY}else if(event.clientY){retval.y=event.clientY+(document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop)}return retval},getTouchEvent:function(event){return event}}})})(window,Code.PhotoSwipe.Util);(function(window,Util){Util.extend(Util,{Animation:{_applyTransitionDelay:50,_setTransition:function(el,property,duration,timingFunction,delay,callback){var transitionPrefix=Util.Animation._getTransitionPrefix(),p=Util.coalesce(property,''),d=Util.coalesce(duration,''),t,de,c;if(Util.isFunction(timingFunction)){c=timingFunction;t='';de=''}else{c=callback;t=Util.coalesce(timingFunction,'');de=Util.coalesce(delay,'')}var transitionValues={};transitionValues[transitionPrefix+'Property']=p;transitionValues[transitionPrefix+'Duration']=d;transitionValues[transitionPrefix+'TimingFunction']=t;transitionValues[transitionPrefix+'Delay']=de;Util.DOM.setStyle(el,transitionValues);if(Util.isFunction(c)){window.setTimeout(function(){c(el)},Util.Animation._applyTransitionDelay)}},_setTransitionEndEventListener:function(el){Util.setElementData(el,'transitionEndEvent',function(e){var el=e.target;Util.DOM.removeEventListener(el,Util.Animation._getTransitionEndEventLabel(),Util.getElementData(el,'transitionEndEvent'));Util.removeElementData(el,'transitionEndEvent');var callback=Util.getElementData(el,'transitionEndCallback');Util.removeElementData(el,'transitionEndCallback');Util.Animation._removeTransitions(el);if(Util.isFunction(callback)){window.setTimeout(function(){callback(e)},Util.Animation._applyTransitionDelay)}});Util.DOM.addEventListener(el,Util.Animation._getTransitionEndEventLabel(),Util.getElementData(el,'transitionEndEvent'))},_removeTransitions:function(el){var transitionPrefix=Util.Animation._getTransitionPrefix();var transitionValues={};transitionValues[transitionPrefix+'Property']='';transitionValues[transitionPrefix+'Duration']='';transitionValues[transitionPrefix+'TimingFunction']='';transitionValues[transitionPrefix+'Delay']='';Util.DOM.setStyle(el,transitionValues)},_getTransitionEndEventLabel:function(){return(document.documentElement.style.WebkitTransition!==undefined)?"webkitTransitionEnd":"transitionend"},_getTransitionPrefix:function(){return(document.documentElement.style.WebkitTransition!==undefined)?"webkitTransition":(document.documentElement.style.MozTransition!==undefined)?"MozTransition":"transition"},stopFade:function(el){var fadeCallback=Util.getElementData(el,'transitionEndEvent');if(Util.isNothing(fadeCallback)){return}Util.DOM.removeEventListener(el,Util.Animation._getTransitionEndEventLabel(),Util.getElementData(el,'transitionEndEvent'));var currentOpacity=window.getComputedStyle(el,'').getPropertyValue('opacity');Util.Animation._removeTransitions(el);Util.DOM.setStyle(el,'opacity',currentOpacity)},fadeIn:function(el,opacity,duration,callback){opacity=Util.coalesce(opacity,1);duration=Util.coalesce(duration,500);Util.setElementData(el,'transitionEndCallback',callback);Util.Animation._setTransition(el,'opacity',duration+'ms',function(el){Util.Animation._setTransitionEndEventListener(el);Util.DOM.setStyle(el,'opacity',opacity)})},fadeOut:function(el,duration,callback){if(Util.isNothing(duration)){duration=500}Util.setElementData(el,'transitionEndCallback',callback);Util.Animation._setTransition(el,'opacity',duration+'ms',function(el){Util.Animation._setTransitionEndEventListener(el);Util.DOM.setStyle(el,'opacity',0)})},slideBy:function(el,xPos,yPos,duration,callback){if(Util.isNothing(duration)){duration=500}Util.setElementData(el,'transitionEndCallback',Util.Animation._onSlideByEnd);Util.setElementData(el,'slideByCallback',callback);Util.setElementData(el,'slideByXPos',xPos);Util.setElementData(el,'slideByYPos',yPos);Util.Animation._setTransition(el,'all',duration+'ms','ease-in',0,function(el){Util.Animation._setTransitionEndEventListener(el);var xPos=Util.getElementData(el,'slideByXPos'),yPos=Util.getElementData(el,'slideByYPos');Util.removeElementData(el,'slideByXPos');Util.removeElementData(el,'slideByYPos');if(Util.browser.webkit){if(Util.browser.is3dSupported){Util.DOM.setStyle(el,{webkitTransform:'translate3d('+xPos+'px, '+yPos+'px, 0)'})}else{Util.DOM.setStyle(el,{webkitTransform:'translate('+xPos+'px, '+yPos+'px)'})}}else{Util.DOM.setStyle(el,{webkitTransform:'translate('+xPos+'px, '+yPos+'px)',MozTransform:'translate('+xPos+'px, '+yPos+'px)',transform:'translate('+xPos+'px, '+yPos+'px)'})}})},_onSlideByEnd:function(e){var el=e.target,callback=Util.getElementData(el,'slideByCallback'),transform=Util.coalesce(el.style.webkitTransform,el.style.MozTransform,el.style.transform),transformExploded=transform.match(/\((.*?)\)/)[1].split(', '),transformedX=window.parseInt(transformExploded[0]),transformedY=window.parseInt(transformExploded[1]),domX=window.parseInt(Util.DOM.getStyle(el,'left')),domY=window.parseInt(Util.DOM.getStyle(el,'top'));Util.DOM.setStyle(el,{webkitTransform:'',MozTransform:'',transform:'',left:(domX+transformedX)+'px',top:(domY+transformedY)+'px'});Util.removeElementData(el,'slideByCallback');Util.removeElementData(el,'slideByXPos');Util.removeElementData(el,'slideByYPos');if(Util.isFunction(callback)){window.setTimeout(function(){callback(e)},Util.Animation._applyTransitionDelay)}}}})})(window,Code.PhotoSwipe.Util);(function(){Code.PhotoSwipe.EventClass=Class.extend({_listeners:null,init:function(){this._listeners={}},addEventListener:function(type,listener){if(typeof this._listeners[type]==='undefined'){this._listeners[type]=[]}this._listeners[type].push(listener)},dispatchEvent:function(event){if(typeof event=="string"){event={type:event}}if(!event.target){event.target=this}if(!event.type){throw new Error("Event object missing 'type' property.")}if(this._listeners[event.type]instanceof Array){var listeners=this._listeners[event.type];for(var i=0,len=listeners.length;i<len;i++){listeners[i].call(this,event)}}},removeEventListener:function(type,listener){if(this._listeners[type]instanceof Array){var listeners=this._listeners[type];for(var i=0,len=listeners.length;i<len;i++){if(listeners[i]===listener){listeners.splice(i,1);break}}}}})})();(function(window,Util){Code.PhotoSwipe.ElementClass=Code.PhotoSwipe.EventClass.extend({el:null,settings:null,isHidden:null,fadeInHandler:null,fadeOutHandler:null,init:function(options){this._super();this.settings={opacity:1,fadeInSpeed:250,fadeOutSpeed:500};Util.extend(this.settings,options);this.fadeInHandler=this.postFadeIn.bind(this);this.fadeOutHandler=this.postFadeOut.bind(this);this.isHidden=true},resetPosition:function(){},show:function(){this.stopFade();Util.DOM.setStyle(this.el,'opacity',this.settings.opacity);Util.DOM.show(this.el);this.postShow()},postShow:function(){this.isHidden=false;this.addEventListeners();this.dispatchEvent(Code.PhotoSwipe.ElementClass.EventTypes.onShow)},fadeIn:function(){Util.DOM.setStyle(this.el,'opacity',0);this.fadeInFromCurrentOpacity()},fadeInFromCurrentOpacity:function(){this.stopFade();this.isHidden=false;Util.DOM.show(this.el);Util.Animation.fadeIn(this.el,this.settings.opacity,this.settings.fadeInSpeed,this.fadeInHandler)},postFadeIn:function(e){if(this.isHidden){return}this.addEventListeners();this.dispatchEvent(Code.PhotoSwipe.ElementClass.EventTypes.onFadeIn)},hide:function(){this.stopFade();Util.DOM.hide(this.el);this.postHide()},postHide:function(){this.isHidden=true;this.removeEventListeners();this.dispatchEvent(Code.PhotoSwipe.ElementClass.EventTypes.onHide)},fadeOut:function(){this.stopFade();this.isHidden=true;Util.Animation.fadeOut(this.el,this.settings.fadeOutSpeed,this.fadeOutHandler)},postFadeOut:function(e){if(!this.isHidden){return}Util.DOM.hide(this.el);this.removeEventListeners();this.dispatchEvent(Code.PhotoSwipe.ElementClass.EventTypes.onFadeOut)},stopFade:function(){Util.Animation.stopFade(this.el)},addEventListeners:function(){},removeEventListeners:function(){}});Code.PhotoSwipe.ElementClass.EventTypes={onShow:'onShow',onHide:'onHide',onClick:'onClick',onFadeIn:'onFadeIn',onFadeOut:'onFadeOut'}})(window,Code.PhotoSwipe.Util);(function(window,Util){Code.PhotoSwipe.FullSizeImageClass=Code.PhotoSwipe.EventClass.extend({el:null,index:null,naturalWidth:null,naturalHeight:null,src:null,caption:null,metaData:null,scaleMethod:null,isLandscape:null,isLoading:null,hasLoaded:null,loadEventHandler:null,init:function(index,scaleMethod,src,caption,metaData){this._super();this.index=index;this.naturalWidth=0;this.naturalHeight=0;this.src=src;this.caption=caption;this.metaData=Util.coalesce(metaData,{});this.isLandscape=false;this.isLoading=false;this.hasLoaded=false;this.scaleMethod=scaleMethod;this.loadEventHandler=this.onLoad.bind(this)},load:function(){this.isLoading=true;this.el=new Image();Util.DOM.addClass(this.el,'ps-full-size-image');this.el.onload=this.loadEventHandler;this.el.src=this.src},onLoad:function(){this.naturalWidth=Util.coalesce(this.el.naturalWidth,this.el.width);this.naturalHeight=Util.coalesce(this.el.naturalHeight,this.el.height);this.isLandscape=(this.naturalWidth>this.naturalHeight);this.isLoading=false;this.hasLoaded=true;this.dispatchEvent(Code.PhotoSwipe.FullSizeImageClass.EventTypes.onLoad)}});Code.PhotoSwipe.FullSizeImageClass.EventTypes={onLoad:'onLoad'}})(window,Code.PhotoSwipe.Util);(function(window,Util){Code.PhotoSwipe.DocumentOverlayClass=Code.PhotoSwipe.ElementClass.extend({init:function(options){this.settings={zIndex:1000};Util.extend(this.settings,options);this._super(options);this.el=Util.DOM.createElement('div',{'class':Code.PhotoSwipe.DocumentOverlayClass.CssClasses.documentOverlay},'');Util.DOM.setStyle(this.el,{left:0,position:'absolute',zIndex:this.settings.zIndex,top:0});Util.DOM.hide(this.el);Util.DOM.appendToBody(this.el)},resetPosition:function(){Util.DOM.width(this.el,Util.DOM.bodyWidth());Util.DOM.height(this.el,Util.DOM.bodyHeight())}});Code.PhotoSwipe.DocumentOverlayClass.CssClasses={documentOverlay:'ps-document-overlay'}})(window,Code.PhotoSwipe.Util);(function(window,Util){Code.PhotoSwipe.ViewportClass=Code.PhotoSwipe.ElementClass.extend({touchStartPoint:null,touchStartTime:null,touchStartHandler:null,touchMoveHandler:null,touchEndHandler:null,gestureStartHandler:null,gestureChangeHandler:null,gestureEndHandler:null,isGesture:null,mouseDownHandler:null,mouseUpHandler:null,init:function(options){this.settings={swipeThreshold:500,swipeTimeThreshold:250,zIndex:1000};Util.extend(this.settings,options);this._super(this.settings);this.touchStartPoint={x:0,y:0};if(Util.browser.touchSupported){this.touchStartHandler=this.onTouchStart.bind(this);this.touchMoveHandler=this.onTouchMove.bind(this);this.touchEndHandler=this.onTouchEnd.bind(this)}if(Util.browser.gestureSupported){this.gestureStartHandler=this.onGestureStart.bind(this);this.gestureChangeHandler=this.onGestureChange.bind(this);this.gestureEndHandler=this.onGestureEnd.bind(this)}this.mouseDownHandler=this.onMouseDown.bind(this);this.mouseUpHandler=this.onMouseUp.bind(this);this.el=Util.DOM.createElement('div',{'class':Code.PhotoSwipe.ViewportClass.CssClasses.viewport},'');Util.DOM.setStyle(this.el,{position:'absolute',left:0,zIndex:this.settings.zIndex,overflow:'hidden'});Util.DOM.hide(this.el);Util.DOM.appendToBody(this.el)},resetPosition:function(){Util.DOM.setStyle(this.el,{top:Util.DOM.windowScrollTop()+'px'});Util.DOM.width(this.el,Util.DOM.bodyWidth());Util.DOM.height(this.el,Util.DOM.windowHeight())},addEventListeners:function(){if(Util.browser.touchSupported){Util.DOM.addEventListener(this.el,'touchstart',this.touchStartHandler);Util.DOM.addEventListener(this.el,'touchmove',this.touchMoveHandler);Util.DOM.addEventListener(this.el,'touchend',this.touchEndHandler)}if(Util.browser.gestureSupported){Util.DOM.addEventListener(this.el,'gesturestart',this.gestureStartHandler);Util.DOM.addEventListener(this.el,'gesturechange',this.gestureChangeHandler);Util.DOM.addEventListener(this.el,'gestureend',this.gestureEndHandler)}Util.DOM.addEventListener(this.el,'mousedown',this.mouseDownHandler);Util.DOM.addEventListener(this.el,'mouseup',this.mouseUpHandler)},removeEventListeners:function(){if(Util.browser.touchSupported){Util.DOM.removeEventListener(this.el,'touchstart',this.touchStartHandler);Util.DOM.removeEventListener(this.el,'touchmove',this.touchMoveHandler);Util.DOM.removeEventListener(this.el,'touchend',this.touchEndHandler)}if(Util.browser.gestureSupported){Util.DOM.removeEventListener(this.el,'gesturestart',this.gestureStartHandler);Util.DOM.removeEventListener(this.el,'gesturechange',this.gestureChangeHandler);Util.DOM.removeEventListener(this.el,'gestureend',this.gestureEndHandler)}Util.DOM.removeEventListener(this.el,'mousedown',this.mouseDownHandler);Util.DOM.removeEventListener(this.el,'mouseup',this.mouseUpHandler)},getTouchPoint:function(touches){return{x:touches[0].pageX,y:touches[0].pageY}},onGestureStart:function(e){e.preventDefault();var touchEvent=Util.DOM.getTouchEvent(e);this.dispatchEvent({type:Code.PhotoSwipe.ViewportClass.EventTypes.onTouch,target:this,action:Code.PhotoSwipe.ViewportClass.Actions.gestureStart,scale:touchEvent.scale,rotation:touchEvent.rotation})},onGestureChange:function(e){e.preventDefault();var touchEvent=Util.DOM.getTouchEvent(e);this.dispatchEvent({type:Code.PhotoSwipe.ViewportClass.EventTypes.onTouch,target:this,action:Code.PhotoSwipe.ViewportClass.Actions.gestureChange,scale:touchEvent.scale,rotation:touchEvent.rotation})},onGestureEnd:function(e){e.preventDefault();var touchEvent=Util.DOM.getTouchEvent(e);this.dispatchEvent({type:Code.PhotoSwipe.ViewportClass.EventTypes.onTouch,target:this,action:Code.PhotoSwipe.ViewportClass.Actions.gestureEnd,scale:touchEvent.scale,rotation:touchEvent.rotation})},onTouchStart:function(e){e.preventDefault();var touchEvent=Util.DOM.getTouchEvent(e),touches=touchEvent.touches;if(touches.length>1){this.isGesture=true;return}this.dispatchEvent({type:Code.PhotoSwipe.ViewportClass.EventTypes.onTouch,target:this,action:Code.PhotoSwipe.ViewportClass.Actions.touchStart,point:this.getTouchPoint(touches)});this.touchStartTime=new Date();this.isGesture=false;this.touchStartPoint=this.getTouchPoint(touches)},onTouchMove:function(e){e.preventDefault();if(this.isGesture){return}var touchEvent=Util.DOM.getTouchEvent(e),touches=touchEvent.touches;this.dispatchEvent({type:Code.PhotoSwipe.ViewportClass.EventTypes.onTouch,target:this,action:Code.PhotoSwipe.ViewportClass.Actions.touchMove,point:this.getTouchPoint(touches)})},onTouchEnd:function(e){e.preventDefault();if(this.isGesture){return}var touchEvent=Util.DOM.getTouchEvent(e),touches=(!Util.isNothing(touchEvent.changedTouches))?touchEvent.changedTouches:touchEvent.touches,touchEndPoint=this.getTouchPoint(touches);this.dispatchEvent({type:Code.PhotoSwipe.ViewportClass.EventTypes.onTouch,target:this,action:Code.PhotoSwipe.ViewportClass.Actions.touchEnd,point:touchEndPoint});this.fireTouchEvent(this.touchStartPoint,touchEndPoint)},onMouseDown:function(e){e.preventDefault();this.touchStartTime=new Date();this.isGesture=false;this.touchStartPoint=Util.DOM.getMousePosition(e)},onMouseUp:function(e){e.preventDefault();this.fireTouchEvent(this.touchStartPoint,Util.DOM.getMousePosition(e))},fireTouchEvent:function(touchStartPoint,touchEndPoint){var action;var endTime=new Date(),diffTime=endTime-this.touchStartTime;if(diffTime>this.settings.swipeTimeThreshold){return}var distance=touchEndPoint.x-touchStartPoint.x;if(Math.abs(distance)>=this.settings.swipeThreshold){if(distance<0){action=Code.PhotoSwipe.ViewportClass.Actions.swipeLeft}else{action=Code.PhotoSwipe.ViewportClass.Actions.swipeRight}}else{action=Code.PhotoSwipe.ViewportClass.Actions.click}if(Util.isNothing(action)){return}this.dispatchEvent({type:Code.PhotoSwipe.ViewportClass.EventTypes.onTouch,target:this,action:action})}});Code.PhotoSwipe.ViewportClass.CssClasses={viewport:'ps-viewport'};Code.PhotoSwipe.ViewportClass.Actions={click:'click',swipeLeft:'swipeLeft',swipeRight:'swipeRight',touchStart:'touchStart',touchMove:'touchMove',touchEnd:'touchEnd',gestureStart:'gestureStart',gestureChange:'gestureChange',gestureEnd:'gestureEnd'};Code.PhotoSwipe.ViewportClass.EventTypes={onTouch:'onTouch'}})(window,Code.PhotoSwipe.Util);(function(window,Util,FullSizeImageClass){Code.PhotoSwipe.SliderItemClass=Code.PhotoSwipe.EventClass.extend({el:null,imageContainerEl:null,imageEl:null,parentEl:null,fullSizeImage:null,fullSizeImageLoadEventHandler:null,savedImageWidth:null,savedImageHeight:null,init:function(parentEl){this._super();this.parentEl=parentEl;this.fullSizeImageLoadEventHandler=this.onFullSizeImageLoad.bind(this);this.el=Util.DOM.createElement('div',{'class':Code.PhotoSwipe.SliderItemClass.CssClasses.item+' '+Code.PhotoSwipe.SliderItemClass.CssClasses.loading},'');Util.DOM.setStyle(this.el,{position:'absolute',overflow:'hidden',top:0});Util.DOM.resetTranslate(this.el);Util.DOM.appendChild(this.el,this.parentEl);this.imageContainerEl=Util.DOM.createElement('div');Util.DOM.setStyle(this.imageContainerEl,{position:'absolute',overflow:'hidden',top:0,left:0});Util.DOM.appendChild(this.imageContainerEl,this.el);this.imageEl=new Image();Util.DOM.setStyle(this.imageEl,{display:'block',position:'absolute',margin:0,padding:0});Util.DOM.hide(this.imageEl);Util.DOM.appendChild(this.imageEl,this.imageContainerEl)},resetPosition:function(width,height,xPos){Util.DOM.width(this.el,width);Util.DOM.height(this.el,height);Util.DOM.setStyle(this.el,'left',xPos+'px');Util.DOM.width(this.imageContainerEl,width);Util.DOM.height(this.imageContainerEl,height);this.resetImagePosition()},resetImagePosition:function(){if(Util.isNothing(this.fullSizeImage)){return}var src=Util.DOM.getAttribute(this.imageEl,'src');var scale,newWidth,newHeight,newTop,newLeft,maxWidth=Util.DOM.width(this.el),maxHeight=Util.DOM.height(this.el);if(this.fullSizeImage.isLandscape){scale=maxWidth/this.fullSizeImage.naturalWidth}else{scale=maxHeight/this.fullSizeImage.naturalHeight}newWidth=Math.round(this.fullSizeImage.naturalWidth*scale);newHeight=Math.round(this.fullSizeImage.naturalHeight*scale);if(this.fullSizeImage.scaleMethod==='zoom'){scale=1;if(newHeight<maxHeight){scale=maxHeight/newHeight}else if(newWidth<maxWidth){scale=maxWidth/newWidth}if(scale!==1){newWidth=Math.round(newWidth*scale);newHeight=Math.round(newHeight*scale)}}else if(this.fullSizeImage.scaleMethod==='fit'){scale=1;if(newWidth>maxWidth){scale=maxWidth/newWidth}else if(newHeight>maxHeight){scale=maxHeight/newHeight}if(scale!==1){newWidth=Math.round(newWidth*scale);newHeight=Math.round(newHeight*scale)}}newTop=((maxHeight-newHeight)/2)+'px';newLeft=((maxWidth-newWidth)/2)+'px';Util.DOM.width(this.imageEl,newWidth);Util.DOM.height(this.imageEl,newHeight);Util.DOM.setStyle(this.imageEl,{top:newTop,left:newLeft});Util.DOM.show(this.imageEl);this.savedImageWidth=newWidth;this.savedImageHeight=newHeight},setFullSizeImage:function(fullSizeImage){this.fullSizeImage=fullSizeImage;Util.DOM.removeClass(this.el,Code.PhotoSwipe.SliderItemClass.CssClasses.loading);Util.DOM.removeClass(this.el,Code.PhotoSwipe.SliderItemClass.CssClasses.imageError);if(Util.isNothing(this.fullSizeImage)){this.fullSizeImage=null;Util.DOM.addClass(this.el,Code.PhotoSwipe.SliderItemClass.CssClasses.imageError);this.hideImage();return}if(!this.fullSizeImage.hasLoaded){Util.DOM.addClass(this.el,Code.PhotoSwipe.SliderItemClass.CssClasses.loading);this.hideImage();if(!this.fullSizeImage.isLoading){this.fullSizeImage.addEventListener(FullSizeImageClass.EventTypes.onLoad,this.fullSizeImageLoadEventHandler);this.fullSizeImage.load()}return}Util.DOM.setAttribute(this.imageEl,'src',this.fullSizeImage.src);this.resetImagePosition();this.dispatchEvent(Code.PhotoSwipe.SliderItemClass.EventTypes.onFullSizeImageDisplay)},onFullSizeImageLoad:function(e){e.target.removeEventListener(FullSizeImageClass.EventTypes.onLoad,this.fullSizeImageLoadEventHandler);if(Util.isNothing(this.fullSizeImage)||e.target.index!==this.fullSizeImage.index){this.dispatchEvent({type:Code.PhotoSwipe.SliderItemClass.EventTypes.onFullSizeImageLoadAnomaly,target:this,fullSizeImage:e.target})}else{this.setFullSizeImage(e.target)}},hideImage:function(){Util.DOM.removeAttribute(this.imageEl,'src');Util.DOM.hide(this.imageEl)}});Code.PhotoSwipe.SliderItemClass.CssClasses={item:'ps-slider-item',loading:'ps-slider-item-loading',imageError:'ps-slider-item-image-error'};Code.PhotoSwipe.SliderItemClass.EventTypes={onFullSizeImageDisplay:'onFullSizeImageDisplay',onFullSizeImageLoadAnomaly:'onFullSizeImageLoadAnomaly'}})(window,Code.PhotoSwipe.Util,Code.PhotoSwipe.FullSizeImageClass);(function(window,Util,SliderItemClass){Code.PhotoSwipe.SliderClass=Code.PhotoSwipe.ElementClass.extend({parentEl:null,parentElWidth:null,parentElHeight:null,items:null,scaleEl:null,lastScaleValue:null,previousItem:null,currentItem:null,nextItem:null,hasBounced:null,lastShowAction:null,bounceSlideBy:null,showNextEndEventHandler:null,showPreviousEndEventHandler:null,bounceStepOneEventHandler:null,bounceStepTwoEventHandler:null,sliderFullSizeImageLoadAnomalyEventHandler:null,init:function(options,parentEl){this.settings={slideSpeed:250};Util.extend(this.settings,options);this._super(this.settings);this.parentEl=parentEl;this.hasBounced=false;this.showNextEndEventHandler=this.onShowNextEnd.bind(this);this.showPreviousEndEventHandler=this.onShowPreviousEnd.bind(this);this.bounceStepOneEventHandler=this.onBounceStepOne.bind(this);this.bounceStepTwoEventHandler=this.onBounceStepTwo.bind(this);this.sliderFullSizeImageLoadAnomalyEventHandler=this.onSliderFullSizeImageLoadAnomaly.bind(this);this.el=Util.DOM.createElement('div',{'class':Code.PhotoSwipe.SliderClass.CssClasses.slider},'');Util.DOM.setStyle(this.el,{position:'absolute',top:0});Util.DOM.hide(this.el);Util.DOM.appendChild(this.el,parentEl);this.items=[];this.items.push(new SliderItemClass(this.el));this.items.push(new SliderItemClass(this.el));this.items.push(new SliderItemClass(this.el));this.previousItem=this.items[0];this.currentItem=this.items[1];this.nextItem=this.items[2]},addEventListeners:function(){for(var i=0;i<this.items.length;i++){var item=this.items[i];item.addEventListener(SliderItemClass.EventTypes.onFullSizeImageLoadAnomaly,this.sliderFullSizeImageLoadAnomalyEventHandler)}},removeEventListeners:function(){for(var i=0;i<this.items.length;i++){var item=this.items[i];item.removeEventListener(SliderItemClass.EventTypes.onFullSizeImageLoadAnomaly,this.sliderFullSizeImageLoadAnomalyEventHandler)}},resetPosition:function(){Util.DOM.show(this.currentItem.imageContainerEl);this.parentElWidth=Util.DOM.width(this.parentEl);this.parentElHeight=Util.DOM.height(this.parentEl);Util.DOM.width(this.el,this.parentElWidth*3);Util.DOM.height(this.el,this.parentElHeight);this.previousItem.resetPosition(this.parentElWidth,this.parentElHeight,0);this.currentItem.resetPosition(this.parentElWidth,this.parentElHeight,this.parentElWidth);this.nextItem.resetPosition(this.parentElWidth,this.parentElHeight,this.parentElWidth*2);this.center()},center:function(){Util.DOM.resetTranslate(this.el);Util.DOM.setStyle(this.el,{left:(this.parentElWidth*-1)+'px'})},setCurrentFullSizeImage:function(currentFullSizeImage){this.currentItem.setFullSizeImage(currentFullSizeImage);this.dispatchDisplayCurrentFullSizeImage()},setPreviousAndNextFullSizeImages:function(previousFullSizeImage,nextFullSizeImage){this.nextItem.setFullSizeImage(nextFullSizeImage);this.previousItem.setFullSizeImage(previousFullSizeImage)},showNext:function(){this.lastShowAction=Code.PhotoSwipe.SliderClass.ShowActionTypes.next;this.hasBounced=false;if(Util.isNothing(this.nextItem.fullSizeImage)){this.bounce();return}var slideBy=this.parentElWidth*-1;Util.Animation.slideBy(this.el,slideBy,0,this.settings.slideSpeed,this.showNextEndEventHandler)},showPrevious:function(){this.lastShowAction=Code.PhotoSwipe.SliderClass.ShowActionTypes.previous;this.hasBounced=false;if(Util.isNothing(this.previousItem.fullSizeImage)){this.bounce();return}var slideBy=this.parentElWidth;Util.Animation.slideBy(this.el,slideBy,0,this.settings.slideSpeed,this.showPreviousEndEventHandler)},bounce:function(){Util.DOM.show(this.currentItem.imageContainerEl);this.hasBounced=true;this.bounceSlideBy=this.parentElWidth/2;Util.Animation.slideBy(this.el,(this.lastShowAction===Code.PhotoSwipe.SliderClass.ShowActionTypes.previous)?this.bounceSlideBy:this.bounceSlideBy*-1,0,this.settings.slideSpeed,this.bounceStepOneEventHandler)},onBounceStepOne:function(e){Util.Animation.slideBy(this.el,(this.lastShowAction===Code.PhotoSwipe.SliderClass.ShowActionTypes.previous)?this.bounceSlideBy*-1:this.bounceSlideBy,0,this.settings.slideSpeed,this.bounceStepTwoEventHandler)},onBounceStepTwo:function(e){this.dispatchDisplayCurrentFullSizeImage()},onShowNextEnd:function(){Util.DOM.show(this.currentItem.imageContainerEl);Util.swapArrayElements(this.items,1,2);this.currentItem=this.items[1];this.nextItem=this.items[2];var parentElWidth=this.parentElWidth;Util.DOM.setStyle(this.currentItem.el,'left',parentElWidth+'px');Util.DOM.setStyle(this.nextItem.el,'left',(parentElWidth*2)+'px');this.center();this.dispatchDisplayCurrentFullSizeImage()},onShowPreviousEnd:function(){Util.DOM.show(this.currentItem.imageContainerEl);Util.swapArrayElements(this.items,1,0);this.currentItem=this.items[1];this.previousItem=this.items[0];Util.DOM.setStyle(this.currentItem.el,'left',this.parentElWidth+'px');Util.DOM.setStyle(this.previousItem.el,'left','0px');this.center();this.dispatchDisplayCurrentFullSizeImage()},onSliderFullSizeImageLoadAnomaly:function(e){var fullSizeImage=e.fullSizeImage;if(!Util.isNothing(this.currentItem.fullSizeImage)){if(this.currentItem.fullSizeImage.index===fullSizeImage.index){this.currentItem.setFullSizeImage(fullSizeImage);this.dispatchDisplayCurrentFullSizeImage();return}}if(!Util.isNothing(this.nextItem.fullSizeImage)){if(this.nextItem.fullSizeImage.index===fullSizeImage.index){this.nextItem.setFullSizeImage(fullSizeImage);return}}if(!Util.isNothing(this.previousItem.fullSizeImage)){if(this.previousItem.fullSizeImage.index===fullSizeImage.index){this.previousItem.setFullSizeImage(fullSizeImage);return}}},dispatchDisplayCurrentFullSizeImage:function(){this.dispatchEvent({type:Code.PhotoSwipe.SliderClass.EventTypes.onDisplayCurrentFullSizeImage,target:this,fullSizeImage:this.currentItem.fullSizeImage})}});Code.PhotoSwipe.SliderClass.CssClasses={slider:'ps-slider'};Code.PhotoSwipe.SliderClass.ShowActionTypes={next:'next',previous:'previous'};Code.PhotoSwipe.SliderClass.EventTypes={onDisplayCurrentFullSizeImage:'onDisplayCurrentFullSizeImage'}})(window,Code.PhotoSwipe.Util,Code.PhotoSwipe.SliderItemClass);(function(window,Util){Code.PhotoSwipe.CaptionClass=Code.PhotoSwipe.ElementClass.extend({contentEl:null,touchMoveHandler:null,captionValue:null,init:function(options){this.settings={position:'top',zIndex:1000};Util.extend(this.settings,options);this._super(this.settings);this.captionValue='';this.touchMoveHandler=this.onTouchMove.bind(this);var cssClass=Code.PhotoSwipe.CaptionClass.CssClasses.caption;if(this.settings.position==='bottom'){cssClass=cssClass+' '+Code.PhotoSwipe.CaptionClass.CssClasses.bottom}this.el=Util.DOM.createElement('div',{'class':cssClass},'');Util.DOM.setStyle(this.el,{left:0,position:'absolute',overflow:'hidden',zIndex:this.settings.zIndex,opacity:0});Util.DOM.hide(this.el);Util.DOM.appendToBody(this.el);this.contentEl=Util.DOM.createElement('div',{'class':Code.PhotoSwipe.CaptionClass.CssClasses.content},'');Util.DOM.appendChild(this.contentEl,this.el)},addEventListeners:function(){if(Util.browser.touchSupported){Util.DOM.addEventListener(this.el,'touchmove',this.touchMoveHandler)}},removeEventListeners:function(){if(Util.browser.touchSupported){Util.DOM.removeEventListener(this.el,'touchmove',this.touchMoveHandler)}},onTouchMove:function(e){e.preventDefault()},resetPosition:function(){var top;if(this.settings.position==='bottom'){top=Util.DOM.windowHeight()-Util.DOM.outerHeight(this.el)+Util.DOM.windowScrollTop()}else{top=Util.DOM.windowScrollTop()}Util.DOM.setStyle(this.el,'top',top+'px');Util.DOM.width(this.el,Util.DOM.bodyWidth())},setCaptionValue:function(captionValue){Util.DOM.removeChildren(this.contentEl);captionValue=Util.coalesce(captionValue,'\u00A0');if(Util.isObject(captionValue)){Util.DOM.appendChild(captionValue,this.contentEl)}else{if(captionValue===''){captionValue='\u00A0'}Util.DOM.appendText(captionValue,this.contentEl)}this.captionValue=(captionValue==='\u00A0')?'':captionValue}});Code.PhotoSwipe.CaptionClass.CssClasses={caption:'ps-caption',bottom:'ps-caption-bottom',content:'ps-caption-content'}})(window,Code.PhotoSwipe.Util);(function(window,Util){Code.PhotoSwipe.ToolbarClass=Code.PhotoSwipe.ElementClass.extend({closeEl:null,previousEl:null,nextEl:null,playEl:null,clickHandler:null,touchStartHandler:null,touchMoveHandler:null,touched:null,isNextActive:null,isPreviousActive:null,init:function(options){this.settings={position:'bottom',hideClose:false,zIndex:1000};Util.extend(this.settings,options);this._super(this.settings);this.isNextActive=true;this.isPreviousActive=true;this.touched=false;this.clickHandler=this.onClick.bind(this);if(Util.browser.touchSupported){this.touchMoveHandler=this.onTouchMove.bind(this);this.touchStartHandler=this.onTouchStart.bind(this)}var cssClass=Code.PhotoSwipe.ToolbarClass.CssClasses.caption;if(this.settings.position==='top'){cssClass=cssClass+' '+Code.PhotoSwipe.ToolbarClass.CssClasses.top}this.el=Util.DOM.createElement('div',{'class':cssClass},'');Util.DOM.setStyle(this.el,{left:0,position:'absolute',overflow:'hidden',zIndex:this.settings.zIndex,display:'table',opacity:0});Util.DOM.hide(this.el);Util.DOM.appendToBody(this.el);this.closeEl=Util.DOM.createElement('div',{'class':Code.PhotoSwipe.ToolbarClass.CssClasses.close},'<div class="'+Code.PhotoSwipe.ToolbarClass.CssClasses.content+'"></div>');if(this.settings.hideClose){Util.DOM.hide(this.closeEl)}Util.DOM.appendChild(this.closeEl,this.el);this.playEl=Util.DOM.createElement('div',{'class':Code.PhotoSwipe.ToolbarClass.CssClasses.play},'<div class="'+Code.PhotoSwipe.ToolbarClass.CssClasses.content+'"></div>');Util.DOM.appendChild(this.playEl,this.el);this.previousEl=Util.DOM.createElement('div',{'class':Code.PhotoSwipe.ToolbarClass.CssClasses.previous},'<div class="'+Code.PhotoSwipe.ToolbarClass.CssClasses.content+'"></div>');Util.DOM.appendChild(this.previousEl,this.el);this.nextEl=Util.DOM.createElement('div',{'class':Code.PhotoSwipe.ToolbarClass.CssClasses.next},'<div class="'+Code.PhotoSwipe.ToolbarClass.CssClasses.content+'"></div>');Util.DOM.appendChild(this.nextEl,this.el)},addEventListeners:function(){if(Util.browser.touchSupported){if(!Util.browser.isBlackberry){Util.DOM.addEventListener(this.el,'touchstart',this.touchStartHandler)}Util.DOM.addEventListener(this.el,'touchmove',this.touchMoveHandler)}Util.DOM.addEventListener(this.el,'click',this.clickHandler)},removeEventListeners:function(){if(Util.browser.touchSupported){if(!Util.browser.isBlackberry){Util.DOM.removeEventListener(this.el,'touchstart',this.touchStartHandler)}Util.DOM.removeEventListener(this.el,'touchmove',this.touchMoveHandler)}Util.DOM.removeEventListener(this.el,'click',this.clickHandler)},onTouchStart:function(e){e.preventDefault();this.touched=true;this.handleClick(e)},onTouchMove:function(e){e.preventDefault()},onClick:function(e){if(this.touched){return}this.handleClick(e)},handleClick:function(e){var action;switch(e.target.parentNode){case this.previousEl:if(this.isPreviousActive){action=Code.PhotoSwipe.ToolbarClass.Actions.previous}break;case this.nextEl:if(this.isNextActive){action=Code.PhotoSwipe.ToolbarClass.Actions.next}break;case this.playEl:action=Code.PhotoSwipe.ToolbarClass.Actions.play;break;case this.closeEl:action=Code.PhotoSwipe.ToolbarClass.Actions.close;break}if(Util.isNothing(action)){return}this.dispatchEvent({type:Code.PhotoSwipe.ToolbarClass.EventTypes.onClick,target:this,action:action})},resetPosition:function(){var top;if(this.settings.position==='bottom'){top=Util.DOM.windowHeight()-Util.DOM.outerHeight(this.el)+Util.DOM.windowScrollTop()}else{top=Util.DOM.windowScrollTop()}Util.DOM.setStyle(this.el,'top',top+'px');Util.DOM.width(this.el,Util.DOM.bodyWidth())},setNextState:function(disable){if(disable){Util.DOM.addClass(this.nextEl,Code.PhotoSwipe.ToolbarClass.CssClasses.nextDisabled);this.isNextActive=false}else{Util.DOM.removeClass(this.nextEl,Code.PhotoSwipe.ToolbarClass.CssClasses.nextDisabled);this.isNextActive=true}},setPreviousState:function(disable){if(disable){Util.DOM.addClass(this.previousEl,Code.PhotoSwipe.ToolbarClass.CssClasses.previousDisabled);this.isPreviousActive=false}else{Util.DOM.removeClass(this.previousEl,Code.PhotoSwipe.ToolbarClass.CssClasses.previousDisabled);this.isPreviousActive=true}}});Code.PhotoSwipe.ToolbarClass.CssClasses={caption:'ps-toolbar',top:'ps-toolbar-top',close:'ps-toolbar-close',previous:'ps-toolbar-previous',previousDisabled:'ps-toolbar-previous-disabled',next:'ps-toolbar-next',nextDisabled:'ps-toolbar-next-disabled',play:'ps-toolbar-play',content:'ps-toolbar-content'};Code.PhotoSwipe.ToolbarClass.Actions={close:'close',previous:'previous',next:'next',play:'play'};Code.PhotoSwipe.ToolbarClass.EventTypes={onClick:'onClick'}})(window,Code.PhotoSwipe.Util);(function(window,Util,CaptionClass,ToolbarClass){Code.PhotoSwipe.CaptionToolbarClass=Code.PhotoSwipe.EventClass.extend({toolbar:null,caption:null,isHidden:null,hasAddedEventListeners:null,toolbarClickEventHandler:null,init:function(options){this._super();this.settings={opacity:0.8,fadeInSpeed:250,fadeOutSpeed:500,autoHideDelay:5000,flipPosition:false,showEmptyCaptions:true,hideClose:false,zIndex:1000};Util.extend(this.settings,options);this.isHidden=true;this.hasAddedEventListeners=false;this.toolbarClickEventHandler=this.onToolbarClick.bind(this);this.caption=new CaptionClass({fadeInSpeed:this.settings.fadeInSpeed,fadeOutSpeed:this.settings.fadeOutSpeed,opacity:this.settings.opacity,position:(this.settings.flipPosition)?'bottom':'top',zIndex:this.settings.zIndex});this.toolbar=new ToolbarClass({fadeInSpeed:this.settings.fadeInSpeed,fadeOutSpeed:this.settings.fadeOutSpeed,opacity:this.settings.opacity,position:(this.settings.flipPosition)?'top':'bottom',hideClose:this.settings.hideClose,zIndex:this.settings.zIndex+1})},resetPosition:function(){this.caption.resetPosition();this.toolbar.resetPosition()},addEventListeners:function(){if(this.hasAddedEventListeners){return}this.toolbar.addEventListener(ToolbarClass.EventTypes.onClick,this.toolbarClickEventHandler);this.hasAddedEventListeners=true},removeEventListeners:function(){this.toolbar.removeEventListener(ToolbarClass.EventTypes.onClick,this.toolbarClickEventHandler);this.hasAddedEventListeners=false},fadeIn:function(){this.stopAutoHideTimeout();this.stopFade();if(this.isHidden){this.isHidden=false;this.fadeInCaption();this.toolbar.fadeIn();window.setTimeout(this.onFadeIn.bind(this),this.settings.fadeInSpeed)}else{if(this.caption.isHidden){this.fadeInCaption()}this.resetAutoHideTimeout()}},showCaption:function(){if(this.caption.captionValue===''){if(this.settings.showEmptyCaptions){this.caption.show()}}else{this.caption.show()}},fadeInCaption:function(){if(this.caption.captionValue===''){if(this.settings.showEmptyCaptions){this.caption.fadeIn()}}else{this.caption.fadeIn()}},onFadeIn:function(){this.addEventListeners();this.resetAutoHideTimeout()},fadeOut:function(){this.stopAutoHideTimeout();this.stopFade();this.isHidden=true;this.caption.fadeOut();this.toolbar.fadeOut();window.setTimeout(this.onFadeOut.bind(this),this.settings.fadeOutSpeed)},onFadeOut:function(){},stopFade:function(){this.caption.stopFade();this.toolbar.stopFade()},hide:function(){this.stopAutoHideTimeout();this.stopFade();this.isHidden=true;this.removeEventListeners();this.caption.hide();this.toolbar.hide()},setCaptionValue:function(captionValue){this.caption.setCaptionValue(captionValue);if(this.caption.captionValue===''&&!this.settings.showEmptyCaptions){this.caption.fadeOut()}},resetAutoHideTimeout:function(){if(this.isHidden){return}this.stopAutoHideTimeout();if(this.settings.autoHideDelay>0){this.autoHideTimeout=window.setTimeout(this.fadeOut.bind(this),this.settings.autoHideDelay)}},stopAutoHideTimeout:function(){if(!Util.isNothing(this.autoHideTimeout)){window.clearTimeout(this.autoHideTimeout)}},onToolbarClick:function(e){this.dispatchEvent({type:Code.PhotoSwipe.ToolbarClass.EventTypes.onClick,target:this,action:e.action})},setNextState:function(disable){this.toolbar.setNextState(disable)},setPreviousState:function(disable){this.toolbar.setPreviousState(disable)}})})(window,Code.PhotoSwipe.Util,Code.PhotoSwipe.CaptionClass,Code.PhotoSwipe.ToolbarClass);(function(window,Util){Code.PhotoSwipe.ZoomPanRotateClass=Code.PhotoSwipe.ElementClass.extend({containerEl:null,imageEl:null,parentEl:null,transformSettings:null,panStartingPoint:null,init:function(options,parentEl,imageEl){this.settings={};Util.extend(this.settings,options);this._super(options);this.parentEl=parentEl;this.imageEl=imageEl.cloneNode(false);this.transformSettings={startingScale:1.0,scale:1.0,startingRotation:0,rotation:0,startingTranslateX:0,startingTranslateY:0,translateX:0,translateY:0};this.el=Util.DOM.createElement('div',{'class':Code.PhotoSwipe.ZoomPanRotateClass.CssClasses.documentOverlay},'');Util.DOM.setStyle(this.el,{left:0,top:0,position:'absolute'});Util.DOM.width(this.el,Util.DOM.bodyWidth());Util.DOM.height(this.el,Util.DOM.windowHeight());this.containerEl=Util.DOM.createElement('div');Util.DOM.setStyle(this.containerEl,{left:0,top:0,position:'absolute'});Util.DOM.width(this.containerEl,Util.DOM.bodyWidth());Util.DOM.height(this.containerEl,Util.DOM.windowHeight());Util.DOM.appendChild(this.imageEl,this.containerEl);Util.DOM.appendChild(this.containerEl,this.el);Util.DOM.appendChild(this.el,this.parentEl)},setStartingTranslateFromCurrentTranform:function(){var transformExploded=this.containerEl.style.webkitTransform.match(/translate\((.*?)\)/);if(!Util.isNothing(transformExploded)){transformExploded=transformExploded[1].split(', ');this.transformSettings.startingTranslateX=window.parseInt(transformExploded[0]);this.transformSettings.startingTranslateY=window.parseInt(transformExploded[1])}},setStartingScaleAndRotation:function(scaleValue,rotationValue){this.transformSettings.startingScale*=scaleValue;this.transformSettings.startingRotation=(this.transformSettings.startingRotation+rotationValue)%360},zoomRotate:function(scaleValue,rotationValue){this.transformSettings.scale=this.transformSettings.startingScale*scaleValue;this.transformSettings.rotation=this.transformSettings.startingRotation+rotationValue;this.applyTransform()},panStart:function(point){this.setStartingTranslateFromCurrentTranform();this.panStartingPoint={x:point.x,y:point.y}},pan:function(point){var dx=point.x-this.panStartingPoint.x,dy=point.y-this.panStartingPoint.y;this.transformSettings.translateX=this.transformSettings.startingTranslateX+dx;this.transformSettings.translateY=this.transformSettings.startingTranslateY+dy;this.applyTransform()},applyTransform:function(){this.containerEl.style.webkitTransform='scale('+this.transformSettings.scale+') rotate('+(this.transformSettings.rotation%360)+'deg) translate('+this.transformSettings.translateX+'px, '+this.transformSettings.translateY+'px)'},removeFromDOM:function(){Util.DOM.removeChild(this.el,this.parentEl)}});Code.PhotoSwipe.ZoomPanRotateClass.CssClasses={documentOverlay:'ps-zoom-pan-rotate'}})(window,Code.PhotoSwipe.Util);(function(window,Util,ElementClass,DocumentOverlayClass,FullSizeImageClass,ViewportClass,SliderClass,CaptionClass,ToolbarClass,CaptionToolbarClass,ZoomPanRotateClass){var photoSwipe=Code.PhotoSwipe.EventClass.extend({fullSizeImages:null,documentOverlay:null,viewport:null,slider:null,captionAndToolbar:null,zoomPanRotate:null,settings:null,currentIndex:null,isBusy:null,originalHashValue:null,currentHistoryHashValue:null,isBackEventSupported:null,slideshowTimeout:null,isSlideshowActive:null,lastShowPrevTrigger:null,viewportFadeInEventHandler:null,windowOrientationChangeEventHandler:null,windowScrollEventHandler:null,windowStateChangeHandler:null,keyDownEventHandler:null,viewportTouchEventHandler:null,viewportFadeOutEventHandler:null,sliderDisplayCurrentFullSizeImageEventHandler:null,toolbarClickEventHandler:null,orientationEventName:null,init:function(){this._super();this.currentIndex=0;this.isBusy=false;this.isSlideshowActive=false;this.settings={getImageSource:Code.PhotoSwipe.GetImageSource,getImageCaption:Code.PhotoSwipe.GetImageCaption,getImageMetaData:Code.PhotoSwipe.GetImageMetaData,fadeInSpeed:250,fadeOutSpeed:500,slideSpeed:250,swipeThreshold:50,swipeTimeThreshold:250,loop:true,slideshowDelay:3000,imageScaleMethod:'fit',preventHide:false,zIndex:1000,backButtonHideEnabled:true,allowUserZoom:true,allowRotationOnUserZoom:true,captionAndToolbarHide:false,captionAndToolbarHideOnSwipe:true,captionAndToolbarFlipPosition:false,captionAndToolbarAutoHideDelay:5000,captionAndToolbarOpacity:0.8,captionAndToolbarShowEmptyCaptions:true};if(Util.browser.isAndroid){if(navigator.userAgent.indexOf('2.1')){}}if(!this.isBackEventSupported){}this.viewportFadeInEventHandler=this.onViewportFadeIn.bind(this);this.windowOrientationChangeEventHandler=this.onWindowOrientationChange.bind(this);this.windowScrollEventHandler=this.onWindowScroll.bind(this);this.windowStateChangeHandler=this.onWindowStateChange.bind(this);this.keyDownEventHandler=this.onKeyDown.bind(this);this.viewportTouchEventHandler=this.onViewportTouch.bind(this);this.viewportFadeOutEventHandler=this.onViewportFadeOut.bind(this);this.sliderDisplayCurrentFullSizeImageEventHandler=this.onSliderDisplayCurrentFullSizeImage.bind(this);this.toolbarClickEventHandler=this.onToolbarClick.bind(this)},setOptions:function(options){Util.extend(this.settings,options)},setImages:function(thumbEls){if(!Util.isArray){throw"thumbEls is not an array"}this.currentIndex=0;this.fullSizeImages=[];for(var i=0;i<thumbEls.length;i++){var thumbEl=thumbEls[i];var fullSizeImage=new FullSizeImageClass(i,this.settings.imageScaleMethod,this.settings.getImageSource(thumbEl),this.settings.getImageCaption(thumbEl),this.settings.getImageMetaData(thumbEl));this.fullSizeImages.push(fullSizeImage)}},show:function(startingIndex){if(this.isBusy){return}if(!Util.isNumber(startingIndex)){throw"startingIndex must be a number"}if(Util.isNothing(this.fullSizeImages)){throw"need to set images before showing the gallery"}this.isBusy=true;if(this.isBackEventSupported){this.originalHashValue=window.location.hash}this.lastShowPrevTrigger=Code.PhotoSwipe.ShowPrevTriggers.show;Util.DOM.addClass(document.body,Code.PhotoSwipe.CssClasses.activeBody);startingIndex=window.parseInt(startingIndex);if(startingIndex<0||startingIndex>=this.fullSizeImages.length){startingIndex=0}this.currentIndex=startingIndex;if(Util.isNothing(this.documentOverlay)){this.build()}else{this.resetPosition()}this.viewport.addEventListener(ElementClass.EventTypes.onFadeIn,this.viewportFadeInEventHandler);this.dispatchEvent(Code.PhotoSwipe.EventTypes.onBeforeShow);this.viewport.fadeIn()},build:function(){this.documentOverlay=new DocumentOverlayClass({fadeInSpeed:this.settings.fadeInSpeed,fadeOutSpeed:this.settings.fadeOutSpeed,zIndex:this.settings.zIndex});this.viewport=new ViewportClass({fadeInSpeed:this.settings.fadeInSpeed,fadeOutSpeed:this.settings.fadeOutSpeed,swipeThreshold:this.settings.swipeThreshold,swipeTimeThreshold:this.settings.swipeTimeThreshold,zIndex:this.settings.zIndex+1});this.slider=new SliderClass({fadeInSpeed:this.settings.fadeInSpeed,fadeOutSpeed:this.settings.fadeOutSpeed,slideSpeed:this.settings.slideSpeed},this.viewport.el);this.captionAndToolbar=new CaptionToolbarClass({opacity:this.settings.captionAndToolbarOpacity,fadeInSpeed:this.settings.fadeInSpeed,fadeOutSpeed:this.settings.fadeOutSpeed,autoHideDelay:this.settings.captionAndToolbarAutoHideDelay,flipPosition:this.settings.captionAndToolbarFlipPosition,showEmptyCaptions:this.settings.captionAndToolbarShowEmptyCaptions,hideClose:this.settings.preventHide,zIndex:this.settings.zIndex+3});this.resetPosition()},addEventListeners:function(){if(Util.browser.isAndroid){this.orientationEventName='resize'}else{var supportsOrientationChange='onorientationchange'in window;this.orientationEventName=supportsOrientationChange?'orientationchange':'resize'}Util.DOM.addEventListener(window,this.orientationEventName,this.windowOrientationChangeEventHandler);Util.DOM.addEventListener(window,'scroll',this.windowScrollEventHandler);if(this.isBackEventSupported){this.currentHistoryHashValue='PhotoSwipe'+new Date().getTime().toString();window.location.hash=this.currentHistoryHashValue;Util.DOM.addEventListener(window,'hashchange',this.windowStateChangeHandler)}Util.DOM.addEventListener(document,'keydown',this.keyDownEventHandler);this.viewport.addEventListener(ViewportClass.EventTypes.onTouch,this.viewportTouchEventHandler);this.slider.addEventListener(SliderClass.EventTypes.onDisplayCurrentFullSizeImage,this.sliderDisplayCurrentFullSizeImageEventHandler);this.captionAndToolbar.addEventListener(ToolbarClass.EventTypes.onClick,this.toolbarClickEventHandler)},removeEventListeners:function(){Util.DOM.removeEventListener(window,this.orientationEventName,this.windowOrientationChangeEventHandler);Util.DOM.removeEventListener(window,'scroll',this.windowScrollEventHandler);if(this.isBackEventSupported){Util.DOM.removeEventListener(window,'hashchange',this.windowStateChangeHandler)}Util.DOM.removeEventListener(document,'keydown',this.keyDownEventHandler);this.viewport.removeEventListener(ViewportClass.EventTypes.onTouch,this.viewportTouchEventHandler);this.slider.removeEventListener(SliderClass.EventTypes.onDisplayCurrentFullSizeImage,this.sliderDisplayCurrentFullSizeImageEventHandler);this.captionAndToolbar.removeEventListener(ToolbarClass.EventTypes.onClick,this.toolbarClickEventHandler)},onViewportFadeIn:function(e){this.viewport.removeEventListener(ElementClass.EventTypes.onFadeIn,this.viewportFadeInEventHandler);this.documentOverlay.show();this.slider.fadeIn();this.addEventListeners();this.slider.setCurrentFullSizeImage(this.fullSizeImages[this.currentIndex]);this.isBusy=false;this.dispatchEvent(Code.PhotoSwipe.EventTypes.onShow)},setSliderPreviousAndNextFullSizeImages:function(){var lastIndex,previousFullSizeImage=null,nextFullSizeImage=null;if(this.fullSizeImages.length>1){lastIndex=this.fullSizeImages.length-1;if(this.currentIndex===lastIndex){if(this.settings.loop){nextFullSizeImage=this.fullSizeImages[0]}previousFullSizeImage=this.fullSizeImages[this.currentIndex-1]}else if(this.currentIndex===0){nextFullSizeImage=this.fullSizeImages[this.currentIndex+1];if(this.settings.loop){previousFullSizeImage=this.fullSizeImages[lastIndex]}}else{nextFullSizeImage=this.fullSizeImages[this.currentIndex+1];previousFullSizeImage=this.fullSizeImages[this.currentIndex-1]}}this.slider.setPreviousAndNextFullSizeImages(previousFullSizeImage,nextFullSizeImage)},onKeyDown:function(e){this.stopSlideshow();if(e.keyCode===37){e.preventDefault();this.lastShowPrevTrigger=Code.PhotoSwipe.ShowPrevTriggers.keyboard;this.showPrevious()}else if(e.keyCode===39){e.preventDefault();this.lastShowPrevTrigger=Code.PhotoSwipe.ShowPrevTriggers.keyboard;this.showNext()}else if(e.keyCode===38||e.keyCode===40){e.preventDefault()}else if(e.keyCode===27){e.preventDefault();this.hide()}else if(e.keyCode===32){if(!this.settings.hideToolbar){this.toggleCaptionAndToolbar()}else{this.hide()}e.preventDefault()}},onWindowOrientationChange:function(e){this.resetPosition()},onWindowScroll:function(e){this.resetPosition()},onWindowStateChange:function(e){if(window.location.hash!=='#'+this.currentHistoryHashValue){this.hide()}},resetPosition:function(){this.removeZoomPanRotate();this.viewport.resetPosition();this.slider.resetPosition();this.documentOverlay.resetPosition();this.captionAndToolbar.resetPosition();this.dispatchEvent(Code.PhotoSwipe.EventTypes.onResetPosition)},canUserZoom:function(){if(!this.settings.allowUserZoom){return false}if(this.isBusy){return false}if(Util.isNothing(this.slider.currentItem.fullSizeImage)){return false}if(!this.slider.currentItem.fullSizeImage.hasLoaded){return false}return true},isZoomActive:function(){return(!Util.isNothing(this.zoomPanRotate))},onViewportTouch:function(e){switch(e.action){case ViewportClass.Actions.gestureStart:if(this.canUserZoom()){this.stopSlideshow();if(!this.isZoomActive()){this.zoomPanRotate=new ZoomPanRotateClass({},this.viewport.el,this.slider.currentItem.imageEl);Util.DOM.resetTranslate(this.zoomPanRotate.containerEl);Util.DOM.resetTranslate(this.zoomPanRotate.imageEl)}this.fadeOutCaptionAndToolbar()}break;case ViewportClass.Actions.gestureChange:if(this.isZoomActive()){this.zoomPanRotate.zoomRotate(e.scale,(this.settings.allowRotationOnUserZoom)?e.rotation:0)}break;case ViewportClass.Actions.gestureEnd:if(this.isZoomActive()){this.zoomPanRotate.setStartingScaleAndRotation(e.scale,(this.settings.allowRotationOnUserZoom)?e.rotation:0)}break;case ViewportClass.Actions.touchStart:this.stopSlideshow();if(this.isZoomActive()){this.zoomPanRotate.panStart(e.point)}break;case ViewportClass.Actions.touchMove:if(this.isZoomActive()){this.zoomPanRotate.pan(e.point)}break;case ViewportClass.Actions.click:this.stopSlideshow();if(!this.settings.hideToolbar){this.toggleCaptionAndToolbar()}else{this.hide()}this.dispatchEvent(Code.PhotoSwipe.EventTypes.onViewportClick);break;case ViewportClass.Actions.swipeLeft:this.stopSlideshow();this.lastShowPrevTrigger=Code.PhotoSwipe.ShowPrevTriggers.swipe;this.showNext();break;case ViewportClass.Actions.swipeRight:this.stopSlideshow();this.lastShowPrevTrigger=Code.PhotoSwipe.ShowPrevTriggers.swipe;this.showPrevious();break}},onViewportFadeOut:function(e){this.viewport.removeEventListener(ElementClass.EventTypes.onFadeOut,this.viewportFadeOutEventHandler);this.isBusy=false;this.dispatchEvent(Code.PhotoSwipe.EventTypes.onHide)},hide:function(){if(this.isBusy||this.settings.preventHide){return}this.isBusy=true;this.removeZoomPanRotate();this.removeEventListeners();if(this.isBackEventSupported){window.location.hash=this.originalHashValue}this.documentOverlay.hide();this.captionAndToolbar.hide();this.slider.hide();Util.DOM.removeClass(document.body,Code.PhotoSwipe.CssClasses.activeBody);this.viewport.addEventListener(ElementClass.EventTypes.onFadeOut,this.viewportFadeOutEventHandler);this.dispatchEvent(Code.PhotoSwipe.EventTypes.onBeforeHide);this.viewport.fadeOut()},showNext:function(){if(this.isBusy){return}this.isBusy=true;this.cleanUpZoomPanRotateForNextPrevious();this.setCaptionAndToolbarOnShowPreviousNext();this.slider.showNext();this.dispatchEvent(Code.PhotoSwipe.EventTypes.onShowNext)},showPrevious:function(){if(this.isBusy){return}this.isBusy=true;this.cleanUpZoomPanRotateForNextPrevious();this.setCaptionAndToolbarOnShowPreviousNext();if(this.wasUserZoomActive){Util.DOM.hide(this.slider.currentItem.imageEl)}this.slider.showPrevious();this.dispatchEvent(Code.PhotoSwipe.EventTypes.onShowPrevious)},cleanUpZoomPanRotateForNextPrevious:function(){if(!Util.isNothing(this.zoomPanRotate)){if(this.settings.loop){Util.DOM.hide(this.slider.currentItem.imageEl)}else{if(this.currentIndex>0&&this.currentIndex<this.fullSizeImages.length-2){Util.DOM.hide(this.slider.currentItem.imageEl)}}}this.removeZoomPanRotate()},setCaptionAndToolbarOnShowPreviousNext:function(){if(this.settings.captionAndToolbarHide){return}var resetAutoTimeout=false;switch(this.lastShowPrevTrigger){case Code.PhotoSwipe.ShowPrevTriggers.toolbar:resetAutoTimeout=true;break;case Code.PhotoSwipe.ShowPrevTriggers.slideshow:resetAutoTimeout=false;break;default:resetAutoTimeout=!this.settings.captionAndToolbarHideOnSwipe;break}if(resetAutoTimeout){this.captionAndToolbar.resetAutoHideTimeout()}else{this.fadeOutCaptionAndToolbar()}},onSliderDisplayCurrentFullSizeImage:function(e){this.currentIndex=e.fullSizeImage.index;if(!this.settings.captionAndToolbarHide){if(this.settings.loop){this.captionAndToolbar.setNextState(false);this.captionAndToolbar.setPreviousState(false)}else{if(this.currentIndex>=this.fullSizeImages.length-1){this.captionAndToolbar.setNextState(true)}else{this.captionAndToolbar.setNextState(false)}if(this.currentIndex<1){this.captionAndToolbar.setPreviousState(true)}else{this.captionAndToolbar.setPreviousState(false)}}this.captionAndToolbar.setCaptionValue(this.fullSizeImages[this.currentIndex].caption);var fadeIn=false;switch(this.lastShowPrevTrigger){case Code.PhotoSwipe.ShowPrevTriggers.toolbar:fadeIn=true;break;case Code.PhotoSwipe.ShowPrevTriggers.show:fadeIn=true;break;case Code.PhotoSwipe.ShowPrevTriggers.slideshow:fadeIn=false;break;default:fadeIn=!this.settings.captionAndToolbarHideOnSwipe;break}if(fadeIn){this.dispatchEvent(Code.PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarShow);this.captionAndToolbar.fadeIn()}this.dispatchEvent(Code.PhotoSwipe.EventTypes.onDisplayImage)}this.lastShowPrevTrigger='';this.setSliderPreviousAndNextFullSizeImages();if(this.isSlideshowActive){this.fireSlideshowTimeout()}this.isBusy=false},toggleCaptionAndToolbar:function(){if(this.settings.captionAndToolbarHide){this.captionAndToolbar.hide();return}if(this.captionAndToolbar.isHidden){this.dispatchEvent(Code.PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarShow);this.captionAndToolbar.fadeIn()}else{this.dispatchEvent(Code.PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarHide);this.captionAndToolbar.fadeOut()}},fadeOutCaptionAndToolbar:function(){if(!this.settings.captionAndToolbarHide&&!this.captionAndToolbar.isHidden){this.dispatchEvent(Code.PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarHide);this.captionAndToolbar.fadeOut()}},onToolbarClick:function(e){this.stopSlideshow();switch(e.action){case ToolbarClass.Actions.previous:this.lastShowPrevTrigger=Code.PhotoSwipe.ShowPrevTriggers.toolbar;this.showPrevious();break;case ToolbarClass.Actions.next:this.lastShowPrevTrigger=Code.PhotoSwipe.ShowPrevTriggers.toolbar;this.showNext();break;case ToolbarClass.Actions.play:this.startSlideshow();break;default:this.hide();break}},startSlideshow:function(){if(this.isBusy){return}if(!Util.isNothing(this.slideshowTimeout)){window.clearTimeout(this.slideshowTimeout)}this.removeZoomPanRotate();this.isSlideshowActive=true;this.fadeOutCaptionAndToolbar();this.fireSlideshowTimeout();this.dispatchEvent(Code.PhotoSwipe.EventTypes.onSlideshowStart)},stopSlideshow:function(){if(!Util.isNothing(this.slideshowTimeout)){window.clearTimeout(this.slideshowTimeout)}this.isSlideshowActive=false;this.dispatchEvent(Code.PhotoSwipe.EventTypes.onSlideshowStop)},fireSlideshowTimeout:function(){var fire=false;if(this.settings.loop){if(this.fullSizeImages.length>1){fire=true}}else{if(this.currentIndex<this.fullSizeImages.length-1){fire=true}}if(fire){this.lastShowPrevTrigger=Code.PhotoSwipe.ShowPrevTriggers.slideshow;this.slideshowTimeout=window.setTimeout(this.showNext.bind(this),this.settings.slideshowDelay)}},removeZoomPanRotate:function(){if(Util.isNothing(this.zoomPanRotate)){return}this.zoomPanRotate.removeFromDOM();this.zoomPanRotate=null}});Code.PhotoSwipe.CssClasses={activeBody:'ps-active'};Code.PhotoSwipe.ShowPrevTriggers={show:'show',toolbar:'toobar',swipe:'swipe',keyboard:'keyboard',slideshow:'slideshow'};Code.PhotoSwipe.EventTypes={onBeforeShow:'onBeforeShow',onShow:'onShow',onBeforeHide:'onBeforeHide',onHide:'onHide',onShowNext:'onShowNext',onShowPrevious:'onShowPrevious',onDisplayImage:'onDisplayImage',onResetPosition:'onResetPosition',onSlideshowStart:'onSlideshowStart',onSlideshowStop:'onSlideshowStop',onBeforeCaptionAndToolbarShow:'onBeforeCaptionAndToolbarShow',onBeforeCaptionAndToolbarHide:'onBeforeCaptionAndToolbarHide',onViewportClick:'onViewportClick'};Code.PhotoSwipe.GetImageSource=function(el){return el.href};Code.PhotoSwipe.GetImageCaption=function(el){if(el.nodeName==="IMG"){return Util.DOM.getAttribute(el,'alt')}var i,childEl;for(i=0;i<el.childNodes.length;i++){childEl=el.childNodes[i];if(el.childNodes[i].nodeName==='IMG'){return Util.DOM.getAttribute(childEl,'alt')}}};Code.PhotoSwipe.GetImageMetaData=function(el){return{}};Code.PhotoSwipe.Current=new photoSwipe();Code.photoSwipe=function(thumbEls,containerEl,opts){var useEventDelegation=true;if(Util.isNothing(thumbEls)){return}if(Util.isNothing(containerEl)){containerEl=document.documentElement;useEventDelegation=false}if(Util.isString(containerEl)){containerEl=document.documentElement.querySelector(containerEl)}if(Util.isNothing(containerEl)){throw'Unable to find container element'}if(Util.isString(thumbEls)){thumbEls=containerEl.querySelectorAll(thumbEls)}if(Util.isNothing(thumbEls)){return}var onClick=function(e){e.preventDefault();showPhotoSwipe(e.currentTarget)};var showPhotoSwipe=function(clickedEl){var startingIndex;for(startingIndex=0;startingIndex<thumbEls.length;startingIndex++){if(thumbEls[startingIndex]===clickedEl){break}}Code.PhotoSwipe.Current.show(startingIndex)};Code.PhotoSwipe.Current.setOptions(opts);Code.PhotoSwipe.Current.setImages(thumbEls);if(useEventDelegation){containerEl.addEventListener('click',function(e){if(e.target===e.currentTarget){return}e.preventDefault();var findNode=function(clickedEl,targetNodeName,stopAtEl){if(Util.isNothing(clickedEl)||Util.isNothing(targetNodeName)||Util.isNothing(stopAtEl)){return null}if(clickedEl.nodeName===targetNodeName){return clickedEl}if(clickedEl===stopAtEl){return null}return findNode(clickedEl.parentNode,targetNodeName,stopAtEl)};var clickedEl=findNode(e.target,thumbEls[0].nodeName,e.currentTarget);if(Util.isNothing(clickedEl)){return}showPhotoSwipe(clickedEl)},false)}else{for(var i=0;i<thumbEls.length;i++){var thumbEl=thumbEls[i];thumbEl.addEventListener('click',onClick,false)}}return thumbEls};if(!Util.isNothing(window.jQuery)){window.jQuery.fn.photoSwipe=function(opts){var thumbEls=this;Code.PhotoSwipe.Current.setOptions(opts);Code.PhotoSwipe.Current.setImages(thumbEls);$(thumbEls).live('click',function(e){e.preventDefault();var startingIndex=$(thumbEls).index($(e.currentTarget));Code.PhotoSwipe.Current.show(startingIndex)})}}})(window,Code.PhotoSwipe.Util,Code.PhotoSwipe.ElementClass,Code.PhotoSwipe.DocumentOverlayClass,Code.PhotoSwipe.FullSizeImageClass,Code.PhotoSwipe.ViewportClass,Code.PhotoSwipe.SliderClass,Code.PhotoSwipe.CaptionClass,Code.PhotoSwipe.ToolbarClass,Code.PhotoSwipe.CaptionToolbarClass,Code.PhotoSwipe.ZoomPanRotateClass);
