(function(global, factory){
if(typeof define=='function'&&define.amd){
define('ev-emitter/ev-emitter',factory);
}else if(typeof module=='object'&&module.exports){
module.exports=factory();
}else{
global.EvEmitter=factory();
}}(typeof window!='undefined' ? window:this, function(){
function EvEmitter(){}
var proto=EvEmitter.prototype;
proto.on=function(eventName, listener){
if(!eventName||!listener){
return;
}
var events=this._events=this._events||{};
var listeners=events[ eventName ]=events[ eventName ]||[];
if(listeners.indexOf(listener)==-1){
listeners.push(listener);
}
return this;
};
proto.once=function(eventName, listener){
if(!eventName||!listener){
return;
}
this.on(eventName, listener);
var onceEvents=this._onceEvents=this._onceEvents||{};
var onceListeners=onceEvents[ eventName ]=onceEvents[ eventName ]||{};
onceListeners[ listener ]=true;
return this;
};
proto.off=function(eventName, listener){
var listeners=this._events&&this._events[ eventName ];
if(!listeners||!listeners.length){
return;
}
var index=listeners.indexOf(listener);
if(index!=-1){
listeners.splice(index, 1);
}
return this;
};
proto.emitEvent=function(eventName, args){
var listeners=this._events&&this._events[ eventName ];
if(!listeners||!listeners.length){
return;
}
var i=0;
var 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 ];
}
listener.apply(this, args);
i +=isOnce ? 0:1;
listener=listeners[i];
}
return this;
};
proto.allOff =
proto.removeAllListeners=function(){
delete this._events;
delete this._onceEvents;
};
return EvEmitter;
}));
(function(window, factory){ 'use strict';
if(typeof define=='function'&&define.amd){
define([
'ev-emitter/ev-emitter'
], function(EvEmitter){
return factory(window, EvEmitter);
});
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
window,
require('ev-emitter')
);
}else{
window.imagesLoaded=factory(
window,
window.EvEmitter
);
}})(typeof window!=='undefined' ? window:this,
function factory(window, EvEmitter){
var $=window.jQuery;
var console=window.console;
function extend(a, b){
for(var prop in b){
a[ prop ]=b[ prop ];
}
return a;
}
function makeArray(obj){
var ary=[];
if(Array.isArray(obj) ){
ary=obj;
}else if(typeof obj.length=='number'){
for(var i=0; i < obj.length; i++){
ary.push(obj[i]);
}}else{
ary.push(obj);
}
return ary;
}
function ImagesLoaded(elem, options, onAlways){
if(!(this instanceof ImagesLoaded) ){
return new ImagesLoaded(elem, options, onAlways);
}
if(typeof elem=='string'){
elem=document.querySelectorAll(elem);
}
this.elements=makeArray(elem);
this.options=extend( {}, this.options);
if(typeof options=='function'){
onAlways=options;
}else{
extend(this.options, options);
}
if(onAlways){
this.on('always', onAlways);
}
this.getImages();
if($){
this.jqDeferred=new $.Deferred();
}
setTimeout(function(){
this.check();
}.bind(this));
}
ImagesLoaded.prototype=Object.create(EvEmitter.prototype);
ImagesLoaded.prototype.options={};
ImagesLoaded.prototype.getImages=function(){
this.images=[];
this.elements.forEach(this.addElementImages, this);
};
ImagesLoaded.prototype.addElementImages=function(elem){
if(elem.nodeName=='IMG'){
this.addImage(elem);
}
if(this.options.background===true){
this.addElementBackgroundImages(elem);
}
var nodeType=elem.nodeType;
if(!nodeType||!elementNodeTypes[ nodeType ]){
return;
}
var childImgs=elem.querySelectorAll('img');
for(var i=0; i < childImgs.length; i++){
var img=childImgs[i];
this.addImage(img);
}
if(typeof this.options.background=='string'){
var children=elem.querySelectorAll(this.options.background);
for(i=0; i < children.length; i++){
var child=children[i];
this.addElementBackgroundImages(child);
}}
};
var elementNodeTypes={
1: true,
9: true,
11: true
};
ImagesLoaded.prototype.addElementBackgroundImages=function(elem){
var style=getComputedStyle(elem);
if(!style){
return;
}
var reURL=/url\((['"])?(.*?)\1\)/gi;
var matches=reURL.exec(style.backgroundImage);
while(matches!==null){
var url=matches&&matches[2];
if(url){
this.addBackground(url, elem);
}
matches=reURL.exec(style.backgroundImage);
}};
ImagesLoaded.prototype.addImage=function(img){
var loadingImage=new LoadingImage(img);
this.images.push(loadingImage);
};
ImagesLoaded.prototype.addBackground=function(url, elem){
var background=new Background(url, elem);
this.images.push(background);
};
ImagesLoaded.prototype.check=function(){
var _this=this;
this.progressedCount=0;
this.hasAnyBroken=false;
if(!this.images.length){
this.complete();
return;
}
function onProgress(image, elem, message){
setTimeout(function(){
_this.progress(image, elem, message);
});
}
this.images.forEach(function(loadingImage){
loadingImage.once('progress', onProgress);
loadingImage.check();
});
};
ImagesLoaded.prototype.progress=function(image, elem, message){
this.progressedCount++;
this.hasAnyBroken=this.hasAnyBroken||!image.isLoaded;
this.emitEvent('progress', [ this, image, elem ]);
if(this.jqDeferred&&this.jqDeferred.notify){
this.jqDeferred.notify(this, image);
}
if(this.progressedCount==this.images.length){
this.complete();
}
if(this.options.debug&&console){
console.log('progress: ' + message, image, elem);
}};
ImagesLoaded.prototype.complete=function(){
var eventName=this.hasAnyBroken ? 'fail':'done';
this.isComplete=true;
this.emitEvent(eventName, [ this ]);
this.emitEvent('always', [ this ]);
if(this.jqDeferred){
var jqMethod=this.hasAnyBroken ? 'reject':'resolve';
this.jqDeferred[ jqMethod ](this);
}};
function LoadingImage(img){
this.img=img;
}
LoadingImage.prototype=Object.create(EvEmitter.prototype);
LoadingImage.prototype.check=function(){
var isComplete=this.getIsImageComplete();
if(isComplete){
this.confirm(this.img.naturalWidth!==0, 'naturalWidth');
return;
}
this.proxyImage=new Image();
this.proxyImage.addEventListener('load', this);
this.proxyImage.addEventListener('error', this);
this.img.addEventListener('load', this);
this.img.addEventListener('error', this);
this.proxyImage.src=this.img.src;
};
LoadingImage.prototype.getIsImageComplete=function(){
return this.img.complete&&this.img.naturalWidth!==undefined;
};
LoadingImage.prototype.confirm=function(isLoaded, message){
this.isLoaded=isLoaded;
this.emitEvent('progress', [ this, this.img, message ]);
};
LoadingImage.prototype.handleEvent=function(event){
var method='on' + event.type;
if(this[ method ]){
this[ method ](event);
}};
LoadingImage.prototype.onload=function(){
this.confirm(true, 'onload');
this.unbindEvents();
};
LoadingImage.prototype.onerror=function(){
this.confirm(false, 'onerror');
this.unbindEvents();
};
LoadingImage.prototype.unbindEvents=function(){
this.proxyImage.removeEventListener('load', this);
this.proxyImage.removeEventListener('error', this);
this.img.removeEventListener('load', this);
this.img.removeEventListener('error', this);
};
function Background(url, element){
this.url=url;
this.element=element;
this.img=new Image();
}
Background.prototype=Object.create(LoadingImage.prototype);
Background.prototype.check=function(){
this.img.addEventListener('load', this);
this.img.addEventListener('error', this);
this.img.src=this.url;
var isComplete=this.getIsImageComplete();
if(isComplete){
this.confirm(this.img.naturalWidth!==0, 'naturalWidth');
this.unbindEvents();
}};
Background.prototype.unbindEvents=function(){
this.img.removeEventListener('load', this);
this.img.removeEventListener('error', this);
};
Background.prototype.confirm=function(isLoaded, message){
this.isLoaded=isLoaded;
this.emitEvent('progress', [ this, this.element, message ]);
};
ImagesLoaded.makeJQueryPlugin=function(jQuery){
jQuery=jQuery||window.jQuery;
if(!jQuery){
return;
}
$=jQuery;
$.fn.imagesLoaded=function(options, callback){
var instance=new ImagesLoaded(this, options, callback);
return instance.jqDeferred.promise($(this));
};};
ImagesLoaded.makeJQueryPlugin();
return ImagesLoaded;
});
(function($, window, undefined){
var lastTime=0,
running,
animate=function (elem){
if(running){
window.requestAnimationFrame(animate, elem);
jQuery.fx.tick();
}},
vendors=['ms', 'moz', 'webkit', 'o'];
for(var x=0, len=vendors.length; x < len&&!window.requestAnimationFrame; ++x){
window.requestAnimationFrame=window[vendors[x]+'RequestAnimationFrame'];
window.cancelAnimationFrame=window[vendors[x]+'CancelAnimationFrame']
|| window[vendors[x]+'CancelRequestAnimationFrame'];
}
if(!window.requestAnimationFrame)
window.requestAnimationFrame=function(fn, element){
var currTime=new Date().getTime(),
delta=currTime - lastTime,
timeToCall=Math.max(0, 16 - delta);
var id=window.setTimeout(function(){
fn(currTime + timeToCall);
},
timeToCall
);
lastTime=currTime + timeToCall;
return id;
};
if(!window.cancelAnimationFrame){
window.cancelAnimationFrame=function(id){
clearTimeout(id);
};}
jQuery.fx.timer=function (timer){
if(timer()&&jQuery.timers.push(timer)&&!running){
running=true;
animate(timer.elem);
}};
jQuery.fx.stop=function(){
running=false;
};}(jQuery, this));
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
jQuery.easing['jswing']=jQuery.easing['swing'];
jQuery.extend(jQuery.easing,
{
def: 'easeOutQuad',
swing: function (x, t, b, c, d){
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
},
easeInQuad: function (x, t, b, c, d){
return c*(t/=d)*t + b;
},
easeOutQuad: function (x, t, b, c, d){
return -c *(t/=d)*(t-2) + b;
},
easeInOutQuad: function (x, t, b, c, d){
if((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
},
easeInCubic: function (x, t, b, c, d){
return c*(t/=d)*t*t + b;
},
easeOutCubic: function (x, t, b, c, d){
return c*((t=t/d-1)*t*t + 1) + b;
},
easeInOutCubic: function (x, t, b, c, d){
if((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
},
easeInQuart: function (x, t, b, c, d){
return c*(t/=d)*t*t*t + b;
},
easeOutQuart: function (x, t, b, c, d){
return -c * ((t=t/d-1)*t*t*t - 1) + b;
},
easeInOutQuart: function (x, t, b, c, d){
if((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 * ((t-=2)*t*t*t - 2) + b;
},
easeInQuint: function (x, t, b, c, d){
return c*(t/=d)*t*t*t*t + b;
},
easeOutQuint: function (x, t, b, c, d){
return c*((t=t/d-1)*t*t*t*t + 1) + b;
},
easeInOutQuint: function (x, t, b, c, d){
if((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
return c/2*((t-=2)*t*t*t*t + 2) + b;
},
easeInSine: function (x, t, b, c, d){
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
},
easeOutSine: function (x, t, b, c, d){
return c * Math.sin(t/d * (Math.PI/2)) + b;
},
easeInOutSine: function (x, t, b, c, d){
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
},
easeInExpo: function (x, t, b, c, d){
return (t==0) ? b:c * Math.pow(2, 10 * (t/d - 1)) + b;
},
easeOutExpo: function (x, t, b, c, d){
return (t==d) ? b+c:c * (-Math.pow(2, -10 * t/d) + 1) + b;
},
easeInOutExpo: function (x, t, b, c, d){
if(t==0) return b;
if(t==d) return b+c;
if((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
},
easeInCirc: function (x, t, b, c, d){
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
},
easeOutCirc: function (x, t, b, c, d){
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
},
easeInOutCirc: function (x, t, b, c, d){
if((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
},
easeInElastic: function (x, t, b, c, d){
var s=1.70158;var p=0;var a=c;
if(t==0) return b;  if((t/=d)==1) return b+c;  if(!p) p=d*.3;
if(a < Math.abs(c)){ a=c; var s=p/4; }
else var s=p/(2*Math.PI) * Math.asin (c/a);
return -(a*Math.pow(2,10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p)) + b;
},
easeOutElastic: function (x, t, b, c, d){
var s=1.70158;var p=0;var a=c;
if(t==0) return b;  if((t/=d)==1) return b+c;  if(!p) p=d*.3;
if(a < Math.abs(c)){ a=c; var s=p/4; }
else var s=p/(2*Math.PI) * Math.asin (c/a);
return a*Math.pow(2,-10*t) * Math.sin((t*d-s)*(2*Math.PI)/p) + c + b;
},
easeInOutElastic: function (x, t, b, c, d){
var s=1.70158;var p=0;var a=c;
if(t==0) return b;  if((t/=d/2)==2) return b+c;  if(!p) p=d*(.3*1.5);
if(a < Math.abs(c)){ a=c; var s=p/4; }
else var s=p/(2*Math.PI) * Math.asin (c/a);
if(t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p)) + b;
return a*Math.pow(2,-10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p)*.5 + c + b;
},
easeInBack: function (x, t, b, c, d, s){
if(s==undefined) s=1.70158;
return c*(t/=d)*t*((s+1)*t - s) + b;
},
easeOutBack: function (x, t, b, c, d, s){
if(s==undefined) s=1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
},
easeInOutBack: function (x, t, b, c, d, s){
if(s==undefined) s=1.70158;
if((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
},
easeInBounce: function (x, t, b, c, d){
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
},
easeOutBounce: function (x, t, b, c, d){
if((t/=d) < (1/2.75)){
return c*(7.5625*t*t) + b;
}else if(t < (2/2.75)){
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
}else if(t < (2.5/2.75)){
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
}else{
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
}},
easeInOutBounce: function (x, t, b, c, d){
if(t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
}});
(function(){var t=[].indexOf||function(t){for(var e=0,n=this.length;e<n;e++){if(e in this&&this[e]===t)return e}return-1},e=[].slice;(function(t,e){if(typeof define==="function"&&define.amd){return define("waypoints",["jquery"],function(n){return e(n,t)})}else{return e(t.jQuery,t)}})(this,function(n,r){var i,o,l,s,f,u,a,c,h,d,p,y,v,w,g,m;i=n(r);c=t.call(r,"ontouchstart")>=0;s={horizontal:{},vertical:{}};f=1;a={};u="waypoints-context-id";p="resize.waypoints";y="scroll.waypoints";v=1;w="waypoints-waypoint-ids";g="waypoint";m="waypoints";o=function(){function t(t){var e=this;this.$element=t;this.element=t[0];this.didResize=false;this.didScroll=false;this.id="context"+f++;this.oldScroll={x:t.scrollLeft(),y:t.scrollTop()};this.waypoints={horizontal:{},vertical:{}};t.data(u,this.id);a[this.id]=this;t.bind(y,function(){var t;if(!(e.didScroll||c)){e.didScroll=true;t=function(){e.doScroll();return e.didScroll=false};return r.setTimeout(t,n[m].settings.scrollThrottle)}});t.bind(p,function(){var t;if(!e.didResize){e.didResize=true;t=function(){n[m]("refresh");return e.didResize=false};return r.setTimeout(t,n[m].settings.resizeThrottle)}})}t.prototype.doScroll=function(){var t,e=this;t={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};if(c&&(!t.vertical.oldScroll||!t.vertical.newScroll)){n[m]("refresh")}n.each(t,function(t,r){var i,o,l;l=[];o=r.newScroll>r.oldScroll;i=o?r.forward:r.backward;n.each(e.waypoints[t],function(t,e){var n,i;if(r.oldScroll<(n=e.offset)&&n<=r.newScroll){return l.push(e)}else if(r.newScroll<(i=e.offset)&&i<=r.oldScroll){return l.push(e)}});l.sort(function(t,e){return t.offset-e.offset});if(!o){l.reverse()}return n.each(l,function(t,e){if(e.options.continuous||t===l.length-1){return e.trigger([i])}})});return this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}};t.prototype.refresh=function(){var t,e,r,i=this;r=n.isWindow(this.element);e=this.$element.offset();this.doScroll();t={horizontal:{contextOffset:r?0:e.left,contextScroll:r?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:r?0:e.top,contextScroll:r?0:this.oldScroll.y,contextDimension:r?n[m]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};return n.each(t,function(t,e){return n.each(i.waypoints[t],function(t,r){var i,o,l,s,f;i=r.options.offset;l=r.offset;o=n.isWindow(r.element)?0:r.$element.offset()[e.offsetProp];if(n.isFunction(i)){i=i.apply(r.element)}else if(typeof i==="string"){i=parseFloat(i);if(r.options.offset.indexOf("%")>-1){i=Math.ceil(e.contextDimension*i/100)}}r.offset=o-e.contextOffset+e.contextScroll-i;if(r.options.onlyOnScroll&&l!=null||!r.enabled){return}if(l!==null&&l<(s=e.oldScroll)&&s<=r.offset){return r.trigger([e.backward])}else if(l!==null&&l>(f=e.oldScroll)&&f>=r.offset){return r.trigger([e.forward])}else if(l===null&&e.oldScroll>=r.offset){return r.trigger([e.forward])}})})};t.prototype.checkEmpty=function(){if(n.isEmptyObject(this.waypoints.horizontal)&&n.isEmptyObject(this.waypoints.vertical)){this.$element.unbind([p,y].join(" "));return delete a[this.id]}};return t}();l=function(){function t(t,e,r){var i,o;r=n.extend({},n.fn[g].defaults,r);if(r.offset==="bottom-in-view"){r.offset=function(){var t;t=n[m]("viewportHeight");if(!n.isWindow(e.element)){t=e.$element.height()}return t-n(this).outerHeight()}}this.$element=t;this.element=t[0];this.axis=r.horizontal?"horizontal":"vertical";this.callback=r.handler;this.context=e;this.enabled=r.enabled;this.id="waypoints"+v++;this.offset=null;this.options=r;e.waypoints[this.axis][this.id]=this;s[this.axis][this.id]=this;i=(o=t.data(w))!=null?o:[];i.push(this.id);t.data(w,i)}t.prototype.trigger=function(t){if(!this.enabled){return}if(this.callback!=null){this.callback.apply(this.element,t)}if(this.options.triggerOnce){return this.destroy()}};t.prototype.disable=function(){return this.enabled=false};t.prototype.enable=function(){this.context.refresh();return this.enabled=true};t.prototype.destroy=function(){delete s[this.axis][this.id];delete this.context.waypoints[this.axis][this.id];return this.context.checkEmpty()};t.getWaypointsByElement=function(t){var e,r;r=n(t).data(w);if(!r){return[]}e=n.extend({},s.horizontal,s.vertical);return n.map(r,function(t){return e[t]})};return t}();d={init:function(t,e){var r;if(e==null){e={}}if((r=e.handler)==null){e.handler=t}this.each(function(){var t,r,i,s;t=n(this);i=(s=e.context)!=null?s:n.fn[g].defaults.context;if(!n.isWindow(i)){i=t.closest(i)}i=n(i);r=a[i.data(u)];if(!r){r=new o(i)}return new l(t,r,e)});n[m]("refresh");return this},disable:function(){return d._invoke(this,"disable")},enable:function(){return d._invoke(this,"enable")},destroy:function(){return d._invoke(this,"destroy")},prev:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(e>0){return t.push(n[e-1])}})},next:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(e<n.length-1){return t.push(n[e+1])}})},_traverse:function(t,e,i){var o,l;if(t==null){t="vertical"}if(e==null){e=r}l=h.aggregate(e);o=[];this.each(function(){var e;e=n.inArray(this,l[t]);return i(o,e,l[t])});return this.pushStack(o)},_invoke:function(t,e){t.each(function(){var t;t=l.getWaypointsByElement(this);return n.each(t,function(t,n){n[e]();return true})});return this}};n.fn[g]=function(){var t,r;r=arguments[0],t=2<=arguments.length?e.call(arguments,1):[];if(d[r]){return d[r].apply(this,t)}else if(n.isFunction(r)){return d.init.apply(this,arguments)}else if(n.isPlainObject(r)){return d.init.apply(this,[null,r])}else if(!r){return n.error("jQuery Waypoints needs a callback function or handler option.")}else{return n.error("The "+r+" method does not exist in jQuery Waypoints.")}};n.fn[g].defaults={context:r,continuous:true,enabled:true,horizontal:false,offset:0,triggerOnce:false};h={refresh:function(){return n.each(a,function(t,e){return e.refresh()})},viewportHeight:function(){var t;return(t=r.innerHeight)!=null?t:i.height()},aggregate:function(t){var e,r,i;e=s;if(t){e=(i=a[n(t).data(u)])!=null?i.waypoints:void 0}if(!e){return[]}r={horizontal:[],vertical:[]};n.each(r,function(t,i){n.each(e[t],function(t,e){return i.push(e)});i.sort(function(t,e){return t.offset-e.offset});r[t]=n.map(i,function(t){return t.element});return r[t]=n.unique(r[t])});return r},above:function(t){if(t==null){t=r}return h._filter(t,"vertical",function(t,e){return e.offset<=t.oldScroll.y})},below:function(t){if(t==null){t=r}return h._filter(t,"vertical",function(t,e){return e.offset>t.oldScroll.y})},left:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset<=t.oldScroll.x})},right:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset>t.oldScroll.x})},enable:function(){return h._invoke("enable")},disable:function(){return h._invoke("disable")},destroy:function(){return h._invoke("destroy")},extendFn:function(t,e){return d[t]=e},_invoke:function(t){var e;e=n.extend({},s.vertical,s.horizontal);return n.each(e,function(e,n){n[t]();return true})},_filter:function(t,e,r){var i,o;i=a[n(t).data(u)];if(!i){return[]}o=[];n.each(i.waypoints[e],function(t,e){if(r(i,e)){return o.push(e)}});o.sort(function(t,e){return t.offset-e.offset});return n.map(o,function(t){return t.element})}};n[m]=function(){var t,n;n=arguments[0],t=2<=arguments.length?e.call(arguments,1):[];if(h[n]){return h[n].apply(null,t)}else{return h.aggregate.call(null,n)}};n[m].settings={resizeThrottle:100,scrollThrottle:30};return i.load(function(){return n[m]("refresh")})})}).call(this);
/* Tooltipster v3.2.4 */;(function(e,t,n){function s(t,n){this.bodyOverflowX;this.callbacks={hide:[],show:[]};this.checkInterval=null;this.Content;this.$el=e(t);this.$elProxy;this.elProxyPosition;this.enabled=true;this.options=e.extend({},i,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.Status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this._init()}function o(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function f(){return!a&&u}function l(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i<v.length;i++){if(typeof t[v[i]+r]=="string"){return true}}return false}var r="tooltipster",i={animation:"fade",arrow:true,arrowColor:"",autoClose:true,content:null,contentAsHTML:false,contentCloning:true,delay:200,minWidth:0,maxWidth:null,functionInit:function(e,t){},functionBefore:function(e,t){t()},functionReady:function(e,t){},functionAfter:function(e){},icon:"(?)",iconCloning:true,iconDesktop:false,iconTouch:false,iconTheme:"tooltipster-icon",interactive:false,interactiveTolerance:350,multiple:false,offsetX:0,offsetY:0,onlyOne:false,position:"top",positionTracker:false,speed:350,timer:0,theme:"tooltipster-default",touchDevices:true,trigger:"hover",updateAnimation:true};s.prototype={_init:function(){var t=this;if(n.querySelector){if(t.options.content!==null){t._content_set(t.options.content)}else{var r=t.$el.attr("title");if(typeof r==="undefined")r=null;t._content_set(r)}var i=t.options.functionInit.call(t.$el,t.$el,t.Content);if(typeof i!=="undefined")t._content_set(i);t.$el.removeAttr("title").addClass("tooltipstered");if(!u&&t.options.iconDesktop||u&&t.options.iconTouch){if(typeof t.options.icon==="string"){t.$elProxy=e('<span class="'+t.options.iconTheme+'"></span>');t.$elProxy.text(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){if(!f()||t.options.touchDevices){t.mouseIsOverProxy=true;t._show()}}).on("mouseleave."+t.namespace,function(){if(!f()||t.options.touchDevices){t.mouseIsOverProxy=false}});if(u&&t.options.touchDevices){t.$elProxy.on("touchstart."+t.namespace,function(){t._showNow()})}}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){if(!f()||t.options.touchDevices){t._show()}})}}},_show:function(){var e=this;if(e.Status!="shown"&&e.Status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e._showNow()}},e.options.delay)}else e._showNow()}},_showNow:function(n){var r=this;r.options.functionBefore.call(r.$el,r.$el,function(){if(r.enabled&&r.Content!==null){if(n)r.callbacks.show.push(n);r.callbacks.hide=[];clearTimeout(r.timerShow);r.timerShow=null;clearTimeout(r.timerHide);r.timerHide=null;if(r.options.onlyOne){e(".tooltipstered").not(r.$el).each(function(t,n){var r=e(n),i=r.data("tooltipster-ns");e.each(i,function(e,t){var n=r.data(t),i=n.status(),s=n.option("autoClose");if(i!=="hidden"&&i!=="disappearing"&&s){n.hide()}})})}var i=function(){r.Status="shown";e.each(r.callbacks.show,function(e,t){t.call(r.$el)});r.callbacks.show=[]};if(r.Status!=="hidden"){var s=0;if(r.Status==="disappearing"){r.Status="appearing";if(l()){r.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+r.options.animation+"-show");if(r.options.speed>0)r.$tooltip.delay(r.options.speed);r.$tooltip.queue(i)}else{r.$tooltip.stop().fadeIn(i)}}else if(r.Status==="shown"){i()}}else{r.Status="appearing";var s=r.options.speed;r.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var o="tooltipster-"+r.options.animation,a="-webkit-transition-duration: "+r.options.speed+"ms; -webkit-animation-duration: "+r.options.speed+"ms; -moz-transition-duration: "+r.options.speed+"ms; -moz-animation-duration: "+r.options.speed+"ms; -o-transition-duration: "+r.options.speed+"ms; -o-animation-duration: "+r.options.speed+"ms; -ms-transition-duration: "+r.options.speed+"ms; -ms-animation-duration: "+r.options.speed+"ms; transition-duration: "+r.options.speed+"ms; animation-duration: "+r.options.speed+"ms;",f=r.options.minWidth?"min-width:"+Math.round(r.options.minWidth)+"px;":"",c=r.options.maxWidth?"max-width:"+Math.round(r.options.maxWidth)+"px;":"",h=r.options.interactive?"pointer-events: auto;":"";r.$tooltip=e('<div class="tooltipster-base '+r.options.theme+'" style="'+f+" "+c+" "+h+" "+a+'"><div class="tooltipster-content"></div></div>');if(l())r.$tooltip.addClass(o);r._content_insert();r.$tooltip.appendTo("body");r.reposition();r.options.functionReady.call(r.$el,r.$el,r.$tooltip);if(l()){r.$tooltip.addClass(o+"-show");if(r.options.speed>0)r.$tooltip.delay(r.options.speed);r.$tooltip.queue(i)}else{r.$tooltip.css("display","none").fadeIn(r.options.speed,i)}r._interval_set();e(t).on("scroll."+r.namespace+" resize."+r.namespace,function(){r.reposition()});if(r.options.autoClose){e("body").off("."+r.namespace);if(r.options.trigger=="hover"){if(u){setTimeout(function(){e("body").on("touchstart."+r.namespace,function(){r.hide()})},0)}if(r.options.interactive){if(u){r.$tooltip.on("touchstart."+r.namespace,function(e){e.stopPropagation()})}var p=null;r.$elProxy.add(r.$tooltip).on("mouseleave."+r.namespace+"-autoClose",function(){clearTimeout(p);p=setTimeout(function(){r.hide()},r.options.interactiveTolerance)}).on("mouseenter."+r.namespace+"-autoClose",function(){clearTimeout(p)})}else{r.$elProxy.on("mouseleave."+r.namespace+"-autoClose",function(){r.hide()})}}else if(r.options.trigger=="click"){setTimeout(function(){e("body").on("click."+r.namespace+" touchstart."+r.namespace,function(){r.hide()})},0);if(r.options.interactive){r.$tooltip.on("click."+r.namespace+" touchstart."+r.namespace,function(e){e.stopPropagation()})}}}}if(r.options.timer>0){r.timerHide=setTimeout(function(){r.timerHide=null;r.hide()},r.options.timer+s)}}})},_interval_set:function(){var t=this;t.checkInterval=setInterval(function(){if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.Status=="hidden"||e("body").find(t.$tooltip).length===0){if(t.Status=="shown"||t.Status=="appearing")t.hide();t._interval_cancel()}else{if(t.options.positionTracker){var n=t._repositionInfo(t.$elProxy),r=false;if(o(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(o(n.position,t.elProxyPosition.position))r=true}else{if(o(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.reposition()}}}},200)},_interval_cancel:function(){clearInterval(this.checkInterval);this.checkInterval=null},_content_set:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.Content=e},_content_insert:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.Content==="string"&&!e.options.contentAsHTML){t.text(e.Content)}else{t.empty().append(e.Content)}},_update:function(e){var t=this;t._content_set(e);if(t.Content!==null){if(t.Status!=="hidden"){t._content_insert();t.reposition();if(t.options.updateAnimation){if(l()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.Status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.Status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.Status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hide()}},_repositionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},hide:function(n){var r=this;if(n)r.callbacks.hide.push(n);r.callbacks.show=[];clearTimeout(r.timerShow);r.timerShow=null;clearTimeout(r.timerHide);r.timerHide=null;var i=function(){e.each(r.callbacks.hide,function(e,t){t.call(r.$el)});r.callbacks.hide=[]};if(r.Status=="shown"||r.Status=="appearing"){r.Status="disappearing";var s=function(){r.Status="hidden";if(typeof r.Content=="object"&&r.Content!==null){r.Content.detach()}r.$tooltip.remove();r.$tooltip=null;e(t).off("."+r.namespace);e("body").off("."+r.namespace).css("overflow-x",r.bodyOverflowX);e("body").off("."+r.namespace);r.$elProxy.off("."+r.namespace+"-autoClose");r.options.functionAfter.call(r.$el,r.$el);i()};if(l()){r.$tooltip.clearQueue().removeClass("tooltipster-"+r.options.animation+"-show").addClass("tooltipster-dying");if(r.options.speed>0)r.$tooltip.delay(r.options.speed);r.$tooltip.queue(s)}else{r.$tooltip.stop().fadeOut(r.options.speed,s)}}else if(r.Status=="hidden"){i()}return r},show:function(e){this._showNow(e);return this},update:function(e){return this.content(e)},content:function(e){if(typeof e==="undefined"){return this.Content}else{this._update(e);return this}},reposition:function(){var n=this;if(e("body").find(n.$tooltip).length!==0){n.$tooltip.css("width","");n.elProxyPosition=n._repositionInfo(n.$elProxy);var r=null,i=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false);if(n.$elProxy.is("area")){var f=n.$elProxy.attr("shape"),l=n.$elProxy.parent().attr("name"),c=e('img[usemap="#'+l+'"]'),h=c.offset().left,p=c.offset().top,d=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(f=="circle"){var v=parseInt(d[0]),m=parseInt(d[1]),g=parseInt(d[2]);s.dimension.height=g*2;s.dimension.width=g*2;s.offset.top=p+m-g;s.offset.left=h+v-g}else if(f=="rect"){var v=parseInt(d[0]),m=parseInt(d[1]),y=parseInt(d[2]),b=parseInt(d[3]);s.dimension.height=b-m;s.dimension.width=y-v;s.offset.top=p+m;s.offset.left=h+v}else if(f=="poly"){var w=[],E=[],S=0,x=0,T=0,N=0,C="even";for(var k=0;k<d.length;k++){var L=parseInt(d[k]);if(C=="even"){if(L>T){T=L;if(k===0){S=T}}if(L<S){S=L}C="odd"}else{if(L>N){N=L;if(k==1){x=N}}if(L<x){x=L}C="even"}}s.dimension.height=N-x;s.dimension.width=T-S;s.offset.top=p+x;s.offset.left=h+S}else{s.dimension.height=c.outerHeight(false);s.dimension.width=c.outerWidth(false);s.offset.top=p;s.offset.left=h}}var A=0,O=0,M=0,_=parseInt(n.options.offsetY),D=parseInt(n.options.offsetX),P=n.options.position;function H(){var n=e(t).scrollLeft();if(A-n<0){r=A-n;A=n}if(A+o-n>i){r=A-(i+n-o);A=i+n-o}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+s.dimension.height);M=s.offset.top-F/2-_;if(A<0&&O+o>i){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+s.dimension.height);M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;r="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+s.dimension.height);M=s.offset.top-F/2-_;if(A+o>i&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=i-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+s.dimension.height);M=s.offset.top-F/2-_}else if(A+o>i){A=s.offset.left-D-o-12;r="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}if(!r){r=""}else if(r=="left"){R="tooltipster-arrow-right";r=""}else if(r=="right"){R="tooltipster-arrow-left";r=""}else{r="left:"+Math.round(r)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var z=parseFloat(n.$tooltip.css("border-bottom-width")),W=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var z=parseFloat(n.$tooltip.css("border-top-width")),W=n.$tooltip.css("border-top-color")}else if(P=="left"){var z=parseFloat(n.$tooltip.css("border-right-width")),W=n.$tooltip.css("border-right-color")}else if(P=="right"){var z=parseFloat(n.$tooltip.css("border-left-width")),W=n.$tooltip.css("border-left-color")}else{var z=parseFloat(n.$tooltip.css("border-bottom-width")),W=n.$tooltip.css("border-bottom-color")}if(z>1){z++}var X="";if(z!==0){var V="",J="border-color: "+W+";";if(R.indexOf("bottom")!==-1){V="margin-top: -"+Math.round(z)+"px;"}else if(R.indexOf("top")!==-1){V="margin-bottom: -"+Math.round(z)+"px;"}else if(R.indexOf("left")!==-1){V="margin-right: -"+Math.round(z)+"px;"}else if(R.indexOf("right")!==-1){V="margin-left: -"+Math.round(z)+"px;"}X='<span class="tooltipster-arrow-border" style="'+V+" "+J+';"></span>'}n.$tooltip.find(".tooltipster-arrow").remove();var K='<div class="'+R+' tooltipster-arrow" style="'+r+'">'+X+'<span style="border-color:'+U+';"></span></div>';n.$tooltip.append(K)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}return n},enable:function(){this.enabled=true;return this},disable:function(){this.hide();this.enabled=false;return this},destroy:function(){var t=this;t.hide();if(t.$el[0]!==t.$elProxy[0])t.$elProxy.remove();t.$el.removeData(t.namespace).off("."+t.namespace);var n=t.$el.data("tooltipster-ns");if(n.length===1){var r=typeof t.Content==="string"?t.Content:e("<div></div>").append(t.Content).html();t.$el.removeClass("tooltipstered").attr("title",r).removeData(t.namespace).removeData("tooltipster-ns").off("."+t.namespace)}else{n=e.grep(n,function(e,n){return e!==t.namespace});t.$el.data("tooltipster-ns",n)}return t},elementIcon:function(){return this.$el[0]!==this.$elProxy[0]?this.$elProxy[0]:undefined},elementTooltip:function(){return this.$tooltip?this.$tooltip[0]:undefined},option:function(e,t){if(typeof t=="undefined")return this.options[e];else{this.options[e]=t;return this}},status:function(){return this.Status}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(i,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r="#*$~&";this.each(function(){var n=e(this).data("tooltipster-ns"),i=n?e(this).data(n[0]):null;if(i){if(typeof i[t[0]]==="function"){var s=i[t[0]](t[1],t[2])}else{throw new Error('Unknown method .tooltipster("'+t[0]+'")')}if(s!==i){r=s;return false}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an uninitialized element')}});return r!=="#*$~&"?r:this}else{var o=[],u=t[0]&&typeof t[0].multiple!=="undefined",a=u&&t[0].multiple||!u&&i.multiple;this.each(function(){var n=false,r=e(this).data("tooltipster-ns"),i=null;if(!r){n=true}else{if(a)n=true;else console.log('Tooltipster: one or more tooltips are already attached to this element: ignoring. Use the "multiple" option to attach more tooltips.')}if(n){i=new s(this,t[0]);if(!r)r=[];r.push(i.namespace);e(this).data("tooltipster-ns",r);e(this).data(i.namespace,i)}o.push(i)});if(a)return o;else return this}}};var u=!!("ontouchstart"in t);var a=false;e("body").one("mousemove",function(){a=true})})(jQuery,window,document);
;(function($){
var ParallaxManager=function(options){
this.options=options;
this.vendor_prefixes=['webkit', 'moz', 'o', 'ms'];
this.num_vendor_prefixes=this.vendor_prefixes.length;
var thisBrowserSupportsStyle=function(style){
var vendors=['Webkit', 'Moz', 'ms', 'O'];
var num_vendors=vendors.length;
var dummy_el=window.document.createElement('parallax');
if(dummy_el.style[style]!==undefined){
return true;
}
style=style.replace(/./, function(first){return first.toUpperCase();});
for (var i=0; i < num_vendors; i++){
var pfx_style=vendors[i] + style;
if(dummy_el.style[pfx_style]!==undefined){
return true;
}}
return false;
};
this.has_3dtransforms=thisBrowserSupportsStyle('perspective');
if(this.has_3dtransforms&&thisBrowserSupportsStyle('WebkitPerspective')){
var $test_el=$('<div><style type="text/css">@media (transform-3d),(-webkit-transform-3d){#parallax-3dtest {position: absolute;left: 9px;height: 5px;margin: 0;padding: 0;border: 0;}</style><div id="parallax-3dtest"></div></div>').appendTo('body');
var $el=$('#parallax-3dtest');
this.has_3dtransforms=$el.height()==5&&$el.offset().left==9;
$test_el.remove();
}
this.has_2dtransforms=thisBrowserSupportsStyle('transform');
};
$.extend(ParallaxManager.prototype, {
init: function(){
this.scroll_factor=this.options.scroll_factor;
var parallax_blocks=this.parallax_blocks=[];
var image_attr=this.options.image_attr
var $body=$('body');
var $origins=this.options.origins;
$origins.each(function(){
var $origin=$(this);
var $parallax_block;
if($origin.data(image_attr)){
$parallax_block=$('<div class="parallax-block"><img class="parallax-image" src="' + $origin.data(image_attr) + '"></div>');
parallax_blocks.push({
origin: $origin,
block: $parallax_block,
bg_ratio: $origin.data('width') / $origin.data('height')
});
$body.prepend($parallax_block);
}
else if($origin.data('tile')){
$parallax_block=$('<div class="parallax-block"><div class="parallax-image" style="background-image: url(' + $origin.data('tile') + ')"></div></div>')
parallax_blocks.push({
origin: $origin,
block: $parallax_block,
bg_ratio: 1
});
$body.prepend($parallax_block);
}});
var manager=this;
var reconfigure=function(){
manager.redrawBlocks();
manager.render();
};
var $window=$(window);
$window.on('load', reconfigure);
$window.on('resize', reconfigure);
$window.on('hwparallax.reconfigure', reconfigure);
$window.on('scroll', function(){manager.render();});
},
redrawBlocks: function(){
var window_width=$(window).width();
var window_height=this.window_height=$(window).height();
var body=document.body;
var html=document.documentElement;
var document_height=Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
this.max_scrolltop=Math.max(0, document_height - window_height);
var num_parallax_blocks=this.parallax_blocks.length;
for (var i=0; i < num_parallax_blocks; i++){
var parallax_block_data=this.parallax_blocks[i];
var $parallax_block=parallax_block_data.block;
var bg_ratio=parallax_block_data.bg_ratio;
var $parallax_image=$parallax_block.children('.parallax-image');
var $origin=parallax_block_data.origin;
var origin_height=$origin.outerHeight();
var min_height=window_height - ((window_height - origin_height) * this.scroll_factor);
var img_width=window_width;
var img_height=Math.ceil(img_width / bg_ratio);
var img_xoff=0;
if(img_height < min_height){
img_height=min_height;
img_width=img_height * bg_ratio;
img_xoff=Math.floor(img_width - window_width) / 2;
}
$parallax_image.width(img_width).height(img_height);
$parallax_block.width(window_width).height(origin_height).css('visibility', 'hidden');
$.extend(parallax_block_data, {
origin_position: $origin.offset().top,
origin_height: origin_height,
image: $parallax_image,
image_xoff: img_xoff,
image_height: img_height
});
}},
render: function(){
if(!this.drawing){
this.drawing=true;
var manager=this;
if(window.requestAnimationFrame){
window.requestAnimationFrame(function(){manager.draw();}, document);
}else{
manager.draw();
}}
},
draw: function(){
var scroll_top=Math.min(Math.max(0, $(window).scrollTop()), this.max_scrolltop);
var num_blocks=this.parallax_blocks.length;
var data;
for (var i=0; i < num_blocks; i++){
data=this.parallax_blocks[i];
if(data.origin_position < scroll_top + this.window_height&&data.origin_position + data.origin_height > scroll_top){
var new_block_position=data.origin_position - scroll_top;
var new_image_position=new_block_position * (this.scroll_factor - 1);
var block_styles={
visibility: 'visible'
};
var image_styles={};
var block_transform, image_transform, prefixed_style;
var j;
if(this.has_3dtransforms){
block_transform=block_styles.transform='translate3d(0px, ' + new_block_position + 'px, 0px)';
image_transform=image_styles.transform='translate3d(-' + data.image_xoff + 'px, ' + new_image_position + 'px, 0px)';
for (j=0; j < this.num_vendor_prefixes; j++){
prefixed_style='-' + this.vendor_prefixes[j] + '-transform';
block_styles[prefixed_style]=block_transform;
image_styles[prefixed_style]=image_transform;
}}
else if(this.has_2dtransforms){
block_transform=block_styles.transform='translate(0px, ' + new_block_position + 'px)';
image_transform=image_styles.transform='translate(-' + data.image_xoff + 'px, ' + new_image_position + 'px)';
for (j=0; j < this.num_vendor_prefixes; j++){
prefixed_style='-' + this.vendor_prefixes[j] + '-transform';
block_styles[prefixed_style]=block_transform;
image_styles[prefixed_style]=image_transform;
}}else{
block_styles.top=new_block_position + 'px';
block_styles.left=0 + 'px';
image_styles.top=new_image_position + 'px';
image_styles.left=-data.image_xoff + 'px';
}
data.block.css(block_styles);
data.image.css(image_styles);
}else{
data.block.css('visibility', 'hidden');
}}
this.drawing=false;
}});
$.extend($.fn, {
parallax: function(options){
var settings=$.extend({
scroll_factor: 0.2,
image_attr: 'image'
},
options,
{
origins: $(this)
}
);
var pm=new ParallaxManager(settings);
pm.init();
}});
})(jQuery);
(function(){
var $, win;
$=this.jQuery||window.jQuery;
win=$(window);
$.fn.stick_in_parent=function(opts){
var doc, elm, enable_bottoming, fn, i, inner_scrolling, len, manual_spacer, offset_top, parent_selector, recalc_every, sticky_class;
if(opts==null){
opts={};}
sticky_class=opts.sticky_class, inner_scrolling=opts.inner_scrolling, recalc_every=opts.recalc_every, parent_selector=opts.parent, offset_top=opts.offset_top, manual_spacer=opts.spacer, enable_bottoming=opts.bottoming;
if(offset_top==null){
offset_top=0;
}
if(parent_selector==null){
parent_selector=void 0;
}
if(inner_scrolling==null){
inner_scrolling=true;
}
if(sticky_class==null){
sticky_class="is_stuck";
}
doc=$(document);
if(enable_bottoming==null){
enable_bottoming=true;
}
fn=function(elm, padding_bottom, parent_top, parent_height, top, height, el_float, detached){
var bottomed, detach, fixed, last_pos, last_scroll_height, offset, parent, recalc, recalc_and_tick, recalc_counter, spacer, tick;
if(elm.data("sticky_kit")){
return;
}
elm.data("sticky_kit", true);
last_scroll_height=doc.height();
parent=elm.parent();
if(parent_selector!=null){
parent=parent.closest(parent_selector);
}
if(!parent.length){
throw "failed to find stick parent";
}
fixed=false;
bottomed=false;
spacer=manual_spacer!=null ? manual_spacer&&elm.closest(manual_spacer):$("<div />");
if(spacer){
spacer.css('position', elm.css('position'));
}
recalc=function(){
var border_top, padding_top, restore;
if(detached){
return;
}
last_scroll_height=doc.height();
border_top=parseInt(parent.css("border-top-width"), 10);
padding_top=parseInt(parent.css("padding-top"), 10);
padding_bottom=parseInt(parent.css("padding-bottom"), 10);
parent_top=parent.offset().top + border_top + padding_top;
parent_height=parent.height();
if(fixed){
fixed=false;
bottomed=false;
if(manual_spacer==null){
elm.insertAfter(spacer);
spacer.detach();
}
elm.css({
position: "",
top: "",
width: "",
bottom: ""
}).removeClass(sticky_class);
restore=true;
}
top=elm.offset().top - (parseInt(elm.css("margin-top"), 10)||0) - offset_top;
height=elm.outerHeight(true);
el_float=elm.css("float");
if(spacer){
spacer.css({
width: elm.outerWidth(true),
height: height,
display: elm.css("display"),
"vertical-align": elm.css("vertical-align"),
"float": el_float
});
}
if(restore){
return tick();
}};
recalc();
if(height===parent_height){
return;
}
last_pos=void 0;
offset=offset_top;
recalc_counter=recalc_every;
tick=function(){
var css, delta, recalced, scroll, will_bottom, win_height;
if(detached){
return;
}
recalced=false;
if(recalc_counter!=null){
recalc_counter -=1;
if(recalc_counter <=0){
recalc_counter=recalc_every;
recalc();
recalced=true;
}}
if(!recalced&&doc.height()!==last_scroll_height){
recalc();
recalced=true;
}
scroll=win.scrollTop();
if(last_pos!=null){
delta=scroll - last_pos;
}
last_pos=scroll;
if(fixed){
if(enable_bottoming){
will_bottom=scroll + height + offset > parent_height + parent_top;
if(bottomed&&!will_bottom){
bottomed=false;
elm.css({
position: "fixed",
bottom: "",
top: offset
}).trigger("sticky_kit:unbottom");
}}
if(scroll < top){
fixed=false;
offset=offset_top;
if(manual_spacer==null){
if(el_float==="left"||el_float==="right"){
elm.insertAfter(spacer);
}
spacer.detach();
}
css={
position: "",
width: "",
top: ""
};
elm.css(css).removeClass(sticky_class).trigger("sticky_kit:unstick");
}
if(inner_scrolling){
win_height=win.height();
if(height + offset_top > win_height){
if(!bottomed){
offset -=delta;
offset=Math.max(win_height - height, offset);
offset=Math.min(offset_top, offset);
if(fixed){
elm.css({
top: offset + "px"
});
}}
}}
}else{
if(scroll > top){
fixed=true;
css={
position: "fixed",
top: offset
};
css.width=elm.css("box-sizing")==="border-box" ? elm.outerWidth() + "px":elm.width() + "px";
elm.css(css).addClass(sticky_class);
if(manual_spacer==null){
elm.after(spacer);
if(el_float==="left"||el_float==="right"){
spacer.append(elm);
}}
elm.trigger("sticky_kit:stick");
}}
if(fixed&&enable_bottoming){
if(will_bottom==null){
will_bottom=scroll + height + offset > parent_height + parent_top;
}
if(!bottomed&&will_bottom){
bottomed=true;
if(parent.css("position")==="static"){
parent.css({
position: "relative"
});
}
return elm.css({
position: "absolute",
bottom: padding_bottom,
top: "auto"
}).trigger("sticky_kit:bottom");
}}
};
recalc_and_tick=function(){
recalc();
return tick();
};
detach=function(){
detached=true;
win.off("touchmove", tick);
win.off("scroll", tick);
win.off("resize", recalc_and_tick);
$(document.body).off("sticky_kit:recalc", recalc_and_tick);
elm.off("sticky_kit:detach", detach);
elm.removeData("sticky_kit");
elm.css({
position: "",
bottom: "",
top: "",
width: ""
});
parent.position("position", "");
if(fixed){
if(manual_spacer==null){
if(el_float==="left"||el_float==="right"){
elm.insertAfter(spacer);
}
spacer.remove();
}
return elm.removeClass(sticky_class);
}};
win.on("touchmove", tick);
win.on("scroll", tick);
win.on("resize", recalc_and_tick);
$(document.body).on("sticky_kit:recalc", recalc_and_tick);
elm.on("sticky_kit:detach", detach);
return setTimeout(tick, 0);
};
for (i=0, len=this.length; i < len; i++){
elm=this[i];
fn($(elm));
}
return this;
};}).call(this);
(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;
};}
if(!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];
}}
}}
return 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;
}}
return '';
};
utils.cloneObject=function(obj){
var copy={};
for(var attr in obj){
if(obj.hasOwnProperty(attr) ){
copy[attr]=obj[attr];
}}
return copy;
};
utils.createEl=function(tag, classes){
var el=document.createElement(tag||'div');
if(classes){
el.className=classes;
}
return 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={};}
if(!this.event_handlers[fn]){
this.event_handlers[fn]=_this[fn].bind(_this);
}
isBind=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;
}
var events=this._events=this._events||{};
var listeners=events[eventName]=events[eventName]||[];
if(listeners.indexOf(listener)===-1){
listeners.push(listener);
}
return this;
};
proto.off=function(eventName, listener){
var listeners=this._events&&this._events[eventName];
if(!listeners||!listeners.length){
return null;
}
var index=listeners.indexOf(listener);
if(index!==-1){
listeners.splice(index, 1);
}
return this;
};
proto.emitEvent=function(eventName, args){
var listeners=this._events&&this._events[eventName];
if(!listeners||!listeners.length){
return null;
}
var 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];
}
listener.apply(this, args);
i +=isOnce ? 0:1;
listener=listeners[i];
}
return 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;
}
this.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' ? round * 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++;
}}
}}
}
if(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'], // 'zoom', 'play', 'fullScreen', 'download', 'share', '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', 'twitter', 'pinterest', 'linkedin', 'reddit'], // 'facebook', 'googleplus', 'twitter', 'pinterest', 'linkedin', 'reddit', 'stumbleupon', 'tumblr', 'blogger', 'buffer', 'digg', 'evernote'
shareText:jQuery('#tg_modulobox_share_on_string').val(),
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 ];
}
this.options=utils.extend(options, defaults);
this.setVar();
};
var proto=ModuloBox.prototype=Object.create(EvEmitter.prototype);
proto.init=function(){
if(this.GUID){
return;
}
this.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']
};}
if(nav.msPointerEnabled){
return {
start:['MSPointerDown'],
move:['MSPointerMove'],
end:['MSPointerUp', 'MSPointerCancel']
};}
return {
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]
};}}
var controls=this.options.controls,
index=controls.indexOf('fullScreen');
if(index > -1){
controls.splice(index, 1);
}
return 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',
'top-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]);
}
this.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;
}
this.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);
}}
if(buttons.length){
dom.ui.appendChild(dom.shareTooltip);
if(opt.shareText){
dom.shareTooltip.appendChild(utils.createEl('span') ).textContent=opt.shareText;
}
this.createButtons(buttons, dom.shareTooltip, 'shareOn');
}else{
opt.controls.splice(shareIndex, 1);
}}
if(opt.controls.length||opt.counterMessage){
var slideShow=opt.controls.indexOf('play');
dom.ui.appendChild(dom.topBar);
if(opt.counterMessage){
dom.topBar.appendChild(dom.counter);
}
if(opt.slideShowInterval < 1&&slideShow > -1){
opt.controls.splice(slideShow, 1);
}
if(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);
}
if(opt.controls.length){
var controls=opt.controls.slice();
this.createButtons(controls.reverse(), dom.topBar);
}}
if(opt.caption||opt.thumbnails){
dom.ui.appendChild(dom.bottomBar);
if(opt.caption){
dom.bottomBar.appendChild(dom.caption)
.appendChild(dom.captionInner);
}
if(opt.thumbnails){
dom.bottomBar.appendChild(dom.thumbsHolder)
.appendChild(dom.thumbsInner);
}}
if(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;
}
try {
sources=document.querySelectorAll(selectors);
} catch (error){
utils.error('Your current mediaSelector is not a valid selector: "' + selectors + '"');
}
for(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);
}}
}
utils.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;
}
name=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;
}
media.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|webp)/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);
if(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;
}
break;
}}
}}
};
proto.getSrc=function(source){
var srcset=(source||'').split(/,/),
length=srcset.length,
width=0;
if(length <=1){
return source;
}
for(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];
}}
return 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;
}
var 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 + '")';
}
if(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');
}
node++;
}};
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;
}
if(!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);
}
source.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();
}
if(!this.GUID){
return false;
}
if(!this.galleries.hasOwnProperty(name) ){
utils.error('This gallery name:"' + name + '", does not exist!');
return false;
}
if(!this.galleries[name].length){
utils.error('Sorry, no media was found for the current gallery.');
return false;
}
if(!this.galleries[name][index]){
utils.error('Sorry, no media was found for the current media index: ' + index);
return false;
}
utils.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();
}
if(this.options.slideShowAutoPlay&&this.options.controls.indexOf('play') > -1 &&
(! this.options.videoAutoPlay||this.galleries[name][index].type!=='video') ){
this.startSlideShow();
}
this.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();
}
var 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');
}
this.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';
}
if(options.controls.indexOf('play') > -1){
buttons.play.style.display=(gallery.initialLength > 1) ? '':'none';
}
if(options.controls.indexOf('zoom') > -1){
buttons.zoom.style.display = !gallery.zoom ? 'none':'';
}
if(options.controls.indexOf('download') > -1){
buttons.download.style.display = !gallery.download ? 'none':'';
}
this.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);
}}
utils.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);
}
if(opt.history){
utils.handleEvents(this, win, ['mouseout'], 'mouseOut', bind);
}
if(opt.timeToIdle > 0){
utils.handleEvents(this, holder, ['mousemove'], 'mouseMove', bind);
}
if(!opt.contextMenu){
utils.handleEvents(this, holder, ['contextmenu'], 'contextMenu', bind);
}
if(!opt.mouseWheel){
this.disableScroll(bind);
}
if(opt.scrollToZoom){
scrollMethod='scrollToZoom';
}
else if(opt.scrollToNav){
scrollMethod='scrollToNav';
}
else if(opt.scrollToClose){
scrollMethod='scrollToClose';
}
if(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);
this.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;
}
e=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;
}
var 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;
}
var 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;
}
event.preventDefault();
this.close();
};
proto.disableZoom=function(event){
var node=event.target;
while(node){
if(['VIDEO', 'INPUT', 'A'].indexOf(node.tagName) > -1){
return;
}
node=node.parentElement;
}
event.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;
}
var 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;
}
this.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;
}
this.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];
}
for(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;
}
this.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 + '=', '');
}}
}}
var 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.');
}}
}
this.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;
}
if('wheelDelta' in ev){
deltaY=ev.wheelDelta * -1;
}
if('wheelDeltaY' in ev){
deltaY=ev.wheelDeltaY * -1;
}
if('wheelDeltaX' in ev){
deltaX=ev.wheelDeltaX * -1;
}
if('deltaY' in ev){
deltaY=ev.deltaY;
}
if('deltaX' in ev){
deltaX=ev.deltaX * -1;
}
if(ev.deltaMode===1){
deltaX *=40;
deltaY *=40;
}else if(ev.deltaMode===2){
deltaX *=100;
deltaY *=100;
}
delta=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;
}
var time=+new Date();
if(Math.abs(delta) > Math.abs(this.states.prevDelta)||time - this.states.prevScroll > 60){
data={
'deltaX':deltaX,
'deltaY':deltaY,
'delta':delta
};}
this.states.prevDelta=delta;
this.states.prevScroll=time;
return data;
};
proto.share=function(event){
if(event&&event.target.tagName==='VIDEO'){
return;
}
var holder=this.DOM.holder,
className=this.pre + '-open-tooltip',
element=event ? event.target.className:null,
method=utils.hasClass(holder, className) ? 'remove':'add';
if(( method==='remove'&&(element!==this.pre + '-share'||!event) )||element===this.pre + '-share'){
if(method==='add'){
this.setShareTooltip();
}
utils[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;
}}
var 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');
}
return 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;
}
tooltip.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;
}
var 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');
}
this.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;
}}
if(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);
}
if(now >=start + cycle){
start=now;
this.slideTo(this.slides.index + 1, true);
}
this.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;
}
utils.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];
source.setAttribute('type', 'video/' +(type[1]==='ogv' ? 'ogg':type[1]) );
frag.appendChild(source);
}
media.video.appendChild(frag);
}}
else if(media.format){
media.video=utils.createEl('iframe');
media.video.src=media.src;
media.video.setAttribute('frameborder', 0);
media.video.setAttribute('allowfullscreen', '');
}
media.video.setAttribute('width', '100%');
media.video.setAttribute('height', '100%');
}
if(!media.dom.firstChild){
media.dom.appendChild(media.video);
if(media.format!=='html5'){
media.video.loaded=false;
}}
this.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();
}
mejs.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);
}
_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;
}
if(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;
}
if(typeof media.index==='undefined'){
media.index=this.gallery.indexOf(media);
}
this.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;
}
break;
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') );
media.dom.firstChild.innerHTML=content ? content.innerHTML:null;
media.src=content ? content:'';
media.dom.loaded=true;
break;
}
if(!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);
}}
slide.media=media.index;
};
proto.loadMedia=function(media, slide_index){
if(media.dom.loaded){
this.showMedia(media, slide_index);
return;
}
var _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) );
}
media.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);
}
utils.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;
}
var index=slide.media,
media=this.gallery[index];
if(!media||!media.dom){
return;
}
if(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;
}
delete media.dom;
}
else 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;
}
while(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;
}
var 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();
}
utils.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);
}}
if(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;
}
if(!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);
}
var 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;
}
slide.width=this.slider.width;
slide.height=this.slider.height - topBar - caption.height - thumbs;
};
proto.getMediaSize=function(media, slide){
var size=media.dom.size={};
switch(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);
}
viewports.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;
}
media.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
};}
var 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++;
}}
number +=2;
gallery.loaded=this.options.preload;
}
switch(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];
}
if(!loop){
var maxMedia=index + toLoad[number - 1],
minMedia=index + toLoad[0];
adjust=(minMedia < 0) ? -minMedia:0;
adjust=(maxMedia > length) ? length - maxMedia:adjust;
}
toLoad=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;
}
if(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;
}
var 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;
}
if(size >=screenW){
break;
}}
var 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);
}
this.DOM.thumbsInner.appendChild(fragment);
this.setThumbsPosition();
};
proto.thumbClick=function(event){
var target=event.target;
if(!utils.hasClass(target, this.pre + '-thumb') ){
target=target.parentNode;
}
if(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');
}}
var 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;
}
var thumbs=this.thumbs,
position=this.getThumbPosition(thumbs);
thumbs.stopAnimate();
if(position===thumbs.position.x){
this.shiftThumbs(thumbs);
return;
}
if(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;
}
this.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);
}
this.shiftSlides();
};
proto.setThumbsPosition=function(){
if(!this.options.thumbnails||this.gallery.initialLength < 2){
return;
}
var 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;
}}
thumbs.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;
}
if(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;
}}
thumbs.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;
}
utils.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) );
}
this.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();
}
if(this.options.fadeIfSettle){
var slides=this.slides;
for(var i=0; i < slides.length; i++){
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);
}
if(( 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);
}
if(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();
}
if(event.which===3||!this.isEl(event)||['BUTTON', 'VIDEO', 'INPUT', 'A'].indexOf(tagName) > -1){
return;
}
if(tagName==='IMG'&&this.gallery.length > 1){
utils.addClass(this.DOM.holder, this.pre + '-dragging');
}
event.preventDefault();
if(utils.hasClass(this.DOM.holder, this.pre + '-open-tooltip') ){
return;
}
if(!this.pointers.length){
this.gesture.canClose=undefined;
utils.handleEvents(this, window, this.dragEvents.move, 'touchMove');
utils.handleEvents(this, window, this.dragEvents.end, 'touchEnd');
}
this.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();
}
this.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;
}
else 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();
}
if(['dragSlider', 'dragThumbs'].indexOf(gesture.type) > -1){
var cell=this.getCell();
cell.startAnimate();
cell.releaseDrag();
cell.animateTo({
x:0,
y:0,
s:1
});
}
if(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();
}}
if(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);
if(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;
}
if(event.target.tagName==='IMG'){
this.doubleTap(event);
}}
if(this.options.thumbnails&&!this.gesture.move){
this.thumbClick(event);
}
var gestureEnd=this.gesture.type + 'End';
if(this.gesture.type&&typeof this[gestureEnd]==='function'){
this[gestureEnd](event);
utils.dispatchEvent(this, 'modulobox', gestureEnd, event, this.gesture);
}
this.gesture.type =
this.gesture.move=false;
if(!this.states.open){
return;
}
var cell=this.getCell();
if(!cell.settle){
cell.startAnimate();
cell.releaseDrag();
}
var 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);
}
if(this.options.doubleTapToZoom){
this.zoomTo(clientX, clientY);
}
this.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);
}
this.tap={
delay:+new Date(),
deltaX:touches[0].clientX,
deltaY:touches[0].clientY
};}};
proto.isSliderSettle=function(){
if(this.gesture.type){
return false;
}
var 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];
}}
return null;
};
proto.gestures=function(type){
var g=this.gesture,
pointers=this.pointers,
distance;
if(!pointers.length){
return;
}
g.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;
}
if(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
});
};
proto.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);
}
if(!this.options.pinchToZoom&&this.states.zoom){
scale=moving.position.s;
}
if(!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;
}
posX=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;
}
moving.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;
}
if(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();
}
moving.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;
}
posX=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
});
}
moving.startAnimate();
moving.releaseDrag();
};
proto.dragSlider=function(){
if(this.gallery.length===1){
return;
}
var 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;
}
posX=posX > bound.left ?(posX + bound.left) * 0.5:posX < bound.right ?(posX + bound.right) * 0.5:posX;
}
moving.startAnimate();
moving.updateDrag({
x:posX
});
};
proto.dragSliderEnd=function(){
if(this.gallery.length===1){
return;
}
var 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();
}
this.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 / slides.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;
}}
var 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;
}
slides.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;
}
if(!loop&&from < 0){
from=0;
to=5;
}
for(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';
}}
if(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;
}
if(to===gallery.initialLength - 1&&from - to < length){
from=gallery.initialLength - length;
}
for(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';
}
this.setThumbSize(thumb, thumbs);
if(- thumb.position <=boundLeft&&- thumb.position >=boundRight&&thumb.media!==i){
this.loadThumb(thumb, i);
}
if(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;
}
if(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;
}
opacity = !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;
}
if(this.states.loop&&fromEnds < 3&&fromEnds * 2 < length){
slideBy=slideBy < 0 ? fromEnds:-fromEnds;
}
if(moduloTo===to){
to=slides.index + slideBy;
}
slideBy=to - slides.index;
if(!slideBy){
return;
}
if(this.states.zoom){
this.zoom();
}
this.pauseVideo();
this.share();
if(!slideShow){
this.stopSlideShow();
}
slides.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();
}
this.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);
}}
if(key===27&&opt.escapeToClose){
this.close();
}
if(!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;
}
this.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;
}
if(this.states.open){
this.close();
}
var selectors=this.options.mediaSelector,
sources='';
try {
sources=document.querySelectorAll(selectors);
} catch (error){}
for(var i=0, l=sources.length; i < l; i++){
var source=sources[i];
if(source.mobxListener){
source.removeEventListener('click', source.mobxListener, false);
}}
this.bindEvents(false);
this.slider.resetAnimate();
for(i=0; i < this.slides.length; i++){
this.cells[i].resetAnimate();
}
if(this.thumbs){
this.thumbs.resetAnimate();
}
this.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);
}
return ModuloBox;
}));
jQuery.fn.center=function (){
this.css("left", (jQuery(window).width() / 2) - (this.outerWidth() / 2));
return this;
}
jQuery.fn.setNav=function(){
var calScreenWidth=jQuery(window).width();
var menuLayout=jQuery('#pp_menu_layout').val();
if(calScreenWidth >=960){
jQuery('#main_menu li ul').css({display: 'none', opacity: 1});
if(menuLayout!='leftmenu'){
jQuery('#menu_wrapper div .nav li.megamenu > ul > li').each(function(){
jQuery(this).css('height', jQuery(this).parent('ul').height()+'px');
});
}
jQuery('#main_menu li').each(function(){
var jQuerysublist=jQuery(this).find('ul:first');
jQuery(this).hover(function(){
position=jQuery(this).position();
if(jQuery(this).parents().attr('class')=='sub-menu'){
jQuerysublist.stop().fadeIn(500);
}else{
jQuerysublist.stop().css({overflow: 'visible'}).fadeIn(100);
}},
function(){
jQuerysublist.stop().css({height:'auto'}).fadeOut(100);
});
});
jQuery('#menu_wrapper .nav ul li ul').css({display: 'none', opacity: 1});
jQuery('#menu_wrapper .nav ul li').each(function(){
var jQuerysublist=jQuery(this).find('ul:first');
jQuery(this).hover(function(){
jQuerysublist.stop().fadeIn(100);
},
function(){
jQuerysublist.stop().fadeOut(100);
});
});
}
jQuery('body').on('click', '.mobile_main_nav > li > a:not(.menu-item-icon-link)', function(event){
var jQuerysublist=jQuery(this).parent('li').find('ul.sub-menu:first');
var menuContainerClass=jQuery(this).parent('li').parent('.mobile_main_nav').parent('div');
if(jQuerysublist.length>0){
event.preventDefault();
}
var menuLevel='top_level';
var parentMenu='';
var menuClickedId=jQuery(this).attr('id');
if(jQuery(this).parent('li').parent('ul').attr('id')=='mobile_main_menu'){
menuLevel='parent_level';
}else{
parentMenu=jQuery(this).parent('li').attr('id');
}
if(jQuerysublist.length>0){
jQuery('#mobile_main_menu.mobile_main_nav').addClass('mainnav_out');
jQuery('.mobile_menu_wrapper div #sub_menu').removeClass('subnav_in');
jQuery('.mobile_menu_wrapper div #sub_menu').addClass('mainnav_out');
if(jQuery('#pp_menu_layout').val()=='hammenufull'){
jQuery('.mobile_menu_wrapper .logo_container').fadeOut('slow');
jQuery('.mobile_menu_wrapper .social_wrapper').fadeOut('slow');
}
setTimeout(function(){
jQuery('#mobile_main_menu.mobile_main_nav').css('display', 'none');
jQuery('.mobile_menu_wrapper div #sub_menu').remove();
var subMenuHTML='<li><a href="#" id="menu_back" class="'+menuLevel+'" data-parent="'+parentMenu+'">'+jQuery('#pp_back').val()+'</a></li>';
subMenuHTML +=jQuerysublist.html();
menuContainerClass.append('<ul id="sub_menu" class="nav '+menuLevel+'"></ul>');
menuContainerClass.find('#sub_menu').html(subMenuHTML);
menuContainerClass.find('#sub_menu').addClass('subnav_in');
}, 200);
}});
jQuery('body').on('click', '#menu_back.parent_level', function(){
jQuery('.mobile_menu_wrapper div #sub_menu').removeClass('subnav_in');
jQuery('.mobile_menu_wrapper div #sub_menu').addClass('subnav_out');
jQuery('#mobile_main_menu.mobile_main_nav').removeClass('mainnav_out');
if(jQuery('#pp_menu_layout').val()=='hammenufull'){
jQuery('.mobile_menu_wrapper .logo_container').fadeIn('slow');
jQuery('.mobile_menu_wrapper .social_wrapper').fadeIn('slow');
}
setTimeout(function(){
jQuery('.mobile_menu_wrapper div #sub_menu').remove();
jQuery('#mobile_main_menu.mobile_main_nav').css('display', 'block');
jQuery('#mobile_main_menu.mobile_main_nav').addClass('mainnav_in');
}, 200);
});
jQuery('body').on('click', '#menu_back.top_level', function(){
event.preventDefault();
jQuery('.mobile_menu_wrapper div #sub_menu').addClass('subnav_out');
var parentMenuId=jQuery(this).data('parent');
setTimeout(function(){
jQuery('.mobile_menu_wrapper div #sub_menu').remove();
var menuLevel='top_level';
var parentMenu='';
if(jQuery('#mobile_main_menu.mobile_main_nav li#'+parentMenuId).parent('ul.sub-menu:first').parent('li').parent('ul#main_menu').length==1){
menuLevel='parent_level';
}else{
parentMenu=jQuery('#mobile_main_menu.mobile_main_nav li#'+parentMenuId).parent('ul.sub-menu:first').parent('li').attr('id');
}
var subMenuHTML='<li><a href="#" id="menu_back" class="'+menuLevel+'" data-parent="'+parentMenu+'">'+jQuery('#pp_back').val()+'</a></li>';
subMenuHTML+=jQuery('#mobile_main_menu.mobile_main_nav li#'+parentMenuId).parent('ul.sub-menu:first').html();
jQuery('.mobile_menu_wrapper div').append('<ul id="sub_menu" class="nav '+menuLevel+'"></ul>');
jQuery('.mobile_menu_wrapper div #sub_menu').html(subMenuHTML);
jQuery('.mobile_menu_wrapper div #sub_menu').addClass('mainnav_in');
}, 200);
});
}
var lightboxTimer=jQuery('#tg_lightbox_timer').val();
if(jQuery('#tg_lightbox_plugin').val()=='ilightbox'){
jQuery.fn.setLightbox=function(){
if(jQuery('#tg_lightbox_thumbnails').val()=='no_thumbnail'){
var iLightboxapi=jQuery('a.fancy-gallery, .pp_gallery a, .img_frame, .fancy_video, .lightbox_vimeo, .lightbox_youtube, .woocommerce-product-gallery__image a, .photography_gallery_lightbox').iLightBox({
skin: jQuery('#tg_lightbox_skin').val(),
type: 'inline, video, image',
maxScale: 1,
slideshow: {
pauseTime: parseInt(lightboxTimer)
},
controls: {
slideshow: true,
arrows: true,
thumbnail:false
},
overlay: {
opacity: jQuery('#tg_lightbox_opacity').val()
}});
}else{
var iLightboxapi=jQuery('a.fancy-gallery, .pp_gallery a, .img_frame, .fancy_video, .lightbox_vimeo, .lightbox_youtube, .woocommerce-product-gallery__image a').iLightBox({
skin: jQuery('#tg_lightbox_skin').val(),
path: jQuery('#tg_lightbox_thumbnails').val(),
type: 'inline, video, image',
maxScale: 1,
slideshow: {
pauseTime: parseInt(lightboxTimer)
},
controls: {
slideshow: true,
arrows: true
},
overlay: {
opacity: jQuery('#tg_lightbox_opacity').val()
}});
}
iLightboxapi.refresh();
}}else{
var moduloControls=jQuery('#tg_modulobox_controls').val()
var moduloThumbnail=false;
if(jQuery('#tg_modulobox_thumbnails').val()=='thumbnail'){
moduloThumbnail=true;
}
if(jQuery('body').hasClass('single-product')){
jQuery('.woocommerce-product-gallery__wrapper').children('div').each(function(){
jQuery(this).find('a').attr('data-rel', 'woo-product-gallery');
});
}
jQuery.fn.setLightbox=function(){
mobx=new ModuloBox({
mediaSelector:'a.fancy-gallery, .pp_gallery a, .img_frame, .fancy_video, .lightbox_vimeo, .lightbox_youtube, .woocommerce-product-gallery__image a, .photography_gallery_lightbox',
scrollToZoom:true,
controls:['zoom', 'play', 'fullScreen', 'close'],
shareButtons:['facebook', 'twitter', 'pinterest', 'linkedin'],
slideShowInterval:parseInt(lightboxTimer),
countTimer: true,
thumbnails: moduloThumbnail,
videoAutoPlay: true,
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
}}
});
mobx.init();
}}
function adjustIframes(){
jQuery('iframe').each(function(){
var
$this=jQuery(this),
proportion=$this.data('proportion'),
w=$this.attr('width'),
actual_w=$this.width();
if(! proportion){
proportion=$this.attr('height') / w;
$this.data('proportion', proportion);
}
if(actual_w!=w){
$this.css('height', Math.round(actual_w * proportion) + 'px !important');
}});
}
function is_touch_device(){
return 'ontouchstart' in window
|| 'onmsgesturechange' in window;
};
if(jQuery('#pp_page_title_img_blur').val()!=''){
(function(){
jQuery(window).scroll(function(){
var oVal;
oVal=jQuery(window).scrollTop() / 400;
if(oVal>1){
oVal=1;
}
return jQuery("#bg_blurred").css("opacity", oVal);
});
}).call(this);
}
jQuery(document).ready(function(){
"use strict";
jQuery(document).setNav();
jQuery(window).resize(function(){
jQuery(document).setNav();
});
if(jQuery('#tg_lightbox_enable').val()!=''){
jQuery(document).setLightbox();
}
jQuery('#menu_expand_wrapper a').on('click', function(){
jQuery('#menu_wrapper').fadeIn();
jQuery('#custom_logo').animate({'left': '15px', 'opacity': 1}, 400);
jQuery('#menu_close').animate({'left': '-10px', 'opacity': 1}, 400);
jQuery(this).animate({'left': '-60px', 'opacity': 0}, 400);
jQuery('#menu_border_wrapper select').animate({'left': '0', 'opacity': 1}, 400).fadeIn();
});
jQuery('#menu_close').on('click', function(){
jQuery('#custom_logo').animate({'left': '-200px', 'opacity': 0}, 400);
jQuery(this).stop().animate({'left': '-200px', 'opacity': 0}, 400);
jQuery('#menu_expand_wrapper a').animate({'left': '20px', 'opacity': 1}, 400);
jQuery('#menu_border_wrapper select').animate({'left': '-200px', 'opacity': 0}, 400).fadeOut();
jQuery('#menu_wrapper').fadeOut();
});
var $window=jQuery(window);
jQuery(window).resize(function(){
if(jQuery(this).width() < 768){
jQuery('#menu_expand_wrapper a').trigger('click');
}});
var isDisableRightClick=jQuery('#pp_enable_right_click').val();
if(isDisableRightClick!=''){
jQuery(this).bind("contextmenu", function(e){
e.preventDefault();
});
}
jQuery(window).scroll(function(){
var calScreenWidth=jQuery(window).width();
if(jQuery(this).scrollTop() > 200){
jQuery('#toTop').stop().css({opacity: 0.5, "visibility": "visible"}).animate({"visibility": "visible"}, {duration:1000,easing:"easeOutExpo"});
}else if(jQuery(this).scrollTop()==0){
jQuery('#toTop').stop().css({opacity: 0, "visibility": "hidden"}).animate({"visibility": "hidden"}, {duration:1500,easing:"easeOutExpo"});
}});
jQuery('#toTop, .hr_totop').on('click', function(){
jQuery('body,html').animate({scrollTop:0},800);
});
var isDisableDragging=jQuery('#pp_enable_dragging').val();
if(isDisableDragging!=''){
jQuery("img").mousedown(function(){
return false;
});
}
if(jQuery('#pp_topbar').val()==0){
var topBarHeight=jQuery('.header_style_wrapper').height();
}else{
var topBarHeight=parseInt(jQuery('.header_style_wrapper').height()-jQuery('.header_style_wrapper .above_top_bar').height());
}
var logoHeight=jQuery('#custom_logo img').height();
var logoTransHeight=jQuery('#custom_logo_transparent img').height();
var logoMargin=parseInt(jQuery('#custom_logo').css('marginTop'));
var logoTransMargin=parseInt(jQuery('#custom_logo_transparent').css('marginTop'));
var menuPaddingTop=parseInt(jQuery('#menu_wrapper div .nav li > a').css('paddingTop'));
var menuPaddingBottom=parseInt(jQuery('#menu_wrapper div .nav li > a').css('paddingBottom'));
var SearchPaddingTop=parseInt(jQuery('.top_bar #searchform button').css('paddingTop'));
var menuLayout=jQuery('#pp_menu_layout').val();
var headerContent=jQuery('#photography_header_content').val();
if(menuLayout!='leftmenu'||jQuery(window).width()<=768){
if(jQuery('#photography_header_content').val()=='menu'){
jQuery('#wrapper').css('paddingTop', parseInt(jQuery('.header_style_wrapper').height())+'px');
jQuery('#page_caption .bg_frame_split').css('bottom', parseInt(jQuery('.header_style_wrapper').height()-20)+'px');
}else{
jQuery('#wrapper').css('paddingTop', parseInt(jQuery('#elementor-header').height())+'px');
setTimeout(function (){ jQuery('#wrapper').css('paddingTop', parseInt(jQuery('#elementor-header').height())+'px'); }, 200);
setTimeout(function (){ jQuery('#wrapper').css('paddingTop', parseInt(jQuery('#elementor-header').height())+'px'); }, 1000);
}}
jQuery(window).resize(function(){
if(jQuery(this).width()>768){
if(menuLayout!='leftmenu'){
if(headerContent=='menu'){
var resizedTopBarHeight=jQuery('.top_bar').height();
jQuery('#wrapper').css('paddingTop', resizedTopBarHeight+'px');
if(jQuery('#wpadminbar').height() > 0){
jQuery('#page_content_wrapper.split, .page_content_wrapper.split').css('top', parseInt(resizedTopBarHeight+jQuery('#wpadminbar').height())+'px');
jQuery('#page_caption.split').css('top', parseInt(resizedTopBarHeight+jQuery('#wpadminbar').height())+'px');
}else{
jQuery('#page_content_wrapper.split, .page_content_wrapper.split').css('top', parseInt(resizedTopBarHeight)+'px');
jQuery('#page_caption.split').css('top', parseInt(resizedTopBarHeight)+'px');
}
jQuery('.logo_wrapper').css('marginTop', '');
jQuery('.top_bar #searchform button').css('paddingTop', '');
}else{
jQuery('#wrapper').css('paddingTop', parseInt(jQuery('#elementor-header').height())+'px');
setTimeout(function (){ jQuery('#wrapper').css('paddingTop', parseInt(jQuery('#elementor-header').height())+'px'); }, 200);
setTimeout(function (){ jQuery('#wrapper').css('paddingTop', parseInt(jQuery('#elementor-header').height())+'px'); }, 1000);
}}else{
jQuery('#wrapper').css('paddingTop', 0);
}}else{
jQuery('#wrapper').css('paddingTop', parseInt(jQuery('.header_style_wrapper').height())+'px');
}
jQuery('#page_caption.split').css('height', jQuery(window).height()+'px');
});
if(menuLayout!='leftmenu'||jQuery(window).width()<=960){
if(jQuery('#wpadminbar').height() > 0){
jQuery('#page_content_wrapper.split, .page_content_wrapper.split').css('top', parseInt(topBarHeight+jQuery('#wpadminbar').height())+'px');
jQuery('#page_caption.split').css('top', parseInt(topBarHeight+jQuery('#wpadminbar').height())+'px');
jQuery('#page_content_wrapper.split, .page_content_wrapper.split').css('paddingBottom', parseInt(topBarHeight+jQuery('#wpadminbar').height())+'px');
}else{
jQuery('#page_content_wrapper.split, .page_content_wrapper.split').css('top', parseInt(topBarHeight)+'px');
jQuery('#page_caption.split').css('top', parseInt(topBarHeight)+'px');
jQuery('#page_content_wrapper.split, .page_content_wrapper.split').css('paddingBottom', parseInt(topBarHeight)+'px');
}
jQuery(window).scroll(function(){
if(jQuery('#pp_fixed_menu').val()==1&&jQuery('html').data('style')!='fullscreen'){
if(jQuery(this).scrollTop() >=200){
jQuery('.header_style_wrapper .above_top_bar').hide();
jQuery('.extend_top_contact_info').hide();
jQuery('.header_style_wrapper').addClass('scroll');
jQuery('.top_bar').addClass('scroll');
jQuery('.top_bar').addClass(jQuery('#tg_fixed_menu_color').val());
if(jQuery('.top_bar').hasClass('hasbg')){
jQuery('.top_bar').removeClass('hasbg');
jQuery('.top_bar').data('hasbg', 1);
jQuery('#custom_logo').removeClass('hidden');
jQuery('#custom_logo_transparent').addClass('hidden');
}
if(jQuery('#tg_fixed_menu_color').val()=='dark'){
jQuery('#custom_logo').addClass('hidden');
jQuery('#custom_logo_transparent').removeClass('hidden');
}
if(jQuery(window).width()>960){
jQuery('#mobile_nav_icon').hide();
}}
else if(jQuery(this).scrollTop() < 200){
jQuery('.header_style_wrapper .above_top_bar').show();
jQuery('.extend_top_contact_info').show();
jQuery('#custom_logo img').removeClass('zoom');
jQuery('#custom_logo img').css('maxHeight', '');
jQuery('#custom_logo_transparent img').removeClass('zoom');
jQuery('#custom_logo').css('marginTop', parseInt(logoMargin)+'px');
jQuery('#custom_logo_transparent').css('marginTop', parseInt(logoTransMargin)+'px');
jQuery('#menu_wrapper div .nav > li > a').css('paddingTop', menuPaddingTop+'px');
jQuery('#menu_wrapper div .nav > li > a').css('paddingBottom', menuPaddingBottom+'px');;
if(jQuery('.top_bar').data('hasbg')==1){
jQuery('.top_bar').addClass('hasbg');
jQuery('#custom_logo').addClass('hidden');
jQuery('#custom_logo_transparent').removeClass('hidden');
}
if(jQuery('#tg_fixed_menu_color').val()=='dark'){
if(jQuery('.top_bar').data('hasbg')==1){
jQuery('#custom_logo').addClass('hidden');
jQuery('#custom_logo_transparent').removeClass('hidden');
}else{
jQuery('#custom_logo').removeClass('hidden');
jQuery('#custom_logo_transparent').addClass('hidden');
}}
jQuery('.header_style_wrapper').removeClass('scroll');
jQuery('.top_bar').removeClass('scroll');
jQuery('.top_bar').removeClass(jQuery('#tg_fixed_menu_color').val());
jQuery('#mobile_nav_icon').show();
}}else{
if(jQuery(this).scrollTop() >=200){
jQuery('.header_style_wrapper').addClass('nofixed');
}else{
jQuery('.header_style_wrapper').removeClass('nofixed');
}}
});
}
jQuery('.post_img img').imagesLoaded().always(function(instance){
setTimeout(function(){
jQuery(this).parent('.post_img').addClass('fadeIn');
}, 500);
});
jQuery(document).mouseenter(function(){
jQuery('body').addClass('hover');
});
jQuery(document).mouseleave(function(){
jQuery('body').removeClass('hover');
});
var siteBaseURL=jQuery('#pp_homepage_url').val();
if(jQuery('#photography_ajax_search').val()!=''){
jQuery('#s').on('input', function(){
jQuery.ajax({
url:siteBaseURL+"/wp-admin/admin-ajax.php",
type:'POST',
cache: true,
data:'action=photography_ajax_search&s='+jQuery('#s').val(),
success:function(results){
jQuery("#autocomplete").html(results);
if(results!=''){
jQuery("#autocomplete").addClass('visible');
jQuery("#autocomplete").show();
jQuery("body.js_nav .mobile_menu_wrapper").css('overflow', 'visible');
}else{
jQuery("#autocomplete").hide();
jQuery("body.js_nav .mobile_menu_wrapper").css('overflow', 'scroll');
}}
})
});
jQuery("#s").keypress(function(event){
if(event.which==13){
event.preventDefault();
jQuery("form#searchform").submit();
}});
jQuery('#s').focus(function(){
if(jQuery('#autocomplete').html()!=''){
jQuery("#autocomplete").addClass('visible');
jQuery("#autocomplete").fadeIn();
}});
jQuery('#s').blur(function(){
jQuery("#autocomplete").fadeOut();
});
}
var windowWidth=jQuery(window).width();
if(windowWidth >=960){
jQuery('.animated').waypoint(function(direction){
var animationClass=jQuery(this).data('animation');
jQuery(this).addClass(animationClass, direction==='down');
} , { offset: '100%' });
}
jQuery('#post_more_close').on('click', function(){
jQuery('#post_more_wrapper').animate({ right: '-380px' }, 300);
return false;
});
jQuery('#mobile_nav_icon').on('click', function(){
jQuery('body,html').animate({scrollTop:0},100);
jQuery('body').toggleClass('js_nav');
jQuery('#close_mobile_menu').addClass('open');
if(is_touch_device()){
jQuery('body.js_nav').css('overflow', 'auto');
}});
jQuery('#close_mobile_menu').on('click', function(){
jQuery('body').removeClass('js_nav');
jQuery(this).removeClass('open');
});
jQuery('#overlay_background').on('click', function(){
jQuery('body').removeClass('js_nav');
jQuery(this).removeClass('open');
});
jQuery('.mobile_menu_close a').on('click', function(){
jQuery('body').removeClass('js_nav');
});
jQuery('.close_alert').on('click', function(){
var target=jQuery(this).data('target');
jQuery('#'+target).fadeOut();
});
jQuery('.progress_bar').waypoint(function(direction){
jQuery(this).addClass('fadeIn');
var progressContent=jQuery(this).children('.progress_bar_holder').children('.progress_bar_content');
var progressWidth=progressContent.data('score');
progressContent.css({'width': progressWidth+'%'});
} , { offset: '100%' });
jQuery('.tooltip').tooltipster();
jQuery('.demotip').tooltipster({
position: 'left'
});
jQuery('.portfolio_prev_next_link').each(function(){
jQuery(this).tooltipster({
content: jQuery('<img src="'+jQuery(this).attr('data-img')+'" /><br/><div style="text-align:center;margin:7px 0 5px 0;"><strong>'+jQuery(this).attr('data-title')+'</strong></div>')
});
});
jQuery('.post_prev_next_link').each(function(){
jQuery(this).tooltipster({
content: jQuery('<img src="'+jQuery(this).attr('data-img')+'" />')
});
});
jQuery('.post_share').on('click', function(){
var targetShareID=jQuery(this).attr('data-share');
var targetParentID=jQuery(this).attr('data-parent');
jQuery(this).toggleClass('visible');
jQuery('#'+targetShareID).toggleClass('slideUp');
jQuery('#'+targetParentID).toggleClass('sharing');
return false;
});
if(jQuery('.page_slider.menu_transparent').find('.rev_slider_wrapper').length > 0){
var sliderHeight=jQuery('.page_slider.menu_transparent').find('.rev_slider_wrapper').height();
var topBarHeight=jQuery('.top_bar').height();
if(jQuery('.above_top_bar').length > 0){
topBarHeight+=jQuery('.above_top_bar').height();
}
if(jQuery('.page_slider.menu_transparent').find('.rev_slider_wrapper.fullscreen-container').length > 0){
var topBarHeight=55;
}
jQuery('.ppb_wrapper').css('marginTop', sliderHeight-topBarHeight+'px');
jQuery('#page_content_wrapper').css('marginTop', sliderHeight-topBarHeight+'px');
}
jQuery(window).resize(function(){
if(jQuery('.page_slider.menu_transparent').find('.rev_slider_wrapper').length > 0){
var sliderHeight=jQuery('.page_slider.menu_transparent').find('.rev_slider_wrapper').height();
var topBarHeight=jQuery('.top_bar').height();
if(jQuery('.above_top_bar').length > 0){
topBarHeight+=jQuery('.above_top_bar').height();
}
if(jQuery('.page_slider.menu_transparent').find('.rev_slider_wrapper.fullscreen-container').length > 0){
var topBarHeight=55;
}
jQuery('.ppb_wrapper').css('marginTop', sliderHeight-topBarHeight+'px');
jQuery('#page_content_wrapper').css('marginTop', sliderHeight-topBarHeight+'px');
}});
jQuery('.skin_box').on('click', function(){
jQuery('.skin_box').removeClass('selected');
jQuery(this).addClass('selected');
jQuery('#skin').val(jQuery(this).attr('data-color'));
});
jQuery('#demo_apply').on('click', function(){
jQuery('#ajax_loading').addClass('visible');
jQuery('body').addClass('loading');
jQuery("form#form_option").submit();
});
jQuery('#option_wrapper').mouseenter(function(){
jQuery('body').addClass('overflow_hidden');
});
jQuery('#option_wrapper').mouseleave(function(){
jQuery('body').removeClass('overflow_hidden');
});
jQuery('.animate').waypoint(function(direction){
var windowWidth=jQuery(window).width();
jQuery(this).addClass('visible', direction==='down');
} , { offset: '80%' });
function launchFullscreen(element){
if(element.requestFullscreen){
element.requestFullscreen();
}else if(element.mozRequestFullScreen){
element.mozRequestFullScreen();
}else if(element.webkitRequestFullscreen){
element.webkitRequestFullscreen();
}else if(element.msRequestFullscreen){
element.msRequestFullscreen();
}}
function exitFullscreen(){
if(document.exitFullscreen){
document.exitFullscreen();
}else if(document.mozCancelFullScreen){
document.mozCancelFullScreen();
}else if(document.webkitExitFullscreen){
document.webkitExitFullscreen();
}}
jQuery('#page_maximize').click(function(){
launchFullscreen(document.documentElement);
jQuery(this).hide();
jQuery('#page_minimize').show();
});
jQuery('#page_minimize').click(function(){
exitFullscreen();
jQuery('#page_maximize').show();
jQuery(this).hide();
});
jQuery('#page_share').click(function(){
jQuery('#overlay_background').addClass('visible');
jQuery('#overlay_background').addClass('share_open');
jQuery('#fullscreen_share_wrapper').css('visibility', 'visible');
});
jQuery('#overlay_background').click(function(){
if(!jQuery('body').hasClass('js_nav')){
jQuery('#overlay_background').removeClass('visible');
jQuery('#overlay_background').removeClass('share_open');
jQuery('#fullscreen_share_wrapper').css('visibility', 'hidden');
}});
jQuery('.parallax').parallax();
jQuery(window).resize(function(){
jQuery('.parallax').each(function(){
var parallaxHeight=jQuery(this).data('content-height');
parallaxHeight=parseInt((parallaxHeight/100)*jQuery(window).height());
jQuery(this).css('height', parallaxHeight+'px');
});
jQuery(window).trigger('hwparallax.reconfigure');
});
var menuLayout=jQuery('#pp_menu_layout').val();
if(jQuery(window).width()<960&&menuLayout=='leftmenu'){
document.getElementById("photography-leftmenu-css").disabled=true;
jQuery('.mobile_menu_wrapper .logo_container').hide();
}
jQuery(window).resize(function(){
if(jQuery(window).width()>=960&&menuLayout=='leftmenu'){
document.getElementById("photography-leftmenu-css").disabled=false;
jQuery('.mobile_menu_wrapper .logo_container').show();
}
else if(jQuery(window).width()<960&&menuLayout=='leftmenu'){
document.getElementById("photography-leftmenu-css").disabled=true;
jQuery('.mobile_menu_wrapper .logo_container').hide();
}});
jQuery('.rev_slider_wrapper.fullscreen-container').each(function(){
jQuery(this).append('<div class="icon-scroll"></div>');
});
if(jQuery('.one.fullwidth.slideronly').length > 0){
jQuery('body').addClass('overflow_hidden');
}
jQuery(".elementor-widget-wrap").stick_in_parent({ offset_top: 100 });
if(jQuery('#tg_sidebar_sticky').val()==1){
if(jQuery('#pp_fixed_menu').val()==1){
jQuery("#page_content_wrapper .sidebar_wrapper").stick_in_parent({ offset_top: 100 });
jQuery(".page_content_wrapper .sidebar_wrapper").stick_in_parent({ offset_top: 100 });
}else{
jQuery("#page_content_wrapper .sidebar_wrapper").stick_in_parent();
jQuery(".page_content_wrapper .sidebar_wrapper").stick_in_parent();
}
if(jQuery(window).width() < 768||is_touch_device()){
jQuery("#page_content_wrapper .sidebar_wrapper").trigger("sticky_kit:detach");
jQuery(".page_content_wrapper .sidebar_wrapper").trigger("sticky_kit:detach");
}
jQuery(window).resize(function(){
if(jQuery(window).width() < 768||is_touch_device()){
jQuery("#page_content_wrapper .sidebar_wrapper").trigger("sticky_kit:detach");
jQuery(".page_content_wrapper .sidebar_wrapper").trigger("sticky_kit:detach");
}else{
if(jQuery('#pp_fixed_menu').val()==1){
jQuery("#page_content_wrapper .sidebar_wrapper").stick_in_parent({ offset_top: 100 });
jQuery(".page_content_wrapper .sidebar_wrapper").stick_in_parent({ offset_top: 100 });
}else{
jQuery("#page_content_wrapper .sidebar_wrapper").stick_in_parent();
jQuery(".page_content_wrapper .sidebar_wrapper").stick_in_parent();
}}
});
}
jQuery('.smoove').each(function(){
var minWidth=1;
if(typeof jQuery(this).attr('data-minwidth')!='undefined'){
minWidth=jQuery(this).attr('data-minwidth');
}
var offset='20%';
if(typeof jQuery(this).attr('data-offset')!='undefined'){
offset=jQuery(this).attr('data-offset');
}
jQuery(this).smoove({
min_width:parseInt(minWidth),
offset:offset
});
});
jQuery(window).scroll(function(){
if(jQuery('#pp_fixed_menu').val()==1){
if(jQuery(this).scrollTop() >=100){
jQuery('#elementor-header').removeClass('visible');
jQuery('#elementor-sticky-header').addClass('visible');
}
else if(jQuery(this).scrollTop() < 100){
jQuery('#elementor-header').addClass('visible');
jQuery('#elementor-sticky-header').removeClass('visible');
}}else{
if(jQuery(this).scrollTop() >=100){
jQuery('#elementor-header').removeClass('visible');
}
else if(jQuery(this).scrollTop() < 100){
jQuery('#elementor-header').addClass('visible');
}}
});
setTimeout(function (){ jQuery('#elementor-header').addClass('visible'); }, 200);
jQuery('.woocommerce ul.products li.product a img').each(function(){
var img=jQuery(this);
var aParent=img.parent('a');
var data_src=img.attr('src');
var hoverSrc=aParent.find('span').data('image-src');
});
});
jQuery(window).on('resize load',adjustIframes);
jQuery(document).ready(function(){
"use strict";
jQuery('#menu_wrapper div .nav li a, .mobile_main_nav li a').on('click', function(event){
var documentScroll=jQuery(document).scrollTop();
var linkURL=jQuery(this).attr('href');
if(linkURL.slice(0,1)=='#'){
event.preventDefault();
var sectionID=jQuery(this).attr('href').substr(1);
var topBarHeight=jQuery('.top_bar').height();
if(sectionID=='top'){
jQuery('body,html').animate({scrollTop:0},1200);
}else{
if(documentScroll!=0){
var scrollToPos=parseInt(jQuery('#'+sectionID).offset().top-topBarHeight);
}else{
var scrollToPos=parseInt(jQuery('#'+sectionID).offset().top-topBarHeight+32);
}
jQuery('body,html').animate({
scrollTop: scrollToPos
}, 1200);
}
jQuery('#menu_wrapper div .nav li').removeClass('current-menu-item');
jQuery(this).parent('li').addClass('current-menu-item');
if(jQuery(window).width() < 960){
jQuery('body').removeClass('js_nav');
}}else{
return true;
}});
jQuery('#menu_wrapper div .nav li a').each(function (){
var sectionElement=jQuery(this).attr('href');
if(typeof sectionElement!='undefined'&&sectionElement.charAt(0)=='#'){
var topBarHeight=jQuery('.top_bar').height();
jQuery(sectionElement).waypoint(function(direction){
jQuery('#menu_wrapper div .nav li a').each(function(){
if(jQuery(this).attr('href')==sectionElement){
jQuery('#menu_wrapper div .nav li').removeClass('current-menu-item');
jQuery(this).parent('li').addClass('current-menu-item');
}})
}, { offset: topBarHeight });
}});
});
!function(t,e){"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,(function(){function t(){}let e=t.prototype;return e.on=function(t,e){if(!t||!e)return this;let i=this._events=this._events||{},s=i[t]=i[t]||[];return s.includes(e)||s.push(e),this},e.once=function(t,e){if(!t||!e)return this;this.on(t,e);let i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this},e.off=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;let s=i.indexOf(e);return-1!=s&&i.splice(s,1),this},e.emitEvent=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;i=i.slice(0),e=e||[];let s=this._onceEvents&&this._onceEvents[t];for(let n of i){s&&s[n]&&(this.off(t,n),delete s[n]),n.apply(this,e)}return this},e.allOff=function(){return delete this._events,delete this._onceEvents,this},t})),
function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}("undefined"!=typeof window?window:this,(function(t,e){let i=t.jQuery,s=t.console;function n(t,e,o){if(!(this instanceof n))return new n(t,e,o);let r=t;var h;("string"==typeof t&&(r=document.querySelectorAll(t)),r)?(this.elements=(h=r,Array.isArray(h)?h:"object"==typeof h&&"number"==typeof h.length?[...h]:[h]),this.options={},"function"==typeof e?o=e:Object.assign(this.options,e),o&&this.on("always",o),this.getImages(),i&&(this.jqDeferred=new i.Deferred),setTimeout(this.check.bind(this))):s.error(`Bad element for imagesLoaded ${r||t}`)}n.prototype=Object.create(e.prototype),n.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)};const o=[1,9,11];n.prototype.addElementImages=function(t){"IMG"===t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);let{nodeType:e}=t;if(!e||!o.includes(e))return;let i=t.querySelectorAll("img");for(let t of i)this.addImage(t);if("string"==typeof this.options.background){let e=t.querySelectorAll(this.options.background);for(let t of e)this.addElementBackgroundImages(t)}};const r=/url\((['"])?(.*?)\1\)/gi;function h(t){this.img=t}function d(t,e){this.url=t,this.element=e,this.img=new Image}return n.prototype.addElementBackgroundImages=function(t){let e=getComputedStyle(t);if(!e)return;let i=r.exec(e.backgroundImage);for(;null!==i;){let s=i&&i[2];s&&this.addBackground(s,t),i=r.exec(e.backgroundImage)}},n.prototype.addImage=function(t){let e=new h(t);this.images.push(e)},n.prototype.addBackground=function(t,e){let i=new d(t,e);this.images.push(i)},n.prototype.check=function(){if(this.progressedCount=0,this.hasAnyBroken=!1,!this.images.length)return void this.complete();let t=(t,e,i)=>{setTimeout((()=>{this.progress(t,e,i)}))};this.images.forEach((function(e){e.once("progress",t),e.check()}))},n.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount===this.images.length&&this.complete(),this.options.debug&&s&&s.log(`progress: ${i}`,t,e)},n.prototype.complete=function(){let t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){let t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},h.prototype=Object.create(e.prototype),h.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.img.crossOrigin&&(this.proxyImage.crossOrigin=this.img.crossOrigin),this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.currentSrc||this.img.src)},h.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},h.prototype.confirm=function(t,e){this.isLoaded=t;let{parentNode:i}=this.img,s="PICTURE"===i.nodeName?i:this.img;this.emitEvent("progress",[this,s,e])},h.prototype.handleEvent=function(t){let e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},h.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype=Object.create(h.prototype),d.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},d.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},n.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&(i=e,i.fn.imagesLoaded=function(t,e){return new n(this,t,e).jqDeferred.promise(i(this))})},n.makeJQueryPlugin(),n}));
!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,r,a){function h(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,h){var u=a.data(h,i);if(!u)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var d=u[e];if(!d||"_"==e.charAt(0))return void s(r+" is not a valid method");var l=d.apply(u,n);o=void 0===o?l:o}),void 0!==o?o:t}function u(t,e){t.each(function(t,n){var o=a.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),a.data(n,i,o))})}a=a||e||t.jQuery,a&&(r.prototype.option||(r.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return h(this,t,e)}return u(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s="undefined"==typeof r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],o=0;o<i.length;o++){var r=i[o],s=n&&n[r];s&&(this.off(t,r),delete n[r]),r.apply(this,e)}return this}},e.allOff=function(){delete this._events,delete this._onceEvents},t}),function(t,e){"function"==typeof define&&define.amd?define("get-size/get-size",e):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function t(t){var e=parseFloat(t),i=-1==t.indexOf("%")&&!isNaN(e);return i&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;u>e;e++){var i=h[e];t[i]=0}return t}function n(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}function o(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var o=n(e);s=200==Math.round(t(o.width)),r.isBoxSizeOuter=s,i.removeChild(e)}}function r(e){if(o(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var r=n(e);if("none"==r.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==r.boxSizing,l=0;u>l;l++){var c=h[l],f=r[c],m=parseFloat(f);a[c]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,g=a.paddingTop+a.paddingBottom,y=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,z=a.borderTopWidth+a.borderBottomWidth,E=d&&s,b=t(r.width);b!==!1&&(a.width=b+(E?0:p+_));var x=t(r.height);return x!==!1&&(a.height=x+(E?0:g+z)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(g+z),a.outerWidth=a.width+y,a.outerHeight=a.height+v,a}}var s,a="undefined"==typeof console?e:function(t){console.error(t)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],u=h.length,d=!1;return r}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var n=e[i],o=n+"MatchesSelector";if(t[o])return o}}();return function(e,i){return e[t](i)}}),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.matchesSelector)}(window,function(t,e){var i={};i.extend=function(t,e){for(var i in e)t[i]=e[i];return t},i.modulo=function(t,e){return(t%e+e)%e};var n=Array.prototype.slice;i.makeArray=function(t){if(Array.isArray(t))return t;if(null===t||void 0===t)return[];var e="object"==typeof t&&"number"==typeof t.length;return e?n.call(t):[t]},i.removeFrom=function(t,e){var i=t.indexOf(e);-1!=i&&t.splice(i,1)},i.getParent=function(t,i){for(;t.parentNode&&t!=document.body;)if(t=t.parentNode,e(t,i))return t},i.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.filterFindElements=function(t,n){t=i.makeArray(t);var o=[];return t.forEach(function(t){if(t instanceof HTMLElement){if(!n)return void o.push(t);e(t,n)&&o.push(t);for(var i=t.querySelectorAll(n),r=0;r<i.length;r++)o.push(i[r])}}),o},i.debounceMethod=function(t,e,i){i=i||100;var n=t.prototype[e],o=e+"Timeout";t.prototype[e]=function(){var t=this[o];clearTimeout(t);var e=arguments,r=this;this[o]=setTimeout(function(){n.apply(r,e),delete r[o]},i)}},i.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},i.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var o=t.console;return i.htmlInit=function(e,n){i.docReady(function(){var r=i.toDashed(n),s="data-"+r,a=document.querySelectorAll("["+s+"]"),h=document.querySelectorAll(".js-"+r),u=i.makeArray(a).concat(i.makeArray(h)),d=s+"-options",l=t.jQuery;u.forEach(function(t){var i,r=t.getAttribute(s)||t.getAttribute(d);try{i=r&&JSON.parse(r)}catch(a){return void(o&&o.error("Error parsing "+s+" on "+t.className+": "+a))}var h=new e(t,i);l&&l.data(t,n,h)})})},i}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/item",["ev-emitter/ev-emitter","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("ev-emitter"),require("get-size")):(t.Outlayer={},t.Outlayer.Item=e(t.EvEmitter,t.getSize))}(window,function(t,e){"use strict";function i(t){for(var e in t)return!1;return e=null,!0}function n(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}function o(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}var r=document.documentElement.style,s="string"==typeof r.transition?"transition":"WebkitTransition",a="string"==typeof r.transform?"transform":"WebkitTransform",h={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[s],u={transform:a,transition:s,transitionDuration:s+"Duration",transitionProperty:s+"Property",transitionDelay:s+"Delay"},d=n.prototype=Object.create(t.prototype);d.constructor=n,d._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},d.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},d.getSize=function(){this.size=e(this.element)},d.css=function(t){var e=this.element.style;for(var i in t){var n=u[i]||i;e[n]=t[i]}},d.getPosition=function(){var t=getComputedStyle(this.element),e=this.layout._getOption("originLeft"),i=this.layout._getOption("originTop"),n=t[e?"left":"right"],o=t[i?"top":"bottom"],r=parseFloat(n),s=parseFloat(o),a=this.layout.size;-1!=n.indexOf("%")&&(r=r/100*a.width),-1!=o.indexOf("%")&&(s=s/100*a.height),r=isNaN(r)?0:r,s=isNaN(s)?0:s,r-=e?a.paddingLeft:a.paddingRight,s-=i?a.paddingTop:a.paddingBottom,this.position.x=r,this.position.y=s},d.layoutPosition=function(){var t=this.layout.size,e={},i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop"),o=i?"paddingLeft":"paddingRight",r=i?"left":"right",s=i?"right":"left",a=this.position.x+t[o];e[r]=this.getXValue(a),e[s]="";var h=n?"paddingTop":"paddingBottom",u=n?"top":"bottom",d=n?"bottom":"top",l=this.position.y+t[h];e[u]=this.getYValue(l),e[d]="",this.css(e),this.emitEvent("layout",[this])},d.getXValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!e?t/this.layout.size.width*100+"%":t+"px"},d.getYValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&e?t/this.layout.size.height*100+"%":t+"px"},d._transitionTo=function(t,e){this.getPosition();var i=this.position.x,n=this.position.y,o=t==this.position.x&&e==this.position.y;if(this.setPosition(t,e),o&&!this.isTransitioning)return void this.layoutPosition();var r=t-i,s=e-n,a={};a.transform=this.getTranslate(r,s),this.transition({to:a,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},d.getTranslate=function(t,e){var i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop");return t=i?t:-t,e=n?e:-e,"translate3d("+t+"px, "+e+"px, 0)"},d.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},d.moveTo=d._transitionTo,d.setPosition=function(t,e){this.position.x=parseFloat(t),this.position.y=parseFloat(e)},d._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},d.transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(t);var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var n=this.element.offsetHeight;n=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var l="opacity,"+o(a);d.enableTransition=function(){if(!this.isTransitioning){var t=this.layout.options.transitionDuration;t="number"==typeof t?t+"ms":t,this.css({transitionProperty:l,transitionDuration:t,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(h,this,!1)}},d.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},d.onotransitionend=function(t){this.ontransitionend(t)};var c={"-webkit-transform":"transform"};d.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,n=c[t.propertyName]||t.propertyName;if(delete e.ingProperties[n],i(e.ingProperties)&&this.disableTransition(),n in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[n]),n in e.onEnd){var o=e.onEnd[n];o.call(this),delete e.onEnd[n]}this.emitEvent("transitionEnd",[this])}},d.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(h,this,!1),this.isTransitioning=!1},d._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var f={transitionProperty:"",transitionDuration:"",transitionDelay:""};return d.removeTransitionStyles=function(){this.css(f)},d.stagger=function(t){t=isNaN(t)?0:t,this.staggerDelay=t+"ms"},d.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},d.remove=function(){return s&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",function(){this.removeElem()}),void this.hide()):void this.removeElem()},d.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("visibleStyle");e[i]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},d.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},d.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var i in e)return i},d.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("hiddenStyle");e[i]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},d.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},d.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},n}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(i,n,o,r){return e(t,i,n,o,r)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):t.Outlayer=e(t,t.EvEmitter,t.getSize,t.fizzyUIUtils,t.Outlayer.Item)}(window,function(t,e,i,n,o){"use strict";function r(t,e){var i=n.getQueryElement(t);if(!i)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(i||t)));this.element=i,u&&(this.$element=u(this.element)),this.options=n.extend({},this.constructor.defaults),this.option(e);var o=++l;this.element.outlayerGUID=o,c[o]=this,this._create();var r=this._getOption("initLayout");r&&this.layout()}function s(t){function e(){t.apply(this,arguments)}return e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e}function a(t){if("number"==typeof t)return t;var e=t.match(/(^\d*\.?\d*)(\w*)/),i=e&&e[1],n=e&&e[2];if(!i.length)return 0;i=parseFloat(i);var o=m[n]||1;return i*o}var h=t.console,u=t.jQuery,d=function(){},l=0,c={};r.namespace="outlayer",r.Item=o,r.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var f=r.prototype;n.extend(f,e.prototype),f.option=function(t){n.extend(this.options,t)},f._getOption=function(t){var e=this.constructor.compatOptions[t];return e&&void 0!==this.options[e]?this.options[e]:this.options[t]},r.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},f._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),n.extend(this.element.style,this.options.containerStyle);var t=this._getOption("resize");t&&this.bindResize()},f.reloadItems=function(){this.items=this._itemize(this.element.children)},f._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,n=[],o=0;o<e.length;o++){var r=e[o],s=new i(r,this);n.push(s)}return n},f._filterFindItemElements=function(t){return n.filterFindElements(t,this.options.itemSelector)},f.getItemElements=function(){return this.items.map(function(t){return t.element})},f.layout=function(){this._resetLayout(),this._manageStamps();var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;this.layoutItems(this.items,e),this._isLayoutInited=!0},f._init=f.layout,f._resetLayout=function(){this.getSize()},f.getSize=function(){this.size=i(this.element)},f._getMeasurement=function(t,e){var n,o=this.options[t];o?("string"==typeof o?n=this.element.querySelector(o):o instanceof HTMLElement&&(n=o),this[t]=n?i(n)[e]:o):this[t]=0},f.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},f._getItemsForLayout=function(t){return t.filter(function(t){return!t.isIgnored})},f._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){var i=[];t.forEach(function(t){var n=this._getItemLayoutPosition(t);n.item=t,n.isInstant=e||t.isLayoutInstant,i.push(n)},this),this._processLayoutQueue(i)}},f._getItemLayoutPosition=function(){return{x:0,y:0}},f._processLayoutQueue=function(t){this.updateStagger(),t.forEach(function(t,e){this._positionItem(t.item,t.x,t.y,t.isInstant,e)},this)},f.updateStagger=function(){var t=this.options.stagger;return null===t||void 0===t?void(this.stagger=0):(this.stagger=a(t),this.stagger)},f._positionItem=function(t,e,i,n,o){n?t.goTo(e,i):(t.stagger(o*this.stagger),t.moveTo(e,i))},f._postLayout=function(){this.resizeContainer()},f.resizeContainer=function(){var t=this._getOption("resizeContainer");if(t){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},f._getContainerSize=d,f._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},f._emitCompleteOnItems=function(t,e){function i(){o.dispatchEvent(t+"Complete",null,[e])}function n(){s++,s==r&&i()}var o=this,r=e.length;if(!e||!r)return void i();var s=0;e.forEach(function(e){e.once(t,n)})},f.dispatchEvent=function(t,e,i){var n=e?[e].concat(i):i;if(this.emitEvent(t,n),u)if(this.$element=this.$element||u(this.element),e){var o=u.Event(e);o.type=t,this.$element.trigger(o,i)}else this.$element.trigger(t,i)},f.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},f.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},f.stamp=function(t){t=this._find(t),t&&(this.stamps=this.stamps.concat(t),t.forEach(this.ignore,this))},f.unstamp=function(t){t=this._find(t),t&&t.forEach(function(t){n.removeFrom(this.stamps,t),this.unignore(t)},this)},f._find=function(t){return t?("string"==typeof t&&(t=this.element.querySelectorAll(t)),t=n.makeArray(t)):void 0},f._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},f._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},f._manageStamp=d,f._getElementOffset=function(t){var e=t.getBoundingClientRect(),n=this._boundingRect,o=i(t),r={left:e.left-n.left-o.marginLeft,top:e.top-n.top-o.marginTop,right:n.right-e.right-o.marginRight,bottom:n.bottom-e.bottom-o.marginBottom};return r},f.handleEvent=n.handleEvent,f.bindResize=function(){t.addEventListener("resize",this),this.isResizeBound=!0},f.unbindResize=function(){t.removeEventListener("resize",this),this.isResizeBound=!1},f.onresize=function(){this.resize()},n.debounceMethod(r,"onresize",100),f.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},f.needsResizeLayout=function(){var t=i(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},f.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},f.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},f.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},f.reveal=function(t){if(this._emitCompleteOnItems("reveal",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.reveal()})}},f.hide=function(t){if(this._emitCompleteOnItems("hide",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.hide()})}},f.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},f.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},f.getItem=function(t){for(var e=0;e<this.items.length;e++){var i=this.items[e];if(i.element==t)return i}},f.getItems=function(t){t=n.makeArray(t);var e=[];return t.forEach(function(t){var i=this.getItem(t);i&&e.push(i)},this),e},f.remove=function(t){var e=this.getItems(t);this._emitCompleteOnItems("remove",e),e&&e.length&&e.forEach(function(t){t.remove(),n.removeFrom(this.items,t)},this)},f.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="",this.items.forEach(function(t){t.destroy()}),this.unbindResize();var e=this.element.outlayerGUID;delete c[e],delete this.element.outlayerGUID,u&&u.removeData(this.element,this.constructor.namespace)},r.data=function(t){t=n.getQueryElement(t);var e=t&&t.outlayerGUID;return e&&c[e]},r.create=function(t,e){var i=s(r);return i.defaults=n.extend({},r.defaults),n.extend(i.defaults,e),i.compatOptions=n.extend({},r.compatOptions),i.namespace=t,i.data=r.data,i.Item=s(o),n.htmlInit(i,t),u&&u.bridget&&u.bridget(t,i),i};var m={ms:1,s:1e3};return r.Item=o,r}),function(t,e){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer"),require("get-size")):t.Masonry=e(t.Outlayer,t.getSize)}(window,function(t,e){var i=t.create("masonry");i.compatOptions.fitWidth="isFitWidth";var n=i.prototype;return n._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var t=0;t<this.cols;t++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},n.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}var n=this.columnWidth+=this.gutter,o=this.containerWidth+this.gutter,r=o/n,s=n-o%n,a=s&&1>s?"round":"floor";r=Math[a](r),this.cols=Math.max(r,1)},n.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,n=e(i);this.containerWidth=n&&n.innerWidth},n._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&1>e?"round":"ceil",n=Math[i](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var o=this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition",r=this[o](n,t),s={x:this.columnWidth*r.col,y:r.y},a=r.y+t.size.outerHeight,h=n+r.col,u=r.col;h>u;u++)this.colYs[u]=a;return s},n._getTopColPosition=function(t){var e=this._getTopColGroup(t),i=Math.min.apply(Math,e);return{col:e.indexOf(i),y:i}},n._getTopColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,n=0;i>n;n++)e[n]=this._getColGroupY(n,t);return e},n._getColGroupY=function(t,e){if(2>e)return this.colYs[t];var i=this.colYs.slice(t,t+e);return Math.max.apply(Math,i)},n._getHorizontalColPosition=function(t,e){var i=this.horizontalColIndex%this.cols,n=t>1&&i+t>this.cols;i=n?0:i;var o=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=o?i+t:this.horizontalColIndex,{col:i,y:this._getColGroupY(i,t)}},n._manageStamp=function(t){var i=e(t),n=this._getElementOffset(t),o=this._getOption("originLeft"),r=o?n.left:n.right,s=r+i.outerWidth,a=Math.floor(r/this.columnWidth);a=Math.max(0,a);var h=Math.floor(s/this.columnWidth);h-=s%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var u=this._getOption("originTop"),d=(u?n.top:n.bottom)+i.outerHeight,l=a;h>=l;l++)this.colYs[l]=Math.max(d,this.colYs[l])},n._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},n._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},n.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i});
jQuery(document).ready(function(){
jQuery('#blog_grid_wrapper').imagesLoaded().always(function(instance){
setTimeout(function(){
jQuery('#blog_grid_wrapper').masonry({
itemSelector: '.post',
columnWidth: '.post',
gutter: 30,
percentPosition: true,
transitionDuration: 0,
});
jQuery('#blog_grid_wrapper').children('.post').each(function(){
jQuery(this).addClass('fade-in');
});
}, 500);
});
jQuery('.blog_grid_wrapper').each(function(){
jQuery('.blog_grid_wrapper').imagesLoaded().always(function(instance){
setTimeout(function(){
jQuery('.blog_grid_wrapper').masonry({
itemSelector: '.post',
columnWidth: '.post',
gutter: 30,
percentPosition: true,
transitionDuration: 0,
});
jQuery('.blog_grid_wrapper').children('.post').each(function(){
jQuery(this).addClass('fade-in');
});
}, 500);
});
});
});