PageSourceSearch

https://samenewlove.com/wp-content/cache/autoptimize/autoptimize_s…a98b7d66a3bab6c2f402d5b4fd87b.php?ver=7.1.3

js samenewlove.com collected 2026-10-08 06:09:38 UTC 82,505 bytes, 220 lines download raw bytes

1(function(){var win=window,lastTime=0;win.requestAnimationFrame=win.requestAnimationFrame||win.webkitRequestAnimationFrame;if(!win.requestAnimationFrame){win.requestAnimationFrame=function(callback){var currTime=new Date().getTime(),timeToCall=Math.max(0,16-(currTime-lastTime)),id=setTimeout(callback,timeToCall);lastTime=currTime+timeToCall;return id;};}
2if(!win.cancelAnimationFrame){win.cancelAnimationFrame=function(id){clearTimeout(id);};}}());(function(root,factory){if(typeof define==='function'&&define.amd){define('themeone-utils/utils',factory);}else if(typeof module==='object'&&module.exports){module.exports=factory();}else{root.ThemeoneUtils=factory();}}(this,function(){"use strict";var utils={};var Console=window.console;utils.error=function(message){if(typeof Console!=='undefined'){Console.error(message);}};utils.extend=function(options,defaults){if(options){if(typeof options!=='object'){this.error('Custom options must be an object');}else{for(var prop in defaults){if(defaults.hasOwnProperty(prop)&&options.hasOwnProperty(prop)){defaults[prop]=options[prop];}}}}
3return defaults;};utils.prop=function(prop){var el=this.createEl(),prefixes=['','Webkit','Moz','ms','O'];for(var p=0,pl=prefixes.length;p<pl;p++){var prefixedProp=prefixes[p]?prefixes[p]+prop.charAt(0).toUpperCase()+prop.slice(1):prop;if(el.style[prefixedProp]!==undefined){return prefixedProp;}}
4return'';};utils.cloneObject=function(obj){var copy={};for(var attr in obj){if(obj.hasOwnProperty(attr)){copy[attr]=obj[attr];}}
5return copy;};utils.createEl=function(tag,classes){var el=document.createElement(tag||'div');if(classes){el.className=classes;}
6return el;};utils.camelize=function(string){return string.replace(/-([a-z])/g,function(g){return g[1].toUpperCase();});};utils.handleEvents=function(_this,el,event,fn,isBind){if(typeof this.event_handlers!=='object'){this.event_handlers={};}
7if(!this.event_handlers[fn]){this.event_handlers[fn]=_this[fn].bind(_this);}
8isBind=isBind===undefined?true:!!isBind;var bindMethod=isBind?'addEventListener':'removeEventListener';event.forEach(function(ev){el[bindMethod](ev,this.event_handlers[fn],false);}.bind(this));};utils.dispatchEvent=function(_this,namespace,type,event,args){type+=namespace?'.'+namespace:'';var emitArgs=event?[event].concat(args):[args];_this.emitEvent(type,emitArgs);};utils.throttle=function(func,delay){var timestamp=null,limit=delay;return function(){var self=this,args=arguments,now=Date.now();if(!timestamp||now-timestamp>=limit){timestamp=now;func.apply(self,args);}};};utils.modulo=function(length,index){return(length+(index%length))%length;};utils.classReg=function(className){return new RegExp('(^|\\s+)'+className+'(\\s+|$)');};utils.hasClass=function(el,className){return!!el.className.match(this.classReg(className));};utils.addClass=function(el,className){if(!this.hasClass(el,className)){el.className+=(el.className?' ':'')+className;}};utils.removeClass=function(el,className){if(this.hasClass(el,className)){el.className=el.className.replace(this.classReg(className),' ').replace(/\s+$/,'');}};utils.translate=function(el,x,y,s){var scale=s?' scale('+s+','+s+')':'';el.style[this.browser.trans]=(this.browser.gpu)?'translate3d('+(x||0)+'px, '+(y||0)+'px, 0)'+scale:'translate('+(x||0)+'px, '+(y||0)+'px)'+scale;};utils.browser={trans:utils.prop('transform'),gpu:utils.prop('perspective')?true:false};return utils;}));(function(root,factory){if(typeof define==='function'&&define.amd){define('themeone-event/event',factory);}else if(typeof module==='object'&&module.exports){module.exports=factory();}else{root.ThemeoneEvent=factory();}}(typeof window!=='undefined'?window:this,function(){"use strict";var EvEmitter=function(){},proto=EvEmitter.prototype;proto.on=function(eventName,listener){if(!eventName||!listener){return null;}
9var events=this._events=this._events||{};var listeners=events[eventName]=events[eventName]||[];if(listeners.indexOf(listener)===-1){listeners.push(listener);}
10return this;};proto.off=function(eventName,listener){var listeners=this._events&&this._events[eventName];if(!listeners||!listeners.length){return null;}
11var index=listeners.indexOf(listener);if(index!==-1){listeners.splice(index,1);}
12return this;};proto.emitEvent=function(eventName,args){var listeners=this._events&&this._events[eventName];if(!listeners||!listeners.length){return null;}
13var i=0,listener=listeners[i];args=args||[];var onceListeners=this._onceEvents&&this._onceEvents[eventName];while(listener){var isOnce=onceListeners&&onceListeners[listener];if(isOnce){this.off(eventName,listener);delete onceListeners[listener];}
14listener.apply(this,args);i+=isOnce?0:1;listener=listeners[i];}
15return this;};return EvEmitter;}));(function(root,factory){if(typeof define==='function'&&define.amd){define('themeone-animate/animate',['themeone-utils/utils','themeone-event/event'],factory);}else if(typeof module==='object'&&module.exports){module.exports=factory(require('themeone-utils'),require('themeone-event'));}else{root.ThemeoneAnimate=factory(root.ThemeoneUtils,root.ThemeoneEvent);}}(this,function(utils,EvEmitter){'use strict';var Animate=function(element,positions,friction,attraction){this.element=element;this.defaults=positions;this.forces={friction:friction||0.28,attraction:attraction||0.028};this.resetAnimate();};var proto=Animate.prototype=Object.create(EvEmitter.prototype);proto.updateDrag=function(obj){this.move=true;this.drag=obj;};proto.releaseDrag=function(){this.move=false;};proto.animateTo=function(obj){this.attraction=obj;};proto.startAnimate=function(){this.move=true;this.settle=false;this.restingFrames=0;if(!this.RAF){this.animate();}};proto.stopAnimate=function(){this.move=false;this.restingFrames=0;if(this.RAF){cancelAnimationFrame(this.RAF);this.RAF=false;}
16this.start=utils.cloneObject(this.position);this.velocity={x:0,y:0,s:0};};proto.resetAnimate=function(){this.stopAnimate();this.settle=true;this.drag=utils.cloneObject(this.defaults);this.start=utils.cloneObject(this.defaults);this.resting=utils.cloneObject(this.defaults);this.position=utils.cloneObject(this.defaults);this.attraction=utils.cloneObject(this.defaults);};proto.animate=function(){var loop=(function(){if(typeof this.position!=='undefined'){var previous=utils.cloneObject(this.position);this.applyDragForce();this.applyAttractionForce();utils.dispatchEvent(this,'toanimate','render',this);this.integratePhysics();this.getRestingPosition();this.render(100);this.RAF=requestAnimationFrame(loop);this.checkSettle(previous);}}).bind(this);this.RAF=requestAnimationFrame(loop);};proto.integratePhysics=function(){for(var k in this.position){if(typeof this.position[k]!=='undefined'){this.position[k]+=this.velocity[k];this.position[k]=(k==='s')?Math.max(0.1,this.position[k]):this.position[k];this.velocity[k]*=this.getFrictionFactor();}}};proto.applyDragForce=function(){if(this.move){for(var k in this.drag){if(typeof this.drag[k]!=='undefined'){var dragVelocity=this.drag[k]-this.position[k];var dragForce=dragVelocity-this.velocity[k];this.applyForce(k,dragForce);}}}};proto.applyAttractionForce=function(){if(!this.move){for(var k in this.attraction){if(typeof this.attraction[k]!=='undefined'){var distance=this.attraction[k]-this.position[k];var force=distance*this.forces.attraction;this.applyForce(k,force);}}}};proto.getRestingPosition=function(){for(var k in this.position){if(typeof this.position[k]!=='undefined'){this.resting[k]=this.position[k]+this.velocity[k]/(1-this.getFrictionFactor());}}};proto.applyForce=function(direction,force){this.velocity[direction]+=force;};proto.getFrictionFactor=function(){return 1-this.forces.friction;};proto.roundValues=function(values,round){for(var k in values){if(typeof values[k]!=='undefined'){round=k==='s'?roun
16d*100:round;values[k]=Math.round(values[k]*round)/round;}}};proto.checkSettle=function(previous){if(!this.move){var count=0;for(var k in this.position){if(typeof this.position[k]!=='undefined'){var round=k==='s'?10000:100;if(Math.round(this.position[k]*round)===Math.round(previous[k]*round)){count++;if(count===Object.keys(this.position).length){this.restingFrames++;}}}}}
17if(this.restingFrames>2){this.stopAnimate();this.render(this.position.s>1?10:1);this.settle=true;if(JSON.stringify(this.start)!==JSON.stringify(this.position)){utils.dispatchEvent(this,'toanimate','settle',this);}}};proto.render=function(round){this.roundValues(this.position,round);utils.translate(this.element,this.position.x,this.position.y,this.position.s);};return Animate;}));(function(root,factory){if(typeof define==='function'&&define.amd){define(['themeone-utils/utils','themeone-event/event','themeone-animate/animate'],factory);}else if(typeof exports==='object'&&module.exports){module.exports=factory(require('themeone-utils'),require('themeone-event'),require('themeone-animate'));}else{root.ModuloBox=factory(root.ThemeoneUtils,root.ThemeoneEvent,root.ThemeoneAnimate);}}(this,function(utils,EvEmitter,Animate){'use strict';var version='1.5.0';var GUID=0;var instances={};var expando='mobx'+(version+Math.random()).replace(/\D/g,'');var cache={uid:0};var defaults={mediaSelector:'.mobx',threshold:5,attraction:{slider:0.055,slide:0.018,thumbs:0.016},friction:{slider:0.62,slide:0.18,thumbs:0.22},rightToLeft:false,loop:3,preload:1,unload:false,timeToIdle:4000,history:false,mouseWheel:true,contextMenu:true,scrollBar:true,fadeIfSettle:false,controls:['close'],prevNext:true,prevNextTouch:false,counterMessage:'[index] / [total]',caption:true,autoCaption:false,captionSmallDevice:true,thumbnails:true,thumbnailsNav:'basic',thumbnailSizes:{1920:{width:110,height:80,gutter:10},1280:{width:90,height:65,gutter:10},680:{width:70,height:50,gutter:8},480:{width:60,height:44,gutter:5}},spacing:0.1,smartResize:true,overflow:false,loadError:'Sorry, an error occured while loading the content...',noContent:'Sorry, no content was found!',prevNextKey:true,scrollToNav:false,scrollSensitivity:15,zoomTo:'auto',minZoom:1.2,maxZoom:4,doubleTapToZoom:true,scrollToZoom:false,pinchToZoom:true,escapeToClose:true,scrollToClose:false,pinchToClose:true,dragToClose:true,tapToClose:true,shareButtons:['facebook','googleplus','twitter','pinterest','linkedin','reddit'],shareText:'Share on',sharedUrl:'deeplink',slideShowInterval:4000,slideShowAutoPlay:false,slideShowAutoStop:false,countTimer:true,countTimerBg:'rgba(255,255,255,0.25)',countTimerColor:'rgba(255,255,255,0.75)',mediaelement:false,videoRatio:16/9,videoMaxWidth:1180,videoAutoPlay:false,videoThumbnail:false};var ModuloBox=function(options){var element=document.querySelector('.mobx-holder');if(element&&element.GUID){return instances[element.GUID];}
18this.options=utils.extend(options,defaults);this.setVar();};var proto=ModuloBox.prototype=Object.create(EvEmitter.prototype);proto.init=function(){if(this.GUID){return;}
19this.createDOM();this.GUID=++GUID;this.DOM.holder.GUID=GUID;instances[this.GUID]=this;this.setAnimation();this.getGalleries();this.openFromQuery();};proto.setVar=function(){var win=window,doc=document,nav=navigator;this.pre='mobx';this.gesture={};this.buttons={};this.slider={};this.slides={};this.cells={};this.states={};this.pointers=[];this.expando=expando;this.cache=cache;this.dragEvents=this.detectPointerEvents();this.browser={touchDevice:('ontouchstart'in win)||(nav.maxTouchPoints>0)||(nav.msMaxTouchPoints>0),pushState:'history'in win&&'pushState'in history,fullScreen:this.detectFullScreen(),mouseWheel:'onwheel'in doc.createElement('div')?'wheel':doc.onmousewheel!==undefined?'mousewheel':'DOMMouseScroll'};this.iframeVideo=this.iframeVideo();this.socialMedia=this.socialMedia();};proto.detectPointerEvents=function(){var nav=navigator;if(nav.pointerEnabled){return{start:['pointerdown'],move:['pointermove'],end:['pointerup','pointercancel']};}
20if(nav.msPointerEnabled){return{start:['MSPointerDown'],move:['MSPointerMove'],end:['MSPointerUp','MSPointerCancel']};}
21return{start:['mousedown','touchstart'],move:['mousemove','touchmove'],end:['mouseup','mouseleave','touchend','touchcancel']};};proto.detectFullScreen=function(){var fullScreen=['fullscreenEnabled','webkitFullscreenEnabled','mozFullScreenEnabled','msFullscreenEnabled'];for(var i=0,l=fullScreen.length;i<l;i++){if(document[fullScreen[i]]){return{element:['fullscreenElement','webkitFullscreenElement','mozFullScreenElement','msFullscreenElement'][i],request:['requestFullscreen','webkitRequestFullscreen','mozRequestFullScreen','msRequestFullscreen'][i],change:['fullscreenchange','webkitfullscreenchange','mozfullscreenchange','MSFullscreenChange'][i],exit:['exitFullscreen','webkitExitFullscreen','mozCancelFullScreen','msExitFullscreen'][i]};}}
22var controls=this.options.controls,index=controls.indexOf('fullScreen');if(index>-1){controls.splice(index,1);}
23return null;};proto.iframeVideo=function(){return{youtube:{reg:/(?:www\.)?youtu\.?be(?:\.com)?\/?.*?(?:watch|embed)?(?:.*v=|v\/|watch%3Fv%3D|\/)([\w\-_]+)&?/i,url:'https://www.youtube.com/embed/[ID]?enablejsapi=1&rel=0&autoplay=1',share:'https://www.youtube.com/watch?v=[ID]',poster:'https://img.youtube.com/vi/[ID]/maxresdefault.jpg',thumb:'https://img.youtube.com/vi/[ID]/default.jpg',play:{event:'command',func:'playVideo'},pause:{event:'command',func:'pauseVideo'}},vimeo:{reg:/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:[^\/]*)\/videos\/|album\/(?:\d+)\/video\/|video\/)?(\d+)(?:[a-zA-Z0-9_\-]+)?/i,url:'https://player.vimeo.com/video/[ID]?autoplay=1&api=1',share:'https://vimeo.com/[ID]',poster:'https://vimeo.com/api/v2/video/[ID].json',play:{event:'command',method:'play'},pause:{event:'command',method:'pause'}},dailymotion:{reg:/(?:www\.)?(?:dailymotion\.com(?:\/embed)(?:\/video|\/hub)|dai\.ly)\/([0-9a-z]+)(?:[\-_0-9a-zA-Z]+#video=(?:[a-zA-Z0-9_\-]+))?/i,url:'https://dailymotion.com/embed/video/[ID]?autoplay=1&api=postMessage',share:'https://www.dailymotion.com/video/[ID]',poster:'https://www.dailymotion.com/thumbnail/video/[ID]',thumb:'https://www.dailymotion.com/thumbnail/video/[ID]',play:'play',pause:'pause'},wistia:{reg:/(?:www\.)?(?:wistia\.(?:com|net)|wi\.st)\/(?:(?:m|medias|projects)|embed\/(?:iframe|playlists))\/([a-zA-Z0-9_\-]+)/i,url:'https://fast.wistia.net/embed/iframe/[ID]?version=3&enablejsapi=1&html5=1&autoplay=1',share:'https://fast.wistia.net/embed/iframe/[ID]',poster:'https://fast.wistia.com/oembed?url=https://home.wistia.com/medias/[ID].json',play:{event:'cmd',method:'play'},pause:{event:'cmd',method:'pause'}}};};proto.socialMedia=function(){return{facebook:'https://www.facebook.com/sharer/sharer.php?u=[url]',googleplus:'https://plus.google.com/share?url=[url]',twitter:'https://twitter.com/intent/tweet?text=[text]&url=[url]',pinterest:'https://www.pinterest.com/pin/create/button/?url=[url]&media=[image]&description=[text]',linkedin:'https://www.linkedin.com/shareArticle?url=[url]&mini=true&title=[text]',reddit:'https://www.reddit.com/submit?url=[url]&title=[text]',stumbleupon:'https://www.stumbleupon.com/badge?url=[url]&title=[text]',tumblr:'https://www.tumblr.com/share?v=3&u=[url]&t=[text]',blogger:'https://www.blogger.com/blog_this.pyra?t&u=[url]&n=[text]',buffer:'https://bufferapp.com/add?url=[url]title=[text]',digg:'https://digg.com/submit?url=[url]&title=[text]',evernote:'https://www.evernote.com/clip.action?url=[url]&title=[text]'};};proto.createDOM=function(){this.DOM={};var elements=['holder','overlay','slider','item','item-inner','ui','to
23p-bar','bottom-bar','share-tooltip','counter','caption','caption-inner','thumbs-holder','thumbs-inner'];for(var i=0;i<elements.length;i++){this.DOM[utils.camelize(elements[i])]=utils.createEl('div',this.pre+'-'+elements[i]);}
24this.appendDOM(this.DOM);};proto.appendDOM=function(dom){var opt=this.options;dom.holder.appendChild(dom.overlay);dom.holder.appendChild(dom.slider);dom.holder.appendChild(dom.ui);for(var i=0;i<5;i++){var slide=dom.item.cloneNode(true);slide.appendChild(dom.itemInner.cloneNode(true));dom.slider.appendChild(slide);this.slides[i]=slide;}
25this.slides.length=dom.slider.children.length;this.createUI(dom,opt);dom.holder.setAttribute('tabindex',-1);dom.holder.setAttribute('aria-hidden',true);this.DOM.comment=document.createComment(' ModuloBox (v'+version+') by Themeone ');document.body.appendChild(this.DOM.comment);utils.dispatchEvent(this,'modulobox','beforeAppendDOM',dom);document.body.appendChild(dom.holder);dom.topBar.height=dom.topBar.clientHeight;};proto.createUI=function(dom,opt){var shareIndex=opt.controls.indexOf('share');if(shareIndex>-1){var buttons=opt.shareButtons,i=buttons.length;while(i--){if(!this.socialMedia.hasOwnProperty(buttons[i])){buttons.splice(i,1);}}
26if(buttons.length){dom.ui.appendChild(dom.shareTooltip);if(opt.shareText){dom.shareTooltip.appendChild(utils.createEl('span')).textContent=opt.shareText;}
27this.createButtons(buttons,dom.shareTooltip,'shareOn');}else{opt.controls.splice(shareIndex,1);}}
28if(opt.controls.length||opt.counterMessage){var slideShow=opt.controls.indexOf('play');dom.ui.appendChild(dom.topBar);if(opt.counterMessage){dom.topBar.appendChild(dom.counter);}
29if(opt.slideShowInterval<1&&slideShow>-1){opt.controls.splice(slideShow,1);}
30if(opt.countTimer&&slideShow>-1){var timer=this.DOM.timer=utils.createEl('canvas',this.pre+'-timer');timer.setAttribute('width',48);timer.setAttribute('height',48);dom.topBar.appendChild(timer);}
31if(opt.controls.length){var controls=opt.controls.slice();this.createButtons(controls.reverse(),dom.topBar);}}
32if(opt.caption||opt.thumbnails){dom.ui.appendChild(dom.bottomBar);if(opt.caption){dom.bottomBar.appendChild(dom.caption).appendChild(dom.captionInner);}
33if(opt.thumbnails){dom.bottomBar.appendChild(dom.thumbsHolder).appendChild(dom.thumbsInner);}}
34if(opt.prevNext){this.createButtons(['prev','next'],dom.ui);}};proto.createButtons=function(buttons,dom,event){var length=buttons.length;for(var i=0;i<length;i++){var type=buttons[i];this.buttons[type]=utils.createEl('BUTTON',this.pre+'-'+type.toLowerCase());dom.appendChild(this.buttons[type]);if((type&&typeof this[type]==='function')||event){this.buttons[type].event=event?event:type;this.buttons[type].action=type;if(event==='shareOn'){this.buttons[type].setAttribute('title',type.charAt(0).toUpperCase()+type.slice(1));}}}};proto.getGalleries=function(){this.galleries={};var selectors=this.options.mediaSelector,sources='';if(!selectors){return false;}
35try{sources=document.querySelectorAll(selectors);}catch(error){utils.error('Your current mediaSelector is not a valid selector: "'+selectors+'"');}
36for(var i=0,l=sources.length;i<l;i++){var source=sources[i],media={};media.src=source.tagName==='A'?source.getAttribute('href'):null;media.src=source.tagName==='IMG'?source.currentSrc||source.src:media.src;media.src=source.getAttribute('data-src')||media.src;if(media.src){this.getMediaAtts(source,media);this.setMediaType(media);if(media.type){this.getMediaThumb(source,media);this.getVideoThumb(media);this.getMediaCaption(source,media);this.setMediaCaption(media);var gallery=this.setGalleryName(source);this.setGalleryFeatures(gallery,media);media.index=gallery.length;gallery.push(media);this.setMediaEvent(source,gallery.name,media.index);}}}
37utils.dispatchEvent(this,'modulobox','updateGalleries',this.galleries);};proto.addMedia=function(name,media){if(!media||typeof media!=='object'){utils.error('No media was found to addMedia() in a gallery');return false;}
38name=name===''?1:name;var gallery=this.galleries[name];gallery=!gallery?(this.galleries[name]=[]):gallery;gallery.name=name;var length=media.length;for(var i=0;i<length;i++){var item=utils.cloneObject(media[i]);if(item.src){this.setMediaType(item);this.getVideoThumb(item);this.setMediaCaption(item);this.setGalleryFeatures(gallery,item);item.index=gallery.length;gallery.push(item);}}};proto.setMediaType=function(media){if(['image','video','iframe','HTML'].indexOf(media.type)>-1){return;}
39media.type=null;var source=media.src?media.src:null;var extension=(source.split(/[?#]/)[0]||source).substr((~-source.lastIndexOf('.')>>>0)+2);if(/(jpg|jpeg|png|bmp|gif|tif|tiff|jfi|jfif|exif|svg)/i.test(extension)||['external.xx.fbcdn','drscdn.500px.org'].indexOf(source)>-1){media.type='image';media.src=this.getSrc(source);}else if(/(mp4|webm|ogv)/i.test(extension)){media.type='video';media.format='html5';}else{var stream=this.iframeVideo;for(var type in stream){if(stream.hasOwnProperty(type)){var regs=source.match(stream[type].reg);
39if(regs&&regs[1]){var object=stream[type];media.type='video';media.format=type;media.share=object.share.replace('[ID]',regs[1]);media.src=object.url.replace('[ID]',regs[1]);media.pause=object.pause;media.play=object.play;if(this.options.videoThumbnail){media.poster=!media.poster&&object.poster?object.poster.replace('[ID]',regs[1]):media.poster;media.thumb=!media.thumb&&object.poster?object.poster.replace('[ID]',regs[1]):media.thumb;}
40break;}}}}};proto.getSrc=function(source){var srcset=(source||'').split(/,/),length=srcset.length,width=0;if(length<=1){return source;}
41for(var i=0;i<length;i++){var parts=srcset[i].replace(/\s+/g,' ').trim().split(/ /),value=parseFloat(parts[1])||0,unit=parts[1]?parts[1].slice(-1):null;if((unit==='w'&&screen.width>=value&&value>width)||!value||i===0){width=value;source=parts[0];}}
42return source;};proto.getMediaAtts=function(source,media){var auto=this.options.autoCaption,data=this.getAttr(source),img=source.firstElementChild;img=source.tagName!=='IMG'&&img&&img.tagName==='IMG'?img:source;media.type=!media.type?data.type||source.getAttribute('data-type'):media.type;media.title=data.title||source.getAttribute('data-title')||(auto?img.title:null);media.desc=data.desc||source.getAttribute('data-desc')||(auto?img.alt:null);media.thumb=data.thumb||source.getAttribute('data-thumb');media.poster=this.getSrc(data.poster||source.getAttribute('data-poster'));media.width=data.width||source.getAttribute('data-width');media.height=data.height||source.getAttribute('data-height');if(media.title===media.desc){media.desc=null;}};proto.getMediaThumb=function(source,media){var thumbnail=source.getElementsByTagName('img');if(!media.thumb&&thumbnail[0]){media.thumb=thumbnail[0].src;}};proto.getVideoThumb=function(media){if(!this.options.videoThumbnail||media.type!=='video'||media.format==='html5'){return;}
43var hasPoster=media.poster&&media.poster.indexOf('.json')>-1,hasThumb=media.thumb&&media.thumb.indexOf('.json')>-1;if(hasPoster||hasThumb){var uri=hasPoster?media.poster:media.thumb,xhr=new XMLHttpRequest();xhr.onload=function(event){var response=event.target.responseText;response=JSON.parse(response);response=response.hasOwnProperty(0)?response[0]:response;if(response){media.poster=response.thumbnail_large||response.thumbnail_url;if(media.dom){media.dom.style.backgroundImage='url("'+media.poster+'")';}
44if(hasThumb){var thumb=response.thumbnail_small||response.thumbnail_url;if(typeof media.thumb==='object'){media.thumb.style.backgroundImage='url("'+thumb+'")';}else{media.thumb=thumb;}}}}.bind(this);xhr.open('GET',encodeURI(uri),true);setTimeout(function(){xhr.send();},0);}};proto.getMediaCaption=function(source,media){var next=source.nextElementSibling;if(next&&next.tagName==='FIGCAPTION'){var caption=next.innerHTML;if(!media.title){media.title=caption;}else if(!media.desc){media.desc=caption;}}};proto.setMediaCaption=function(media){media.title=media.title?'<div class="'+this.pre+'-title">'+media.title.trim()+'</div>':'';media.desc=media.desc?'<div class="'+this.pre+'-desc">'+media.desc.trim()+'</div>':'';media.caption=media.title+media.desc;};proto.getGalleryName=function(source){var parent=source,node=0;while(parent&&node<2){parent=parent.parentNode;if(parent&&parent.tagName==='FIGURE'&&parent.parentNode){return parent.parentNode.getAttribute('id');}
45node++;}};proto.setGalleryName=function(source){var data=this.getAttr(source);var name=data.rel||source.getAttribute('data-rel');name=!name?this.getGalleryName(source):name;name=!name?Object.keys(this.galleries).length+1:name;var gallery=this.galleries[name];gallery=!gallery?(this.galleries[name]=[]):gallery;gallery.name=name;return gallery;};proto.setGalleryFeatures=function(gallery,media){if(!gallery.zoom&&media.type==='image'){gallery.zoom=true;}
46if(!gallery.download&&(media.type==='image'||media.format==='html5')){gallery.download=true;}};proto.setMediaEvent=function(source,name,index){if(source.mobxListener){source.removeEventListener('click',source.mobxListener,false);}
47source.mobxListener=this.open.bind(this,name,index);source.addEventListener('click',source.mobxListener,false);};proto.open=function(name,index,event){if(event){event.preventDefault();event.stopPropagation();}
48if(!this.GUID){return false;}
49if(!this.galleries.hasOwnProperty(name)){utils.error('This gallery name : "'+name+'", does not exist!');return false;}
50if(!this.galleries[name].length){utils.error('Sorry, no media was found for the current gallery.');return false;}
51if(!this.galleries[name][index]){utils.error('Sorry, no media was found for the current media index: '+index);return false;}
52utils.dispatchEvent(this,'modulobox','beforeOpen',name,index);this.slides.index=index;this.gallery=this.galleries[name];this.gallery.name=name;this.gallery.index=index;this.gallery.loaded=false;this.removeContent();this.wrapAround();this.hideScrollBar();this.setSlider();this.setThumbs();this.setCaption();this.setMedia(this.options.preload);this.updateMediaInfo();this.replaceState();this.setControls();this.bindEvents(true);this.show();if(this.options.videoAutoPlay){this.appendVideo();}
53if(this.options.slideShowAutoPlay&&this.options.controls.indexOf('play')>-1&&(!this.options.videoAutoPlay||this.galleries[name][index].type!=='video')){this.startSlideShow();}
54this.states.zoom=false;this.states.open=true;};proto.openFromQuery=function(){var query=this.getQueryString(window.location.search);if(query.hasOwnProperty('guid')&&query.hasOwnProperty('mid')){var open=this.open(decodeURIComponent(query.guid),decodeURIComponent(query.mid)-1);if(open===false){this.replaceState(true);}}};proto.show=function(){var holder=this.DOM.holder,method=this.options.rightToLeft?'add':'remove';holder.setAttribute('aria-hidden',false);utils.removeClass(holder,this.pre+'-idle');utils.removeClass(holder,this.pre+'-panzoom');utils.removeClass(holder,this.pre+'-will-close');utils[method+'Class'](holder,this.pre+'-rtl');utils.addClass(holder,this.pre+'-open');};proto.close=function(event){if(event){event.preventDefault();}
55var holder=this.DOM.holder,gallery=this.gallery,index=gallery?gallery.index:'undefined',name=gallery?gallery.name:'undefined';utils.dispatchEvent(this,'modulobox','beforeClose',name,index);if(this.states.fullScreen){this.exitFullScreen();utils.removeClass(holder,this.pre+'-fullscreen');}
56this.share();this.stopSlideShow();this.pauseVideo();this.bindEvents(false);this.replaceState(true);this.hideScrollBar();holder.setAttribute('aria-hidden',true);utils.removeClass(holder,this.pre+'-open');this.states.open=false;};proto.setControls=function(){var gallery=this.gallery,options=this.options,buttons=this.buttons;if(this.DOM.counter){this.DOM.counter.style.display=(gallery.initialLength>1)?'':'none';}
57if(options.controls.indexOf('play')>-1){buttons.play.style.display=(gallery.initialLength>1)?'':'none';}
58if(options.controls.indexOf('zoom')>-1){buttons.zoom.style.display=!gallery.zoom?'none':'';}
59if(options.controls.indexOf('download')>-1){buttons.download.style.display=!gallery.download?'none':'';}
60this.setPrevNextButtons();};proto.setPrevNextButtons=function(){if(this.options.prevNext){var hide=this.slider.width<680&&this.browser.touchDevice&&!this.options.prevNextTouch;this.buttons.prev.style.display=this.buttons.next.style.display=(this.gallery.length>1&&!hide)?'':'none';}};proto.setCaption=function(){this.states.caption=!(!this.options.captionSmallDevice&&(this.slider.width<=480||this.slider.height<=480));this.DOM.caption.style.display=this.states.caption?'':'none';};proto.hideScrollBar=function(){if(!this.options.scrollBar){var open=this.states.open,scrollBar=open==='undefined'||!open?true:false;document.body.style.overflow=document.documentElement.style.overflow=scrollBar?'hidden':'';}};proto.bindEvents=function(bind){var win=window,doc=document,opt=this.options,holder=this.DOM.holder,buttons=this.buttons,scrollMethod;for(var type in buttons){if(buttons.hasOwnProperty(type)){var DOM=(type!=='share')?buttons[type]:win;utils.handleEvents(this,DOM,['click','touchend'],buttons[type].event,bind);}}
61utils.handleEvents(this,holder,this.dragEvents.start,'touchStart',bind);utils.handleEvents(this,win,['keydown'],'keyDown',bind);utils.handleEvents(this,win,['resize','orientationchange'],'resize',bind);utils.handleEvents(this,holder,['transitionend','webkitTransitionEnd','oTransitionEnd','otransitionend','MSTransitionEnd'],'opened');utils.handleEvents(this,holder,['touchend'],'disableZoom',bind);if(this.browser.fullScreen){utils.handleEvents(this,doc,[this.browser.fullScreen.change],'toggleFullScreen',bind);}
62if(opt.history){utils.handleEvents(this,win,['mouseout'],'mouseOut',bind);}
63if(opt.timeToIdle>0){utils.handleEvents(this,holder,['mousemove'],'mouseMove',bind);}
64if(!opt.contextMenu){utils.handleEvents(this,holder,['contextmenu'],'contextMenu',bind);}
65if(!opt.mouseWheel){this.disableScroll(bind);}
66if(opt.scrollToZoom){scrollMethod='scrollToZoom';}
67else if(opt.scrollToNav){scrollMethod='scrollToNav';}
68else if(opt.scrollToClose){scrollMethod='scrollToClose';}
69if(scrollMethod){utils.handleEvents(this,holder,[this.browser.mouseWheel],scrollMethod,bind);}};proto.opened=function(event){if(event.propertyName==='visibility'&&event.target===this.DOM.holder){var name=this.gallery.name,index=this.gallery.index;if(!this.states.open){this.removeContent();utils.dispatchEvent(this,'modulobox','afterClose',name,index);}else{utils.dispatchEvent(this,'modulobox','afterOpen',name,index);}}};proto.mouseOut=function(event){var e=event?event:window.event,from=e.relatedTarget||e.toElement;if(!from||from.nodeName==='HTML'){this.replaceState();}};proto.mouseMove=function(){var holder=this.DOM.holder,idleClass=this.pre+'-idle';clearTimeout(this.states.idle);
69this.states.idle=setTimeout(function(){if(!utils.hasClass(holder,this.pre+'-open-tooltip')){utils.addClass(holder,idleClass);}}.bind(this),this.options.timeToIdle);utils.removeClass(holder,idleClass);};proto.contextMenu=function(event){var target=event.target,tagName=target.tagName,className=target.className;if(tagName==='IMG'||tagName==='VIDEO'||className.indexOf(this.pre+'-video')>-1||className.indexOf(this.pre+'-thumb-bg')>-1||className===this.pre+'-thumb'){event.preventDefault();}};proto.disableScroll=function(bind){var doc=document,win=window;var prevent=function(e){if(!this.isEl(e)){return;}
70e=e||win.event;if(e.preventDefault){e.preventDefault();e.returnValue=false;return false;}};win.onwheel=win.ontouchmove=win.onmousewheel=doc.onmousewheel=doc.onmousewheel=bind?prevent.bind(this):null;};proto.scrollToZoom=function(event){if(!this.isEl(event)){return;}
71var data=this.normalizeWheel(event);if(data&&data.deltaY){var cell=this.getCell(),scale=cell.attraction.s||cell.position.s;scale=Math.min(this.options.maxZoom,Math.max(1,scale-Math.abs(data.deltaY)/data.deltaY));this.stopSlideShow();this.zoomTo(event.clientX,event.clientY,Math.round(scale*10)/10);}};proto.scrollToNav=function(event){if(!this.isEl(event)){return;}
72var data=this.normalizeWheel(event);if(data&&data.delta){this[data.delta*this.isRTL()<0?'prev':'next']();}};proto.scrollToClose=function(event){if(!this.isEl(event)){return;}
73event.preventDefault();this.close();};proto.disableZoom=function(event){var node=event.target;while(node){if(['VIDEO','INPUT','A'].indexOf(node.tagName)>-1){return;}
74node=node.parentElement;}
75event.preventDefault();};proto.resize=function(event){this.DOM.topBar.height=this.DOM.topBar.clientHeight;this.share();this.setSlider();this.setThumbsPosition();this.setCaption();this.resizeMedia();this.updateMediaInfo();this.setPrevNextButtons();this.states.zoom=false;utils.removeClass(this.DOM.holder,this.pre+'-panzoom');utils.dispatchEvent(this,'modulobox','resize',event);};proto.resizeMedia=function(){var slides=this.slides;for(var i=0;i<slides.length;i++){if(!this.gallery){break;}
76var media=this.gallery[slides[i].media];if(media&&((media.dom&&media.dom.loaded)||(media.dom&&['video','iframe','HTML'].indexOf(media.type)>-1))){this.setMediaSize(media,slides[i]);}}};proto.isEl=function(event){var name=event.target.className;name=typeof name==='string'?name:name.baseVal;return name.indexOf(this.pre)>-1;};proto.isZoomable=function(){var media=this.getMedia(),zoom=false;if(media.type==='image'&&media.dom&&media.dom.size&&media.dom.size.scale>1){zoom=true;}
77this.DOM.holder.setAttribute('data-zoom',zoom);return zoom;};proto.isDownloadable=function(){var media=this.getMedia(),download=true;if(media.type!=='image'&&media.format!=='html5'){download=false;}
78this.DOM.holder.setAttribute('data-download',download);return download;};proto.isRTL=function(){return this.options.rightToLeft?-1:1;};proto.addAttr=function(el,attrs){var cacheID;if(typeof el[this.expando]==='undefined'){cacheID=this.cache.uid++;el[this.expando]=cacheID;this.cache[cacheID]={};}else{cacheID=el[this.expando];}
79for(var attr in attrs){if(attrs.hasOwnProperty(attr)){this.cache[cacheID][attr]=attrs[attr];}}};proto.getAttr=function(el){return this.cache[el[this.expando]]||{};};proto.getThumbHeight=function(){var thumb=this.thumbs;return thumb.height>0&&thumb.width>0?thumb.height+Math.min(10,thumb.gutter)*2:0;};proto.getMedia=function(){var gallery=this.gallery;return gallery?gallery[gallery.index]:null;};proto.getCell=function(){var slides=this.slides,index=utils.modulo(slides.length,slides.index);return this.cells[index];};proto.removeContent=function(){for(var i=0;i<this.slides.length;i++){var slide=this.slides[i];this.unloadMedia(slide);this.removeMedia(slide);slide.index=slide.media=null;}
80this.removeMedia(this.DOM.thumbsHolder);};proto.getQueryString=function(search){var params={};search.substr(1).split('&').forEach(function(param){param=param.split('=');params[decodeURIComponent(param[0])]=param.length>1?decodeURIComponent(param[1]):'';});return params;};proto.setQueryString=function(key){var search=window.location.search,query=this.getQueryString(search);search=decodeURI(search);for(var prop in key){if(key.hasOwnProperty(prop)){var replace=encodeURIComponent(key[prop]);if(query.hasOwnProperty(prop)){var value=query[prop];if(!replace){search=search.replace('&'+prop+'='+value,'');search=search.replace(prop+'='+value,'');}else{search=search.replace(prop+'='+value,prop+'='+replace);}}else{if(replace){search=search+(!search?'?':'&')+prop+'='+replace;}else{search=search.replace(prop+'=','');}}}}
81var base=[location.protocol,'//',location.host,location.pathname].join('');search=!search.substr(1)?search.substr(1):search;return encodeURI(base+search);};proto.replaceState=function(remove){if((this.options.history||remove)&&this.browser.pushState&&!this.states.push){var prevData=window.history.state,data={guid:!remove?this.gallery.name:'',mid:!remove?utils.modulo(this.gallery.initialLength,this.gallery.index)+1:''};if(!prevData||prevData.mid!==data.mid){var search=this.setQueryString(data);try{window.history.replaceState(data,'',search);}catch(error){this.options.history=false;utils.error('SecurityError: A history state object with origin \'null\' cannot be created. Please run the script on a server.');}}}
82this.states.push=false;};proto.normalizeWheel=function(event){var ev=event||window.event,data=null,deltaX,deltaY,delta;event.preventDefault();if('detail'in ev){deltaY=ev.detail*-1;}
83if('wheelDelta'in ev){deltaY=ev.wheelDelta*-1;}
84if('wheelDeltaY'in ev){deltaY=ev.wheelDeltaY*-1;}
85if('wheelDeltaX'in ev){deltaX=ev.wheelDeltaX*-1;}
86if('deltaY'in ev){deltaY=ev.deltaY;}
87if('deltaX'in ev){deltaX=ev.deltaX*-1;}
88if(ev.deltaMode===1){deltaX*=40;deltaY*=40;}else if(ev.deltaMode===2){deltaX*=100;deltaY*=100;}
89delta=Math.abs(deltaX)>Math.abs(deltaY)?deltaX:deltaY;delta=Math.min(100,Math.max(-100,delta));if(Math.abs(delta)<this.options.scrollSensitivity){this.states.prevDelta=delta;return data;}
90var time=+new Date();if(Math.abs(delta)>Math.abs(this.states.prevDelta)||time-this.states.prevScroll>60){data={'deltaX':deltaX,'deltaY':deltaY,'delta':delta};}
91this.states.prevDelta=delta;this.states.prevScroll=time;return data;};proto.share=function(event){if(event&&event.target.tagName==='VIDEO'){return;}
92var holder=this.DOM.holder,className=this.pre+'-open-tooltip',element=event?event.target.className:null,method=utils.hasClass(h
92older,className)?'remove':'add';if((method==='remove'&&(element!==this.pre+'-share'||!event))||element===this.pre+'-share'){if(method==='add'){this.setShareTooltip();}
93utils[method+'Class'](holder,className);}};proto.shareOn=function(event){var type=event.target.action,gallery=this.gallery,media=this.getMedia(),image=media.type==='image'?media.src:media.poster,url=this.socialMedia[type],uri;if(url){if(this.options.sharedUrl==='page'){uri=[location.protocol,'//',location.host,location.pathname].join('');}else if(this.options.sharedUrl==='deeplink'||['iframe','HTML'].indexOf(media.type)>-1){uri=this.setQueryString({guid:gallery.name,mid:gallery.index+1});}else{uri=media.src.replace(/\s/g,'').split(',')[0];if(media.type==='video'&&media.format!=='html5'){uri=media.share;}}
94var link=utils.createEl('a');link.href=image;image=link.href;link.href=uri;uri=link.href;var tmp=utils.createEl('div');tmp.innerHTML=media.caption;var text=(tmp.textContent||tmp.innerText).replace(/\s+/g,' ').trim()||'';url=url.replace('[url]',encodeURIComponent(uri)).replace('[image]',encodeURIComponent(image)).replace('[text]',encodeURIComponent(text||document.title));if(url){var left=Math.round(window.screenX+(window.outerWidth-626)/2),top=Math.round(window.screenY+(window.outerHeight-436)/2);window.open(url,this.pre+'_share','status=0,resizable=1,location=1,toolbar=0,width=626,height=436,top='+top+',left='+left);}}else{utils.error('This social share media does not exist');}
95return false;};proto.setShareTooltip=function(){if(this.options.controls.indexOf('share')>-1){var attribute='right',tooltip=this.DOM.shareTooltip,width=tooltip.clientWidth,button=this.buttons.share.getBoundingClientRect(),position=button.left-width+button.width/2+20;if(position<0){attribute='left';position=button.left+button.width/2-20;}
96tooltip.setAttribute('data-position',attribute);tooltip.style.top=this.DOM.topBar.height+6+'px';tooltip.style.left=position+'px';}};proto.download=function(){if(!this.isDownloadable()){return false;}
97var media=this.getMedia(),url=media.src.replace(/\s/g,'').split(',')[0],link=document.createElement('a'),group=url.split('/');link.href=url;link.download=group.pop().split('?')[0];link.setAttribute('target','_blank');document.body.appendChild(link);link.click();document.body.removeChild(link);};proto.fullScreen=function(){var fullScreenElement=this.browser.fullScreen.element;if(!document[fullScreenElement]){this.requestFullScreen();}else{this.exitFullScreen();}};proto.toggleFullScreen=function(){var holder=this.DOM.holder,fullScreenElement=document[this.browser.fullScreen.element];if(!fullScreenElement){this.share();this.states.fullScreen=false;utils.removeClass(holder,this.pre+'-fullscreen');}else if(fullScreenElement===holder){this.setShareTooltip();this.states.fullScreen=true;utils.addClass(holder,this.pre+'-fullscreen');}
98this.videoFullScreen();};proto.requestFullScreen=function(){var request=this.browser.fullScreen.request;if(document.documentElement[request]){this.DOM.holder[request]();}};proto.exitFullScreen=function(){var exit=this.browser.fullScreen.exit;if(document[exit]){document[exit]();}};proto.play=function(){if(this.states.play){this.stopSlideShow();}else{this.startSlideShow();}};proto.startSlideShow=function(){var start=0,gallery=this.gallery,options=this.options,loop=this.states.loop,autoStop=options.slideShowAutoStop,cycle=Math.max(120,options.slideShowInterval),count=options.countTimer,canvas=count&&this.DOM.timer?this.DOM.timer.getContext('2d'):null;var countDown=(function(now){now=!now?+new Date():now;start=!start?now:start;if(!loop||autoStop){if(gallery.index===gallery.initialLength-1){this.stopSlideShow();return;}}
99if(count&&canvas){var percent=Math.min(1,(now-start+cycle)/cycle-1),radians=percent*360*(Math.PI/180);canvas.clearRect(0,0,48,48);this.timerProgress(canvas,options.countTimerBg,100);this.timerProgress(canvas,options.countTimerColor,radians);}
100if(now>=start+cycle){start=now;this.slideTo(this.slides.index+1,true);}
101this.timer=requestAnimationFrame(countDown);}).bind(this);utils.addClass(this.DOM.holder,this.pre+'-autoplay');this.states.play=true;this.timer=requestAnimationFrame(countDown);};proto.stopSlideShow=function(){cancelAnimationFrame(this.timer);utils.removeClass(this.DOM.holder,this.pre+'-autoplay');this.states.play=false;};proto.timerProgress=function(canvas,color,end){var start=1.5*Math.PI;canvas.strokeStyle=color;canvas.lineWidth=5;canvas.beginPath();canvas.arc(24,24,18,start,start+end,false);canvas.stroke();};proto.appendVideo=function(){var media=this.getMedia();if(media.type!=='video'){return;}
102utils.addClass(media.dom,this.pre+'-loading');utils.removeClass(media.dom,this.pre+'-playing');if(!media.video){if(media.format==='html5'){media.video=utils.createEl('video');media.video.setAttribute('controls','');media.video.setAttribute('autoplay','');var urls=media.src.replace(/\s/g,'').split(',');for(var i=0;i<urls.length;i++){var frag=document.createDocumentFragment(),source=utils.createEl('source'),type=(/^.+\.([^.]+)$/).exec(urls[i]);if(type&&['mp4','webm','ogv'].indexOf(type[1])>-1){source.src=urls[i];
102source.setAttribute('type','video/'+(type[1]==='ogv'?'ogg':type[1]));frag.appendChild(source);}
103media.video.appendChild(frag);}}
104else if(media.format){media.video=utils.createEl('iframe');media.video.src=media.src;media.video.setAttribute('frameborder',0);media.video.setAttribute('allowfullscreen','');}
105media.video.setAttribute('width','100%');media.video.setAttribute('height','100%');}
106if(!media.dom.firstChild){media.dom.appendChild(media.video);if(media.format!=='html5'){media.video.loaded=false;}}
107this.playVideo(media);};proto.onVideoLoaded=function(media){media.video.loaded=true;utils.removeClass(media.dom,this.pre+'-loading');utils.addClass(media.dom,this.pre+'-playing');this.cloneVideo(media);};proto.cloneVideo=function(media){if(this.states.loop&&media.format==='html5'){var gallery=this.gallery,length=gallery.length,initial=gallery.initialLength,current=utils.modulo(initial,media.index);for(var i=0;i<length;i++){var index=utils.modulo(initial,gallery[i].index);if(index===current&&gallery[i].index!==media.index){gallery[i].video=media.video;}}}};proto.videoFullScreen=function(){var media=this.getMedia(),fullScreen=this.states.fullScreen;if(media.type==='video'&&media.format!=='html5'&&media.video){media.video[fullScreen?'removeAttribute':'setAttribute']('allowfullscreen','');}};proto.playVideo=function(media){if(media.video.loaded){media.video.getClientRects();utils.removeClass(media.dom,this.pre+'-loading');utils.addClass(media.dom,this.pre+'-playing');if(media.format!=='html5'){if(media.play){var message=typeof media.play==='object'?JSON.stringify(media.play):String(media.play);media.video.contentWindow.postMessage(message,'*');}}else if(!media.video.error){if(typeof MediaElementPlayer==='function'&&this.options.mediaelement){var mejs=(media.video.tagName==='VIDEO')?media.video:media.video.getElementsByTagName('video')[0];if(mejs.player){mejs.player.setControlsSize();}
108mejs.play();}else{media.video.play();}}}else{var _this=this;if(typeof MediaElementPlayer==='function'&&!media.play&&this.options.mediaelement&&!media.video.player){new MediaElementPlayer(media.video,{features:['playpause','stop','current','progress','duration','volume','fullscreen'],videoVolume:'horizontal',startVolume:0.8,classPrefix:'mejs-',keyActions:[],enableKeyboard:false,iPadUseNativeControls:true,iPhoneUseNativeControls:true,AndroidUseNativeControls:true,success:function(mejs){mejs.addEventListener('loadeddata',function(){media.video=media.dom.lastChild;if(media.video){var offScreen=media.video.previousSibling;if(offScreen&&offScreen.parentNode){offScreen.parentNode.removeChild(offScreen);}
109_this.onVideoLoaded(media);}},media,false);},error:function(){_this.onVideoLoaded(media);}});}else if(!media.video.onload){media.video.onload=media.video.onerror=media.video.onloadedmetadata=function(){if(media.dom.firstChild){_this.onVideoLoaded(media);_this.videoFullScreen();}};media.video.src=media.src.replace(/\s/g,'').split(',')[0];}}};proto.pauseVideo=function(){var media=this.getMedia();if(media&&media.type==='video'&&media.video){utils.removeClass(media.dom,this.pre+'-playing');if(!media.video.loaded){media.dom.innerHTML='';utils.removeClass(media.dom,this.pre+'-loading');return;}
110if(media.format==='html5'){if(typeof MediaElementPlayer==='function'&&this.options.mediaelement){var mejs=(media.video.tagName==='VIDEO')?media.video:media.video.getElementsByTagName('video')[0];mejs.pause();}else{media.video.pause();}}else{if(media.pause&&media.format!=='dailymotion'){var message=typeof media.pause==='object'?JSON.stringify(media.pause):String(media.pause);media.video.contentWindow.postMessage(message,'*');}else{media.dom.innerHTML='';media.video=null;}}}};proto.insertMedia=function(media_index,slide_index){var media=this.gallery[media_index];if(!media){return;}
111if(typeof media.index==='undefined'){media.index=this.gallery.indexOf(media);}
112this.buildMedia(media);this.appendMedia(media,slide_index);this.loadMedia(media,slide_index);};proto.buildMedia=function(media){if(typeof media.dom==='undefined'){switch(media.type){case'image':media.dom=utils.createEl('img',this.pre+'-img');media.dom.src=media.src;break;case'video':media.dom=utils.createEl('div',this.pre+'-video');if(media.poster){media.dom.style.backgroundImage='url("'+media.poster+'")';}else{media.dom.loaded=true;}
113break;case'iframe':media.dom=utils.createEl('iframe',this.pre+'-iframe');media.dom.setAttribute('allowfullscreen','');media.dom.setAttribute('frameborder',0);media.dom.src=media.src;break;case'HTML':var element=media.src;var content=document.querySelector(element);media.dom=utils.createEl('div',this.pre+'-html');media.dom.appendChild(utils.createEl('div',this.pre+'-html-inner'));
113media.dom.firstChild.innerHTML=content?content.innerHTML:null;media.src=content?content:'';media.dom.loaded=true;break;}
114if(!media.type||!media.src){media.dom=utils.createEl('div',this.pre+'-error');media.dom.textContent=this.options.noContent;media.dom.loaded=true;media.dom.error=true;utils.dispatchEvent(this,'modulobox','noContent',this.gallery.name,parseInt(media.index,10));}}};proto.appendMedia=function(media,slide_index){var slide=this.slides[slide_index],holder=slide.firstChild,loader;if(!holder.childElementCount){var fragment=document.createDocumentFragment();loader=utils.createEl('div',this.pre+'-loader');fragment.appendChild(loader);fragment.appendChild(media.dom);holder.appendChild(fragment);}else{var oldMedia=holder.lastChild;loader=holder.firstChild;loader.style.visibility='';if(media.dom!==oldMedia){var method=holder.childElementCount===1?'appendChild':'replaceChild';holder[method](media.dom,oldMedia);}}
115slide.media=media.index;};proto.loadMedia=function(media,slide_index){if(media.dom.loaded){this.showMedia(media,slide_index);return;}
116var _this=this,dom=media.type==='iframe'?media.dom:media.dom.img=new Image();var onComplete=function(){if(!media.dom.error){utils.dispatchEvent(_this,'modulobox','loadComplete',_this.gallery.name,parseInt(media.index,10));}
117media.dom.loaded=media.type!=='iframe'?true:false;_this.showMedia(media,slide_index);};dom.onload=onComplete;dom.onerror=function(e){if(media.type!=='video'){media.dom=utils.createEl('p',_this.pre+'-error');media.dom.textContent=_this.options.loadError;media.dom.error=true;_this.appendMedia(media,slide_index);}
118utils.dispatchEvent(_this,'modulobox','loadError',_this.gallery.name,parseInt(media.index,10));onComplete();};dom.src=(media.type==='video')?media.poster:media.src;};proto.unloadMedia=function(slide){if(!this.gallery){return;}
119var index=slide.media,media=this.gallery[index];if(!media||!media.dom){return;}
120if(this.options.unload&&media.type==='image'&&!media.dom.loaded&&!media.dom.complete&&!media.dom.naturalWidth){media.dom.onload=null;media.dom.onerror=null;media.dom.src='';if(media.dom.img){media.dom.img.onload=null;media.dom.img.onerror=null;media.dom.img.src='';delete media.dom.img;}
121delete media.dom;}
122else if(media.type==='video'&&media.format!=='html5'&&media.dom.firstChild){media.video=null;media.dom.removeChild(media.dom.firstChild);}};proto.removeMedia=function(holder){var content=holder.firstChild;if(!content){return;}
123while(content.firstChild){content.removeChild(content.firstChild);}};proto.showMedia=function(media,slide_index){var slider=this.slider;if(this.options.fadeIfSettle&&!slider.settle&&!media.dom.revealed){return;}
124var slide=this.slides[slide_index],gallery=this.gallery,holder=slide.firstChild,loader=holder.firstChild,preload=this.options.preload;this.setMediaSize(media,slide);if(media.index===gallery.index){this.isZoomable();}
125utils.addClass(media.dom,this.pre+'-media-loaded');media.dom.revealed=true;if(slide.media===media.index){loader.style.visibility='hidden';gallery.loaded+=1;if(gallery.loaded===preload&&preload<4){this.setMedia(preload+2);}}
126if(media.type==='iframe'){media.dom.loaded=false;}};proto.setMediaSize=function(media,slide){var object=media.dom,slider=this.slider,viewport=object.viewport,thumbs=this.getThumbHeight();if(object.error){return;}
127if(!viewport||viewport.width!==slider.width||viewport.height!==slider.height-thumbs){this.getCaptionHeight(media,slide);this.getMediaSize(media,slide);this.fitMediaSize(media,slide);this.setMediaOffset(media,slide);}
128var style=object.style;style.width=object.size.width+'px';style.height=object.size.height+'px';style.left=object.offset.left+'px';style.top=object.offset.top+'px';};proto.getCaptionHeight=function(media,slide){var caption=this.DOM.captionInner,topBar=this.DOM.topBar.height,content=caption.innerHTML,thumbs=this.getThumbHeight();if(this.options.caption&&this.states.caption&&media.caption){caption.innerHTML=media.caption;caption.height=Math.max(topBar,parseInt(caption.clientHeight,10))||topBar;caption.innerHTML=content;}else{caption.height=thumbs?0:topBar;}
129slide.width=this.slider.width;slide.height=this.slider.height-topBar-caption.height-thumbs;};proto.getMediaSize=function(media,slide){var size=media.dom.size={};
129switch(media.type){case'image':size.width=media.dom.naturalWidth;size.height=media.dom.naturalHeight;break;case'video':size.width=this.options.videoMaxWidth;size.height=size.width/this.options.videoRatio;break;case'iframe':size.width=media.width?media.width:slide.width>680?slide.width*0.8:slide.width;size.height=media.height?media.height:slide.height;break;case'HTML':size.width=media.width?media.width:slide.width;size.height=media.height?media.height:slide.height;break;}};proto.fitMediaSize=function(media,slide){var slider=this.slider,options=this.options,zoom=options.zoomTo,size=media.dom.size,ratio=size.width/size.height,thumbs=this.getThumbHeight(),smallDevice=slider.width<=480||slider.height<=680,canOverflow=['video','iframe','HTML'].indexOf(media.type)<0,smartResize=options.smartResize&&smallDevice,width,height;var viewports=[slide.height];if((smartResize||options.overflow)&&canOverflow){viewports.unshift(slider.height-thumbs);}
130viewports.forEach(function(viewport){if(!height||height<slider.height-thumbs){width=Math.min(size.width,ratio*viewport);width=width>slide.width?slide.width:Math.round(width);height=Math.ceil(1/ratio*width);height=height%viewport<2?viewport:height;}});var scale=Number((size.width/width).toFixed(3));zoom=zoom==='auto'?scale:zoom;media.dom.size={width:width,height:height,scale:scale>=options.minZoom?Math.min(options.maxZoom,zoom):1};};proto.setMediaOffset=function(media,slide){var size=media.dom.size,slider=this.slider,topBar=this.DOM.topBar.height,thumbs=this.getThumbHeight(),fromTop=0;if(size.height<=slide.height){fromTop=topBar+(slide.height-size.height)*0.5;}
131media.dom.offset={top:fromTop<0?0:Math.round(fromTop),left:Math.round((slide.width-size.width)*0.5)};media.dom.viewport={width:slider.width,height:slider.height-thumbs};};proto.mediaViewport=function(scale){var media=this.getMedia();if(!media.dom||!media.dom.size){return{top:0,bottom:0,left:0,right:0};}
132var size=media.dom.size,offset=media.dom.offset,height=this.slider.height,width=this.slider.width,hGap=(height-size.height)*0.5,vGap=offset.top*2-hGap,cGap=(hGap-vGap)*0.5,sGap=cGap*scale-cGap*2-vGap,left=size.width/2*(scale-1)-offset.left,top=size.height*scale<=height?cGap*scale:-size.height/2*(scale-1)+height-size.height+sGap,bottom=size.height*scale<=height?cGap*scale:size.height/2*(scale-1)+sGap;return{top:scale<=1?0:Math.round(top),bottom:scale<=1?0:Math.round(bottom),left:size.width*scale<width?0:Math.round(left),right:size.width*scale<width?0:Math.round(-left)};};proto.setMedia=function(number){var gallery=this.gallery,slides=this.slides,loop=this.states.loop,RTL=this.isRTL(),index=Math.round(-RTL*this.slider.position.x/slides.width),length=gallery.initialLength-1,adjust=0,toLoad=[],i;if(!number&&!gallery.loaded){number=0;for(i=0;i<slides.length;i++){if(slides[i].firstChild.childElementCount){number++;}}
133number+=2;gallery.loaded=this.options.preload;}
134switch(number){case 0:case 1:toLoad=[0];break;case 2:case 3:toLoad=[-1,0,1];break;default:number=5;toLoad=[-2,-1,0,1,2];}
135if(!loop){var maxMedia=index+toLoad[number-1],minMedia=index+toLoad[0];adjust=(minMedia<0)?-minMedia:0;adjust=(maxMedia>length)?length-maxMedia:adjust;}
136toLoad=toLoad.map(function(i){return utils.modulo(gallery.length,i+adjust+index);});for(i=0;i<slides.length;i++){var slide=slides[i],media_index=utils.modulo(gallery.length,slide.index);if(!loop&&slide.index>media_index){continue;}
137if(toLoad.indexOf(media_index)>-1&&slide.media!==media_index){this.unloadMedia(slide);this.insertMedia(media_index,i);}}};proto.updateMediaInfo=function(){var slides=this.slides,gallery=this.gallery;gallery.index=utils.modulo(gallery.length,slides.index);this.isZoomable();this.isDownloadable();this.updateCounter();this.updateCaption();this.updateThumbs();utils.dispatchEvent(this,'modulobox','updateMedia',this.getMedia());};proto.setThumbs=function(){var gallery=this.gallery,thumbs=this.thumbs,length=gallery.initialLength,thumbnails=this.options.thumbnails,thumbsHolder=this.DOM.thumbsHolder;if(!thumbnails||length<2){this.DOM.caption.style.bottom=0;thumbsHolder.style.visibility='hidden';thumbsHolder.style.height=0;thumbs.height=thumbs.gutter=0;return;}
138var sizes=this.options.thumbnailSizes,screenW=Math.max(window.innerWidth,Math.max(screen.width,screen.height)),thumbNb=0,i;var widths=Object.keys(sizes).sort(function(a,b){return a-b;});for(i=0;i<widths.length;i++){var size=widths[i],width=i===widths.length-1?screenW:Math.min(screenW,size),number=Math.ceil(width/(sizes[size].width+sizes[size].gutter)*2);if(isFinite(number)&&number>thumbNb){thumbNb=number;}
139if(size>=screenW){break;}}
140var fragment=document.createDocumentFragment();length=length>50?Math.min(thumbNb,length):length;for(i=0;i<length;i++){var thumb=utils.createEl('div',this.pre+'-thumb');fragment.appendChild(thumb);}
141this.DOM.thumbsInner.appendChild(fragment);this.setThumbsPosition();};proto.thumbClick=function(event){var target=event.target;if(!utils.hasClass(target,this.pre+'-thumb')){target=target.parentNode;}
142if(parseInt(target.index,10)>=0){this.slideTo(target.index);}};proto.loadThumb=function(thumb,index){var media=this.gallery[index],src;if(!media.thumb||typeof media.thumb!=='object'){src=media.thumb;media.thumb=utils.createEl('div',this.pre+'-thumb-bg');media.thumb.style.backgroundImage=src&&src.indexOf('.json')<0?'url('+src+')':null;if(media.type==='video'){utils.addClass(media.thumb,this.pre+'-thumb-video');utils.addClass(media.thumb,this.pre+'-thumb-loaded');}}
143var method=thumb.firstChild?'replaceChild':'appendChild';thumb[method](media.thumb,thumb.firstChild);thumb.media=index;if(src){var dom=new Image();dom.onload=function(){utils.addClass(media.thumb,this.pre+'-thumb-loaded');}.bind(this);dom.src=src;}};proto.updateThumbs=function(){var gallery=this.gallery;if(!this.options.thumbnails||gallery.initialLength<2){return;}
144var thumbs=this.thumbs,position=this.getThumbPosition(thumbs);thumbs.stopAnimate();if(position===thumbs.position.x){this.shiftThumbs(thumbs);return;}
145if(Math.abs(position-thumbs.position.x)>50*thumbs.size){this.DOM.thumbsHolder.style.visibility='hidden';thumbs.position.x=position;utils.translate(this.DOM.thumbsInner,position,0);this.renderThumbs(thumbs);this.DOM.thumbsHolder.style.visibility='';}else{thumbs.startAnimate();thumbs.releaseDrag();thumbs.animateTo({x:position});}};proto.updateCaption=function(){if(this.options.caption){var media=this.getMedia(),content=media.caption?media.caption:'',caption=this.DOM.captionInner;if(caption.innerHTML!==content){caption.innerHTML=content;}}};proto.updateCounter=function(){if(this.options.counterMessage){var gallery=this.gallery,length=gallery.initialLength,index=utils.modulo(length,gallery.index),message=this.options.counterMessage,content=message.replace('[index]',index+1).replace('[total]',length),counter=this.DOM.counter;if(counter.textContent!==content){counter.textContent=content;}}};proto.wrapAround=function(){var loop=this.options.loop,gallery=this.gallery,length=gallery.length;if(!gallery.initialLength){gallery.initialLength=length;}
146this.states.loop=loop&&loop<=length?true:false;if(this.states.loop&&length<this.slides.length){var add=Math.ceil(this.slides.length/length)*length-length;for(var i=0;i<add;i++){var index=length+i;gallery[index]=utils.cloneObject(gallery[utils.modulo(length,i)]);gallery[index].index=index;}}};proto.setSlider=function(){var slider=this.slider,slides=this.slides;this.setSizes(slider,slides);this.setSliderPosition(slider,slides);this.setSlidesPositions(slides);this.DOM.overlay.style.opacity=1;};proto.setSizes=function(slider,slides){slider.width=document.body.clientWidth;slider.height=window.innerHeight;slides.width=slider.width+Math.round(slider.width*this.options.spacing);};proto.setSlidesPositions=function(slides){for(var i=0;i<slides.length;i++){slides[i].position=null;this.setCellPosition(i);}
147this.shiftSlides();};proto.setThumbsPosition=function(){if(!this.options.thumbnails||this.gallery.initialLength<2){return;}
148var thumbs=this.thumbs,slider=this.slider,holder=this.DOM.thumbsHolder,inner=this.DOM.thumbsInner,sizes=this.options.thumbnailSizes,RTL=this.options.rightToLeft,widths=Object.keys(sizes).sort(function(a,b){return b-a;}),width=Math.max.apply(null,widths),browser=window.innerWidth,size;for(var i=0;i<widths.length;i++){size=Number(widths[i]);if(browser<=size){width=size;}}
149thumbs.width=Number(sizes[width].width);thumbs.gutter=Number(sizes[width].gutter);thumbs.height=Number(sizes[width].height);thumbs.size=thumbs.width+thumbs.gutter;thumbs.length=this.gallery.initialLength;var totalWidth=thumbs.length*thumbs.size;thumbs.bound={left:0,right:totalWidth>slider.width?slider.width-totalWidth:0};if(RTL){thumbs.bound.right=totalWidth>slider.width?slider.width-thumbs.size:totalWidth-thumbs.size;thumbs.bound.left=totalWidth-thumbs.size;}
150if(this.options.thumbnailsNav==='centered'){thumbs.bound={left:totalWidth>slider.width?Math.floor(slider.width*0.5-thumbs.size*0.5):Math.floor(totalWidth*0.5-thumbs.size*0.5),right:totalWidth>slider.width?Math.ceil(slider.width*0.5-totalWidth+thumbs.size*0.5):-Math.ceil(totalWidth*0.5-thumbs.size*0.5)};if(RTL){thumbs.bound.right=thumbs.bound.left;thumbs.bound.left=thumbs.bound.left+totalWidth-thumbs.size;}}
151thumbs.resetAnimate();var position=this.getThumbPosition(thumbs);thumbs.position.x=position;utils.translate(inner,position,0);var hasHeight=this.getThumbHeight();holder.style.visibility=hasHeight?'':'hidden';holder.style.height=hasHeight?hasHeight+'px':'';inner.style.height=hasHeight?thumbs.height+Math.min(10,thumbs.gutter)+'px':'';inner.style.width=thumbs.length*thumbs.size+'px';inner.style.right=totalWidth>slider.width&&RTL?'auto':'';};proto.getThumbPosition=function(thumbs){var slider=this.slider,gallery=this.gallery,thumbNav=this.options.thumbnailsNav,RTL=this.isRTL(),left=RTL<0?'right':'left',index=utils.modulo(gallery.initialLength,gallery.index),centered=slider.width*0.5-thumbs.size*0.5,position=thumbs.bound[left]-index*thumbs.size*RTL;position=!thumbs.bound[left]?position+centered:position+(RTL<0&&thumbNav!=='centered'?-centered:0);return Math.max(thumbs.bound.right,Math.min(thumbs.bound.left,position));};proto.setCellPosition=function(index){var cell=this.cells[index];cell.resetAnimate();utils.translate(this.slides[index].children[0],0,0,1);};proto.setSliderPosition=function(slider,slides){var RTL=this.options.rightToLeft,posX=-slides.index*slides.width;posX=RTL?-posX:posX;slider.resetAnimate();slider.position.x=slider.attraction.x=posX;slider.bound={left:0,right:-(this.gallery.length-1)*slides.width};if(RTL){slider.bound.left=-slider.bound.right;slider.bound.right=0;}
152utils.translate(this.DOM.slider,posX,0);};proto.setAnimation=function(){var slider=this.DOM.slider,friction=this.options.friction,attraction=this.options.attraction;this.slider=new Animate(slider,{x:0,y:0},Math.min(Math.max(friction.slider,0),1),Math.min(Math.max(attraction.slider,0),1));this.slider.on('settle.toanimate',this.settleSider.bind(this));this.slider.on('render.toanimate',this.renderSlider.bind(this));var slides=slider.children,length=slides.length;for(var i=0;i<length;i++){this.cells[i]=new Animate(slides[i].children[0],{x:0,y:0,s:1},Math.min(Math.max(friction.slide,0),1),Math.min(Math.max(attraction.slide,0),1));this.cells[i].on('settle.toanimate',this.settleCell.bind(this));this.cells[i].on('render.toanimate',this.renderCell.bind(this));}
153this.thumbs=new Animate(this.DOM.thumbsInner,{x:0},Math.min(Math.max(friction.thumbs,0),1),Math.min(Math.max(attraction.thumbs,0),1));this.thumbs.on('settle.toanimate',this.settleThumbs.bind(this));this.thumbs.on('render.toanimate',this.renderThumbs.bind(this));};proto.settleSider=function(slider){var media;utils.dispatchEvent(this,'modulobox','sliderSettled',slider.position);if(this.states.open){this.setMedia();this.replaceState();}
154if(this.options.fadeIfSettle){var slides=this.slides;for(var i=0;i<slides.length;
154i++){var index=slides[i].media;media=this.gallery[index];if(media.dom.loaded){this.showMedia(media,i);}}}};proto.settleCell=function(cell){var gesture=this.gesture;if(gesture.closeBy){utils.dispatchEvent(this,'modulobox','panYSettled',null,cell.position);}
155if((gesture.closeBy&&gesture.canClose===false)||!gesture.closeBy){utils.dispatchEvent(this,'modulobox','panZoomSettled',null,cell.position);}};proto.settleThumbs=function(thumbs){utils.dispatchEvent(this,'modulobox','thumbsSettled',null,thumbs.position);};proto.renderSlider=function(slider){this.shiftSlides();var RTL=this.isRTL(),length=this.gallery.initialLength,indexPos=-RTL*slider.position.x/this.slides.width,moduloPos=utils.modulo(length,indexPos),progress=(moduloPos>length-0.5?0:moduloPos)/(length-1);utils.dispatchEvent(this,'modulobox','sliderProgress',null,Math.min(1,Math.max(0,progress)));};proto.renderCell=function(cell){this.willClose(cell);var progress;if(this.gesture.type==='panY'||this.gesture.closeBy||(this.gesture.type==='dragSlider'&&cell.position.y!==0)){progress=1-Math.abs(cell.position.y)/(this.slider.height*0.5);utils.dispatchEvent(this,'modulobox','panYProgress',null,progress);}
156if(this.gesture.type!=='panY'&&cell.position.s!==1){progress=cell.position.s;utils.dispatchEvent(this,'modulobox','panZoomProgress',null,progress);}};proto.renderThumbs=function(thumbs){this.shiftThumbs(thumbs);var progress=thumbs.bound.left!==thumbs.bound.right?(thumbs.bound.left-thumbs.position.x)/(thumbs.bound.left-thumbs.bound.right):0;utils.dispatchEvent(this,'modulobox','thumbsProgress',null,progress);};proto.touchStart=function(event){var element=event.target,tagName=element.tagName,className=element.className;if(event.which!==3&&element!==this.buttons.play){this.stopSlideShow();}
157if(event.which===3||!this.isEl(event)||['BUTTON','VIDEO','INPUT','A'].indexOf(tagName)>-1){return;}
158if(tagName==='IMG'&&this.gallery.length>1){utils.addClass(this.DOM.holder,this.pre+'-dragging');}
159event.preventDefault();if(utils.hasClass(this.DOM.holder,this.pre+'-open-tooltip')){return;}
160if(!this.pointers.length){this.gesture.canClose=undefined;utils.handleEvents(this,window,this.dragEvents.move,'touchMove');utils.handleEvents(this,window,this.dragEvents.end,'touchEnd');}
161this.addPointer(event);if(className.indexOf('-thumb')<0){this.slider.stopAnimate();var cell=this.getCell();if(Math.round(cell.position.s*100)/100!==1||this.pointers.length===2||this.gesture.closeBy){cell.stopAnimate();}}else{this.thumbs.stopAnimate();}
162this.gestures('start');};proto.touchMove=function(event){this.updatePointer(event);var gesture=this.gesture;var pointerNb=this.pointers.length;var isSettle=this.isSliderSettle();this.switchPointers();this.gestures('move');if(gesture.type){this[gesture.type](event);utils.dispatchEvent(this,'modulobox',gesture.type+'Move',event,gesture);gesture.move=true;}
163else if((pointerNb===2&&isSettle)||Math.abs(gesture.dx)>this.options.threshold||Math.abs(gesture.dy)>this.options.threshold){gesture.sx+=gesture.dx;gesture.sy+=gesture.dy;gesture.canZoom=this.isZoomable();gesture.closeBy=false;gesture.type=Math.abs(gesture.dx)<Math.abs(gesture.dy)/2?false:'dragSlider';gesture.type=this.options.dragToClose&&!gesture.type&&isSettle?'panY':gesture.type;gesture.type=(this.options.pinchToZoom||this.states.zoom)&&gesture.canZoom&&isSettle&&(pointerNb===2||this.states.zoom)?'panZoom':gesture.type;gesture.type=this.options.pinchToClose&&gesture.scale<1&&isSettle&&pointerNb===2?'panZoom':gesture.type;gesture.type=event.target.className.indexOf('-thumb')>-1?'dragThumbs':gesture.type;if(gesture.type==='dragSlider'){this.setMedia();}
164if(['dragSlider','dragThumbs'].indexOf(gesture.type)>-1){var cell=this.getCell();cell.startAnimate();cell.releaseDrag();cell.animateTo({x:0,y:0,s:1});}
165if(gesture.type!=='dragSlider'){var slider=this.slider,slides=this.slides;var RTL=this.isRTL();if(-RTL*slider.position.x!==slides.index*slides.width){slider.startAnimate();slider.releaseDrag();}}
166if(gesture.type){this.pauseVideo();utils.dispatchEvent(this,'modulobox',gesture.type+'Start',event,gesture);if(this.gallery.length>1||gesture.type!=='dragSlider'){utils.addClass(this.DOM.holder,this.pre+'-dragging');}}}};proto.touchEnd=function(event){this.deletePointer(event);if(!this.pointers.length){utils.removeClass(this.DOM.holder,this.pre+'-dragging');utils.handleEvents(this,window,this.dragEvents.move,'touchMove',false);utils.handleEvents(this,window,this.dragEvents.end,'touchEnd',false);
166if(this.isSliderSettle()){var className=event.target.className;if(utils.hasClass(event.target,this.pre+'-video')){this.appendVideo();}else if(this.options.tapToClose&&!this.states.zoom&&(className===this.pre+'-item-inner'||className===this.pre+'-top-bar')&&Math.abs(this.gesture.dx)<this.options.threshold){this.close();return;}
167if(event.target.tagName==='IMG'){this.doubleTap(event);}}
168if(this.options.thumbnails&&!this.gesture.move){this.thumbClick(event);}
169var gestureEnd=this.gesture.type+'End';if(this.gesture.type&&typeof this[gestureEnd]==='function'){this[gestureEnd](event);utils.dispatchEvent(this,'modulobox',gestureEnd,event,this.gesture);}
170this.gesture.type=this.gesture.move=false;if(!this.states.open){return;}
171var cell=this.getCell();if(!cell.settle){cell.startAnimate();cell.releaseDrag();}
172var slider=this.slider;if(!slider.settle){slider.startAnimate();slider.releaseDrag();}}};proto.switchPointers=function(){if(this.gesture.type==='panZoom'&&this.pointers.length===1&&this.gesture.distance!==0){var moving=this.getCell();moving.stopAnimate();moving.startAnimate();this.gesture.move=false;this.gestures('start');this.gestures('move');}};proto.doubleTap=function(event){event.preventDefault();var touches=this.mapPointer(event),clientX=touches[0].clientX,clientY=touches[0].clientY;if(typeof this.tap!=='undefined'&&+new Date()-this.tap.delay<350&&Math.abs(this.tap.deltaX-clientX)<30&&Math.abs(this.tap.deltaY-clientY)<30){if(this.states.tapIdle){clearTimeout(this.states.tapIdle);}
173if(this.options.doubleTapToZoom){this.zoomTo(clientX,clientY);}
174this.tap=undefined;}else{if(this.browser.touchDevice&&this.options.timeToIdle&&!this.states.idle){this.states.tapIdle=setTimeout(function(){var method=!utils.hasClass(this.DOM.holder,this.pre+'-idle')?'add':'remove';utils[method+'Class'](this.DOM.holder,this.pre+'-idle');}.bind(this),350);}
175this.tap={delay:+new Date(),deltaX:touches[0].clientX,deltaY:touches[0].clientY};}};proto.isSliderSettle=function(){if(this.gesture.type){return false;}
176var RTL=this.isRTL(),slides=this.slides,width=slides.width,toSettle=Math.abs(RTL*this.slider.position.x+slides.index*width)/width*100;return toSettle<=3?true:false;};proto.mapPointer=function(event){return event.touches?event.changedTouches:[event];};proto.addPointer=function(event){var pointers=this.mapPointer(event);for(var i=0;i<pointers.length;i++){if(this.pointers.length<2&&['dragSlider','panY','dragThumbs'].indexOf(this.gesture.type)===-1){var ev=pointers[i],id=ev.pointerId!==undefined?ev.pointerId:ev.identifier;if(!this.getPointer(id)){this.pointers[this.pointers.length]={id:id,x:Math.round(ev.clientX),y:Math.round(ev.clientY)};}}}};proto.updatePointer=function(event){var pointers=this.mapPointer(event);for(var i=0;i<pointers.length;i++){var ev=pointers[i],id=ev.pointerId!==undefined?ev.pointerId:ev.identifier,pt=this.getPointer(id);if(pt){pt.x=Math.round(ev.clientX);pt.y=Math.round(ev.clientY);}}};proto.deletePointer=function(event){var pointers=this.mapPointer(event);for(var i=0;i<pointers.length;i++){var ev=pointers[i],id=ev.pointerId!==undefined?ev.pointerId:ev.identifier;for(var p=0;p<this.pointers.length;p++){if(this.pointers[p].id===id){this.pointers.splice(p,1);}}}};proto.getPointer=function(id){for(var k in this.pointers){if(this.pointers[k].id===id){return this.pointers[k];}}
177return null;};proto.gestures=function(type){var g=this.gesture,pointers=this.pointers,distance;if(!pointers.length){return;}
178g.direction=g.x?pointers[0].x>g.x?1:-1:0;g.x=pointers[0].x;g.y=pointers[0].y;if(pointers.length===2){var x2=pointers[1].x,y2=pointers[1].y;distance=this.getDistance([g.x,g.y],[x2,y2]);g.x=g.x-(g.x-x2)/2;g.y=g.y-(g.y-y2)/2;}
179if(type==='start'){g.dx=0;g.dy=0;g.sx=g.x;g.sy=g.y;g.distance=distance?distance:0;}else{g.dx=g.x-g.sx;g.dy=g.y-g.sy;g.scale=distance&&g.distance?distance/g.distance:1;}};proto.getDistance=function(p1,p2){var x=p2[0]-p1[0],y=p2[1]-p1[1];return Math.sqrt((x*x)+(y*y));};proto.panY=function(){var moving=this.getCell();moving.startAnimate();moving.updateDrag({x:moving.position.x,y:moving.start.y+this.gesture.dy,s:moving.position.s});};
179proto.panYEnd=function(){var posY=0,moving=this.getCell(),height=this.slider.height,resting=moving.resting.y;if(1-Math.abs(resting)/(height*0.5)<0.8){posY=Math.abs(resting)<height*0.5?Math.abs(resting)/resting*height*0.5:resting;this.close();moving.animateTo({x:0,y:posY,s:posY?moving.resting.s:1});moving.startAnimate();moving.releaseDrag();}};proto.panZoom=function(){var moving=this.getCell(),gesture=this.gesture,bound=this.mediaViewport(moving.position.s),minZoom=this.options.pinchToClose&&gesture.canClose?0.1:0.6,scale=Math.min(this.options.maxZoom*1.5,Math.max(minZoom,moving.start.s*gesture.scale)),posX=moving.start.x+gesture.dx,posY=moving.start.y+gesture.dy,centerX=gesture.sx-this.slider.width*0.5,centerY=gesture.sy-this.slider.height*0.5;if(!gesture.canZoom||(!this.options.pinchToZoom&&!this.states.zoom)){scale=Math.min(1,scale);}
180if(!this.options.pinchToZoom&&this.states.zoom){scale=moving.position.s;}
181if(!gesture.move&&this.pointers.length===1){moving.start.x+=posX>bound.left?posX-bound.left:posX<bound.right?posX-bound.right:0;moving.start.y+=posY>bound.bottom?posY-bound.bottom:posY<bound.top?posY-bound.top:0;}
182posX=gesture.dx+centerX+(moving.start.x-centerX)*(scale/moving.start.s);posY=gesture.dy+centerY+(moving.start.y-centerY)*(scale/moving.start.s);if(this.pointers.length===1){posX=posX>bound.left?(posX+bound.left)*0.5:posX<bound.right?(posX+bound.right)*0.5:posX;posY=posY>bound.bottom?(posY+bound.bottom)*0.5:posY<bound.top?(posY+bound.top)*0.5:posY;}
183moving.startAnimate();moving.updateDrag({x:posX,y:posY,s:scale});this.updateZoom(scale);};proto.panZoomEnd=function(){var moving=this.getCell(),gesture=this.gesture,scale=moving.resting.s>this.options.maxZoom?this.options.maxZoom:moving.resting.s<1?1:moving.resting.s,bound=this.mediaViewport(scale),posX,posY;if(Math.round(moving.resting.s*10)/10>this.options.maxZoom){var centerX=gesture.distance?gesture.sx-this.slider.width*0.5:0;var centerY=gesture.distance?gesture.sy-this.slider.height*0.5:0;posX=gesture.dx+centerX+(moving.start.x-centerX)*(scale/moving.start.s);posY=gesture.dy+centerY+(moving.start.y-centerY)*(scale/moving.start.s);posX=posX>bound.left?bound.left:posX<bound.right?bound.right:posX;posY=posY>bound.bottom?bound.bottom:posY<bound.top?bound.top:posY;}else{posX=moving.resting.x>bound.left?bound.left:moving.resting.x<bound.right?bound.right:undefined;posY=moving.resting.y>bound.bottom?bound.bottom:moving.resting.y<bound.top?bound.top:undefined;}
184if(this.options.pinchToClose&&moving.resting.s<0.8&&gesture.canClose){scale=moving.resting.s<0.3?moving.resting.s:0.15;posX=moving.resting.x;posY=moving.resting.y;this.close();}
185moving.animateTo({x:posX,y:posY,s:scale!==moving.resting.s?scale:undefined});moving.startAnimate();moving.releaseDrag();this.updateZoom(moving.resting.s);};proto.dragThumbs=function(){var moving=this.thumbs,bound=moving.bound,posX=moving.start.x+this.gesture.dx;if(!this.gesture.move){moving.start.x+=posX>bound.left?posX-bound.left:posX<bound.right?posX-bound.right:0;posX=moving.start.x+this.gesture.dx;}
186posX=posX>bound.left?(posX+bound.left)*0.5:posX<bound.right?(posX+bound.right)*0.5:posX;moving.startAnimate();moving.attraction.x=undefined;moving.updateDrag({x:posX});};proto.dragThumbsEnd=function(){var moving=this.thumbs,bound=moving.bound,posX=moving.resting.x;posX=posX>bound.left?bound.left:posX<bound.right?bound.right:posX;if(posX!==moving.resting.x){moving.animateTo({x:posX});}
187moving.startAnimate();moving.releaseDrag();};proto.dragSlider=function(){if(this.gallery.length===1){return;}
188var moving=this.slider,posX=moving.start.x+this.gesture.dx;if(!this.states.loop){var bound=moving.bound;if(!this.gesture.move){moving.start.x+=posX>bound.left?posX-bound.left:posX<bound.right?posX-bound.right:0;posX=moving.start.x+this.gesture.dx;}
189posX=posX>bound.left?(posX+bound.left)*0.5:posX<bound.right?(posX+bound.right)*0.5:posX;}
190moving.startAnimate();moving.updateDrag({x:posX});};proto.dragSliderEnd=function(){if(this.gallery.length===1){return;}
191var moving=this.slider,slides=this.slides,oldIndex=slides.index,RTL=this.isRTL(),restingX=moving.resting.x,positionX=moving.position.x;this.getRestingIndex(positionX,restingX);if(oldIndex!==slides.index){this.updateMediaInfo();}
192this.slider.animateTo({x:-RTL*slides.index*slides.width,y:undefined,s:undefined});moving.startAnimate();moving.releaseDrag();};proto.getRestingIndex=function(positionX,restingX){var direction=this.gesture.direction,gallery=this.gallery,slides=this.slides,deltaX=this.gesture.dx,RTL=this.isRTL(),index=Math.round(-RTL*positionX/sl
192ides.width),moved=Math.abs(restingX-positionX);if(Math.abs(deltaX)<slides.width*0.5&&moved){if(deltaX>0&&direction>0){index-=1*RTL;}else if(deltaX<0&&direction<0){index+=1*RTL;}}
193var gap=Math.max(-1,Math.min(1,index-slides.index));if(!this.states.loop&&((gallery.index+gap<0)||(gallery.index+gap>gallery.length-1))){return;}
194slides.index+=gap;};proto.shiftSlides=function(){var slides=this.slides,gallery=this.gallery,loop=this.states.loop,RTL=this.isRTL(),from=RTL*Math.round(-this.slider.position.x/slides.width)-2,to=from+5;if(!loop&&to>gallery.initialLength-1){from=gallery.initialLength-5;to=from+5;}
195if(!loop&&from<0){from=0;to=5;}
196for(var i=from;i<to;i++){var position=RTL*i*slides.width,slide_index=utils.modulo(slides.length,i),slide=slides[slide_index];if(slide.index!==i||slide.position!==position){slide.index=i;slide.position=position;slide.style.left=position+'px';}}
197if(this.states.open){this.setMedia(3);}};proto.shiftThumbs=function(thumbs){var child=this.DOM.thumbsInner.children,slider=this.slider,gallery=this.gallery,RTL=this.isRTL(),length=child.length,index=utils.modulo(gallery.initialLength,gallery.index),width=thumbs.size*(length)*0.5,center=Math.round((-RTL*thumbs.position.x+RTL*width*0.5)/thumbs.size),from=Math.max(0,center-Math.floor(length/2)),to=from+length;var tolerance=slider.width*0.5,boundLeft=thumbs.position.x+tolerance,boundRight=thumbs.position.x-slider.width-tolerance;if(to>gallery.initialLength){to=gallery.initialLength;from=to-length;}
198if(to===gallery.initialLength-1&&from-to<length){from=gallery.initialLength-length;}
199for(var i=from;i<to;i++){var thumb=child[utils.modulo(length,i)],position=RTL*i*thumbs.size+thumbs.gutter*0.5,className=this.pre+'-active-thumb',isActive=utils.hasClass(thumb,className);if(thumb.index!==i||thumb.position!==position){thumb.index=i;thumb.position=position;thumb.style.left=position+'px';}
200this.setThumbSize(thumb,thumbs);if(-thumb.position<=boundLeft&&-thumb.position>=boundRight&&thumb.media!==i){this.loadThumb(thumb,i);}
201if(isActive&&index!==i){utils.removeClass(thumb,className);}else if(!isActive&&index===i){utils.addClass(thumb,className);}}};proto.setThumbSize=function(thumb,thumbs){if(thumb.width!==thumbs.width||thumb.height!==thumbs.height||thumb.gutter!==thumbs.gutter){thumb.width=thumbs.width;thumb.height=thumbs.height;thumb.gutter=thumbs.gutter;thumb.style.width=thumbs.width+'px';thumb.style.height=thumbs.height+'px';}};proto.willClose=function(cell){var opacity=this.DOM.overlay.style.opacity,canClose=this.gesture.canClose,gestureType=this.gesture.type,gestureClose=this.gesture.closeBy,pinchToClose=gestureType==='panZoom'||gestureClose==='panZoom',dragYToClose=gestureType==='panY'||gestureClose==='panY';if(cell.position.s>1.1&&typeof canClose==='undefined'){this.gesture.canClose=false;}else if(cell.position.s<1&&typeof canClose==='undefined'){this.gesture.canClose=true;}
202if(this.options.pinchToClose&&pinchToClose&&this.gesture.canClose){opacity=cell.position.s;this.gesture.closeBy='panZoom';}else if(dragYToClose){opacity=1-Math.abs(cell.position.y)/(this.slider.height*0.5);this.gesture.closeBy='panY';}else if(opacity&&opacity<1){opacity=1;this.gesture.closeBy=false;}
203opacity=!opacity?1:Math.max(0,Math.min(1,opacity));var method=opacity<=0.8||!opacity?'add':'remove';utils[method+'Class'](this.DOM.holder,this.pre+'-will-close');this.DOM.overlay.style.opacity=opacity;};proto.prev=utils.throttle(function(){if(!this.gesture.move){this.slideTo(this.slides.index-1*this.isRTL());}},120);proto.next=utils.throttle(function(){if(!this.gesture.move){this.slideTo(this.slides.index+1*this.isRTL());}},120);proto.slideTo=function(to,slideShow){var slides=this.slides,gallery=this.gallery,holder=this.DOM.slider,RTL=this.isRTL(),length=gallery.initialLength,moduloTo=utils.modulo(length,to),moduloFrom=utils.modulo(length,gallery.index),slideBy=moduloTo-moduloFrom,fromEnds=length-Math.abs(slideBy);if(!this.states.loop&&(to<0||to>this.gallery.initialLength-1)){return;}
204if(this.states.loop&&fromEnds<3&&fromEnds*2<length){slideBy=slideBy<0?fromEnds:-fromEnds;}
205if(moduloTo===to){to=slides.index+slideBy;}
206slideBy=to-slides.index;if(!slideBy){return;}
207if(this.states.zoom){this.zoom();}
208this.pauseVideo();this.share();if(!slideShow){this.stopSlideShow();}
209slides.index=to;var slider=this.slider;if(Math.abs(slideBy)>2){utils.addClass(holder,this.pre+'-hide');this.setSliderPosition(slider,slides);this.setSlidesPositions(slides);var moveBy=RTL*slides.width*Math.min(2,Math.abs(slideBy))*Math.abs(slideBy)/slideBy;slider.position.x=slider.attraction.x=slider.position.x+moveBy;utils.translate(holder,slider.position.x,0);holder.getClientRects();}
210this.updateMediaInfo();utils.removeClass(holder,this.pre+'-hide');slider.startAnimate();slider.releaseDrag();slider.animateTo({x:-RTL*to*slides.width,y:0,s:undefined});};proto.keyDown=function(event){var key=event.keyCode,opt=this.options;if(opt.prevNextKey){if(key===37){this.prev(event);}else if(key===39){this.next(event);}}
211if(key===27&&opt.escapeToClose){this.close();}
212if(!opt.mouseWheel&&[32,33,34,35,36,38,40].indexOf(key)>-1){event.preventDefault();return false;}};proto.zoom=function(){this.zoomTo();};proto.zoomTo=function(x,y,scale){if(!this.isSliderSettle()||(!this.isZoomable()&&scale>1)){return;}
213this.gesture.closeBy=false;var media=this.getMedia();scale=scale?scale:this.states.zoom?1:media.dom.size.scale;var cell=this.getCell(),bound=this.mediaViewport(scale),centX=x?x-this.slider.width*0.5:0,centY=y?y-this.slider.height*0.5:0,PosX=scale>1?Math.ceil(centX+(cell.position.x-centX)*(scale/cell.position.s)):0,PosY=scale>1?Math.ceil(centY+(cell.position.y-centY)*(scale/cell.position.s)):0;cell.startAnimate();cell.releaseDrag();cell.animateTo({x:PosX>bound.left?bound.left:PosX<bound.right?bound.right:PosX,y:PosY>bound.bottom?bound.bottom:PosY<bound.top?bound.top:PosY,s:scale});this.updateZoom(scale);};proto.updateZoom=function(scale){this.states.zoom=scale>1?true:false;utils[this.states.zoom?'addClass':'removeClass'](this.DOM.holder,this.pre+'-panzoom');};proto.destroy=function(){if(!this.GUID){return;}
214if(this.states.open){this.close();}
215var selectors=this.options.mediaSelector,sources='';try{sources=document.querySelectorAll(selectors);}catch(error){}
216for(var i=0,l=sources.length;i<l;i++){var source=sources[i];if(source.mobxListener){source.removeEventListener('click',source.mobxListener,false);}}
217this.bindEvents(false);this.slider.resetAnimate();for(i=0;i<this.slides.length;i++){this.cells[i].resetAnimate();}
218if(this.thumbs){this.thumbs.resetAnimate();}
219this.DOM.holder.parentNode.removeChild(this.DOM.holder);this.DOM.comment.parentNode.removeChild(this.DOM.comment);delete instances[this.GUID];delete this.DOM.holder.GUID;delete this.GUID;};if(typeof jQuery!=='undefined'){(function($){$.ModuloBox=function(options){return new ModuloBox(options);};})(jQuery);}
220return ModuloBox;}));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.