;(function($, window, document, undefined){
var INSTANT_SEARCH={
is_on_request: false,
delay_search: null,
keywords: '',
form_template: '<form class="vw-instant-search__panel" method="get" autocomplete="off"> <input type="text" id="s" name="s" value="" placeholder="'+instant_search.placeholder+'"> <div class="vw-loading-icon"> <div class="sk-three-bounce"><div class="sk-child sk-bounce1"></div><div class="sk-child sk-bounce2"></div><div class="sk-child sk-bounce3"></div></div></div> <ul class="vw-instant-search__result"></ul> </form>',
defaults: {
search_delay: 350,
},
init: function(el, options){
this.options=$.extend({}, this.defaults, options);
this.startSearch=$.proxy(this.startSearch, this);
this.onClickIcon=$.proxy(this.onClickIcon, this);
this.onClickOutside=$.proxy(this.onClickOutside, this);
this.onTyping=$.proxy(this.onTyping, this);
this.onRequestCompleted=$.proxy(this.onRequestCompleted, this);
this.$form=$(this.form_template);
this.$searchbox=$('#s', this.$form);
this.$loading=$('.vw-loading-icon', this.$form);
this.$result_panel=$('.vw-instant-search__result', this.$form);
this.$icon=$(el);
this.$icon.click(this.onClickIcon);
this.$icon.after(this.$form);
this.initForm();
$(document).mousedown(this.onClickOutside);
},
initForm: function(){
this.$form.hide();
this.$form.attr('action', instant_search.blog_url);
this.$searchbox.keyup(this.onTyping);
},
startSearch: function(){
this.$loading.show();
if(this.is_on_request){
this.request.abort();
}
this.is_on_request=true;
this.request=$.ajax({
url: instant_search.ajax_url,
data: { s: this.keywords, action: 'presso_instant_search' },
success: this.onRequestCompleted,
});
},
showPanel: function(){
this.$form.css('opacity', '0').show();
this.$form.animate({ opacity: 1, marginTop: '0px' }, { duration: 150 });
},
hidePanel: function(){
this.$form.animate({ opacity: 0, marginTop: '-10px' }, { duration: 150, complete: function(){
$(this).hide();
}});
},
onClickIcon: function(e){
e.preventDefault();
if(! this.$form.is(':visible') ){
this.showPanel();
this.$searchbox.focus();
}else{
this.hidePanel();
}
return false;
},
onClickOutside: function(e){
if(( ! this.$form.is(e.target)&&this.$form.has(e.target).length===0)
&&(! this.$icon.is(e.target)&&this.$icon.has(e.target).length===0)
){
this.hidePanel();
}},
onRequestCompleted: function(data){
this.$result_panel.empty();
this.$result_panel.append(data);
this.is_on_request=false;
this.$loading.hide();
},
onTyping: function(e){
var keywords=this.$searchbox.val();
if(keywords==this.keywords) return;
if(keywords.length < 3){
clearTimeout(this.delay_search);
this.$loading.hide();
return;
}
if(this.delay_search){
clearTimeout(this.delay_search);
}
this.keywords=keywords;
this.delay_search=setTimeout(this.startSearch , this.options.search_delay);
},
}
$.fn.instant_search=function(arg1){
return this.each(function(){
var instant_search=$.extend({}, INSTANT_SEARCH);
instant_search.init(this, arg1);
});
};})(jQuery, window , document);
(function (){
var defaultOptions={
frameRate:150,
animationTime:400,
stepSize:100,
pulseAlgorithm:true,
pulseScale:4,
pulseNormalize:1,
accelerationDelta:50,
accelerationMax:3,
keyboardSupport:true,
arrowScroll:50,
fixedBackground:true,
excluded:''
};
var options=defaultOptions;
var isExcluded=false;
var isFrame=false;
var direction={ x: 0, y: 0 };
var initDone=false;
var root=document.documentElement;
var activeElement;
var observer;
var refreshSize;
var deltaBuffer=[];
var isMac=/^Mac/.test(navigator.platform);
var key={ left: 37, up: 38, right: 39, down: 40, spacebar: 32,
pageup: 33, pagedown: 34, end: 35, home: 36 };
var arrowKeys={ 37: 1, 38: 1, 39: 1, 40: 1 };
function initTest(){
if(options.keyboardSupport){
addEvent('keydown', keydown);
}}
function init(){
if(initDone||!document.body) return;
initDone=true;
var body=document.body;
var html=document.documentElement;
var windowHeight=window.innerHeight;
var scrollHeight=body.scrollHeight;
root=(document.compatMode.indexOf('CSS') >=0) ? html:body;
activeElement=body;
initTest();
if(top!=self){
isFrame=true;
}
else if(isOldSafari &&
scrollHeight > windowHeight &&
(body.offsetHeight <=windowHeight ||
html.offsetHeight <=windowHeight)){
var fullPageElem=document.createElement('div');
fullPageElem.style.cssText='position:absolute; z-index:-10000; ' +
'top:0; left:0; right:0; height:' +
root.scrollHeight + 'px';
document.body.appendChild(fullPageElem);
var pendingRefresh;
refreshSize=function (){
if(pendingRefresh) return;
pendingRefresh=setTimeout(function (){
if(isExcluded) return;
fullPageElem.style.height='0';
fullPageElem.style.height=root.scrollHeight + 'px';
pendingRefresh=null;
}, 500);
};
setTimeout(refreshSize, 10);
addEvent('resize', refreshSize);
var config={
attributes: true,
childList: true,
characterData: false
};
observer=new MutationObserver(refreshSize);
observer.observe(body, config);
if(root.offsetHeight <=windowHeight){
var clearfix=document.createElement('div');
clearfix.style.clear='both';
body.appendChild(clearfix);
}}
if(!options.fixedBackground&&!isExcluded){
body.style.backgroundAttachment='scroll';
html.style.backgroundAttachment='scroll';
}}
function cleanup(){
observer&&observer.disconnect();
removeEvent(wheelEvent, wheel);
removeEvent('mousedown', mousedown);
removeEvent('keydown', keydown);
removeEvent('resize', refreshSize);
removeEvent('load', init);
}
var que=[];
var pending=false;
var lastScroll=Date.now();
function scrollArray(elem, left, top){
directionCheck(left, top);
if(options.accelerationMax!=1){
var now=Date.now();
var elapsed=now - lastScroll;
if(elapsed < options.accelerationDelta){
var factor=(1 + (50 / elapsed)) / 2;
if(factor > 1){
factor=Math.min(factor, options.accelerationMax);
left *=factor;
top  *=factor;
}}
lastScroll=Date.now();
}
que.push({
x: left,
y: top,
lastX: (left < 0) ? 0.99:-0.99,
lastY: (top  < 0) ? 0.99:-0.99,
start: Date.now()
});
if(pending){
return;
}
var scrollWindow=(elem===document.body);
var step=function (time){
var now=Date.now();
var scrollX=0;
var scrollY=0;
for (var i=0; i < que.length; i++){
var item=que[i];
var elapsed=now - item.start;
var finished=(elapsed >=options.animationTime);
var position=(finished) ? 1:elapsed / options.animationTime;
if(options.pulseAlgorithm){
position=pulse(position);
}
var x=(item.x * position - item.lastX) >> 0;
var y=(item.y * position - item.lastY) >> 0;
scrollX +=x;
scrollY +=y;
item.lastX +=x;
item.lastY +=y;
if(finished){
que.splice(i, 1); i--;
}}
if(scrollWindow){
window.scrollBy(scrollX, scrollY);
}else{
if(scrollX) elem.scrollLeft +=scrollX;
if(scrollY) elem.scrollTop  +=scrollY;
}
if(!left&&!top){
que=[];
}
if(que.length){
requestFrame(step, elem, (1000 / options.frameRate + 1));
}else{
pending=false;
}};
requestFrame(step, elem, 0);
pending=true;
}
function wheel(event){
if(!initDone){
init();
}
var target=event.target;
if(event.defaultPrevented||event.ctrlKey){
return true;
}
if(isNodeName(activeElement, 'embed') ||
(isNodeName(target, 'embed')&&/\.pdf/i.test(target.src)) ||
isNodeName(activeElement, 'object') ||
target.shadowRoot){
return true;
}
var deltaX=-event.wheelDeltaX||event.deltaX||0;
var deltaY=-event.wheelDeltaY||event.deltaY||0;
if(isMac){
if(event.wheelDeltaX&&isDivisible(event.wheelDeltaX, 120)){
deltaX=-120 * (event.wheelDeltaX / Math.abs(event.wheelDeltaX));
}
if(event.wheelDeltaY&&isDivisible(event.wheelDeltaY, 120)){
deltaY=-120 * (event.wheelDeltaY / Math.abs(event.wheelDeltaY));
}}
if(!deltaX&&!deltaY){
deltaY=-event.wheelDelta||0;
}
if(event.deltaMode===1){
deltaX *=40;
deltaY *=40;
}
var overflowing=overflowingAncestor(target);
if(!overflowing){
if(isFrame&&isChrome){
Object.defineProperty(event, "target", {value: window.frameElement});
return parent.wheel(event);
}
return true;
}
if(isTouchpad(deltaY)){
return true;
}
if(Math.abs(deltaX) > 1.2){
deltaX *=options.stepSize / 120;
}
if(Math.abs(deltaY) > 1.2){
deltaY *=options.stepSize / 120;
}
scrollArray(overflowing, deltaX, deltaY);
event.preventDefault();
scheduleClearCache();
}
function keydown(event){
var target=event.target;
var modifier=event.ctrlKey||event.altKey||event.metaKey ||
(event.shiftKey&&event.keyCode!==key.spacebar);
if(!document.body.contains(activeElement)){
activeElement=document.activeElement;
}
var inputNodeNames=/^(textarea|select|embed|object)$/i;
var buttonTypes=/^(button|submit|radio|checkbox|file|color|image)$/i;
if(event.defaultPrevented ||
inputNodeNames.test(target.nodeName) ||
isNodeName(target, 'input')&&!buttonTypes.test(target.type) ||
isNodeName(activeElement, 'video') ||
isInsideYoutubeVideo(event) ||
target.isContentEditable ||
modifier){
return true;
}
if((isNodeName(target, 'button') ||
isNodeName(target, 'input')&&buttonTypes.test(target.type)) &&
event.keyCode===key.spacebar){
return true;
}
if(isNodeName(target, 'input')&&target.type=='radio' &&
arrowKeys[event.keyCode]){
return true;
}
var shift, x=0, y=0;
var overflowing=overflowingAncestor(activeElement);
if(!overflowing){
return (isFrame&&isChrome) ? parent.keydown(event):true;
}
var clientHeight=overflowing.clientHeight;
if(overflowing==document.body){
clientHeight=window.innerHeight;
}
switch (event.keyCode){
case key.up:
y=-options.arrowScroll;
break;
case key.down:
y=options.arrowScroll;
break;
case key.spacebar:
shift=event.shiftKey ? 1:-1;
y=-shift * clientHeight * 0.9;
break;
case key.pageup:
y=-clientHeight * 0.9;
break;
case key.pagedown:
y=clientHeight * 0.9;
break;
case key.home:
y=-overflowing.scrollTop;
break;
case key.end:
var scroll=overflowing.scrollHeight - overflowing.scrollTop;
var scrollRemaining=scroll - clientHeight;
y=(scrollRemaining > 0) ? scrollRemaining + 10:0;
break;
case key.left:
x=-options.arrowScroll;
break;
case key.right:
x=options.arrowScroll;
break;
default:
return true;
}
scrollArray(overflowing, x, y);
event.preventDefault();
scheduleClearCache();
}
function mousedown(event){
activeElement=event.target;
}
var uniqueID=(function (){
var i=0;
return function (el){
return el.uniqueID||(el.uniqueID=i++);
};})();
var cache={};
var clearCacheTimer;
function scheduleClearCache(){
clearTimeout(clearCacheTimer);
clearCacheTimer=setInterval(function (){ cache={};}, 1*1000);
}
function setCache(elems, overflowing){
for (var i=elems.length; i--;)
cache[uniqueID(elems[i])]=overflowing;
return overflowing;
}
function overflowingAncestor(el){
var elems=[];
var body=document.body;
var rootScrollHeight=root.scrollHeight;
do {
var cached=cache[uniqueID(el)];
if(cached){
return setCache(elems, cached);
}
elems.push(el);
if(rootScrollHeight===el.scrollHeight){
var topOverflowsNotHidden=overflowNotHidden(root)&&overflowNotHidden(body);
var isOverflowCSS=topOverflowsNotHidden||overflowAutoOrScroll(root);
if(isFrame&&isContentOverflowing(root) ||
!isFrame&&isOverflowCSS){
return setCache(elems, getScrollRoot());
}}else if(isContentOverflowing(el)&&overflowAutoOrScroll(el)){
return setCache(elems, el);
}} while (el=el.parentElement);
}
function isContentOverflowing(el){
return (el.clientHeight + 10 < el.scrollHeight);
}
function overflowNotHidden(el){
var overflow=getComputedStyle(el, '').getPropertyValue('overflow-y');
return (overflow!=='hidden');
}
function overflowAutoOrScroll(el){
var overflow=getComputedStyle(el, '').getPropertyValue('overflow-y');
return (overflow==='scroll'||overflow==='auto');
}
function addEvent(type, fn){
window.addEventListener(type, fn, false);
}
function removeEvent(type, fn){
window.removeEventListener(type, fn, false);
}
function isNodeName(el, tag){
return (el.nodeName||'').toLowerCase()===tag.toLowerCase();
}
function directionCheck(x, y){
x=(x > 0) ? 1:-1;
y=(y > 0) ? 1:-1;
if(direction.x!==x||direction.y!==y){
direction.x=x;
direction.y=y;
que=[];
lastScroll=0;
}}
var deltaBufferTimer;
if(window.localStorage&&localStorage.SS_deltaBuffer){
try {
deltaBuffer=localStorage.SS_deltaBuffer.split(',');
} catch (e){ }}
function isTouchpad(deltaY){
if(!deltaY) return;
if(!deltaBuffer.length){
deltaBuffer=[deltaY, deltaY, deltaY];
}
deltaY=Math.abs(deltaY);
deltaBuffer.push(deltaY);
deltaBuffer.shift();
clearTimeout(deltaBufferTimer);
deltaBufferTimer=setTimeout(function (){
try {
localStorage.SS_deltaBuffer=deltaBuffer.join(',');
} catch (e){ }}, 1000);
return !allDeltasDivisableBy(120)&&!allDeltasDivisableBy(100);
}
function isDivisible(n, divisor){
return (Math.floor(n / divisor)==n / divisor);
}
function allDeltasDivisableBy(divisor){
return (isDivisible(deltaBuffer[0], divisor) &&
isDivisible(deltaBuffer[1], divisor) &&
isDivisible(deltaBuffer[2], divisor));
}
function isInsideYoutubeVideo(event){
var elem=event.target;
var isControl=false;
if(document.URL.indexOf ('www.youtube.com/watch')!=-1){
do {
isControl=(elem.classList &&
elem.classList.contains('html5-video-controls'));
if(isControl) break;
} while (elem=elem.parentNode);
}
return isControl;
}
var requestFrame=(function (){
return (window.requestAnimationFrame       ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame    ||
function (callback, element, delay){
window.setTimeout(callback, delay||(1000/60));
});
})();
var MutationObserver=(window.MutationObserver ||
window.WebKitMutationObserver ||
window.MozMutationObserver);
var getScrollRoot=(function(){
var SCROLL_ROOT;
return function(){
if(!SCROLL_ROOT){
var dummy=document.createElement('div');
dummy.style.cssText='height:10000px;width:1px;';
document.body.appendChild(dummy);
var bodyScrollTop=document.body.scrollTop;
var docElScrollTop=document.documentElement.scrollTop;
window.scrollBy(0, 3);
if(document.body.scrollTop!=bodyScrollTop)
(SCROLL_ROOT=document.body);
else
(SCROLL_ROOT=document.documentElement);
window.scrollBy(0, -3);
document.body.removeChild(dummy);
}
return SCROLL_ROOT;
};})();
function pulse_(x){
var val, start, expx;
x=x * options.pulseScale;
if(x < 1){
val=x - (1 - Math.exp(-x));
}else{
start=Math.exp(-1);
x -=1;
expx=1 - Math.exp(-x);
val=start + (expx * (1 - start));
}
return val * options.pulseNormalize;
}
function pulse(x){
if(x >=1) return 1;
if(x <=0) return 0;
if(options.pulseNormalize==1){
options.pulseNormalize /=pulse_(1);
}
return pulse_(x);
}
var userAgent=window.navigator.userAgent;
var isEdge=/Edge/.test(userAgent);
var isChrome=/chrome/i.test(userAgent)&&!isEdge;
var isSafari=/safari/i.test(userAgent)&&!isEdge;
var isMobile=/mobile/i.test(userAgent);
var isIEWin7=/Windows NT 6.1/i.test(userAgent)&&/rv:11/i.test(userAgent);
var isOldSafari=isSafari&&(/Version\/8/i.test(userAgent)||/Version\/9/i.test(userAgent));
var isEnabledForBrowser=(isChrome||isSafari||isIEWin7)&&!isMobile;
var wheelEvent;
if('onwheel' in document.createElement('div'))
wheelEvent='wheel';
else if('onmousewheel' in document.createElement('div'))
wheelEvent='mousewheel';
if(wheelEvent&&isEnabledForBrowser){
addEvent(wheelEvent, wheel);
addEvent('mousedown', mousedown);
addEvent('load', init);
}
function SmoothScroll(optionsToSet){
for (var key in optionsToSet)
if(defaultOptions.hasOwnProperty(key))
options[key]=optionsToSet[key];
}
SmoothScroll.destroy=cleanup;
if(window.SmoothScrollOptions)
SmoothScroll(window.SmoothScrollOptions);
if(typeof define==='function'&&define.amd)
define(function(){
return SmoothScroll;
});
else if('object'==typeof exports)
module.exports=SmoothScroll;
else
window.SmoothScroll=SmoothScroll;
})();
(function(factory){
'use strict';
if(typeof define==='function'&&define.amd){
define(['jquery'], factory);
}else if(jQuery&&!jQuery.fn.hoverIntent){
factory(jQuery);
}})(function($){
'use strict';
var _cfg={
interval: 100,
sensitivity: 6,
timeout: 0
};
var INSTANCE_COUNT=0;
var cX, cY;
var track=function(ev){
cX=ev.pageX;
cY=ev.pageY;
};
var compare=function(ev,$el,s,cfg){
if(Math.sqrt((s.pX-cX)*(s.pX-cX) + (s.pY-cY)*(s.pY-cY)) < cfg.sensitivity){
$el.off(s.event,track);
delete s.timeoutId;
s.isActive=true;
ev.pageX=cX; ev.pageY=cY;
delete s.pX; delete s.pY;
return cfg.over.apply($el[0],[ev]);
}else{
s.pX=cX; s.pY=cY;
s.timeoutId=setTimeout(function(){compare(ev, $el, s, cfg);} , cfg.interval);
}};
var delay=function(ev,$el,s,out){
delete $el.data('hoverIntent')[s.id];
return out.apply($el[0],[ev]);
};
$.fn.hoverIntent=function(handlerIn,handlerOut,selector){
var instanceId=INSTANCE_COUNT++;
var cfg=$.extend({}, _cfg);
if($.isPlainObject(handlerIn)){
cfg=$.extend(cfg, handlerIn);
if(!$.isFunction(cfg.out)){
cfg.out=cfg.over;
}}else if($.isFunction(handlerOut)){
cfg=$.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector });
}else{
cfg=$.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut });
}
var handleHover=function(e){
var ev=$.extend({},e);
var $el=$(this);
var hoverIntentData=$el.data('hoverIntent');
if(!hoverIntentData){ $el.data('hoverIntent', (hoverIntentData={})); }
var state=hoverIntentData[instanceId];
if(!state){ hoverIntentData[instanceId]=state={ id: instanceId };}
if(state.timeoutId){ state.timeoutId=clearTimeout(state.timeoutId); }
var mousemove=state.event='mousemove.hoverIntent.hoverIntent'+instanceId;
if(e.type==='mouseenter'){
if(state.isActive){ return; }
state.pX=ev.pageX; state.pY=ev.pageY;
$el.off(mousemove,track).on(mousemove,track);
state.timeoutId=setTimeout(function(){compare(ev,$el,state,cfg);} , cfg.interval);
}else{ // "mouseleave"
if(!state.isActive){ return; }
$el.off(mousemove,track);
state.timeoutId=setTimeout(function(){delay(ev,$el,state,cfg.out);} , cfg.timeout);
}};
return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);
};});
(function($){
"use strict";
$.fn.fitVids=function(options){
var settings={
customSelector: null,
ignore: null
};
if(!document.getElementById('fit-vids-style')){
var head=document.head||document.getElementsByTagName('head')[0];
var css='.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
var div=document.createElement('div');
div.innerHTML='<p>x</p><style id="fit-vids-style">' + css + '</style>';
head.appendChild(div.childNodes[1]);
}
if(options){
$.extend(settings, options);
}
return this.each(function(){
var selectors=[
"iframe[src*='player.vimeo.com']",
"iframe[src*='youtube.com']",
"iframe[src*='youtube-nocookie.com']",
"iframe[src*='kickstarter.com'][src*='video.html']",
"object",
"embed"
];
if(settings.customSelector){
selectors.push(settings.customSelector);
}
var ignoreList='.fitvidsignore';
if(settings.ignore){
ignoreList=ignoreList + ', ' + settings.ignore;
}
var $allVideos=$(this).find(selectors.join(','));
$allVideos=$allVideos.not("object object");
$allVideos=$allVideos.not(ignoreList);
$allVideos.each(function(){
var $this=$(this);
if($this.parents(ignoreList).length > 0){
return;
}
if(this.tagName.toLowerCase()==='embed'&&$this.parent('object').length||$this.parent('.fluid-width-video-wrapper').length){ return; }
if((!$this.css('height')&&!$this.css('width'))&&(isNaN($this.attr('height'))||isNaN($this.attr('width')))){
$this.attr('height', 9);
$this.attr('width', 16);
}
var height=(this.tagName.toLowerCase()==='object'||($this.attr('height')&&!isNaN(parseInt($this.attr('height'), 10)))) ? parseInt($this.attr('height'), 10):$this.height(),
width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10):$this.width(),
aspectRatio=height / width;
if(!$this.attr('id')){
var videoID='fitvid' + Math.floor(Math.random()*999999);
$this.attr('id', videoID);
}
$this.wrap('<div class="fluid-width-video-wrapper"></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%");
$this.removeAttr('height').removeAttr('width');
});
});
};})(window.jQuery||window.Zepto);
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
'use strict';
var ps=require('../main');
var psInstances=require('../plugin/instances');
function mountJQuery(jQuery){
jQuery.fn.perfectScrollbar=function (settingOrCommand){
return this.each(function (){
if(typeof settingOrCommand==='object' ||
typeof settingOrCommand==='undefined'){
var settings=settingOrCommand;
if(!psInstances.get(this)){
ps.initialize(this, settings);
}}else{
var command=settingOrCommand;
if(command==='update'){
ps.update(this);
}else if(command==='destroy'){
ps.destroy(this);
}}
});
};}
if(typeof define==='function'&&define.amd){
define(['jquery'], mountJQuery);
}else{
var jq=window.jQuery ? window.jQuery:window.$;
if(typeof jq!=='undefined'){
mountJQuery(jq);
}}
module.exports=mountJQuery;
},{"../main":7,"../plugin/instances":18}],2:[function(require,module,exports){
'use strict';
function oldAdd(element, className){
var classes=element.className.split(' ');
if(classes.indexOf(className) < 0){
classes.push(className);
}
element.className=classes.join(' ');
}
function oldRemove(element, className){
var classes=element.className.split(' ');
var idx=classes.indexOf(className);
if(idx >=0){
classes.splice(idx, 1);
}
element.className=classes.join(' ');
}
exports.add=function (element, className){
if(element.classList){
element.classList.add(className);
}else{
oldAdd(element, className);
}};
exports.remove=function (element, className){
if(element.classList){
element.classList.remove(className);
}else{
oldRemove(element, className);
}};
exports.list=function (element){
if(element.classList){
return Array.prototype.slice.apply(element.classList);
}else{
return element.className.split(' ');
}};},{}],3:[function(require,module,exports){
'use strict';
var DOM={};
DOM.e=function (tagName, className){
var element=document.createElement(tagName);
element.className=className;
return element;
};
DOM.appendTo=function (child, parent){
parent.appendChild(child);
return child;
};
function cssGet(element, styleName){
return window.getComputedStyle(element)[styleName];
}
function cssSet(element, styleName, styleValue){
if(typeof styleValue==='number'){
styleValue=styleValue.toString() + 'px';
}
element.style[styleName]=styleValue;
return element;
}
function cssMultiSet(element, obj){
for (var key in obj){
var val=obj[key];
if(typeof val==='number'){
val=val.toString() + 'px';
}
element.style[key]=val;
}
return element;
}
DOM.css=function (element, styleNameOrObject, styleValue){
if(typeof styleNameOrObject==='object'){
return cssMultiSet(element, styleNameOrObject);
}else{
if(typeof styleValue==='undefined'){
return cssGet(element, styleNameOrObject);
}else{
return cssSet(element, styleNameOrObject, styleValue);
}}
};
DOM.matches=function (element, query){
if(typeof element.matches!=='undefined'){
return element.matches(query);
}else{
if(typeof element.matchesSelector!=='undefined'){
return element.matchesSelector(query);
}else if(typeof element.webkitMatchesSelector!=='undefined'){
return element.webkitMatchesSelector(query);
}else if(typeof element.mozMatchesSelector!=='undefined'){
return element.mozMatchesSelector(query);
}else if(typeof element.msMatchesSelector!=='undefined'){
return element.msMatchesSelector(query);
}}
};
DOM.remove=function (element){
if(typeof element.remove!=='undefined'){
element.remove();
}else{
if(element.parentNode){
element.parentNode.removeChild(element);
}}
};
DOM.queryChildren=function (element, selector){
return Array.prototype.filter.call(element.childNodes, function (child){
return DOM.matches(child, selector);
});
};
module.exports=DOM;
},{}],4:[function(require,module,exports){
'use strict';
var EventElement=function (element){
this.element=element;
this.events={};};
EventElement.prototype.bind=function (eventName, handler){
if(typeof this.events[eventName]==='undefined'){
this.events[eventName]=[];
}
this.events[eventName].push(handler);
this.element.addEventListener(eventName, handler, false);
};
EventElement.prototype.unbind=function (eventName, handler){
var isHandlerProvided=(typeof handler!=='undefined');
this.events[eventName]=this.events[eventName].filter(function (hdlr){
if(isHandlerProvided&&hdlr!==handler){
return true;
}
this.element.removeEventListener(eventName, hdlr, false);
return false;
}, this);
};
EventElement.prototype.unbindAll=function (){
for (var name in this.events){
this.unbind(name);
}};
var EventManager=function (){
this.eventElements=[];
};
EventManager.prototype.eventElement=function (element){
var ee=this.eventElements.filter(function (eventElement){
return eventElement.element===element;
})[0];
if(typeof ee==='undefined'){
ee=new EventElement(element);
this.eventElements.push(ee);
}
return ee;
};
EventManager.prototype.bind=function (element, eventName, handler){
this.eventElement(element).bind(eventName, handler);
};
EventManager.prototype.unbind=function (element, eventName, handler){
this.eventElement(element).unbind(eventName, handler);
};
EventManager.prototype.unbindAll=function (){
for (var i=0; i < this.eventElements.length; i++){
this.eventElements[i].unbindAll();
}};
EventManager.prototype.once=function (element, eventName, handler){
var ee=this.eventElement(element);
var onceHandler=function (e){
ee.unbind(eventName, onceHandler);
handler(e);
};
ee.bind(eventName, onceHandler);
};
module.exports=EventManager;
},{}],5:[function(require,module,exports){
'use strict';
module.exports=(function (){
function s4(){
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return function (){
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
};})();
},{}],6:[function(require,module,exports){
'use strict';
var cls=require('./class');
var dom=require('./dom');
var toInt=exports.toInt=function (x){
return parseInt(x, 10)||0;
};
var clone=exports.clone=function (obj){
if(obj===null){
return null;
}else if(obj.constructor===Array){
return obj.map(clone);
}else if(typeof obj==='object'){
var result={};
for (var key in obj){
result[key]=clone(obj[key]);
}
return result;
}else{
return obj;
}};
exports.extend=function (original, source){
var result=clone(original);
for (var key in source){
result[key]=clone(source[key]);
}
return result;
};
exports.isEditable=function (el){
return dom.matches(el, "input,[contenteditable]") ||
dom.matches(el, "select,[contenteditable]") ||
dom.matches(el, "textarea,[contenteditable]") ||
dom.matches(el, "button,[contenteditable]");
};
exports.removePsClasses=function (element){
var clsList=cls.list(element);
for (var i=0; i < clsList.length; i++){
var className=clsList[i];
if(className.indexOf('ps-')===0){
cls.remove(element, className);
}}
};
exports.outerWidth=function (element){
return toInt(dom.css(element, 'width')) +
toInt(dom.css(element, 'paddingLeft')) +
toInt(dom.css(element, 'paddingRight')) +
toInt(dom.css(element, 'borderLeftWidth')) +
toInt(dom.css(element, 'borderRightWidth'));
};
exports.startScrolling=function (element, axis){
cls.add(element, 'ps-in-scrolling');
if(typeof axis!=='undefined'){
cls.add(element, 'ps-' + axis);
}else{
cls.add(element, 'ps-x');
cls.add(element, 'ps-y');
}};
exports.stopScrolling=function (element, axis){
cls.remove(element, 'ps-in-scrolling');
if(typeof axis!=='undefined'){
cls.remove(element, 'ps-' + axis);
}else{
cls.remove(element, 'ps-x');
cls.remove(element, 'ps-y');
}};
exports.env={
isWebKit: 'WebkitAppearance' in document.documentElement.style,
supportsTouch: (('ontouchstart' in window)||window.DocumentTouch&&document instanceof window.DocumentTouch),
supportsIePointer: window.navigator.msMaxTouchPoints!==null
};},{"./class":2,"./dom":3}],7:[function(require,module,exports){
'use strict';
var destroy=require('./plugin/destroy');
var initialize=require('./plugin/initialize');
var update=require('./plugin/update');
module.exports={
initialize: initialize,
update: update,
destroy: destroy
};},{"./plugin/destroy":9,"./plugin/initialize":17,"./plugin/update":21}],8:[function(require,module,exports){
'use strict';
module.exports={
handlers: ['click-rail', 'drag-scrollbar', 'keyboard', 'wheel', 'touch'],
maxScrollbarLength: null,
minScrollbarLength: null,
scrollXMarginOffset: 0,
scrollYMarginOffset: 0,
stopPropagationOnClick: true,
suppressScrollX: false,
suppressScrollY: false,
swipePropagation: true,
useBothWheelAxes: false,
wheelPropagation: false,
wheelSpeed: 1,
theme: 'default'
};},{}],9:[function(require,module,exports){
'use strict';
var _=require('../lib/helper');
var dom=require('../lib/dom');
var instances=require('./instances');
module.exports=function (element){
var i=instances.get(element);
if(!i){
return;
}
i.event.unbindAll();
dom.remove(i.scrollbarX);
dom.remove(i.scrollbarY);
dom.remove(i.scrollbarXRail);
dom.remove(i.scrollbarYRail);
_.removePsClasses(element);
instances.remove(element);
};},{"../lib/dom":3,"../lib/helper":6,"./instances":18}],10:[function(require,module,exports){
'use strict';
var _=require('../../lib/helper');
var instances=require('../instances');
var updateGeometry=require('../update-geometry');
var updateScroll=require('../update-scroll');
function bindClickRailHandler(element, i){
function pageOffset(el){
return el.getBoundingClientRect();
}
var stopPropagation=function (e){ e.stopPropagation(); };
if(i.settings.stopPropagationOnClick){
i.event.bind(i.scrollbarY, 'click', stopPropagation);
}
i.event.bind(i.scrollbarYRail, 'click', function (e){
var halfOfScrollbarLength=_.toInt(i.scrollbarYHeight / 2);
var positionTop=i.railYRatio * (e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top - halfOfScrollbarLength);
var maxPositionTop=i.railYRatio * (i.railYHeight - i.scrollbarYHeight);
var positionRatio=positionTop / maxPositionTop;
if(positionRatio < 0){
positionRatio=0;
}else if(positionRatio > 1){
positionRatio=1;
}
updateScroll(element, 'top', (i.contentHeight - i.containerHeight) * positionRatio);
updateGeometry(element);
e.stopPropagation();
});
if(i.settings.stopPropagationOnClick){
i.event.bind(i.scrollbarX, 'click', stopPropagation);
}
i.event.bind(i.scrollbarXRail, 'click', function (e){
var halfOfScrollbarLength=_.toInt(i.scrollbarXWidth / 2);
var positionLeft=i.railXRatio * (e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left - halfOfScrollbarLength);
var maxPositionLeft=i.railXRatio * (i.railXWidth - i.scrollbarXWidth);
var positionRatio=positionLeft / maxPositionLeft;
if(positionRatio < 0){
positionRatio=0;
}else if(positionRatio > 1){
positionRatio=1;
}
updateScroll(element, 'left', ((i.contentWidth - i.containerWidth) * positionRatio) - i.negativeScrollAdjustment);
updateGeometry(element);
e.stopPropagation();
});
}
module.exports=function (element){
var i=instances.get(element);
bindClickRailHandler(element, i);
};},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],11:[function(require,module,exports){
'use strict';
var _=require('../../lib/helper');
var dom=require('../../lib/dom');
var instances=require('../instances');
var updateGeometry=require('../update-geometry');
var updateScroll=require('../update-scroll');
function bindMouseScrollXHandler(element, i){
var currentLeft=null;
var currentPageX=null;
function updateScrollLeft(deltaX){
var newLeft=currentLeft + (deltaX * i.railXRatio);
var maxLeft=Math.max(0, i.scrollbarXRail.getBoundingClientRect().left) + (i.railXRatio * (i.railXWidth - i.scrollbarXWidth));
if(newLeft < 0){
i.scrollbarXLeft=0;
}else if(newLeft > maxLeft){
i.scrollbarXLeft=maxLeft;
}else{
i.scrollbarXLeft=newLeft;
}
var scrollLeft=_.toInt(i.scrollbarXLeft * (i.contentWidth - i.containerWidth) / (i.containerWidth - (i.railXRatio * i.scrollbarXWidth))) - i.negativeScrollAdjustment;
updateScroll(element, 'left', scrollLeft);
}
var mouseMoveHandler=function (e){
updateScrollLeft(e.pageX - currentPageX);
updateGeometry(element);
e.stopPropagation();
e.preventDefault();
};
var mouseUpHandler=function (){
_.stopScrolling(element, 'x');
i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);
};
i.event.bind(i.scrollbarX, 'mousedown', function (e){
currentPageX=e.pageX;
currentLeft=_.toInt(dom.css(i.scrollbarX, 'left')) * i.railXRatio;
_.startScrolling(element, 'x');
i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);
i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);
e.stopPropagation();
e.preventDefault();
});
}
function bindMouseScrollYHandler(element, i){
var currentTop=null;
var currentPageY=null;
function updateScrollTop(deltaY){
var newTop=currentTop + (deltaY * i.railYRatio);
var maxTop=Math.max(0, i.scrollbarYRail.getBoundingClientRect().top) + (i.railYRatio * (i.railYHeight - i.scrollbarYHeight));
if(newTop < 0){
i.scrollbarYTop=0;
}else if(newTop > maxTop){
i.scrollbarYTop=maxTop;
}else{
i.scrollbarYTop=newTop;
}
var scrollTop=_.toInt(i.scrollbarYTop * (i.contentHeight - i.containerHeight) / (i.containerHeight - (i.railYRatio * i.scrollbarYHeight)));
updateScroll(element, 'top', scrollTop);
}
var mouseMoveHandler=function (e){
updateScrollTop(e.pageY - currentPageY);
updateGeometry(element);
e.stopPropagation();
e.preventDefault();
};
var mouseUpHandler=function (){
_.stopScrolling(element, 'y');
i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);
};
i.event.bind(i.scrollbarY, 'mousedown', function (e){
currentPageY=e.pageY;
currentTop=_.toInt(dom.css(i.scrollbarY, 'top')) * i.railYRatio;
_.startScrolling(element, 'y');
i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);
i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);
e.stopPropagation();
e.preventDefault();
});
}
module.exports=function (element){
var i=instances.get(element);
bindMouseScrollXHandler(element, i);
bindMouseScrollYHandler(element, i);
};},{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],12:[function(require,module,exports){
'use strict';
var _=require('../../lib/helper');
var dom=require('../../lib/dom');
var instances=require('../instances');
var updateGeometry=require('../update-geometry');
var updateScroll=require('../update-scroll');
function bindKeyboardHandler(element, i){
var hovered=false;
i.event.bind(element, 'mouseenter', function (){
hovered=true;
});
i.event.bind(element, 'mouseleave', function (){
hovered=false;
});
var shouldPrevent=false;
function shouldPreventDefault(deltaX, deltaY){
var scrollTop=element.scrollTop;
if(deltaX===0){
if(!i.scrollbarYActive){
return false;
}
if((scrollTop===0&&deltaY > 0)||(scrollTop >=i.contentHeight - i.containerHeight&&deltaY < 0)){
return !i.settings.wheelPropagation;
}}
var scrollLeft=element.scrollLeft;
if(deltaY===0){
if(!i.scrollbarXActive){
return false;
}
if((scrollLeft===0&&deltaX < 0)||(scrollLeft >=i.contentWidth - i.containerWidth&&deltaX > 0)){
return !i.settings.wheelPropagation;
}}
return true;
}
i.event.bind(i.ownerDocument, 'keydown', function (e){
if(e.isDefaultPrevented&&e.isDefaultPrevented()){
return;
}
var focused=dom.matches(i.scrollbarX, ':focus') ||
dom.matches(i.scrollbarY, ':focus');
if(!hovered&&!focused){
return;
}
var activeElement=document.activeElement ? document.activeElement:i.ownerDocument.activeElement;
if(activeElement){
if(activeElement.tagName==='IFRAME'){
activeElement=activeElement.contentDocument.activeElement;
}else{
while (activeElement.shadowRoot){
activeElement=activeElement.shadowRoot.activeElement;
}}
if(_.isEditable(activeElement)){
return;
}}
var deltaX=0;
var deltaY=0;
switch (e.which){
case 37:
deltaX=-30;
break;
case 38:
deltaY=30;
break;
case 39:
deltaX=30;
break;
case 40:
deltaY=-30;
break;
case 33:
deltaY=90;
break;
case 32:
if(e.shiftKey){
deltaY=90;
}else{
deltaY=-90;
}
break;
case 34:
deltaY=-90;
break;
case 35:
if(e.ctrlKey){
deltaY=-i.contentHeight;
}else{
deltaY=-i.containerHeight;
}
break;
case 36:
if(e.ctrlKey){
deltaY=element.scrollTop;
}else{
deltaY=i.containerHeight;
}
break;
default:
return;
}
updateScroll(element, 'top', element.scrollTop - deltaY);
updateScroll(element, 'left', element.scrollLeft + deltaX);
updateGeometry(element);
shouldPrevent=shouldPreventDefault(deltaX, deltaY);
if(shouldPrevent){
e.preventDefault();
}});
}
module.exports=function (element){
var i=instances.get(element);
bindKeyboardHandler(element, i);
};},{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],13:[function(require,module,exports){
'use strict';
var instances=require('../instances');
var updateGeometry=require('../update-geometry');
var updateScroll=require('../update-scroll');
function bindMouseWheelHandler(element, i){
var shouldPrevent=false;
function shouldPreventDefault(deltaX, deltaY){
var scrollTop=element.scrollTop;
if(deltaX===0){
if(!i.scrollbarYActive){
return false;
}
if((scrollTop===0&&deltaY > 0)||(scrollTop >=i.contentHeight - i.containerHeight&&deltaY < 0)){
return !i.settings.wheelPropagation;
}}
var scrollLeft=element.scrollLeft;
if(deltaY===0){
if(!i.scrollbarXActive){
return false;
}
if((scrollLeft===0&&deltaX < 0)||(scrollLeft >=i.contentWidth - i.containerWidth&&deltaX > 0)){
return !i.settings.wheelPropagation;
}}
return true;
}
function getDeltaFromEvent(e){
var deltaX=e.deltaX;
var deltaY=-1 * e.deltaY;
if(typeof deltaX==="undefined"||typeof deltaY==="undefined"){
deltaX=-1 * e.wheelDeltaX / 6;
deltaY=e.wheelDeltaY / 6;
}
if(e.deltaMode&&e.deltaMode===1){
deltaX *=10;
deltaY *=10;
}
if(deltaX!==deltaX&&deltaY!==deltaY){
deltaX=0;
deltaY=e.wheelDelta;
}
return [deltaX, deltaY];
}
function shouldBeConsumedByChild(deltaX, deltaY){
var child=element.querySelector('textarea:hover, .ps-child:hover');
if(child){
if(child.tagName!=='TEXTAREA'&&!window.getComputedStyle(child).overflow.match(/(scroll|auto)/)){
return false;
}
var maxScrollTop=child.scrollHeight - child.clientHeight;
if(maxScrollTop > 0){
if(!(child.scrollTop===0&&deltaY > 0)&&!(child.scrollTop===maxScrollTop&&deltaY < 0)){
return true;
}}
var maxScrollLeft=child.scrollLeft - child.clientWidth;
if(maxScrollLeft > 0){
if(!(child.scrollLeft===0&&deltaX < 0)&&!(child.scrollLeft===maxScrollLeft&&deltaX > 0)){
return true;
}}
}
return false;
}
function mousewheelHandler(e){
var delta=getDeltaFromEvent(e);
var deltaX=delta[0];
var deltaY=delta[1];
if(shouldBeConsumedByChild(deltaX, deltaY)){
return;
}
shouldPrevent=false;
if(!i.settings.useBothWheelAxes){
updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));
updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));
}else if(i.scrollbarYActive&&!i.scrollbarXActive){
if(deltaY){
updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));
}else{
updateScroll(element, 'top', element.scrollTop + (deltaX * i.settings.wheelSpeed));
}
shouldPrevent=true;
}else if(i.scrollbarXActive&&!i.scrollbarYActive){
if(deltaX){
updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));
}else{
updateScroll(element, 'left', element.scrollLeft - (deltaY * i.settings.wheelSpeed));
}
shouldPrevent=true;
}
updateGeometry(element);
shouldPrevent=(shouldPrevent||shouldPreventDefault(deltaX, deltaY));
if(shouldPrevent){
e.stopPropagation();
e.preventDefault();
}}
if(typeof window.onwheel!=="undefined"){
i.event.bind(element, 'wheel', mousewheelHandler);
}else if(typeof window.onmousewheel!=="undefined"){
i.event.bind(element, 'mousewheel', mousewheelHandler);
}}
module.exports=function (element){
var i=instances.get(element);
bindMouseWheelHandler(element, i);
};},{"../instances":18,"../update-geometry":19,"../update-scroll":20}],14:[function(require,module,exports){
'use strict';
var instances=require('../instances');
var updateGeometry=require('../update-geometry');
function bindNativeScrollHandler(element, i){
i.event.bind(element, 'scroll', function (){
updateGeometry(element);
});
}
module.exports=function (element){
var i=instances.get(element);
bindNativeScrollHandler(element, i);
};},{"../instances":18,"../update-geometry":19}],15:[function(require,module,exports){
'use strict';
var _=require('../../lib/helper');
var instances=require('../instances');
var updateGeometry=require('../update-geometry');
var updateScroll=require('../update-scroll');
function bindSelectionHandler(element, i){
function getRangeNode(){
var selection=window.getSelection ? window.getSelection() :
document.getSelection ? document.getSelection():'';
if(selection.toString().length===0){
return null;
}else{
return selection.getRangeAt(0).commonAncestorContainer;
}}
var scrollingLoop=null;
var scrollDiff={top: 0, left: 0};
function startScrolling(){
if(!scrollingLoop){
scrollingLoop=setInterval(function (){
if(!instances.get(element)){
clearInterval(scrollingLoop);
return;
}
updateScroll(element, 'top', element.scrollTop + scrollDiff.top);
updateScroll(element, 'left', element.scrollLeft + scrollDiff.left);
updateGeometry(element);
}, 50);
}}
function stopScrolling(){
if(scrollingLoop){
clearInterval(scrollingLoop);
scrollingLoop=null;
}
_.stopScrolling(element);
}
var isSelected=false;
i.event.bind(i.ownerDocument, 'selectionchange', function (){
if(element.contains(getRangeNode())){
isSelected=true;
}else{
isSelected=false;
stopScrolling();
}});
i.event.bind(window, 'mouseup', function (){
if(isSelected){
isSelected=false;
stopScrolling();
}});
i.event.bind(window, 'mousemove', function (e){
if(isSelected){
var mousePosition={x: e.pageX, y: e.pageY};
var containerGeometry={
left: element.offsetLeft,
right: element.offsetLeft + element.offsetWidth,
top: element.offsetTop,
bottom: element.offsetTop + element.offsetHeight
};
if(mousePosition.x < containerGeometry.left + 3){
scrollDiff.left=-5;
_.startScrolling(element, 'x');
}else if(mousePosition.x > containerGeometry.right - 3){
scrollDiff.left=5;
_.startScrolling(element, 'x');
}else{
scrollDiff.left=0;
}
if(mousePosition.y < containerGeometry.top + 3){
if(containerGeometry.top + 3 - mousePosition.y < 5){
scrollDiff.top=-5;
}else{
scrollDiff.top=-20;
}
_.startScrolling(element, 'y');
}else if(mousePosition.y > containerGeometry.bottom - 3){
if(mousePosition.y - containerGeometry.bottom + 3 < 5){
scrollDiff.top=5;
}else{
scrollDiff.top=20;
}
_.startScrolling(element, 'y');
}else{
scrollDiff.top=0;
}
if(scrollDiff.top===0&&scrollDiff.left===0){
stopScrolling();
}else{
startScrolling();
}}
});
}
module.exports=function (element){
var i=instances.get(element);
bindSelectionHandler(element, i);
};},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],16:[function(require,module,exports){
'use strict';
var _=require('../../lib/helper');
var instances=require('../instances');
var updateGeometry=require('../update-geometry');
var updateScroll=require('../update-scroll');
function bindTouchHandler(element, i, supportsTouch, supportsIePointer){
function shouldPreventDefault(deltaX, deltaY){
var scrollTop=element.scrollTop;
var scrollLeft=element.scrollLeft;
var magnitudeX=Math.abs(deltaX);
var magnitudeY=Math.abs(deltaY);
if(magnitudeY > magnitudeX){
if(((deltaY < 0)&&(scrollTop===i.contentHeight - i.containerHeight)) ||
((deltaY > 0)&&(scrollTop===0))){
return !i.settings.swipePropagation;
}}else if(magnitudeX > magnitudeY){
if(((deltaX < 0)&&(scrollLeft===i.contentWidth - i.containerWidth)) ||
((deltaX > 0)&&(scrollLeft===0))){
return !i.settings.swipePropagation;
}}
return true;
}
function applyTouchMove(differenceX, differenceY){
updateScroll(element, 'top', element.scrollTop - differenceY);
updateScroll(element, 'left', element.scrollLeft - differenceX);
updateGeometry(element);
}
var startOffset={};
var startTime=0;
var speed={};
var easingLoop=null;
var inGlobalTouch=false;
var inLocalTouch=false;
function globalTouchStart(){
inGlobalTouch=true;
}
function globalTouchEnd(){
inGlobalTouch=false;
}
function getTouch(e){
if(e.targetTouches){
return e.targetTouches[0];
}else{
return e;
}}
function shouldHandle(e){
if(e.targetTouches&&e.targetTouches.length===1){
return true;
}
if(e.pointerType&&e.pointerType!=='mouse'&&e.pointerType!==e.MSPOINTER_TYPE_MOUSE){
return true;
}
return false;
}
function touchStart(e){
if(shouldHandle(e)){
inLocalTouch=true;
var touch=getTouch(e);
startOffset.pageX=touch.pageX;
startOffset.pageY=touch.pageY;
startTime=(new Date()).getTime();
if(easingLoop!==null){
clearInterval(easingLoop);
}
e.stopPropagation();
}}
function touchMove(e){
if(!inLocalTouch&&i.settings.swipePropagation){
touchStart(e);
}
if(!inGlobalTouch&&inLocalTouch&&shouldHandle(e)){
var touch=getTouch(e);
var currentOffset={pageX: touch.pageX, pageY: touch.pageY};
var differenceX=currentOffset.pageX - startOffset.pageX;
var differenceY=currentOffset.pageY - startOffset.pageY;
applyTouchMove(differenceX, differenceY);
startOffset=currentOffset;
var currentTime=(new Date()).getTime();
var timeGap=currentTime - startTime;
if(timeGap > 0){
speed.x=differenceX / timeGap;
speed.y=differenceY / timeGap;
startTime=currentTime;
}
if(shouldPreventDefault(differenceX, differenceY)){
e.stopPropagation();
e.preventDefault();
}}
}
function touchEnd(){
if(!inGlobalTouch&&inLocalTouch){
inLocalTouch=false;
clearInterval(easingLoop);
easingLoop=setInterval(function (){
if(!instances.get(element)){
clearInterval(easingLoop);
return;
}
if(Math.abs(speed.x) < 0.01&&Math.abs(speed.y) < 0.01){
clearInterval(easingLoop);
return;
}
applyTouchMove(speed.x * 30, speed.y * 30);
speed.x *=0.8;
speed.y *=0.8;
}, 10);
}}
if(supportsTouch){
i.event.bind(window, 'touchstart', globalTouchStart);
i.event.bind(window, 'touchend', globalTouchEnd);
i.event.bind(element, 'touchstart', touchStart);
i.event.bind(element, 'touchmove', touchMove);
i.event.bind(element, 'touchend', touchEnd);
}
if(supportsIePointer){
if(window.PointerEvent){
i.event.bind(window, 'pointerdown', globalTouchStart);
i.event.bind(window, 'pointerup', globalTouchEnd);
i.event.bind(element, 'pointerdown', touchStart);
i.event.bind(element, 'pointermove', touchMove);
i.event.bind(element, 'pointerup', touchEnd);
}else if(window.MSPointerEvent){
i.event.bind(window, 'MSPointerDown', globalTouchStart);
i.event.bind(window, 'MSPointerUp', globalTouchEnd);
i.event.bind(element, 'MSPointerDown', touchStart);
i.event.bind(element, 'MSPointerMove', touchMove);
i.event.bind(element, 'MSPointerUp', touchEnd);
}}
}
module.exports=function (element){
if(!_.env.supportsTouch&&!_.env.supportsIePointer){
return;
}
var i=instances.get(element);
bindTouchHandler(element, i, _.env.supportsTouch, _.env.supportsIePointer);
};},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],17:[function(require,module,exports){
'use strict';
var _=require('../lib/helper');
var cls=require('../lib/class');
var instances=require('./instances');
var updateGeometry=require('./update-geometry');
var handlers={
'click-rail': require('./handler/click-rail'),
'drag-scrollbar': require('./handler/drag-scrollbar'),
'keyboard': require('./handler/keyboard'),
'wheel': require('./handler/mouse-wheel'),
'touch': require('./handler/touch'),
'selection': require('./handler/selection')
};
var nativeScrollHandler=require('./handler/native-scroll');
module.exports=function (element, userSettings){
userSettings=typeof userSettings==='object' ? userSettings:{};
cls.add(element, 'ps-container');
var i=instances.add(element);
i.settings=_.extend(i.settings, userSettings);
cls.add(element, 'ps-theme-' + i.settings.theme);
i.settings.handlers.forEach(function (handlerName){
handlers[handlerName](element);
});
nativeScrollHandler(element);
updateGeometry(element);
};},{"../lib/class":2,"../lib/helper":6,"./handler/click-rail":10,"./handler/drag-scrollbar":11,"./handler/keyboard":12,"./handler/mouse-wheel":13,"./handler/native-scroll":14,"./handler/selection":15,"./handler/touch":16,"./instances":18,"./update-geometry":19}],18:[function(require,module,exports){
'use strict';
var _=require('../lib/helper');
var cls=require('../lib/class');
var defaultSettings=require('./default-setting');
var dom=require('../lib/dom');
var EventManager=require('../lib/event-manager');
var guid=require('../lib/guid');
var instances={};
function Instance(element){
var i=this;
i.settings=_.clone(defaultSettings);
i.containerWidth=null;
i.containerHeight=null;
i.contentWidth=null;
i.contentHeight=null;
i.isRtl=dom.css(element, 'direction')==="rtl";
i.isNegativeScroll=(function (){
var originalScrollLeft=element.scrollLeft;
var result=null;
element.scrollLeft=-1;
result=element.scrollLeft < 0;
element.scrollLeft=originalScrollLeft;
return result;
})();
i.negativeScrollAdjustment=i.isNegativeScroll ? element.scrollWidth - element.clientWidth:0;
i.event=new EventManager();
i.ownerDocument=element.ownerDocument||document;
function focus(){
cls.add(element, 'ps-focus');
}
function blur(){
cls.remove(element, 'ps-focus');
}
i.scrollbarXRail=dom.appendTo(dom.e('div', 'ps-scrollbar-x-rail'), element);
i.scrollbarX=dom.appendTo(dom.e('div', 'ps-scrollbar-x'), i.scrollbarXRail);
i.scrollbarX.setAttribute('tabindex', 0);
i.event.bind(i.scrollbarX, 'focus', focus);
i.event.bind(i.scrollbarX, 'blur', blur);
i.scrollbarXActive=null;
i.scrollbarXWidth=null;
i.scrollbarXLeft=null;
i.scrollbarXBottom=_.toInt(dom.css(i.scrollbarXRail, 'bottom'));
i.isScrollbarXUsingBottom=i.scrollbarXBottom===i.scrollbarXBottom;
i.scrollbarXTop=i.isScrollbarXUsingBottom ? null:_.toInt(dom.css(i.scrollbarXRail, 'top'));
i.railBorderXWidth=_.toInt(dom.css(i.scrollbarXRail, 'borderLeftWidth')) + _.toInt(dom.css(i.scrollbarXRail, 'borderRightWidth'));
dom.css(i.scrollbarXRail, 'display', 'block');
i.railXMarginWidth=_.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight'));
dom.css(i.scrollbarXRail, 'display', '');
i.railXWidth=null;
i.railXRatio=null;
i.scrollbarYRail=dom.appendTo(dom.e('div', 'ps-scrollbar-y-rail'), element);
i.scrollbarY=dom.appendTo(dom.e('div', 'ps-scrollbar-y'), i.scrollbarYRail);
i.scrollbarY.setAttribute('tabindex', 0);
i.event.bind(i.scrollbarY, 'focus', focus);
i.event.bind(i.scrollbarY, 'blur', blur);
i.scrollbarYActive=null;
i.scrollbarYHeight=null;
i.scrollbarYTop=null;
i.scrollbarYRight=_.toInt(dom.css(i.scrollbarYRail, 'right'));
i.isScrollbarYUsingRight=i.scrollbarYRight===i.scrollbarYRight;
i.scrollbarYLeft=i.isScrollbarYUsingRight ? null:_.toInt(dom.css(i.scrollbarYRail, 'left'));
i.scrollbarYOuterWidth=i.isRtl ? _.outerWidth(i.scrollbarY):null;
i.railBorderYWidth=_.toInt(dom.css(i.scrollbarYRail, 'borderTopWidth')) + _.toInt(dom.css(i.scrollbarYRail, 'borderBottomWidth'));
dom.css(i.scrollbarYRail, 'display', 'block');
i.railYMarginHeight=_.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom'));
dom.css(i.scrollbarYRail, 'display', '');
i.railYHeight=null;
i.railYRatio=null;
}
function getId(element){
return element.getAttribute('data-ps-id');
}
function setId(element, id){
element.setAttribute('data-ps-id', id);
}
function removeId(element){
element.removeAttribute('data-ps-id');
}
exports.add=function (element){
var newId=guid();
setId(element, newId);
instances[newId]=new Instance(element);
return instances[newId];
};
exports.remove=function (element){
delete instances[getId(element)];
removeId(element);
};
exports.get=function (element){
return instances[getId(element)];
};},{"../lib/class":2,"../lib/dom":3,"../lib/event-manager":4,"../lib/guid":5,"../lib/helper":6,"./default-setting":8}],19:[function(require,module,exports){
'use strict';
var _=require('../lib/helper');
var cls=require('../lib/class');
var dom=require('../lib/dom');
var instances=require('./instances');
var updateScroll=require('./update-scroll');
function getThumbSize(i, thumbSize){
if(i.settings.minScrollbarLength){
thumbSize=Math.max(thumbSize, i.settings.minScrollbarLength);
}
if(i.settings.maxScrollbarLength){
thumbSize=Math.min(thumbSize, i.settings.maxScrollbarLength);
}
return thumbSize;
}
function updateCss(element, i){
var xRailOffset={width: i.railXWidth};
if(i.isRtl){
xRailOffset.left=i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth;
}else{
xRailOffset.left=element.scrollLeft;
}
if(i.isScrollbarXUsingBottom){
xRailOffset.bottom=i.scrollbarXBottom - element.scrollTop;
}else{
xRailOffset.top=i.scrollbarXTop + element.scrollTop;
}
dom.css(i.scrollbarXRail, xRailOffset);
var yRailOffset={top: element.scrollTop, height: i.railYHeight};
if(i.isScrollbarYUsingRight){
if(i.isRtl){
yRailOffset.right=i.contentWidth - (i.negativeScrollAdjustment + element.scrollLeft) - i.scrollbarYRight - i.scrollbarYOuterWidth;
}else{
yRailOffset.right=i.scrollbarYRight - element.scrollLeft;
}}else{
if(i.isRtl){
yRailOffset.left=i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth * 2 - i.contentWidth - i.scrollbarYLeft - i.scrollbarYOuterWidth;
}else{
yRailOffset.left=i.scrollbarYLeft + element.scrollLeft;
}}
dom.css(i.scrollbarYRail, yRailOffset);
dom.css(i.scrollbarX, {left: i.scrollbarXLeft, width: i.scrollbarXWidth - i.railBorderXWidth});
dom.css(i.scrollbarY, {top: i.scrollbarYTop, height: i.scrollbarYHeight - i.railBorderYWidth});
}
module.exports=function (element){
var i=instances.get(element);
i.containerWidth=element.clientWidth;
i.containerHeight=element.clientHeight;
i.contentWidth=element.scrollWidth;
i.contentHeight=element.scrollHeight;
var existingRails;
if(!element.contains(i.scrollbarXRail)){
existingRails=dom.queryChildren(element, '.ps-scrollbar-x-rail');
if(existingRails.length > 0){
existingRails.forEach(function (rail){
dom.remove(rail);
});
}
dom.appendTo(i.scrollbarXRail, element);
}
if(!element.contains(i.scrollbarYRail)){
existingRails=dom.queryChildren(element, '.ps-scrollbar-y-rail');
if(existingRails.length > 0){
existingRails.forEach(function (rail){
dom.remove(rail);
});
}
dom.appendTo(i.scrollbarYRail, element);
}
if(!i.settings.suppressScrollX&&i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth){
i.scrollbarXActive=true;
i.railXWidth=i.containerWidth - i.railXMarginWidth;
i.railXRatio=i.containerWidth / i.railXWidth;
i.scrollbarXWidth=getThumbSize(i, _.toInt(i.railXWidth * i.containerWidth / i.contentWidth));
i.scrollbarXLeft=_.toInt((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth) / (i.contentWidth - i.containerWidth));
}else{
i.scrollbarXActive=false;
}
if(!i.settings.suppressScrollY&&i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight){
i.scrollbarYActive=true;
i.railYHeight=i.containerHeight - i.railYMarginHeight;
i.railYRatio=i.containerHeight / i.railYHeight;
i.scrollbarYHeight=getThumbSize(i, _.toInt(i.railYHeight * i.containerHeight / i.contentHeight));
i.scrollbarYTop=_.toInt(element.scrollTop * (i.railYHeight - i.scrollbarYHeight) / (i.contentHeight - i.containerHeight));
}else{
i.scrollbarYActive=false;
}
if(i.scrollbarXLeft >=i.railXWidth - i.scrollbarXWidth){
i.scrollbarXLeft=i.railXWidth - i.scrollbarXWidth;
}
if(i.scrollbarYTop >=i.railYHeight - i.scrollbarYHeight){
i.scrollbarYTop=i.railYHeight - i.scrollbarYHeight;
}
updateCss(element, i);
if(i.scrollbarXActive){
cls.add(element, 'ps-active-x');
}else{
cls.remove(element, 'ps-active-x');
i.scrollbarXWidth=0;
i.scrollbarXLeft=0;
updateScroll(element, 'left', 0);
}
if(i.scrollbarYActive){
cls.add(element, 'ps-active-y');
}else{
cls.remove(element, 'ps-active-y');
i.scrollbarYHeight=0;
i.scrollbarYTop=0;
updateScroll(element, 'top', 0);
}};},{"../lib/class":2,"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-scroll":20}],20:[function(require,module,exports){
'use strict';
var instances=require('./instances');
var upEvent=document.createEvent('Event');
var downEvent=document.createEvent('Event');
var leftEvent=document.createEvent('Event');
var rightEvent=document.createEvent('Event');
var yEvent=document.createEvent('Event');
var xEvent=document.createEvent('Event');
var xStartEvent=document.createEvent('Event');
var xEndEvent=document.createEvent('Event');
var yStartEvent=document.createEvent('Event');
var yEndEvent=document.createEvent('Event');
var lastTop;
var lastLeft;
upEvent.initEvent('ps-scroll-up', true, true);
downEvent.initEvent('ps-scroll-down', true, true);
leftEvent.initEvent('ps-scroll-left', true, true);
rightEvent.initEvent('ps-scroll-right', true, true);
yEvent.initEvent('ps-scroll-y', true, true);
xEvent.initEvent('ps-scroll-x', true, true);
xStartEvent.initEvent('ps-x-reach-start', true, true);
xEndEvent.initEvent('ps-x-reach-end', true, true);
yStartEvent.initEvent('ps-y-reach-start', true, true);
yEndEvent.initEvent('ps-y-reach-end', true, true);
module.exports=function (element, axis, value){
if(typeof element==='undefined'){
throw 'You must provide an element to the update-scroll function';
}
if(typeof axis==='undefined'){
throw 'You must provide an axis to the update-scroll function';
}
if(typeof value==='undefined'){
throw 'You must provide a value to the update-scroll function';
}
if(axis==='top'&&value <=0){
element.scrollTop=value=0;
element.dispatchEvent(yStartEvent);
}
if(axis==='left'&&value <=0){
element.scrollLeft=value=0;
element.dispatchEvent(xStartEvent);
}
var i=instances.get(element);
if(axis==='top'&&value >=i.contentHeight - i.containerHeight){
value=i.contentHeight - i.containerHeight;
if(value - element.scrollTop <=1){
value=element.scrollTop;
}else{
element.scrollTop=value;
}
element.dispatchEvent(yEndEvent);
}
if(axis==='left'&&value >=i.contentWidth - i.containerWidth){
value=i.contentWidth - i.containerWidth;
if(value - element.scrollLeft <=1){
value=element.scrollLeft;
}else{
element.scrollLeft=value;
}
element.dispatchEvent(xEndEvent);
}
if(!lastTop){
lastTop=element.scrollTop;
}
if(!lastLeft){
lastLeft=element.scrollLeft;
}
if(axis==='top'&&value < lastTop){
element.dispatchEvent(upEvent);
}
if(axis==='top'&&value > lastTop){
element.dispatchEvent(downEvent);
}
if(axis==='left'&&value < lastLeft){
element.dispatchEvent(leftEvent);
}
if(axis==='left'&&value > lastLeft){
element.dispatchEvent(rightEvent);
}
if(axis==='top'){
element.scrollTop=lastTop=value;
element.dispatchEvent(yEvent);
}
if(axis==='left'){
element.scrollLeft=lastLeft=value;
element.dispatchEvent(xEvent);
}};},{"./instances":18}],21:[function(require,module,exports){
'use strict';
var _=require('../lib/helper');
var dom=require('../lib/dom');
var instances=require('./instances');
var updateGeometry=require('./update-geometry');
var updateScroll=require('./update-scroll');
module.exports=function (element){
var i=instances.get(element);
if(!i){
return;
}
i.negativeScrollAdjustment=i.isNegativeScroll ? element.scrollWidth - element.clientWidth:0;
dom.css(i.scrollbarXRail, 'display', 'block');
dom.css(i.scrollbarYRail, 'display', 'block');
i.railXMarginWidth=_.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight'));
i.railYMarginHeight=_.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom'));
dom.css(i.scrollbarXRail, 'display', 'none');
dom.css(i.scrollbarYRail, 'display', 'none');
updateGeometry(element);
updateScroll(element, 'top', element.scrollTop);
updateScroll(element, 'left', element.scrollLeft);
dom.css(i.scrollbarXRail, 'display', '');
dom.css(i.scrollbarYRail, 'display', '');
};},{"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-geometry":19,"./update-scroll":20}]},{},[1]);
!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(window, factory){
'use strict';
if(typeof define=='function'&&define.amd){
define('jquery-bridget/jquery-bridget',[ 'jquery' ], function(jQuery){
factory(window, jQuery);
});
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
window,
require('jquery')
);
}else{
window.jQueryBridget=factory(
window,
window.jQuery
);
}}(window, function factory(window, jQuery){
'use strict';
var arraySlice=Array.prototype.slice;
var console=window.console;
var logError=typeof console=='undefined' ? function(){} :
function(message){
console.error(message);
};
function jQueryBridget(namespace, PluginClass, $){
$=$||jQuery||window.jQuery;
if(!$){
return;
}
if(!PluginClass.prototype.option){
PluginClass.prototype.option=function(opts){
if(!$.isPlainObject(opts) ){
return;
}
this.options=$.extend(true, this.options, opts);
};}
$.fn[ namespace ]=function(arg0 ){
if(typeof arg0=='string'){
var args=arraySlice.call(arguments, 1);
return methodCall(this, arg0, args);
}
plainCall(this, arg0);
return this;
};
function methodCall($elems, methodName, args){
var returnValue;
var pluginMethodStr='$().' + namespace + '("' + methodName + '")';
$elems.each(function(i, elem){
var instance=$.data(elem, namespace);
if(!instance){
logError(namespace + ' not initialized. Cannot call methods, i.e. ' +
pluginMethodStr);
return;
}
var method=instance[ methodName ];
if(!method||methodName.charAt(0)=='_'){
logError(pluginMethodStr + ' is not a valid method');
return;
}
var value=method.apply(instance, args);
returnValue=returnValue===undefined ? value:returnValue;
});
return returnValue!==undefined ? returnValue:$elems;
}
function plainCall($elems, options){
$elems.each(function(i, elem){
var instance=$.data(elem, namespace);
if(instance){
instance.option(options);
instance._init();
}else{
instance=new PluginClass(elem, options);
$.data(elem, namespace, instance);
}});
}
updateJQuery($);
}
function updateJQuery($){
if(!$||($&&$.bridget) ){
return;
}
$.bridget=jQueryBridget;
}
updateJQuery(jQuery||window.jQuery);
return jQueryBridget;
}));
(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;
};
return EvEmitter;
}));
(function(window, factory){
'use strict';
if(typeof define=='function'&&define.amd){
define('get-size/get-size',[],function(){
return factory();
});
}else if(typeof module=='object'&&module.exports){
module.exports=factory();
}else{
window.getSize=factory();
}})(window, function factory(){
'use strict';
function getStyleSize(value){
var num=parseFloat(value);
var isValid=value.indexOf('%')==-1&&!isNaN(num);
return isValid&&num;
}
function noop(){}
var logError=typeof console=='undefined' ? noop :
function(message){
console.error(message);
};
var measurements=[
'paddingLeft',
'paddingRight',
'paddingTop',
'paddingBottom',
'marginLeft',
'marginRight',
'marginTop',
'marginBottom',
'borderLeftWidth',
'borderRightWidth',
'borderTopWidth',
'borderBottomWidth'
];
var measurementsLength=measurements.length;
function getZeroSize(){
var size={
width: 0,
height: 0,
innerWidth: 0,
innerHeight: 0,
outerWidth: 0,
outerHeight: 0
};
for(var i=0; i < measurementsLength; i++){
var measurement=measurements[i];
size[ measurement ]=0;
}
return size;
}
function getStyle(elem){
var style=getComputedStyle(elem);
if(!style){
logError('Style returned ' + style +
'. Are you running this code in a hidden iframe on Firefox? ' +
'See http://bit.ly/getsizebug1');
}
return style;
}
var isSetup=false;
var isBoxSizeOuter;
function setup(){
if(isSetup){
return;
}
isSetup=true;
var div=document.createElement('div');
div.style.width='200px';
div.style.padding='1px 2px 3px 4px';
div.style.borderStyle='solid';
div.style.borderWidth='1px 2px 3px 4px';
div.style.boxSizing='border-box';
var body=document.body||document.documentElement;
body.appendChild(div);
var style=getStyle(div);
getSize.isBoxSizeOuter=isBoxSizeOuter=getStyleSize(style.width)==200;
body.removeChild(div);
}
function getSize(elem){
setup();
if(typeof elem=='string'){
elem=document.querySelector(elem);
}
if(!elem||typeof elem!='object'||!elem.nodeType){
return;
}
var style=getStyle(elem);
if(style.display=='none'){
return getZeroSize();
}
var size={};
size.width=elem.offsetWidth;
size.height=elem.offsetHeight;
var isBorderBox=size.isBorderBox=style.boxSizing=='border-box';
for(var i=0; i < measurementsLength; i++){
var measurement=measurements[i];
var value=style[ measurement ];
var num=parseFloat(value);
size[ measurement ] = !isNaN(num) ? num:0;
}
var paddingWidth=size.paddingLeft + size.paddingRight;
var paddingHeight=size.paddingTop + size.paddingBottom;
var marginWidth=size.marginLeft + size.marginRight;
var marginHeight=size.marginTop + size.marginBottom;
var borderWidth=size.borderLeftWidth + size.borderRightWidth;
var borderHeight=size.borderTopWidth + size.borderBottomWidth;
var isBorderBoxSizeOuter=isBorderBox&&isBoxSizeOuter;
var styleWidth=getStyleSize(style.width);
if(styleWidth!==false){
size.width=styleWidth +
(isBorderBoxSizeOuter ? 0:paddingWidth + borderWidth);
}
var styleHeight=getStyleSize(style.height);
if(styleHeight!==false){
size.height=styleHeight +
(isBorderBoxSizeOuter ? 0:paddingHeight + borderHeight);
}
size.innerWidth=size.width -(paddingWidth + borderWidth);
size.innerHeight=size.height -(paddingHeight + borderHeight);
size.outerWidth=size.width + marginWidth;
size.outerHeight=size.height + marginHeight;
return size;
}
return getSize;
});
(function(window, factory){
'use strict';
if(typeof define=='function'&&define.amd){
define('desandro-matches-selector/matches-selector',factory);
}else if(typeof module=='object'&&module.exports){
module.exports=factory();
}else{
window.matchesSelector=factory();
}}(window, function factory(){
'use strict';
var matchesMethod=(function(){
var ElemProto=Element.prototype;
if(ElemProto.matches){
return 'matches';
}
if(ElemProto.matchesSelector){
return 'matchesSelector';
}
var prefixes=[ 'webkit', 'moz', 'ms', 'o' ];
for(var i=0; i < prefixes.length; i++){
var prefix=prefixes[i];
var method=prefix + 'MatchesSelector';
if(ElemProto[ method ]){
return method;
}}
})();
return function matchesSelector(elem, selector){
return elem[ matchesMethod ](selector);
};}));
(function(window, factory){
if(typeof define=='function'&&define.amd){
define('fizzy-ui-utils/utils',[
'desandro-matches-selector/matches-selector'
], function(matchesSelector){
return factory(window, matchesSelector);
});
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
window,
require('desandro-matches-selector')
);
}else{
window.fizzyUIUtils=factory(
window,
window.matchesSelector
);
}}(window, function factory(window, matchesSelector){
var utils={};
utils.extend=function(a, b){
for(var prop in b){
a[ prop ]=b[ prop ];
}
return a;
};
utils.modulo=function(num, div){
return(( num % div) + div) % div;
};
utils.makeArray=function(obj){
var ary=[];
if(Array.isArray(obj) ){
ary=obj;
}else if(obj&&typeof obj.length=='number'){
for(var i=0; i < obj.length; i++){
ary.push(obj[i]);
}}else{
ary.push(obj);
}
return ary;
};
utils.removeFrom=function(ary, obj){
var index=ary.indexOf(obj);
if(index!=-1){
ary.splice(index, 1);
}};
utils.getParent=function(elem, selector){
while(elem!=document.body){
elem=elem.parentNode;
if(matchesSelector(elem, selector) ){
return elem;
}}
};
utils.getQueryElement=function(elem){
if(typeof elem=='string'){
return document.querySelector(elem);
}
return elem;
};
utils.handleEvent=function(event){
var method='on' + event.type;
if(this[ method ]){
this[ method ](event);
}};
utils.filterFindElements=function(elems, selector){
elems=utils.makeArray(elems);
var ffElems=[];
elems.forEach(function(elem){
if(!(elem instanceof HTMLElement) ){
return;
}
if(!selector){
ffElems.push(elem);
return;
}
if(matchesSelector(elem, selector) ){
ffElems.push(elem);
}
var childElems=elem.querySelectorAll(selector);
for(var i=0; i < childElems.length; i++){
ffElems.push(childElems[i]);
}});
return ffElems;
};
utils.debounceMethod=function(_class, methodName, threshold){
var method=_class.prototype[ methodName ];
var timeoutName=methodName + 'Timeout';
_class.prototype[ methodName ]=function(){
var timeout=this[ timeoutName ];
if(timeout){
clearTimeout(timeout);
}
var args=arguments;
var _this=this;
this[ timeoutName ]=setTimeout(function(){
method.apply(_this, args);
delete _this[ timeoutName ];
}, threshold||100);
};};
utils.docReady=function(callback){
var readyState=document.readyState;
if(readyState=='complete'||readyState=='interactive'){
callback();
}else{
document.addEventListener('DOMContentLoaded', callback);
}};
utils.toDashed=function(str){
return str.replace(/(.)([A-Z])/g, function(match, $1, $2){
return $1 + '-' + $2;
}).toLowerCase();
};
var console=window.console;
utils.htmlInit=function(WidgetClass, namespace){
utils.docReady(function(){
var dashedNamespace=utils.toDashed(namespace);
var dataAttr='data-' + dashedNamespace;
var dataAttrElems=document.querySelectorAll('[' + dataAttr + ']');
var jsDashElems=document.querySelectorAll('.js-' + dashedNamespace);
var elems=utils.makeArray(dataAttrElems)
.concat(utils.makeArray(jsDashElems) );
var dataOptionsAttr=dataAttr + '-options';
var jQuery=window.jQuery;
elems.forEach(function(elem){
var attr=elem.getAttribute(dataAttr) ||
elem.getAttribute(dataOptionsAttr);
var options;
try {
options=attr&&JSON.parse(attr);
} catch(error){
if(console){
console.error('Error parsing ' + dataAttr + ' on ' + elem.className +
': ' + error);
}
return;
}
var instance=new WidgetClass(elem, options);
if(jQuery){
jQuery.data(elem, namespace, instance);
}});
});
};
return utils;
}));
(function(window, factory){
if(typeof define=='function'&&define.amd){
define('outlayer/item',[
'ev-emitter/ev-emitter',
'get-size/get-size'
],
factory
);
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
require('ev-emitter'),
require('get-size')
);
}else{
window.Outlayer={};
window.Outlayer.Item=factory(
window.EvEmitter,
window.getSize
);
}}(window, function factory(EvEmitter, getSize){
'use strict';
function isEmptyObj(obj){
for(var prop in obj){
return false;
}
prop=null;
return true;
}
var docElemStyle=document.documentElement.style;
var transitionProperty=typeof docElemStyle.transition=='string' ?
'transition':'WebkitTransition';
var transformProperty=typeof docElemStyle.transform=='string' ?
'transform':'WebkitTransform';
var transitionEndEvent={
WebkitTransition: 'webkitTransitionEnd',
transition: 'transitionend'
}[ transitionProperty ];
var vendorProperties={
transform: transformProperty,
transition: transitionProperty,
transitionDuration: transitionProperty + 'Duration',
transitionProperty: transitionProperty + 'Property',
transitionDelay: transitionProperty + 'Delay'
};
function Item(element, layout){
if(!element){
return;
}
this.element=element;
this.layout=layout;
this.position={
x: 0,
y: 0
};
this._create();
}
var proto=Item.prototype=Object.create(EvEmitter.prototype);
proto.constructor=Item;
proto._create=function(){
this._transn={
ingProperties: {},
clean: {},
onEnd: {}};
this.css({
position: 'absolute'
});
};
proto.handleEvent=function(event){
var method='on' + event.type;
if(this[ method ]){
this[ method ](event);
}};
proto.getSize=function(){
this.size=getSize(this.element);
};
proto.css=function(style){
var elemStyle=this.element.style;
for(var prop in style){
var supportedProp=vendorProperties[ prop ]||prop;
elemStyle[ supportedProp ]=style[ prop ];
}};
proto.getPosition=function(){
var style=getComputedStyle(this.element);
var isOriginLeft=this.layout._getOption('originLeft');
var isOriginTop=this.layout._getOption('originTop');
var xValue=style[ isOriginLeft ? 'left':'right' ];
var yValue=style[ isOriginTop ? 'top':'bottom' ];
var layoutSize=this.layout.size;
var x=xValue.indexOf('%')!=-1 ?
(parseFloat(xValue) / 100) * layoutSize.width:parseInt(xValue, 10);
var y=yValue.indexOf('%')!=-1 ?
(parseFloat(yValue) / 100) * layoutSize.height:parseInt(yValue, 10);
x=isNaN(x) ? 0:x;
y=isNaN(y) ? 0:y;
x -=isOriginLeft ? layoutSize.paddingLeft:layoutSize.paddingRight;
y -=isOriginTop ? layoutSize.paddingTop:layoutSize.paddingBottom;
this.position.x=x;
this.position.y=y;
};
proto.layoutPosition=function(){
var layoutSize=this.layout.size;
var style={};
var isOriginLeft=this.layout._getOption('originLeft');
var isOriginTop=this.layout._getOption('originTop');
var xPadding=isOriginLeft ? 'paddingLeft':'paddingRight';
var xProperty=isOriginLeft ? 'left':'right';
var xResetProperty=isOriginLeft ? 'right':'left';
var x=this.position.x + layoutSize[ xPadding ];
style[ xProperty ]=this.getXValue(x);
style[ xResetProperty ]='';
var yPadding=isOriginTop ? 'paddingTop':'paddingBottom';
var yProperty=isOriginTop ? 'top':'bottom';
var yResetProperty=isOriginTop ? 'bottom':'top';
var y=this.position.y + layoutSize[ yPadding ];
style[ yProperty ]=this.getYValue(y);
style[ yResetProperty ]='';
this.css(style);
this.emitEvent('layout', [ this ]);
};
proto.getXValue=function(x){
var isHorizontal=this.layout._getOption('horizontal');
return this.layout.options.percentPosition&&!isHorizontal ?
(( x / this.layout.size.width) * 100) + '%':x + 'px';
};
proto.getYValue=function(y){
var isHorizontal=this.layout._getOption('horizontal');
return this.layout.options.percentPosition&&isHorizontal ?
(( y / this.layout.size.height) * 100) + '%':y + 'px';
};
proto._transitionTo=function(x, y){
this.getPosition();
var curX=this.position.x;
var curY=this.position.y;
var compareX=parseInt(x, 10);
var compareY=parseInt(y, 10);
var didNotMove=compareX===this.position.x&&compareY===this.position.y;
this.setPosition(x, y);
if(didNotMove&&!this.isTransitioning){
this.layoutPosition();
return;
}
var transX=x - curX;
var transY=y - curY;
var transitionStyle={};
transitionStyle.transform=this.getTranslate(transX, transY);
this.transition({
to: transitionStyle,
onTransitionEnd: {
transform: this.layoutPosition
},
isCleaning: true
});
};
proto.getTranslate=function(x, y){
var isOriginLeft=this.layout._getOption('originLeft');
var isOriginTop=this.layout._getOption('originTop');
x=isOriginLeft ? x:-x;
y=isOriginTop ? y:-y;
return 'translate3d(' + x + 'px, ' + y + 'px, 0)';
};
proto.goTo=function(x, y){
this.setPosition(x, y);
this.layoutPosition();
};
proto.moveTo=proto._transitionTo;
proto.setPosition=function(x, y){
this.position.x=parseInt(x, 10);
this.position.y=parseInt(y, 10);
};
proto._nonTransition=function(args){
this.css(args.to);
if(args.isCleaning){
this._removeStyles(args.to);
}
for(var prop in args.onTransitionEnd){
args.onTransitionEnd[ prop ].call(this);
}};
proto.transition=function(args){
if(!parseFloat(this.layout.options.transitionDuration) ){
this._nonTransition(args);
return;
}
var _transition=this._transn;
for(var prop in args.onTransitionEnd){
_transition.onEnd[ prop ]=args.onTransitionEnd[ prop ];
}
for(prop in args.to){
_transition.ingProperties[ prop ]=true;
if(args.isCleaning){
_transition.clean[ prop ]=true;
}}
if(args.from){
this.css(args.from);
var h=this.element.offsetHeight;
h=null;
}
this.enableTransition(args.to);
this.css(args.to);
this.isTransitioning=true;
};
function toDashedAll(str){
return str.replace(/([A-Z])/g, function($1){
return '-' + $1.toLowerCase();
});
}
var transitionProps='opacity,' + toDashedAll(transformProperty);
proto.enableTransition=function(){
if(this.isTransitioning){
return;
}
var duration=this.layout.options.transitionDuration;
duration=typeof duration=='number' ? duration + 'ms':duration;
this.css({
transitionProperty: transitionProps,
transitionDuration: duration,
transitionDelay: this.staggerDelay||0
});
this.element.addEventListener(transitionEndEvent, this, false);
};
proto.onwebkitTransitionEnd=function(event){
this.ontransitionend(event);
};
proto.onotransitionend=function(event){
this.ontransitionend(event);
};
var dashedVendorProperties={
'-webkit-transform': 'transform'
};
proto.ontransitionend=function(event){
if(event.target!==this.element){
return;
}
var _transition=this._transn;
var propertyName=dashedVendorProperties[ event.propertyName ]||event.propertyName;
delete _transition.ingProperties[ propertyName ];
if(isEmptyObj(_transition.ingProperties) ){
this.disableTransition();
}
if(propertyName in _transition.clean){
this.element.style[ event.propertyName ]='';
delete _transition.clean[ propertyName ];
}
if(propertyName in _transition.onEnd){
var onTransitionEnd=_transition.onEnd[ propertyName ];
onTransitionEnd.call(this);
delete _transition.onEnd[ propertyName ];
}
this.emitEvent('transitionEnd', [ this ]);
};
proto.disableTransition=function(){
this.removeTransitionStyles();
this.element.removeEventListener(transitionEndEvent, this, false);
this.isTransitioning=false;
};
proto._removeStyles=function(style){
var cleanStyle={};
for(var prop in style){
cleanStyle[ prop ]='';
}
this.css(cleanStyle);
};
var cleanTransitionStyle={
transitionProperty: '',
transitionDuration: '',
transitionDelay: ''
};
proto.removeTransitionStyles=function(){
this.css(cleanTransitionStyle);
};
proto.stagger=function(delay){
delay=isNaN(delay) ? 0:delay;
this.staggerDelay=delay + 'ms';
};
proto.removeElem=function(){
this.element.parentNode.removeChild(this.element);
this.css({ display: '' });
this.emitEvent('remove', [ this ]);
};
proto.remove=function(){
if(!transitionProperty||!parseFloat(this.layout.options.transitionDuration) ){
this.removeElem();
return;
}
this.once('transitionEnd', function(){
this.removeElem();
});
this.hide();
};
proto.reveal=function(){
delete this.isHidden;
this.css({ display: '' });
var options=this.layout.options;
var onTransitionEnd={};
var transitionEndProperty=this.getHideRevealTransitionEndProperty('visibleStyle');
onTransitionEnd[ transitionEndProperty ]=this.onRevealTransitionEnd;
this.transition({
from: options.hiddenStyle,
to: options.visibleStyle,
isCleaning: true,
onTransitionEnd: onTransitionEnd
});
};
proto.onRevealTransitionEnd=function(){
if(!this.isHidden){
this.emitEvent('reveal');
}};
proto.getHideRevealTransitionEndProperty=function(styleProperty){
var optionStyle=this.layout.options[ styleProperty ];
if(optionStyle.opacity){
return 'opacity';
}
for(var prop in optionStyle){
return prop;
}};
proto.hide=function(){
this.isHidden=true;
this.css({ display: '' });
var options=this.layout.options;
var onTransitionEnd={};
var transitionEndProperty=this.getHideRevealTransitionEndProperty('hiddenStyle');
onTransitionEnd[ transitionEndProperty ]=this.onHideTransitionEnd;
this.transition({
from: options.visibleStyle,
to: options.hiddenStyle,
isCleaning: true,
onTransitionEnd: onTransitionEnd
});
};
proto.onHideTransitionEnd=function(){
if(this.isHidden){
this.css({ display: 'none' });
this.emitEvent('hide');
}};
proto.destroy=function(){
this.css({
position: '',
left: '',
right: '',
top: '',
bottom: '',
transition: '',
transform: ''
});
};
return Item;
}));
(function(window, factory){
'use strict';
if(typeof define=='function'&&define.amd){
define('outlayer/outlayer',[
'ev-emitter/ev-emitter',
'get-size/get-size',
'fizzy-ui-utils/utils',
'./item'
],
function(EvEmitter, getSize, utils, Item){
return factory(window, EvEmitter, getSize, utils, Item);
}
);
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
window,
require('ev-emitter'),
require('get-size'),
require('fizzy-ui-utils'),
require('./item')
);
}else{
window.Outlayer=factory(
window,
window.EvEmitter,
window.getSize,
window.fizzyUIUtils,
window.Outlayer.Item
);
}}(window, function factory(window, EvEmitter, getSize, utils, Item){
'use strict';
var console=window.console;
var jQuery=window.jQuery;
var noop=function(){};
var GUID=0;
var instances={};
function Outlayer(element, options){
var queryElement=utils.getQueryElement(element);
if(!queryElement){
if(console){
console.error('Bad element for ' + this.constructor.namespace +
': ' +(queryElement||element) );
}
return;
}
this.element=queryElement;
if(jQuery){
this.$element=jQuery(this.element);
}
this.options=utils.extend({}, this.constructor.defaults);
this.option(options);
var id=++GUID;
this.element.outlayerGUID=id;
instances[ id ]=this;
this._create();
var isInitLayout=this._getOption('initLayout');
if(isInitLayout){
this.layout();
}}
Outlayer.namespace='outlayer';
Outlayer.Item=Item;
Outlayer.defaults={
containerStyle: {
position: 'relative'
},
initLayout: true,
originLeft: true,
originTop: true,
resize: true,
resizeContainer: true,
transitionDuration: '0.4s',
hiddenStyle: {
opacity: 0,
transform: 'scale(0.001)'
},
visibleStyle: {
opacity: 1,
transform: 'scale(1)'
}};
var proto=Outlayer.prototype;
utils.extend(proto, EvEmitter.prototype);
proto.option=function(opts){
utils.extend(this.options, opts);
};
proto._getOption=function(option){
var oldOption=this.constructor.compatOptions[ option ];
return oldOption&&this.options[ oldOption ]!==undefined ?
this.options[ oldOption ]:this.options[ option ];
};
Outlayer.compatOptions={
initLayout: 'isInitLayout',
horizontal: 'isHorizontal',
layoutInstant: 'isLayoutInstant',
originLeft: 'isOriginLeft',
originTop: 'isOriginTop',
resize: 'isResizeBound',
resizeContainer: 'isResizingContainer'
};
proto._create=function(){
this.reloadItems();
this.stamps=[];
this.stamp(this.options.stamp);
utils.extend(this.element.style, this.options.containerStyle);
var canBindResize=this._getOption('resize');
if(canBindResize){
this.bindResize();
}};
proto.reloadItems=function(){
this.items=this._itemize(this.element.children);
};
proto._itemize=function(elems){
var itemElems=this._filterFindItemElements(elems);
var Item=this.constructor.Item;
var items=[];
for(var i=0; i < itemElems.length; i++){
var elem=itemElems[i];
var item=new Item(elem, this);
items.push(item);
}
return items;
};
proto._filterFindItemElements=function(elems){
return utils.filterFindElements(elems, this.options.itemSelector);
};
proto.getItemElements=function(){
return this.items.map(function(item){
return item.element;
});
};
proto.layout=function(){
this._resetLayout();
this._manageStamps();
var layoutInstant=this._getOption('layoutInstant');
var isInstant=layoutInstant!==undefined ?
layoutInstant:!this._isLayoutInited;
this.layoutItems(this.items, isInstant);
this._isLayoutInited=true;
};
proto._init=proto.layout;
proto._resetLayout=function(){
this.getSize();
};
proto.getSize=function(){
this.size=getSize(this.element);
};
proto._getMeasurement=function(measurement, size){
var option=this.options[ measurement ];
var elem;
if(!option){
this[ measurement ]=0;
}else{
if(typeof option=='string'){
elem=this.element.querySelector(option);
}else if(option instanceof HTMLElement){
elem=option;
}
this[ measurement ]=elem ? getSize(elem)[ size ]:option;
}};
proto.layoutItems=function(items, isInstant){
items=this._getItemsForLayout(items);
this._layoutItems(items, isInstant);
this._postLayout();
};
proto._getItemsForLayout=function(items){
return items.filter(function(item){
return !item.isIgnored;
});
};
proto._layoutItems=function(items, isInstant){
this._emitCompleteOnItems('layout', items);
if(!items||!items.length){
return;
}
var queue=[];
items.forEach(function(item){
var position=this._getItemLayoutPosition(item);
position.item=item;
position.isInstant=isInstant||item.isLayoutInstant;
queue.push(position);
}, this);
this._processLayoutQueue(queue);
};
proto._getItemLayoutPosition=function(){
return {
x: 0,
y: 0
};};
proto._processLayoutQueue=function(queue){
this.updateStagger();
queue.forEach(function(obj, i){
this._positionItem(obj.item, obj.x, obj.y, obj.isInstant, i);
}, this);
};
proto.updateStagger=function(){
var stagger=this.options.stagger;
if(stagger===null||stagger===undefined){
this.stagger=0;
return;
}
this.stagger=getMilliseconds(stagger);
return this.stagger;
};
proto._positionItem=function(item, x, y, isInstant, i){
if(isInstant){
item.goTo(x, y);
}else{
item.stagger(i * this.stagger);
item.moveTo(x, y);
}};
proto._postLayout=function(){
this.resizeContainer();
};
proto.resizeContainer=function(){
var isResizingContainer=this._getOption('resizeContainer');
if(!isResizingContainer){
return;
}
var size=this._getContainerSize();
if(size){
this._setContainerMeasure(size.width, true);
this._setContainerMeasure(size.height, false);
}};
proto._getContainerSize=noop;
proto._setContainerMeasure=function(measure, isWidth){
if(measure===undefined){
return;
}
var elemSize=this.size;
if(elemSize.isBorderBox){
measure +=isWidth ? elemSize.paddingLeft + elemSize.paddingRight +
elemSize.borderLeftWidth + elemSize.borderRightWidth :
elemSize.paddingBottom + elemSize.paddingTop +
elemSize.borderTopWidth + elemSize.borderBottomWidth;
}
measure=Math.max(measure, 0);
this.element.style[ isWidth ? 'width':'height' ]=measure + 'px';
};
proto._emitCompleteOnItems=function(eventName, items){
var _this=this;
function onComplete(){
_this.dispatchEvent(eventName + 'Complete', null, [ items ]);
}
var count=items.length;
if(!items||!count){
onComplete();
return;
}
var doneCount=0;
function tick(){
doneCount++;
if(doneCount==count){
onComplete();
}}
items.forEach(function(item){
item.once(eventName, tick);
});
};
proto.dispatchEvent=function(type, event, args){
var emitArgs=event ? [ event ].concat(args):args;
this.emitEvent(type, emitArgs);
if(jQuery){
this.$element=this.$element||jQuery(this.element);
if(event){
var $event=jQuery.Event(event);
$event.type=type;
this.$element.trigger($event, args);
}else{
this.$element.trigger(type, args);
}}
};
proto.ignore=function(elem){
var item=this.getItem(elem);
if(item){
item.isIgnored=true;
}};
proto.unignore=function(elem){
var item=this.getItem(elem);
if(item){
delete item.isIgnored;
}};
proto.stamp=function(elems){
elems=this._find(elems);
if(!elems){
return;
}
this.stamps=this.stamps.concat(elems);
elems.forEach(this.ignore, this);
};
proto.unstamp=function(elems){
elems=this._find(elems);
if(!elems){
return;
}
elems.forEach(function(elem){
utils.removeFrom(this.stamps, elem);
this.unignore(elem);
}, this);
};
proto._find=function(elems){
if(!elems){
return;
}
if(typeof elems=='string'){
elems=this.element.querySelectorAll(elems);
}
elems=utils.makeArray(elems);
return elems;
};
proto._manageStamps=function(){
if(!this.stamps||!this.stamps.length){
return;
}
this._getBoundingRect();
this.stamps.forEach(this._manageStamp, this);
};
proto._getBoundingRect=function(){
var boundingRect=this.element.getBoundingClientRect();
var size=this.size;
this._boundingRect={
left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,
top: boundingRect.top + size.paddingTop + size.borderTopWidth,
right: boundingRect.right -(size.paddingRight + size.borderRightWidth),
bottom: boundingRect.bottom -(size.paddingBottom + size.borderBottomWidth)
};};
proto._manageStamp=noop;
proto._getElementOffset=function(elem){
var boundingRect=elem.getBoundingClientRect();
var thisRect=this._boundingRect;
var size=getSize(elem);
var offset={
left: boundingRect.left - thisRect.left - size.marginLeft,
top: boundingRect.top - thisRect.top - size.marginTop,
right: thisRect.right - boundingRect.right - size.marginRight,
bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom
};
return offset;
};
proto.handleEvent=utils.handleEvent;
proto.bindResize=function(){
window.addEventListener('resize', this);
this.isResizeBound=true;
};
proto.unbindResize=function(){
window.removeEventListener('resize', this);
this.isResizeBound=false;
};
proto.onresize=function(){
this.resize();
};
utils.debounceMethod(Outlayer, 'onresize', 100);
proto.resize=function(){
if(!this.isResizeBound||!this.needsResizeLayout()){
return;
}
this.layout();
};
proto.needsResizeLayout=function(){
var size=getSize(this.element);
var hasSizes=this.size&&size;
return hasSizes&&size.innerWidth!==this.size.innerWidth;
};
proto.addItems=function(elems){
var items=this._itemize(elems);
if(items.length){
this.items=this.items.concat(items);
}
return items;
};
proto.appended=function(elems){
var items=this.addItems(elems);
if(!items.length){
return;
}
this.layoutItems(items, true);
this.reveal(items);
};
proto.prepended=function(elems){
var items=this._itemize(elems);
if(!items.length){
return;
}
var previousItems=this.items.slice(0);
this.items=items.concat(previousItems);
this._resetLayout();
this._manageStamps();
this.layoutItems(items, true);
this.reveal(items);
this.layoutItems(previousItems);
};
proto.reveal=function(items){
this._emitCompleteOnItems('reveal', items);
if(!items||!items.length){
return;
}
var stagger=this.updateStagger();
items.forEach(function(item, i){
item.stagger(i * stagger);
item.reveal();
});
};
proto.hide=function(items){
this._emitCompleteOnItems('hide', items);
if(!items||!items.length){
return;
}
var stagger=this.updateStagger();
items.forEach(function(item, i){
item.stagger(i * stagger);
item.hide();
});
};
proto.revealItemElements=function(elems){
var items=this.getItems(elems);
this.reveal(items);
};
proto.hideItemElements=function(elems){
var items=this.getItems(elems);
this.hide(items);
};
proto.getItem=function(elem){
for(var i=0; i < this.items.length; i++){
var item=this.items[i];
if(item.element==elem){
return item;
}}
};
proto.getItems=function(elems){
elems=utils.makeArray(elems);
var items=[];
elems.forEach(function(elem){
var item=this.getItem(elem);
if(item){
items.push(item);
}}, this);
return items;
};
proto.remove=function(elems){
var removeItems=this.getItems(elems);
this._emitCompleteOnItems('remove', removeItems);
if(!removeItems||!removeItems.length){
return;
}
removeItems.forEach(function(item){
item.remove();
utils.removeFrom(this.items, item);
}, this);
};
proto.destroy=function(){
var style=this.element.style;
style.height='';
style.position='';
style.width='';
this.items.forEach(function(item){
item.destroy();
});
this.unbindResize();
var id=this.element.outlayerGUID;
delete instances[ id ];
delete this.element.outlayerGUID;
if(jQuery){
jQuery.removeData(this.element, this.constructor.namespace);
}};
Outlayer.data=function(elem){
elem=utils.getQueryElement(elem);
var id=elem&&elem.outlayerGUID;
return id&&instances[ id ];
};
Outlayer.create=function(namespace, options){
var Layout=subclass(Outlayer);
Layout.defaults=utils.extend({}, Outlayer.defaults);
utils.extend(Layout.defaults, options);
Layout.compatOptions=utils.extend({}, Outlayer.compatOptions);
Layout.namespace=namespace;
Layout.data=Outlayer.data;
Layout.Item=subclass(Item);
utils.htmlInit(Layout, namespace);
if(jQuery&&jQuery.bridget){
jQuery.bridget(namespace, Layout);
}
return Layout;
};
function subclass(Parent){
function SubClass(){
Parent.apply(this, arguments);
}
SubClass.prototype=Object.create(Parent.prototype);
SubClass.prototype.constructor=SubClass;
return SubClass;
}
var msUnits={
ms: 1,
s: 1000
};
function getMilliseconds(time){
if(typeof time=='number'){
return time;
}
var matches=time.match(/(^\d*\.?\d*)(\w*)/);
var num=matches&&matches[1];
var unit=matches&&matches[2];
if(!num.length){
return 0;
}
num=parseFloat(num);
var mult=msUnits[ unit ]||1;
return num * mult;
}
Outlayer.Item=Item;
return Outlayer;
}));
(function(window, factory){
if(typeof define=='function'&&define.amd){
define('isotope/js/item',[
'outlayer/outlayer'
],
factory);
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
require('outlayer')
);
}else{
window.Isotope=window.Isotope||{};
window.Isotope.Item=factory(
window.Outlayer
);
}}(window, function factory(Outlayer){
'use strict';
function Item(){
Outlayer.Item.apply(this, arguments);
}
var proto=Item.prototype=Object.create(Outlayer.Item.prototype);
var _create=proto._create;
proto._create=function(){
this.id=this.layout.itemGUID++;
_create.call(this);
this.sortData={};};
proto.updateSortData=function(){
if(this.isIgnored){
return;
}
this.sortData.id=this.id;
this.sortData['original-order']=this.id;
this.sortData.random=Math.random();
var getSortData=this.layout.options.getSortData;
var sorters=this.layout._sorters;
for(var key in getSortData){
var sorter=sorters[ key ];
this.sortData[ key ]=sorter(this.element, this);
}};
var _destroy=proto.destroy;
proto.destroy=function(){
_destroy.apply(this, arguments);
this.css({
display: ''
});
};
return Item;
}));
(function(window, factory){
if(typeof define=='function'&&define.amd){
define('isotope/js/layout-mode',[
'get-size/get-size',
'outlayer/outlayer'
],
factory);
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
require('get-size'),
require('outlayer')
);
}else{
window.Isotope=window.Isotope||{};
window.Isotope.LayoutMode=factory(
window.getSize,
window.Outlayer
);
}}(window, function factory(getSize, Outlayer){
'use strict';
function LayoutMode(isotope){
this.isotope=isotope;
if(isotope){
this.options=isotope.options[ this.namespace ];
this.element=isotope.element;
this.items=isotope.filteredItems;
this.size=isotope.size;
}}
var proto=LayoutMode.prototype;
var facadeMethods=[
'_resetLayout',
'_getItemLayoutPosition',
'_manageStamp',
'_getContainerSize',
'_getElementOffset',
'needsResizeLayout',
'_getOption'
];
facadeMethods.forEach(function(methodName){
proto[ methodName ]=function(){
return Outlayer.prototype[ methodName ].apply(this.isotope, arguments);
};});
proto.needsVerticalResizeLayout=function(){
var size=getSize(this.isotope.element);
var hasSizes=this.isotope.size&&size;
return hasSizes&&size.innerHeight!=this.isotope.size.innerHeight;
};
proto._getMeasurement=function(){
this.isotope._getMeasurement.apply(this, arguments);
};
proto.getColumnWidth=function(){
this.getSegmentSize('column', 'Width');
};
proto.getRowHeight=function(){
this.getSegmentSize('row', 'Height');
};
proto.getSegmentSize=function(segment, size){
var segmentName=segment + size;
var outerSize='outer' + size;
this._getMeasurement(segmentName, outerSize);
if(this[ segmentName ]){
return;
}
var firstItemSize=this.getFirstItemSize();
this[ segmentName ]=firstItemSize&&firstItemSize[ outerSize ] ||
this.isotope.size[ 'inner' + size ];
};
proto.getFirstItemSize=function(){
var firstItem=this.isotope.filteredItems[0];
return firstItem&&firstItem.element&&getSize(firstItem.element);
};
proto.layout=function(){
this.isotope.layout.apply(this.isotope, arguments);
};
proto.getSize=function(){
this.isotope.getSize();
this.size=this.isotope.size;
};
LayoutMode.modes={};
LayoutMode.create=function(namespace, options){
function Mode(){
LayoutMode.apply(this, arguments);
}
Mode.prototype=Object.create(proto);
Mode.prototype.constructor=Mode;
if(options){
Mode.options=options;
}
Mode.prototype.namespace=namespace;
LayoutMode.modes[ namespace ]=Mode;
return Mode;
};
return LayoutMode;
}));
(function(window, factory){
if(typeof define=='function'&&define.amd){
define('masonry/masonry',[
'outlayer/outlayer',
'get-size/get-size'
],
factory);
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
require('outlayer'),
require('get-size')
);
}else{
window.Masonry=factory(
window.Outlayer,
window.getSize
);
}}(window, function factory(Outlayer, getSize){
var Masonry=Outlayer.create('masonry');
Masonry.compatOptions.fitWidth='isFitWidth';
Masonry.prototype._resetLayout=function(){
this.getSize();
this._getMeasurement('columnWidth', 'outerWidth');
this._getMeasurement('gutter', 'outerWidth');
this.measureColumns();
this.colYs=[];
for(var i=0; i < this.cols; i++){
this.colYs.push(0);
}
this.maxY=0;
};
Masonry.prototype.measureColumns=function(){
this.getContainerWidth();
if(!this.columnWidth){
var firstItem=this.items[0];
var firstItemElem=firstItem&&firstItem.element;
this.columnWidth=firstItemElem&&getSize(firstItemElem).outerWidth ||
this.containerWidth;
}
var columnWidth=this.columnWidth +=this.gutter;
var containerWidth=this.containerWidth + this.gutter;
var cols=containerWidth / columnWidth;
var excess=columnWidth - containerWidth % columnWidth;
var mathMethod=excess&&excess < 1 ? 'round':'floor';
cols=Math[ mathMethod ](cols);
this.cols=Math.max(cols, 1);
};
Masonry.prototype.getContainerWidth=function(){
var isFitWidth=this._getOption('fitWidth');
var container=isFitWidth ? this.element.parentNode:this.element;
var size=getSize(container);
this.containerWidth=size&&size.innerWidth;
};
Masonry.prototype._getItemLayoutPosition=function(item){
item.getSize();
var remainder=item.size.outerWidth % this.columnWidth;
var mathMethod=remainder&&remainder < 1 ? 'round':'ceil';
var colSpan=Math[ mathMethod ](item.size.outerWidth / this.columnWidth);
colSpan=Math.min(colSpan, this.cols);
var colGroup=this._getColGroup(colSpan);
var minimumY=Math.min.apply(Math, colGroup);
var shortColIndex=colGroup.indexOf(minimumY);
var position={
x: this.columnWidth * shortColIndex,
y: minimumY
};
var setHeight=minimumY + item.size.outerHeight;
var setSpan=this.cols + 1 - colGroup.length;
for(var i=0; i < setSpan; i++){
this.colYs[ shortColIndex + i ]=setHeight;
}
return position;
};
Masonry.prototype._getColGroup=function(colSpan){
if(colSpan < 2){
return this.colYs;
}
var colGroup=[];
var groupCount=this.cols + 1 - colSpan;
for(var i=0; i < groupCount; i++){
var groupColYs=this.colYs.slice(i, i + colSpan);
colGroup[i]=Math.max.apply(Math, groupColYs);
}
return colGroup;
};
Masonry.prototype._manageStamp=function(stamp){
var stampSize=getSize(stamp);
var offset=this._getElementOffset(stamp);
var isOriginLeft=this._getOption('originLeft');
var firstX=isOriginLeft ? offset.left:offset.right;
var lastX=firstX + stampSize.outerWidth;
var firstCol=Math.floor(firstX / this.columnWidth);
firstCol=Math.max(0, firstCol);
var lastCol=Math.floor(lastX / this.columnWidth);
lastCol -=lastX % this.columnWidth ? 0:1;
lastCol=Math.min(this.cols - 1, lastCol);
var isOriginTop=this._getOption('originTop');
var stampMaxY=(isOriginTop ? offset.top:offset.bottom) +
stampSize.outerHeight;
for(var i=firstCol; i <=lastCol; i++){
this.colYs[i]=Math.max(stampMaxY, this.colYs[i]);
}};
Masonry.prototype._getContainerSize=function(){
this.maxY=Math.max.apply(Math, this.colYs);
var size={
height: this.maxY
};
if(this._getOption('fitWidth')){
size.width=this._getContainerFitWidth();
}
return size;
};
Masonry.prototype._getContainerFitWidth=function(){
var unusedCols=0;
var i=this.cols;
while(--i){
if(this.colYs[i]!==0){
break;
}
unusedCols++;
}
return(this.cols - unusedCols) * this.columnWidth - this.gutter;
};
Masonry.prototype.needsResizeLayout=function(){
var previousWidth=this.containerWidth;
this.getContainerWidth();
return previousWidth!=this.containerWidth;
};
return Masonry;
}));
(function(window, factory){
if(typeof define=='function'&&define.amd){
define('isotope/js/layout-modes/masonry',[
'../layout-mode',
'masonry/masonry'
],
factory);
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
require('../layout-mode'),
require('masonry-layout')
);
}else{
factory(
window.Isotope.LayoutMode,
window.Masonry
);
}}(window, function factory(LayoutMode, Masonry){
'use strict';
var MasonryMode=LayoutMode.create('masonry');
var proto=MasonryMode.prototype;
var keepModeMethods={
_getElementOffset: true,
layout: true,
_getMeasurement: true
};
for(var method in Masonry.prototype){
if(!keepModeMethods[ method ]){
proto[ method ]=Masonry.prototype[ method ];
}}
var measureColumns=proto.measureColumns;
proto.measureColumns=function(){
this.items=this.isotope.filteredItems;
measureColumns.call(this);
};
var _getOption=proto._getOption;
proto._getOption=function(option){
if(option=='fitWidth'){
return this.options.isFitWidth!==undefined ?
this.options.isFitWidth:this.options.fitWidth;
}
return _getOption.apply(this.isotope, arguments);
};
return MasonryMode;
}));
(function(window, factory){
if(typeof define=='function'&&define.amd){
define('isotope/js/layout-modes/fit-rows',[
'../layout-mode'
],
factory);
}else if(typeof exports=='object'){
module.exports=factory(
require('../layout-mode')
);
}else{
factory(
window.Isotope.LayoutMode
);
}}(window, function factory(LayoutMode){
'use strict';
var FitRows=LayoutMode.create('fitRows');
var proto=FitRows.prototype;
proto._resetLayout=function(){
this.x=0;
this.y=0;
this.maxY=0;
this._getMeasurement('gutter', 'outerWidth');
};
proto._getItemLayoutPosition=function(item){
item.getSize();
var itemWidth=item.size.outerWidth + this.gutter;
var containerWidth=this.isotope.size.innerWidth + this.gutter;
if(this.x!==0&&itemWidth + this.x > containerWidth){
this.x=0;
this.y=this.maxY;
}
var position={
x: this.x,
y: this.y
};
this.maxY=Math.max(this.maxY, this.y + item.size.outerHeight);
this.x +=itemWidth;
return position;
};
proto._getContainerSize=function(){
return { height: this.maxY };};
return FitRows;
}));
(function(window, factory){
if(typeof define=='function'&&define.amd){
define('isotope/js/layout-modes/vertical',[
'../layout-mode'
],
factory);
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
require('../layout-mode')
);
}else{
factory(
window.Isotope.LayoutMode
);
}}(window, function factory(LayoutMode){
'use strict';
var Vertical=LayoutMode.create('vertical', {
horizontalAlignment: 0
});
var proto=Vertical.prototype;
proto._resetLayout=function(){
this.y=0;
};
proto._getItemLayoutPosition=function(item){
item.getSize();
var x=(this.isotope.size.innerWidth - item.size.outerWidth) *
this.options.horizontalAlignment;
var y=this.y;
this.y +=item.size.outerHeight;
return { x: x, y: y };};
proto._getContainerSize=function(){
return { height: this.y };};
return Vertical;
}));
(function(window, factory){
if(typeof define=='function'&&define.amd){
define([
'outlayer/outlayer',
'get-size/get-size',
'desandro-matches-selector/matches-selector',
'fizzy-ui-utils/utils',
'isotope/js/item',
'isotope/js/layout-mode',
'isotope/js/layout-modes/masonry',
'isotope/js/layout-modes/fit-rows',
'isotope/js/layout-modes/vertical'
],
function(Outlayer, getSize, matchesSelector, utils, Item, LayoutMode){
return factory(window, Outlayer, getSize, matchesSelector, utils, Item, LayoutMode);
});
}else if(typeof module=='object'&&module.exports){
module.exports=factory(
window,
require('outlayer'),
require('get-size'),
require('desandro-matches-selector'),
require('fizzy-ui-utils'),
require('isotope/js/item'),
require('isotope/js/layout-mode'),
require('isotope/js/layout-modes/masonry'),
require('isotope/js/layout-modes/fit-rows'),
require('isotope/js/layout-modes/vertical')
);
}else{
window.Isotope=factory(
window,
window.Outlayer,
window.getSize,
window.matchesSelector,
window.fizzyUIUtils,
window.Isotope.Item,
window.Isotope.LayoutMode
);
}}(window, function factory(window, Outlayer, getSize, matchesSelector, utils,
Item, LayoutMode){
var jQuery=window.jQuery;
var trim=String.prototype.trim ?
function(str){
return str.trim();
} :
function(str){
return str.replace(/^\s+|\s+$/g, '');
};
var Isotope=Outlayer.create('isotope', {
layoutMode: 'masonry',
isJQueryFiltering: true,
sortAscending: true
});
Isotope.Item=Item;
Isotope.LayoutMode=LayoutMode;
var proto=Isotope.prototype;
proto._create=function(){
this.itemGUID=0;
this._sorters={};
this._getSorters();
Outlayer.prototype._create.call(this);
this.modes={};
this.filteredItems=this.items;
this.sortHistory=[ 'original-order' ];
for(var name in LayoutMode.modes){
this._initLayoutMode(name);
}};
proto.reloadItems=function(){
this.itemGUID=0;
Outlayer.prototype.reloadItems.call(this);
};
proto._itemize=function(){
var items=Outlayer.prototype._itemize.apply(this, arguments);
for(var i=0; i < items.length; i++){
var item=items[i];
item.id=this.itemGUID++;
}
this._updateItemsSortData(items);
return items;
};
proto._initLayoutMode=function(name){
var Mode=LayoutMode.modes[ name ];
var initialOpts=this.options[ name ]||{};
this.options[ name ]=Mode.options ?
utils.extend(Mode.options, initialOpts):initialOpts;
this.modes[ name ]=new Mode(this);
};
proto.layout=function(){
if(!this._isLayoutInited&&this._getOption('initLayout')){
this.arrange();
return;
}
this._layout();
};
proto._layout=function(){
var isInstant=this._getIsInstant();
this._resetLayout();
this._manageStamps();
this.layoutItems(this.filteredItems, isInstant);
this._isLayoutInited=true;
};
proto.arrange=function(opts){
this.option(opts);
this._getIsInstant();
var filtered=this._filter(this.items);
this.filteredItems=filtered.matches;
this._bindArrangeComplete();
if(this._isInstant){
this._noTransition(this._hideReveal, [ filtered ]);
}else{
this._hideReveal(filtered);
}
this._sort();
this._layout();
};
proto._init=proto.arrange;
proto._hideReveal=function(filtered){
this.reveal(filtered.needReveal);
this.hide(filtered.needHide);
};
proto._getIsInstant=function(){
var isLayoutInstant=this._getOption('layoutInstant');
var isInstant=isLayoutInstant!==undefined ? isLayoutInstant :
!this._isLayoutInited;
this._isInstant=isInstant;
return isInstant;
};
proto._bindArrangeComplete=function(){
var isLayoutComplete, isHideComplete, isRevealComplete;
var _this=this;
function arrangeParallelCallback(){
if(isLayoutComplete&&isHideComplete&&isRevealComplete){
_this.dispatchEvent('arrangeComplete', null, [ _this.filteredItems ]);
}}
this.once('layoutComplete', function(){
isLayoutComplete=true;
arrangeParallelCallback();
});
this.once('hideComplete', function(){
isHideComplete=true;
arrangeParallelCallback();
});
this.once('revealComplete', function(){
isRevealComplete=true;
arrangeParallelCallback();
});
};
proto._filter=function(items){
var filter=this.options.filter;
filter=filter||'*';
var matches=[];
var hiddenMatched=[];
var visibleUnmatched=[];
var test=this._getFilterTest(filter);
for(var i=0; i < items.length; i++){
var item=items[i];
if(item.isIgnored){
continue;
}
var isMatched=test(item);
if(isMatched){
matches.push(item);
}
if(isMatched&&item.isHidden){
hiddenMatched.push(item);
}else if(!isMatched&&!item.isHidden){
visibleUnmatched.push(item);
}}
return {
matches: matches,
needReveal: hiddenMatched,
needHide: visibleUnmatched
};};
proto._getFilterTest=function(filter){
if(jQuery&&this.options.isJQueryFiltering){
return function(item){
return jQuery(item.element).is(filter);
};}
if(typeof filter=='function'){
return function(item){
return filter(item.element);
};}
return function(item){
return matchesSelector(item.element, filter);
};};
proto.updateSortData=function(elems){
var items;
if(elems){
elems=utils.makeArray(elems);
items=this.getItems(elems);
}else{
items=this.items;
}
this._getSorters();
this._updateItemsSortData(items);
};
proto._getSorters=function(){
var getSortData=this.options.getSortData;
for(var key in getSortData){
var sorter=getSortData[ key ];
this._sorters[ key ]=mungeSorter(sorter);
}};
proto._updateItemsSortData=function(items){
var len=items&&items.length;
for(var i=0; len&&i < len; i++){
var item=items[i];
item.updateSortData();
}};
var mungeSorter=(function(){
function mungeSorter(sorter){
if(typeof sorter!='string'){
return sorter;
}
var args=trim(sorter).split(' ');
var query=args[0];
var attrMatch=query.match(/^\[(.+)\]$/);
var attr=attrMatch&&attrMatch[1];
var getValue=getValueGetter(attr, query);
var parser=Isotope.sortDataParsers[ args[1] ];
sorter=parser ? function(elem){
return elem&&parser(getValue(elem) );
} :
function(elem){
return elem&&getValue(elem);
};
return sorter;
}
function getValueGetter(attr, query){
if(attr){
return function getAttribute(elem){
return elem.getAttribute(attr);
};}
return function getChildText(elem){
var child=elem.querySelector(query);
return child&&child.textContent;
};}
return mungeSorter;
})();
Isotope.sortDataParsers={
'parseInt': function(val){
return parseInt(val, 10);
},
'parseFloat': function(val){
return parseFloat(val);
}};
proto._sort=function(){
var sortByOpt=this.options.sortBy;
if(!sortByOpt){
return;
}
var sortBys=[].concat.apply(sortByOpt, this.sortHistory);
var itemSorter=getItemSorter(sortBys, this.options.sortAscending);
this.filteredItems.sort(itemSorter);
if(sortByOpt!=this.sortHistory[0]){
this.sortHistory.unshift(sortByOpt);
}};
function getItemSorter(sortBys, sortAsc){
return function sorter(itemA, itemB){
for(var i=0; i < sortBys.length; i++){
var sortBy=sortBys[i];
var a=itemA.sortData[ sortBy ];
var b=itemB.sortData[ sortBy ];
if(a > b||a < b){
var isAscending=sortAsc[ sortBy ]!==undefined ? sortAsc[ sortBy ]:sortAsc;
var direction=isAscending ? 1:-1;
return(a > b ? 1:-1) * direction;
}}
return 0;
};}
proto._mode=function(){
var layoutMode=this.options.layoutMode;
var mode=this.modes[ layoutMode ];
if(!mode){
throw new Error('No layout mode: ' + layoutMode);
}
mode.options=this.options[ layoutMode ];
return mode;
};
proto._resetLayout=function(){
Outlayer.prototype._resetLayout.call(this);
this._mode()._resetLayout();
};
proto._getItemLayoutPosition=function(item){
return this._mode()._getItemLayoutPosition(item);
};
proto._manageStamp=function(stamp){
this._mode()._manageStamp(stamp);
};
proto._getContainerSize=function(){
return this._mode()._getContainerSize();
};
proto.needsResizeLayout=function(){
return this._mode().needsResizeLayout();
};
proto.appended=function(elems){
var items=this.addItems(elems);
if(!items.length){
return;
}
var filteredItems=this._filterRevealAdded(items);
this.filteredItems=this.filteredItems.concat(filteredItems);
};
proto.prepended=function(elems){
var items=this._itemize(elems);
if(!items.length){
return;
}
this._resetLayout();
this._manageStamps();
var filteredItems=this._filterRevealAdded(items);
this.layoutItems(this.filteredItems);
this.filteredItems=filteredItems.concat(this.filteredItems);
this.items=items.concat(this.items);
};
proto._filterRevealAdded=function(items){
var filtered=this._filter(items);
this.hide(filtered.needHide);
this.reveal(filtered.matches);
this.layoutItems(filtered.matches, true);
return filtered.matches;
};
proto.insert=function(elems){
var items=this.addItems(elems);
if(!items.length){
return;
}
var i, item;
var len=items.length;
for(i=0; i < len; i++){
item=items[i];
this.element.appendChild(item.element);
}
var filteredInsertItems=this._filter(items).matches;
for(i=0; i < len; i++){
items[i].isLayoutInstant=true;
}
this.arrange();
for(i=0; i < len; i++){
delete items[i].isLayoutInstant;
}
this.reveal(filteredInsertItems);
};
var _remove=proto.remove;
proto.remove=function(elems){
elems=utils.makeArray(elems);
var removeItems=this.getItems(elems);
_remove.call(this, elems);
var len=removeItems&&removeItems.length;
for(var i=0; len&&i < len; i++){
var item=removeItems[i];
utils.removeFrom(this.filteredItems, item);
}};
proto.shuffle=function(){
for(var i=0; i < this.items.length; i++){
var item=this.items[i];
item.sortData.random=Math.random();
}
this.options.sortBy='random';
this._sort();
this._layout();
};
proto._noTransition=function(fn, args){
var transitionDuration=this.options.transitionDuration;
this.options.transitionDuration=0;
var returnValue=fn.apply(this, args);
this.options.transitionDuration=transitionDuration;
return returnValue;
};
proto.getFilteredItemElements=function(){
return this.filteredItems.map(function(item){
return item.element;
});
};
return Isotope;
}));
!function(a,b){"function"==typeof define&&define.amd?define("packery/js/rect",b):"object"==typeof module&&module.exports?module.exports=b():(a.Packery=a.Packery||{},a.Packery.Rect=b())}(window,function(){function a(b){for(var c in a.defaults)this[c]=a.defaults[c];for(c in b)this[c]=b[c]}a.defaults={x:0,y:0,width:0,height:0};var b=a.prototype;return b.contains=function(a){var b=a.width||0,c=a.height||0;return this.x<=a.x&&this.y<=a.y&&this.x+this.width>=a.x+b&&this.y+this.height>=a.y+c},b.overlaps=function(a){var b=this.x+this.width,c=this.y+this.height,d=a.x+a.width,e=a.y+a.height;return this.x<d&&b>a.x&&this.y<e&&c>a.y},b.getMaximalFreeRects=function(b){if(!this.overlaps(b))return!1;var c,d=[],e=this.x+this.width,f=this.y+this.height,g=b.x+b.width,h=b.y+b.height;return this.y<b.y&&(c=new a({x:this.x,y:this.y,width:this.width,height:b.y-this.y}),d.push(c)),e>g&&(c=new a({x:g,y:this.y,width:e-g,height:this.height}),d.push(c)),f>h&&(c=new a({x:this.x,y:h,width:this.width,height:f-h}),d.push(c)),this.x<b.x&&(c=new a({x:this.x,y:this.y,width:b.x-this.x,height:this.height}),d.push(c)),d},b.canFit=function(a){return this.width>=a.width&&this.height>=a.height},a}),function(a,b){if("function"==typeof define&&define.amd)define("packery/js/packer",["./rect"],b);else if("object"==typeof module&&module.exports)module.exports=b(require("./rect"));else{var c=a.Packery=a.Packery||{};c.Packer=b(c.Rect)}}(window,function(a){function b(a,b,c){this.width=a||0,this.height=b||0,this.sortDirection=c||"downwardLeftToRight",this.reset()}var c=b.prototype;c.reset=function(){this.spaces=[];var b=new a({x:0,y:0,width:this.width,height:this.height});this.spaces.push(b),this.sorter=d[this.sortDirection]||d.downwardLeftToRight},c.pack=function(a){for(var b=0;b<this.spaces.length;b++){var c=this.spaces[b];if(c.canFit(a)){this.placeInSpace(a,c);break}}},c.columnPack=function(a){for(var b=0;b<this.spaces.length;b++){var c=this.spaces[b],d=c.x<=a.x&&c.x+c.width>=a.x+a.width&&c.height>=a.height-.01;if(d){a.y=c.y,this.placed(a);break}}},c.rowPack=function(a){for(var b=0;b<this.spaces.length;b++){var c=this.spaces[b],d=c.y<=a.y&&c.y+c.height>=a.y+a.height&&c.width>=a.width-.01;if(d){a.x=c.x,this.placed(a);break}}},c.placeInSpace=function(a,b){a.x=b.x,a.y=b.y,this.placed(a)},c.placed=function(a){for(var b=[],c=0;c<this.spaces.length;c++){var d=this.spaces[c],e=d.getMaximalFreeRects(a);e?b.push.apply(b,e):b.push(d)}this.spaces=b,this.mergeSortSpaces()},c.mergeSortSpaces=function(){b.mergeRects(this.spaces),this.spaces.sort(this.sorter)},c.addSpace=function(a){this.spaces.push(a),this.mergeSortSpaces()},b.mergeRects=function(a){var b=0,c=a[b];a:for(;c;){for(var d=0,e=a[b+d];e;){if(e==c)d++;else{if(e.contains(c)){a.splice(b,1),c=a[b];continue a}c.contains(e)?a.splice(b+d,1):d++}e=a[b+d]}b++,c=a[b]}return a};var d={downwardLeftToRight:function(a,b){return a.y-b.y||a.x-b.x},rightwardTopToBottom:function(a,b){return a.x-b.x||a.y-b.y}};return b}),function(a,b){"function"==typeof define&&define.amd?define("packery/js/item",["outlayer/outlayer","./rect"],b):"object"==typeof module&&module.exports?module.exports=b(require("outlayer"),require("./rect")):a.Packery.Item=b(a.Outlayer,a.Packery.Rect)}(window,function(a,b){var c=document.documentElement.style,d="string"==typeof c.transform?"transform":"WebkitTransform",e=function(){a.Item.apply(this,arguments)},f=e.prototype=Object.create(a.Item.prototype),g=f._create;f._create=function(){g.call(this),this.rect=new b};var h=f.moveTo;return f.moveTo=function(a,b){var c=Math.abs(this.position.x-a),d=Math.abs(this.position.y-b),e=this.layout.dragItemCount&&!this.isPlacing&&!this.isTransitioning&&1>c&&1>d;return e?void this.goTo(a,b):void h.apply(this,arguments)},f.enablePlacing=function(){this.removeTransitionStyles(),this.isTransitioning&&d&&(this.element.style[d]="none"),this.isTransitioning=!1,this.getSize(),this.layout._setRectSize(this.element,this.rect),this.isPlacing=!0},f.disablePlacing=function(){this.isPlacing=!1},f.removeElem=function(){this.element.parentNode.removeChild(this.element),this.layout.packer.addSpace(this.rect),this.emitEvent("remove",[this])},f.showDropPlaceholder=function(){var a=this.dropPlaceholder;a||(a=this.dropPlaceholder=document.createElement("div"),a.className="packery-drop-placeholder",a.style.position="absolute"),a.style.width=this.size.width+"px",a.style.height=this.size.height+"px",this.positionDropPlaceholder(),this.layout.element.appendChild(a)},f.positionDropPlaceholder=function(){this.dropPlaceholder.style[d]="translate("+this.rect.x+"px, "+this.rect.y+"px)"},f.hideDropPlaceholder=function(){this.layout.element.removeChild(this.dropPlaceholder)},e}),function(a,b){"function"==typeof define&&define.amd?define("packery/js/packery",["get-size/get-size","outlayer/outlayer","./rect","./packer","./item"],b):"object"==typeof module&&module.exports?module.exports=b(require("get-size"),require("outlayer"),require("./rect"),require("./packer"),require("./item")):a.Packery=b(a.getSize,a.Outlayer,a.Packery.Rect,a.Packery.Packer,a.Packery.Item)}(window,function(a,b,c,d,e){function f(a,b){return a.position.y-b.position.y||a.position.x-b.position.x}function g(a,b){return a.position.x-b.position.x||a.position.y-b.position.y}function h(a,b){var c=b.x-a.x,d=b.y-a.y;return Math.sqrt(c*c+d*d)}c.prototype.canFit=function(a){return this.width>=a.width-1&&this.height>=a.height-1};var i=b.create("packery");i.Item=e;var j=i.prototype;j._create=function(){b.prototype._create.call(this),this.packer=new d,this.shiftPacker=new d,this.isEnabled=!0,this.dragItemCount=0;var a=this;this.handleDraggabilly={dragStart:function(){a.itemDragStart(this.element)},dragMove:function(){a.itemDragMove(this.element,this.position.x,this.position.y)},dragEnd:function(){a.itemDragEnd(this.element)}},this.handleUIDraggable={start:function(b,c){c&&a.itemDragStart(b.currentTarget)},drag:function(b,c){c&&a.itemDragMove(b.currentTarget,c.position.left,c.position.top)},stop:function(b,c){c&&a.itemDragEnd(b.currentTarget)}}},j._resetLayout=function(){this.getSize(),this._getMeasurements();var a,b,c;this._getOption("horizontal")?(a=1/0,b=this.size.innerHeight+this.gutter,c="rightwardTopToBottom"):(a=this.size.innerWidth+this.gutter,b=1/0,c="downwardLeftToRight"),this.packer.width=this.shiftPacker.width=a,this.packer.height=this.shiftPacker.height=b,this.packer.sortDirection=this.shiftPacker.sortDirection=c,this.packer.reset(),this.maxY=0,this.maxX=0},j._getMeasurements=function(){this._getMeasurement("columnWidth","width"),this._getMeasurement("rowHeight","height"),this._getMeasurement("gutter","width")},j._getItemLayoutPosition=function(a){if(this._setRectSize(a.element,a.rect),this.isShifting||this.dragItemCount>0){var b=this._getPackMethod();this.packer[b](a.rect)}else this.packer.pack(a.rect);return this._setMaxXY(a.rect),a.rect},j.shiftLayout=function(){this.isShifting=!0,this.layout(),delete this.isShifting},j._getPackMethod=function(){return this._getOption("horizontal")?"rowPack":"columnPack"},j._setMaxXY=function(a){this.maxX=Math.max(a.x+a.width,this.maxX),this.maxY=Math.max(a.y+a.height,this.maxY)},j._setRectSize=function(b,c){var d=a(b),e=d.outerWidth,f=d.outerHeight;(e||f)&&(e=this._applyGridGutter(e,this.columnWidth),f=this._applyGridGutter(f,this.rowHeight)),c.width=Math.min(e,this.packer.width),c.height=Math.min(f,this.packer.height)},j._applyGridGutter=function(a,b){if(!b)return a+this.gutter;b+=this.gutter;var c=a%b,d=c&&1>c?"round":"ceil";return a=Math[d](a/b)*b},j._getContainerSize=function(){return this._getOption("horizontal")?{width:this.maxX-this.gutter}:{height:this.maxY-this.gutter}},j._manageStamp=function(a){var b,d=this.getItem(a);if(d&&d.isPlacing)b=d.rect;else{var e=this._getElementOffset(a);b=new c({x:this._getOption("originLeft")?e.left:e.right,y:this._getOption("originTop")?e.top:e.bottom})}this._setRectSize(a,b),this.packer.placed(b),this._setMaxXY(b)},j.sortItemsByPosition=function(){var a=this._getOption("horizontal")?g:f;this.items.sort(a)},j.fit=function(a,b,c){var d=this.getItem(a);d&&(this.stamp(d.element),d.enablePlacing(),this.updateShiftTargets(d),b=void 0===b?d.rect.x:b,c=void 0===c?d.rect.y:c,this.shift(d,b,c),this._bindFitEvents(d),d.moveTo(d.rect.x,d.rect.y),this.shiftLayout(),this.unstamp(d.element),this.sortItemsByPosition(),d.disablePlacing())},j._bindFitEvents=function(a){function b(){d++,2==d&&c.dispatchEvent("fitComplete",null,[a])}var c=this,d=0;a.once("layout",b),this.once("layoutComplete",b)},j.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&(this.options.shiftPercentResize?this.resizeShiftPercentLayout():this.layout())},j.needsResizeLayout=function(){var b=a(this.element),c=this._getOption("horizontal")?"innerHeight":"innerWidth";return b[c]!=this.size[c]},j.resizeShiftPercentLayout=function(){var b=this._getItemsForLayout(this.items),c=this._getOption("horizontal"),d=c?"y":"x",e=c?"height":"width",f=c?"rowHeight":"columnWidth",g=c?"innerHeight":"innerWidth",h=this[f];if(h=h&&h+this.gutter){this._getMeasurements();var i=this[f]+this.gutter;b.forEach(function(a){var b=Math.round(a.rect[d]/h);a.rect[d]=b*i})}else{var j=a(this.element)[g]+this.gutter,k=this.packer[e];b.forEach(function(a){a.rect[d]=a.rect[d]/k*j})}this.shiftLayout()},j.itemDragStart=function(a){if(this.isEnabled){this.stamp(a);var b=this.getItem(a);b&&(b.enablePlacing(),b.showDropPlaceholder(),this.dragItemCount++,this.updateShiftTargets(b))}},j.updateShiftTargets=function(a){this.shiftPacker.reset(),this._getBoundingRect();var b=this._getOption("originLeft"),d=this._getOption("originTop");this.stamps.forEach(function(a){var e=this.getItem(a);if(!e||!e.isPlacing){var f=this._getElementOffset(a),g=new c({x:b?f.left:f.right,y:d?f.top:f.bottom});this._setRectSize(a,g),this.shiftPacker.placed(g)}},this);var e=this._getOption("horizontal"),f=e?"rowHeight":"columnWidth",g=e?"height":"width";this.shiftTargetKeys=[],this.shiftTargets=[];var h,i=this[f];if(i=i&&i+this.gutter){var j=Math.ceil(a.rect[g]/i),k=Math.floor((this.shiftPacker[g]+this.gutter)/i);h=(k-j)*i;for(var l=0;k>l;l++)this._addShiftTarget(l*i,0,h)}else h=this.shiftPacker[g]+this.gutter-a.rect[g],this._addShiftTarget(0,0,h);var m=this._getItemsForLayout(this.items),n=this._getPackMethod();m.forEach(function(a){var b=a.rect;this._setRectSize(a.element,b),this.shiftPacker[n](b),this._addShiftTarget(b.x,b.y,h);var c=e?b.x+b.width:b.x,d=e?b.y:b.y+b.height;if(this._addShiftTarget(c,d,h),i)for(var f=Math.round(b[g]/i),j=1;f>j;j++){var k=e?c:b.x+i*j,l=e?b.y+i*j:d;this._addShiftTarget(k,l,h)}},this)},j._addShiftTarget=function(a,b,c){var d=this._getOption("horizontal")?b:a;if(!(0!==d&&d>c)){var e=a+","+b,f=-1!=this.shiftTargetKeys.indexOf(e);f||(this.shiftTargetKeys.push(e),this.shiftTargets.push({x:a,y:b}))}},j.shift=function(a,b,c){var d,e=1/0,f={x:b,y:c};this.shiftTargets.forEach(function(a){var b=h(a,f);e>b&&(d=a,e=b)}),a.rect.x=d.x,a.rect.y=d.y};var k=120;j.itemDragMove=function(a,b,c){function d(){f.shift(e,b,c),e.positionDropPlaceholder(),f.layout()}var e=this.isEnabled&&this.getItem(a);if(e){b-=this.size.paddingLeft,c-=this.size.paddingTop;var f=this,g=new Date;this._itemDragTime&&g-this._itemDragTime<k?(clearTimeout(this.dragTimeout),this.dragTimeout=setTimeout(d,k)):(d(),this._itemDragTime=g)}},j.itemDragEnd=function(a){function b(){d++,2==d&&(c.element.classList.remove("is-positioning-post-drag"),c.hideDropPlaceholder(),e.dispatchEvent("dragItemPositioned",null,[c]))}var c=this.isEnabled&&this.getItem(a);if(c){clearTimeout(this.dragTimeout),c.element.classList.add("is-positioning-post-drag");var d=0,e=this;c.once("layout",b),this.once("layoutComplete",b),c.moveTo(c.rect.x,c.rect.y),this.layout(),this.dragItemCount=Math.max(0,this.dragItemCount-1),this.sortItemsByPosition(),c.disablePlacing(),this.unstamp(c.element)}},j.bindDraggabillyEvents=function(a){this._bindDraggabillyEvents(a,"on")},j.unbindDraggabillyEvents=function(a){this._bindDraggabillyEvents(a,"off")},j._bindDraggabillyEvents=function(a,b){var c=this.handleDraggabilly;a[b]("dragStart",c.dragStart),a[b]("dragMove",c.dragMove),a[b]("dragEnd",c.dragEnd)},j.bindUIDraggableEvents=function(a){this._bindUIDraggableEvents(a,"on")},j.unbindUIDraggableEvents=function(a){this._bindUIDraggableEvents(a,"off")},j._bindUIDraggableEvents=function(a,b){var c=this.handleUIDraggable;a[b]("dragstart",c.start)[b]("drag",c.drag)[b]("dragstop",c.stop)};var l=j.destroy;return j.destroy=function(){l.apply(this,arguments),this.isEnabled=!1},i.Rect=c,i.Packer=d,i}),function(a,b){"function"==typeof define&&define.amd?define(["isotope/js/layout-mode","packery/js/packery"],b):"object"==typeof module&&module.exports?module.exports=b(require("isotope-layout/js/layout-mode"),require("packery")):b(a.Isotope.LayoutMode,a.Packery)}(window,function(a,b){var c=a.create("packery"),d=c.prototype,e={_getElementOffset:!0,_getMeasurement:!0};for(var f in b.prototype)e[f]||(d[f]=b.prototype[f]);var g=d._resetLayout;d._resetLayout=function(){this.packer=this.packer||new b.Packer,this.shiftPacker=this.shiftPacker||new b.Packer,g.apply(this,arguments)};var h=d._getItemLayoutPosition;d._getItemLayoutPosition=function(a){return a.rect=a.rect||new b.Rect,h.call(this,a)};var i=d.needsResizeLayout;d.needsResizeLayout=function(){return this._getOption("horizontal")?this.needsVerticalResizeLayout():i.call(this)};var j=d._getOption;return d._getOption=function(a){return"horizontal"==a?void 0!==this.options.isHorizontal?this.options.isHorizontal:this.options.horizontal:j.apply(this.isotope,arguments)},c});
jQuery.extend(jQuery.easing,
{
easeIn: function (x, t, b, c, d){
return jQuery.easing.easeInQuad(x, t, b, c, d);
},
easeOut: function (x, t, b, c, d){
return jQuery.easing.easeOutQuad(x, t, b, c, d);
},
easeInOut: function (x, t, b, c, d){
return jQuery.easing.easeInOutQuad(x, t, b, c, d);
},
expoin: function(x, t, b, c, d){
return jQuery.easing.easeInExpo(x, t, b, c, d);
},
expoout: function(x, t, b, c, d){
return jQuery.easing.easeOutExpo(x, t, b, c, d);
},
expoinout: function(x, t, b, c, d){
return jQuery.easing.easeInOutExpo(x, t, b, c, d);
},
bouncein: function(x, t, b, c, d){
return jQuery.easing.easeInBounce(x, t, b, c, d);
},
bounceout: function(x, t, b, c, d){
return jQuery.easing.easeOutBounce(x, t, b, c, d);
},
bounceinout: function(x, t, b, c, d){
return jQuery.easing.easeInOutBounce(x, t, b, c, d);
},
elasin: function(x, t, b, c, d){
return jQuery.easing.easeInElastic(x, t, b, c, d);
},
elasout: function(x, t, b, c, d){
return jQuery.easing.easeOutElastic(x, t, b, c, d);
},
elasinout: function(x, t, b, c, d){
return jQuery.easing.easeInOutElastic(x, t, b, c, d);
},
backin: function(x, t, b, c, d){
return jQuery.easing.easeInBack(x, t, b, c, d);
},
backout: function(x, t, b, c, d){
return jQuery.easing.easeOutBack(x, t, b, c, d);
},
backinout: function(x, t, b, c, d){
return jQuery.easing.easeInOutBack(x, t, b, c, d);
}});
;(function (factory){
if(typeof define==='function'&&define.amd){
define(['jquery'], factory);
}else if(typeof exports==='object'){
factory(require('jquery'));
}else{
factory(window.jQuery||window.Zepto);
}}(function($){
var CLOSE_EVENT='Close',
BEFORE_CLOSE_EVENT='BeforeClose',
AFTER_CLOSE_EVENT='AfterClose',
BEFORE_APPEND_EVENT='BeforeAppend',
MARKUP_PARSE_EVENT='MarkupParse',
OPEN_EVENT='Open',
CHANGE_EVENT='Change',
NS='mfp',
EVENT_NS='.' + NS,
READY_CLASS='mfp-ready',
REMOVING_CLASS='mfp-removing',
PREVENT_CLOSE_CLASS='mfp-prevent-close';
var mfp,
MagnificPopup=function(){},
_isJQ = !!(window.jQuery),
_prevStatus,
_window=$(window),
_document,
_prevContentType,
_wrapClasses,
_currPopupType;
var _mfpOn=function(name, f){
mfp.ev.on(NS + name + EVENT_NS, f);
},
_getEl=function(className, appendTo, html, raw){
var el=document.createElement('div');
el.className='mfp-'+className;
if(html){
el.innerHTML=html;
}
if(!raw){
el=$(el);
if(appendTo){
el.appendTo(appendTo);
}}else if(appendTo){
appendTo.appendChild(el);
}
return el;
},
_mfpTrigger=function(e, data){
mfp.ev.triggerHandler(NS + e, data);
if(mfp.st.callbacks){
e=e.charAt(0).toLowerCase() + e.slice(1);
if(mfp.st.callbacks[e]){
mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data:[data]);
}}
},
_getCloseBtn=function(type){
if(type!==_currPopupType||!mfp.currTemplate.closeBtn){
mfp.currTemplate.closeBtn=$(mfp.st.closeMarkup.replace('%title%', mfp.st.tClose) );
_currPopupType=type;
}
return mfp.currTemplate.closeBtn;
},
_checkInstance=function(){
if(!$.magnificPopup.instance){
mfp=new MagnificPopup();
mfp.init();
$.magnificPopup.instance=mfp;
}},
supportsTransitions=function(){
var s=document.createElement('p').style, // 's' for style. better to create an element if body yet to exist
v=['ms','O','Moz','Webkit']; // 'v' for vendor
if(s['transition']!==undefined){
return true;
}
while(v.length){
if(v.pop() + 'Transition' in s){
return true;
}}
return false;
};
MagnificPopup.prototype={
constructor: MagnificPopup,
init: function(){
var appVersion=navigator.appVersion;
mfp.isLowIE=mfp.isIE8=document.all&&!document.addEventListener;
mfp.isAndroid=(/android/gi).test(appVersion);
mfp.isIOS=(/iphone|ipad|ipod/gi).test(appVersion);
mfp.supportsTransition=supportsTransitions();
mfp.probablyMobile=(mfp.isAndroid||mfp.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent));
_document=$(document);
mfp.popupsCache={};},
open: function(data){
var i;
if(data.isObj===false){
mfp.items=data.items.toArray();
mfp.index=0;
var items=data.items,
item;
for(i=0; i < items.length; i++){
item=items[i];
if(item.parsed){
item=item.el[0];
}
if(item===data.el[0]){
mfp.index=i;
break;
}}
}else{
mfp.items=$.isArray(data.items) ? data.items:[data.items];
mfp.index=data.index||0;
}
if(mfp.isOpen){
mfp.updateItemHTML();
return;
}
mfp.types=[];
_wrapClasses='';
if(data.mainEl&&data.mainEl.length){
mfp.ev=data.mainEl.eq(0);
}else{
mfp.ev=_document;
}
if(data.key){
if(!mfp.popupsCache[data.key]){
mfp.popupsCache[data.key]={};}
mfp.currTemplate=mfp.popupsCache[data.key];
}else{
mfp.currTemplate={};}
mfp.st=$.extend(true, {}, $.magnificPopup.defaults, data);
mfp.fixedContentPos=mfp.st.fixedContentPos==='auto' ? !mfp.probablyMobile:mfp.st.fixedContentPos;
if(mfp.st.modal){
mfp.st.closeOnContentClick=false;
mfp.st.closeOnBgClick=false;
mfp.st.showCloseBtn=false;
mfp.st.enableEscapeKey=false;
}
if(!mfp.bgOverlay){
mfp.bgOverlay=_getEl('bg').on('click'+EVENT_NS, function(){
mfp.close();
});
mfp.wrap=_getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e){
if(mfp._checkIfClose(e.target)){
mfp.close();
}});
mfp.container=_getEl('container', mfp.wrap);
}
mfp.contentContainer=_getEl('content');
if(mfp.st.preloader){
mfp.preloader=_getEl('preloader', mfp.container, mfp.st.tLoading);
}
var modules=$.magnificPopup.modules;
for(i=0; i < modules.length; i++){
var n=modules[i];
n=n.charAt(0).toUpperCase() + n.slice(1);
mfp['init'+n].call(mfp);
}
_mfpTrigger('BeforeOpen');
if(mfp.st.showCloseBtn){
if(!mfp.st.closeBtnInside){
mfp.wrap.append(_getCloseBtn());
}else{
_mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item){
values.close_replaceWith=_getCloseBtn(item.type);
});
_wrapClasses +=' mfp-close-btn-in';
}}
if(mfp.st.alignTop){
_wrapClasses +=' mfp-align-top';
}
if(mfp.fixedContentPos){
mfp.wrap.css({
overflow: mfp.st.overflowY,
overflowX: 'hidden',
overflowY: mfp.st.overflowY
});
}else{
mfp.wrap.css({
top: _window.scrollTop(),
position: 'absolute'
});
}
if(mfp.st.fixedBgPos===false||(mfp.st.fixedBgPos==='auto'&&!mfp.fixedContentPos)){
mfp.bgOverlay.css({
height: _document.height(),
position: 'absolute'
});
}
if(mfp.st.enableEscapeKey){
_document.on('keyup' + EVENT_NS, function(e){
if(e.keyCode===27){
mfp.close();
}});
}
_window.on('resize' + EVENT_NS, function(){
mfp.updateSize();
});
if(!mfp.st.closeOnContentClick){
_wrapClasses +=' mfp-auto-cursor';
}
if(_wrapClasses)
mfp.wrap.addClass(_wrapClasses);
var windowHeight=mfp.wH=_window.height();
var windowStyles={};
if(mfp.fixedContentPos){
if(mfp._hasScrollBar(windowHeight)){
var s=mfp._getScrollbarSize();
if(s){
windowStyles.marginRight=s;
}}
}
if(mfp.fixedContentPos){
if(!mfp.isIE7){
windowStyles.overflow='hidden';
}else{
$('body, html').css('overflow', 'hidden');
}}
var classesToadd=mfp.st.mainClass;
if(mfp.isIE7){
classesToadd +=' mfp-ie7';
}
if(classesToadd){
mfp._addClassToMFP(classesToadd);
}
mfp.updateItemHTML();
_mfpTrigger('BuildControls');
$('html').css(windowStyles);
mfp.bgOverlay.add(mfp.wrap).prependTo(mfp.st.prependTo||$(document.body));
mfp._lastFocusedEl=document.activeElement;
setTimeout(function(){
if(mfp.content){
mfp._addClassToMFP(READY_CLASS);
mfp._setFocus();
}else{
mfp.bgOverlay.addClass(READY_CLASS);
}
_document.on('focusin' + EVENT_NS, mfp._onFocusIn);
}, 16);
mfp.isOpen=true;
mfp.updateSize(windowHeight);
_mfpTrigger(OPEN_EVENT);
return data;
},
close: function(){
if(!mfp.isOpen) return;
_mfpTrigger(BEFORE_CLOSE_EVENT);
mfp.isOpen=false;
if(mfp.st.removalDelay&&!mfp.isLowIE&&mfp.supportsTransition){
mfp._addClassToMFP(REMOVING_CLASS);
setTimeout(function(){
mfp._close();
}, mfp.st.removalDelay);
}else{
mfp._close();
}},
_close: function(){
_mfpTrigger(CLOSE_EVENT);
var classesToRemove=REMOVING_CLASS + ' ' + READY_CLASS + ' ';
mfp.bgOverlay.detach();
mfp.wrap.detach();
mfp.container.empty();
if(mfp.st.mainClass){
classesToRemove +=mfp.st.mainClass + ' ';
}
mfp._removeClassFromMFP(classesToRemove);
if(mfp.fixedContentPos){
var windowStyles={marginRight: ''};
if(mfp.isIE7){
$('body, html').css('overflow', '');
}else{
windowStyles.overflow='';
}
$('html').css(windowStyles);
}
_document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);
mfp.ev.off(EVENT_NS);
mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');
mfp.bgOverlay.attr('class', 'mfp-bg');
mfp.container.attr('class', 'mfp-container');
if(mfp.st.showCloseBtn &&
(!mfp.st.closeBtnInside||mfp.currTemplate[mfp.currItem.type]===true)){
if(mfp.currTemplate.closeBtn)
mfp.currTemplate.closeBtn.detach();
}
if(mfp.st.autoFocusLast&&mfp._lastFocusedEl){
$(mfp._lastFocusedEl).focus();
}
mfp.currItem=null;
mfp.content=null;
mfp.currTemplate=null;
mfp.prevHeight=0;
_mfpTrigger(AFTER_CLOSE_EVENT);
},
updateSize: function(winHeight){
if(mfp.isIOS){
var zoomLevel=document.documentElement.clientWidth / window.innerWidth;
var height=window.innerHeight * zoomLevel;
mfp.wrap.css('height', height);
mfp.wH=height;
}else{
mfp.wH=winHeight||_window.height();
}
if(!mfp.fixedContentPos){
mfp.wrap.css('height', mfp.wH);
}
_mfpTrigger('Resize');
},
updateItemHTML: function(){
var item=mfp.items[mfp.index];
mfp.contentContainer.detach();
if(mfp.content)
mfp.content.detach();
if(!item.parsed){
item=mfp.parseEl(mfp.index);
}
var type=item.type;
_mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type:'', type]);
mfp.currItem=item;
if(!mfp.currTemplate[type]){
var markup=mfp.st[type] ? mfp.st[type].markup:false;
_mfpTrigger('FirstMarkupParse', markup);
if(markup){
mfp.currTemplate[type]=$(markup);
}else{
mfp.currTemplate[type]=true;
}}
if(_prevContentType&&_prevContentType!==item.type){
mfp.container.removeClass('mfp-'+_prevContentType+'-holder');
}
var newContent=mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);
mfp.appendContent(newContent, type);
item.preloaded=true;
_mfpTrigger(CHANGE_EVENT, item);
_prevContentType=item.type;
mfp.container.prepend(mfp.contentContainer);
_mfpTrigger('AfterChange');
},
appendContent: function(newContent, type){
mfp.content=newContent;
if(newContent){
if(mfp.st.showCloseBtn&&mfp.st.closeBtnInside &&
mfp.currTemplate[type]===true){
if(!mfp.content.find('.mfp-close').length){
mfp.content.append(_getCloseBtn());
}}else{
mfp.content=newContent;
}}else{
mfp.content='';
}
_mfpTrigger(BEFORE_APPEND_EVENT);
mfp.container.addClass('mfp-'+type+'-holder');
mfp.contentContainer.append(mfp.content);
},
parseEl: function(index){
var item=mfp.items[index],
type;
if(item.tagName){
item={ el: $(item) };}else{
type=item.type;
item={ data: item, src: item.src };}
if(item.el){
var types=mfp.types;
for(var i=0; i < types.length; i++){
if(item.el.hasClass('mfp-'+types[i])){
type=types[i];
break;
}}
item.src=item.el.attr('data-mfp-src');
if(!item.src){
item.src=item.el.attr('href');
}}
item.type=type||mfp.st.type||'inline';
item.index=index;
item.parsed=true;
mfp.items[index]=item;
_mfpTrigger('ElementParse', item);
return mfp.items[index];
},
addGroup: function(el, options){
var eHandler=function(e){
e.mfpEl=this;
mfp._openClick(e, el, options);
};
if(!options){
options={};}
var eName='click.magnificPopup';
options.mainEl=el;
if(options.items){
options.isObj=true;
el.off(eName).on(eName, eHandler);
}else{
options.isObj=false;
if(options.delegate){
el.off(eName).on(eName, options.delegate , eHandler);
}else{
options.items=el;
el.off(eName).on(eName, eHandler);
}}
},
_openClick: function(e, el, options){
var midClick=options.midClick!==undefined ? options.midClick:$.magnificPopup.defaults.midClick;
if(!midClick&&(e.which===2||e.ctrlKey||e.metaKey||e.altKey||e.shiftKey) ){
return;
}
var disableOn=options.disableOn!==undefined ? options.disableOn:$.magnificPopup.defaults.disableOn;
if(disableOn){
if($.isFunction(disableOn)){
if(!disableOn.call(mfp)){
return true;
}}else{
if(_window.width() < disableOn){
return true;
}}
}
if(e.type){
e.preventDefault();
if(mfp.isOpen){
e.stopPropagation();
}}
options.el=$(e.mfpEl);
if(options.delegate){
options.items=el.find(options.delegate);
}
mfp.open(options);
},
updateStatus: function(status, text){
if(mfp.preloader){
if(_prevStatus!==status){
mfp.container.removeClass('mfp-s-'+_prevStatus);
}
if(!text&&status==='loading'){
text=mfp.st.tLoading;
}
var data={
status: status,
text: text
};
_mfpTrigger('UpdateStatus', data);
status=data.status;
text=data.text;
mfp.preloader.html(text);
mfp.preloader.find('a').on('click', function(e){
e.stopImmediatePropagation();
});
mfp.container.addClass('mfp-s-'+status);
_prevStatus=status;
}},
/*
"Private" helpers that aren't private at all
*/
_checkIfClose: function(target){
if($(target).hasClass(PREVENT_CLOSE_CLASS)){
return;
}
var closeOnContent=mfp.st.closeOnContentClick;
var closeOnBg=mfp.st.closeOnBgClick;
if(closeOnContent&&closeOnBg){
return true;
}else{
if(!mfp.content||$(target).hasClass('mfp-close')||(mfp.preloader&&target===mfp.preloader[0])){
return true;
}
if((target!==mfp.content[0]&&!$.contains(mfp.content[0], target))){
if(closeOnBg){
if($.contains(document, target)){
return true;
}}
}else if(closeOnContent){
return true;
}}
return false;
},
_addClassToMFP: function(cName){
mfp.bgOverlay.addClass(cName);
mfp.wrap.addClass(cName);
},
_removeClassFromMFP: function(cName){
this.bgOverlay.removeClass(cName);
mfp.wrap.removeClass(cName);
},
_hasScrollBar: function(winHeight){
return((mfp.isIE7 ? _document.height():document.body.scrollHeight) > (winHeight||_window.height()));
},
_setFocus: function(){
(mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0):mfp.wrap).focus();
},
_onFocusIn: function(e){
if(e.target!==mfp.wrap[0]&&!$.contains(mfp.wrap[0], e.target)){
mfp._setFocus();
return false;
}},
_parseMarkup: function(template, values, item){
var arr;
if(item.data){
values=$.extend(item.data, values);
}
_mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item]);
$.each(values, function(key, value){
if(value===undefined||value===false){
return true;
}
arr=key.split('_');
if(arr.length > 1){
var el=template.find(EVENT_NS + '-'+arr[0]);
if(el.length > 0){
var attr=arr[1];
if(attr==='replaceWith'){
if(el[0]!==value[0]){
el.replaceWith(value);
}}else if(attr==='img'){
if(el.is('img')){
el.attr('src', value);
}else{
el.replaceWith($('<img>').attr('src', value).attr('class', el.attr('class')));
}}else{
el.attr(arr[1], value);
}}
}else{
template.find(EVENT_NS + '-'+key).html(value);
}});
},
_getScrollbarSize: function(){
if(mfp.scrollbarSize===undefined){
var scrollDiv=document.createElement("div");
scrollDiv.style.cssText='width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';
document.body.appendChild(scrollDiv);
mfp.scrollbarSize=scrollDiv.offsetWidth - scrollDiv.clientWidth;
document.body.removeChild(scrollDiv);
}
return mfp.scrollbarSize;
}}; 
$.magnificPopup={
instance: null,
proto: MagnificPopup.prototype,
modules: [],
open: function(options, index){
_checkInstance();
if(!options){
options={};}else{
options=$.extend(true, {}, options);
}
options.isObj=true;
options.index=index||0;
return this.instance.open(options);
},
close: function(){
return $.magnificPopup.instance&&$.magnificPopup.instance.close();
},
registerModule: function(name, module){
if(module.options){
$.magnificPopup.defaults[name]=module.options;
}
$.extend(this.proto, module.proto);
this.modules.push(name);
},
defaults: {
disableOn: 0,
key: null,
midClick: false,
mainClass: '',
preloader: true,
focus: '',
closeOnContentClick: false,
closeOnBgClick: true,
closeBtnInside: true,
showCloseBtn: true,
enableEscapeKey: true,
modal: false,
alignTop: false,
removalDelay: 0,
prependTo: null,
fixedContentPos: 'auto',
fixedBgPos: 'auto',
overflowY: 'auto',
closeMarkup: '<button title="%title%" type="button" class="mfp-close">&#215;</button>',
tClose: 'Close (Esc)',
tLoading: 'Loading...',
autoFocusLast: true
}};
$.fn.magnificPopup=function(options){
_checkInstance();
var jqEl=$(this);
if(typeof options==="string"){
if(options==='open'){
var items,
itemOpts=_isJQ ? jqEl.data('magnificPopup'):jqEl[0].magnificPopup,
index=parseInt(arguments[1], 10)||0;
if(itemOpts.items){
items=itemOpts.items[index];
}else{
items=jqEl;
if(itemOpts.delegate){
items=items.find(itemOpts.delegate);
}
items=items.eq(index);
}
mfp._openClick({mfpEl:items}, jqEl, itemOpts);
}else{
if(mfp.isOpen)
mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));
}}else{
options=$.extend(true, {}, options);
if(_isJQ){
jqEl.data('magnificPopup', options);
}else{
jqEl[0].magnificPopup=options;
}
mfp.addGroup(jqEl, options);
}
return jqEl;
};
var INLINE_NS='inline',
_hiddenClass,
_inlinePlaceholder,
_lastInlineElement,
_putInlineElementsBack=function(){
if(_lastInlineElement){
_inlinePlaceholder.after(_lastInlineElement.addClass(_hiddenClass)).detach();
_lastInlineElement=null;
}};
$.magnificPopup.registerModule(INLINE_NS, {
options: {
hiddenClass: 'hide',
markup: '',
tNotFound: 'Content not found'
},
proto: {
initInline: function(){
mfp.types.push(INLINE_NS);
_mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function(){
_putInlineElementsBack();
});
},
getInline: function(item, template){
_putInlineElementsBack();
if(item.src){
var inlineSt=mfp.st.inline,
el=$(item.src);
if(el.length){
var parent=el[0].parentNode;
if(parent&&parent.tagName){
if(!_inlinePlaceholder){
_hiddenClass=inlineSt.hiddenClass;
_inlinePlaceholder=_getEl(_hiddenClass);
_hiddenClass='mfp-'+_hiddenClass;
}
_lastInlineElement=el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);
}
mfp.updateStatus('ready');
}else{
mfp.updateStatus('error', inlineSt.tNotFound);
el=$('<div>');
}
item.inlineElement=el;
return el;
}
mfp.updateStatus('ready');
mfp._parseMarkup(template, {}, item);
return template;
}}
});
var AJAX_NS='ajax',
_ajaxCur,
_removeAjaxCursor=function(){
if(_ajaxCur){
$(document.body).removeClass(_ajaxCur);
}},
_destroyAjaxRequest=function(){
_removeAjaxCursor();
if(mfp.req){
mfp.req.abort();
}};
$.magnificPopup.registerModule(AJAX_NS, {
options: {
settings: null,
cursor: 'mfp-ajax-cur',
tError: '<a href="%url%">The content</a> could not be loaded.'
},
proto: {
initAjax: function(){
mfp.types.push(AJAX_NS);
_ajaxCur=mfp.st.ajax.cursor;
_mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest);
_mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);
},
getAjax: function(item){
if(_ajaxCur){
$(document.body).addClass(_ajaxCur);
}
mfp.updateStatus('loading');
var opts=$.extend({
url: item.src,
success: function(data, textStatus, jqXHR){
var temp={
data:data,
xhr:jqXHR
};
_mfpTrigger('ParseAjax', temp);
mfp.appendContent($(temp.data), AJAX_NS);
item.finished=true;
_removeAjaxCursor();
mfp._setFocus();
setTimeout(function(){
mfp.wrap.addClass(READY_CLASS);
}, 16);
mfp.updateStatus('ready');
_mfpTrigger('AjaxContentAdded');
},
error: function(){
_removeAjaxCursor();
item.finished=item.loadError=true;
mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));
}}, mfp.st.ajax.settings);
mfp.req=$.ajax(opts);
return '';
}}
});
var _imgInterval,
_getTitle=function(item){
if(item.data&&item.data.title!==undefined)
return item.data.title;
var src=mfp.st.image.titleSrc;
if(src){
if($.isFunction(src)){
return src.call(mfp, item);
}else if(item.el){
return item.el.attr(src)||'';
}}
return '';
};
$.magnificPopup.registerModule('image', {
options: {
markup: '<div class="mfp-figure">'+
'<div class="mfp-close"></div>'+
'<figure>'+
'<div class="mfp-img"></div>'+
'<figcaption>'+
'<div class="mfp-bottom-bar">'+
'<div class="mfp-title"></div>'+
'<div class="mfp-counter"></div>'+
'</div>'+
'</figcaption>'+
'</figure>'+
'</div>',
cursor: 'mfp-zoom-out-cur',
titleSrc: 'title',
verticalFit: true,
tError: '<a href="%url%">The image</a> could not be loaded.'
},
proto: {
initImage: function(){
var imgSt=mfp.st.image,
ns='.image';
mfp.types.push('image');
_mfpOn(OPEN_EVENT+ns, function(){
if(mfp.currItem.type==='image'&&imgSt.cursor){
$(document.body).addClass(imgSt.cursor);
}});
_mfpOn(CLOSE_EVENT+ns, function(){
if(imgSt.cursor){
$(document.body).removeClass(imgSt.cursor);
}
_window.off('resize' + EVENT_NS);
});
_mfpOn('Resize'+ns, mfp.resizeImage);
if(mfp.isLowIE){
_mfpOn('AfterChange', mfp.resizeImage);
}},
resizeImage: function(){
var item=mfp.currItem;
if(!item||!item.img) return;
if(mfp.st.image.verticalFit){
var decr=0;
if(mfp.isLowIE){
decr=parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10);
}
item.img.css('max-height', mfp.wH-decr);
}},
_onImageHasSize: function(item){
if(item.img){
item.hasSize=true;
if(_imgInterval){
clearInterval(_imgInterval);
}
item.isCheckingImgSize=false;
_mfpTrigger('ImageHasSize', item);
if(item.imgHidden){
if(mfp.content)
mfp.content.removeClass('mfp-loading');
item.imgHidden=false;
}}
},
findImageSize: function(item){
var counter=0,
img=item.img[0],
mfpSetInterval=function(delay){
if(_imgInterval){
clearInterval(_imgInterval);
}
_imgInterval=setInterval(function(){
if(img.naturalWidth > 0){
mfp._onImageHasSize(item);
return;
}
if(counter > 200){
clearInterval(_imgInterval);
}
counter++;
if(counter===3){
mfpSetInterval(10);
}else if(counter===40){
mfpSetInterval(50);
}else if(counter===100){
mfpSetInterval(500);
}}, delay);
};
mfpSetInterval(1);
},
getImage: function(item, template){
var guard=0,
onLoadComplete=function(){
if(item){
if(item.img[0].complete){
item.img.off('.mfploader');
if(item===mfp.currItem){
mfp._onImageHasSize(item);
mfp.updateStatus('ready');
}
item.hasSize=true;
item.loaded=true;
_mfpTrigger('ImageLoadComplete');
}else{
guard++;
if(guard < 200){
setTimeout(onLoadComplete,100);
}else{
onLoadError();
}}
}},
onLoadError=function(){
if(item){
item.img.off('.mfploader');
if(item===mfp.currItem){
mfp._onImageHasSize(item);
mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src));
}
item.hasSize=true;
item.loaded=true;
item.loadError=true;
}},
imgSt=mfp.st.image;
var el=template.find('.mfp-img');
if(el.length){
var img=document.createElement('img');
img.className='mfp-img';
if(item.el&&item.el.find('img').length){
img.alt=item.el.find('img').attr('alt');
}
item.img=$(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);
img.src=item.src;
if(el.is('img')){
item.img=item.img.clone();
}
img=item.img[0];
if(img.naturalWidth > 0){
item.hasSize=true;
}else if(!img.width){
item.hasSize=false;
}}
mfp._parseMarkup(template, {
title: _getTitle(item),
img_replaceWith: item.img
}, item);
mfp.resizeImage();
if(item.hasSize){
if(_imgInterval) clearInterval(_imgInterval);
if(item.loadError){
template.addClass('mfp-loading');
mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src));
}else{
template.removeClass('mfp-loading');
mfp.updateStatus('ready');
}
return template;
}
mfp.updateStatus('loading');
item.loading=true;
if(!item.hasSize){
item.imgHidden=true;
template.addClass('mfp-loading');
mfp.findImageSize(item);
}
return template;
}}
});
var hasMozTransform,
getHasMozTransform=function(){
if(hasMozTransform===undefined){
hasMozTransform=document.createElement('p').style.MozTransform!==undefined;
}
return hasMozTransform;
};
$.magnificPopup.registerModule('zoom', {
options: {
enabled: false,
easing: 'ease-in-out',
duration: 300,
opener: function(element){
return element.is('img') ? element:element.find('img');
}},
proto: {
initZoom: function(){
var zoomSt=mfp.st.zoom,
ns='.zoom',
image;
if(!zoomSt.enabled||!mfp.supportsTransition){
return;
}
var duration=zoomSt.duration,
getElToAnimate=function(image){
var newImg=image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),
transition='all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing,
cssObj={
position: 'fixed',
zIndex: 9999,
left: 0,
top: 0,
'-webkit-backface-visibility': 'hidden'
},
t='transition';
cssObj['-webkit-'+t]=cssObj['-moz-'+t]=cssObj['-o-'+t]=cssObj[t]=transition;
newImg.css(cssObj);
return newImg;
},
showMainContent=function(){
mfp.content.css('visibility', 'visible');
},
openTimeout,
animatedImg;
_mfpOn('BuildControls'+ns, function(){
if(mfp._allowZoom()){
clearTimeout(openTimeout);
mfp.content.css('visibility', 'hidden');
image=mfp._getItemToZoom();
if(!image){
showMainContent();
return;
}
animatedImg=getElToAnimate(image);
animatedImg.css(mfp._getOffset());
mfp.wrap.append(animatedImg);
openTimeout=setTimeout(function(){
animatedImg.css(mfp._getOffset(true) );
openTimeout=setTimeout(function(){
showMainContent();
setTimeout(function(){
animatedImg.remove();
image=animatedImg=null;
_mfpTrigger('ZoomAnimationEnded');
}, 16);
}, duration);
}, 16);
}});
_mfpOn(BEFORE_CLOSE_EVENT+ns, function(){
if(mfp._allowZoom()){
clearTimeout(openTimeout);
mfp.st.removalDelay=duration;
if(!image){
image=mfp._getItemToZoom();
if(!image){
return;
}
animatedImg=getElToAnimate(image);
}
animatedImg.css(mfp._getOffset(true));
mfp.wrap.append(animatedImg);
mfp.content.css('visibility', 'hidden');
setTimeout(function(){
animatedImg.css(mfp._getOffset());
}, 16);
}});
_mfpOn(CLOSE_EVENT+ns, function(){
if(mfp._allowZoom()){
showMainContent();
if(animatedImg){
animatedImg.remove();
}
image=null;
}});
},
_allowZoom: function(){
return mfp.currItem.type==='image';
},
_getItemToZoom: function(){
if(mfp.currItem.hasSize){
return mfp.currItem.img;
}else{
return false;
}},
_getOffset: function(isLarge){
var el;
if(isLarge){
el=mfp.currItem.img;
}else{
el=mfp.st.zoom.opener(mfp.currItem.el||mfp.currItem);
}
var offset=el.offset();
var paddingTop=parseInt(el.css('padding-top'),10);
var paddingBottom=parseInt(el.css('padding-bottom'),10);
offset.top -=($(window).scrollTop() - paddingTop);
var obj={
width: el.width(),
height: (_isJQ ? el.innerHeight():el[0].offsetHeight) - paddingBottom - paddingTop
};
if(getHasMozTransform()){
obj['-moz-transform']=obj['transform']='translate(' + offset.left + 'px,' + offset.top + 'px)';
}else{
obj.left=offset.left;
obj.top=offset.top;
}
return obj;
}}
});
var IFRAME_NS='iframe',
_emptyPage='//about:blank',
_fixIframeBugs=function(isShowing){
if(mfp.currTemplate[IFRAME_NS]){
var el=mfp.currTemplate[IFRAME_NS].find('iframe');
if(el.length){
if(!isShowing){
el[0].src=_emptyPage;
}
if(mfp.isIE8){
el.css('display', isShowing ? 'block':'none');
}}
}};
$.magnificPopup.registerModule(IFRAME_NS, {
options: {
markup: '<div class="mfp-iframe-scaler">'+
'<div class="mfp-close"></div>'+
'<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>'+
'</div>',
srcAction: 'iframe_src',
patterns: {
youtube: {
index: 'youtube.com',
id: 'v=',
src: '//www.youtube.com/embed/%id%?autoplay=1'
},
vimeo: {
index: 'vimeo.com/',
id: '/',
src: '//player.vimeo.com/video/%id%?autoplay=1'
},
gmaps: {
index: '//maps.google.',
src: '%id%&output=embed'
}}
},
proto: {
initIframe: function(){
mfp.types.push(IFRAME_NS);
_mfpOn('BeforeChange', function(e, prevType, newType){
if(prevType!==newType){
if(prevType===IFRAME_NS){
_fixIframeBugs();
}else if(newType===IFRAME_NS){
_fixIframeBugs(true);
}}
});
_mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function(){
_fixIframeBugs();
});
},
getIframe: function(item, template){
var embedSrc=item.src;
var iframeSt=mfp.st.iframe;
$.each(iframeSt.patterns, function(){
if(embedSrc.indexOf(this.index) > -1){
if(this.id){
if(typeof this.id==='string'){
embedSrc=embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length);
}else{
embedSrc=this.id.call(this, embedSrc);
}}
embedSrc=this.src.replace('%id%', embedSrc);
return false;
}});
var dataObj={};
if(iframeSt.srcAction){
dataObj[iframeSt.srcAction]=embedSrc;
}
mfp._parseMarkup(template, dataObj, item);
mfp.updateStatus('ready');
return template;
}}
});
var _getLoopedId=function(index){
var numSlides=mfp.items.length;
if(index > numSlides - 1){
return index - numSlides;
}else if(index < 0){
return numSlides + index;
}
return index;
},
_replaceCurrTotal=function(text, curr, total){
return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);
};
$.magnificPopup.registerModule('gallery', {
options: {
enabled: false,
arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',
preload: [0,2],
navigateByImgClick: true,
arrows: true,
tPrev: 'Previous (Left arrow key)',
tNext: 'Next (Right arrow key)',
tCounter: '%curr% of %total%'
},
proto: {
initGallery: function(){
var gSt=mfp.st.gallery,
ns='.mfp-gallery';
mfp.direction=true;
if(!gSt||!gSt.enabled) return false;
_wrapClasses +=' mfp-gallery';
_mfpOn(OPEN_EVENT+ns, function(){
if(gSt.navigateByImgClick){
mfp.wrap.on('click'+ns, '.mfp-img', function(){
if(mfp.items.length > 1){
mfp.next();
return false;
}});
}
_document.on('keydown'+ns, function(e){
if(e.keyCode===37){
mfp.prev();
}else if(e.keyCode===39){
mfp.next();
}});
});
_mfpOn('UpdateStatus'+ns, function(e, data){
if(data.text){
data.text=_replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);
}});
_mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item){
var l=mfp.items.length;
values.counter=l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l):'';
});
_mfpOn('BuildControls' + ns, function(){
if(mfp.items.length > 1&&gSt.arrows&&!mfp.arrowLeft){
var markup=gSt.arrowMarkup,
arrowLeft=mfp.arrowLeft=$(markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left')).addClass(PREVENT_CLOSE_CLASS),
arrowRight=mfp.arrowRight=$(markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right')).addClass(PREVENT_CLOSE_CLASS);
arrowLeft.click(function(){
mfp.prev();
});
arrowRight.click(function(){
mfp.next();
});
mfp.container.append(arrowLeft.add(arrowRight));
}});
_mfpOn(CHANGE_EVENT+ns, function(){
if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);
mfp._preloadTimeout=setTimeout(function(){
mfp.preloadNearbyImages();
mfp._preloadTimeout=null;
}, 16);
});
_mfpOn(CLOSE_EVENT+ns, function(){
_document.off(ns);
mfp.wrap.off('click'+ns);
mfp.arrowRight=mfp.arrowLeft=null;
});
},
next: function(){
mfp.direction=true;
mfp.index=_getLoopedId(mfp.index + 1);
mfp.updateItemHTML();
},
prev: function(){
mfp.direction=false;
mfp.index=_getLoopedId(mfp.index - 1);
mfp.updateItemHTML();
},
goTo: function(newIndex){
mfp.direction=(newIndex >=mfp.index);
mfp.index=newIndex;
mfp.updateItemHTML();
},
preloadNearbyImages: function(){
var p=mfp.st.gallery.preload,
preloadBefore=Math.min(p[0], mfp.items.length),
preloadAfter=Math.min(p[1], mfp.items.length),
i;
for(i=1; i <=(mfp.direction ? preloadAfter:preloadBefore); i++){
mfp._preloadItem(mfp.index+i);
}
for(i=1; i <=(mfp.direction ? preloadBefore:preloadAfter); i++){
mfp._preloadItem(mfp.index-i);
}},
_preloadItem: function(index){
index=_getLoopedId(index);
if(mfp.items[index].preloaded){
return;
}
var item=mfp.items[index];
if(!item.parsed){
item=mfp.parseEl(index);
}
_mfpTrigger('LazyLoad', item);
if(item.type==='image'){
item.img=$('<img class="mfp-img" />').on('load.mfploader', function(){
item.hasSize=true;
}).on('error.mfploader', function(){
item.hasSize=true;
item.loadError=true;
_mfpTrigger('LazyLoadError', item);
}).attr('src', item.src);
}
item.preloaded=true;
}}
});
var RETINA_NS='retina';
$.magnificPopup.registerModule(RETINA_NS, {
options: {
replaceSrc: function(item){
return item.src.replace(/\.\w+$/, function(m){ return '@2x' + m; });
},
ratio: 1 
},
proto: {
initRetina: function(){
if(window.devicePixelRatio > 1){
var st=mfp.st.retina,
ratio=st.ratio;
ratio = !isNaN(ratio) ? ratio:ratio();
if(ratio > 1){
_mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item){
item.img.css({
'max-width': item.img[0].naturalWidth / ratio,
'width': '100%'
});
});
_mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item){
item.src=st.replaceSrc(item, ratio);
});
}}
}}
});
_checkInstance(); }));
;(function ($, w){
"use strict";
var methods=(function (){
var c={
bcClass: 'sf-breadcrumb',
menuClass: 'sf-js-enabled',
anchorClass: 'sf-with-ul',
menuArrowClass: 'sf-arrows'
},
ios=(function (){
var ios=/^(?![\w\W]*Windows Phone)[\w\W]*(iPhone|iPad|iPod)/i.test(navigator.userAgent);
if(ios){
$('html').css('cursor', 'pointer').on('click', $.noop);
}
return ios;
})(),
wp7=(function (){
var style=document.documentElement.style;
return ('behavior' in style&&'fill' in style&&/iemobile/i.test(navigator.userAgent));
})(),
unprefixedPointerEvents=(function (){
return (!!w.PointerEvent);
})(),
toggleMenuClasses=function ($menu, o, add){
var classes=c.menuClass,
method;
if(o.cssArrows){
classes +=' ' + c.menuArrowClass;
}
method=(add) ? 'addClass':'removeClass';
$menu[method](classes);
},
setPathToCurrent=function ($menu, o){
return $menu.find('li.' + o.pathClass).slice(0, o.pathLevels)
.addClass(o.hoverClass + ' ' + c.bcClass)
.filter(function (){
return ($(this).children(o.popUpSelector).hide().show().length);
}).removeClass(o.pathClass);
},
toggleAnchorClass=function ($li, add){
var method=(add) ? 'addClass':'removeClass';
$li.children('a')[method](c.anchorClass);
},
toggleTouchAction=function ($menu){
var msTouchAction=$menu.css('ms-touch-action');
var touchAction=$menu.css('touch-action');
touchAction=touchAction||msTouchAction;
touchAction=(touchAction==='pan-y') ? 'auto':'pan-y';
$menu.css({
'ms-touch-action': touchAction,
'touch-action': touchAction
});
},
getMenu=function ($el){
return $el.closest('.' + c.menuClass);
},
getOptions=function ($el){
return getMenu($el).data('sfOptions');
},
over=function (){
var $this=$(this),
o=getOptions($this);
clearTimeout(o.sfTimer);
$this.siblings().superfish('hide').end().superfish('show');
},
close=function (o){
o.retainPath=($.inArray(this[0], o.$path) > -1);
this.superfish('hide');
if(!this.parents('.' + o.hoverClass).length){
o.onIdle.call(getMenu(this));
if(o.$path.length){
$.proxy(over, o.$path)();
}}
},
out=function (){
var $this=$(this),
o=getOptions($this);
if(ios){
$.proxy(close, $this, o)();
}else{
clearTimeout(o.sfTimer);
o.sfTimer=setTimeout($.proxy(close, $this, o), o.delay);
}},
touchHandler=function (e){
var $this=$(this),
o=getOptions($this),
$ul=$this.siblings(e.data.popUpSelector);
if(o.onHandleTouch.call($ul)===false){
return this;
}
if($ul.length > 0&&$ul.is(':hidden')){
$this.one('click.superfish', false);
if(e.type==='MSPointerDown'||e.type==='pointerdown'){
$this.trigger('focus');
}else{
$.proxy(over, $this.parent('li'))();
}}
},
applyHandlers=function ($menu, o){
var targets='li:has(' + o.popUpSelector + ')';
if($.fn.hoverIntent&&!o.disableHI){
$menu.hoverIntent(over, out, targets);
}else{
$menu
.on('mouseenter.superfish', targets, over)
.on('mouseleave.superfish', targets, out);
}
var touchevent='MSPointerDown.superfish';
if(unprefixedPointerEvents){
touchevent='pointerdown.superfish';
}
if(!ios){
touchevent +=' touchend.superfish';
}
if(wp7){
touchevent +=' mousedown.superfish';
}
$menu
.on('focusin.superfish', 'li', over)
.on('focusout.superfish', 'li', out)
.on(touchevent, 'a', o, touchHandler);
};
return {
hide: function (instant){
if(this.length){
var $this=this,
o=getOptions($this);
if(!o){
return this;
}
var not=(o.retainPath===true) ? o.$path:'',
$ul=$this.find('li.' + o.hoverClass).add(this).not(not).removeClass(o.hoverClass).children(o.popUpSelector),
speed=o.speedOut;
if(instant){
$ul.show();
speed=0;
}
o.retainPath=false;
if(o.onBeforeHide.call($ul)===false){
return this;
}
$ul.stop(true, true).animate(o.animationOut, speed, function (){
var $this=$(this);
o.onHide.call($this);
});
}
return this;
},
show: function (){
var o=getOptions(this);
if(!o){
return this;
}
var $this=this.addClass(o.hoverClass),
$ul=$this.children(o.popUpSelector);
if(o.onBeforeShow.call($ul)===false){
return this;
}
$ul.stop(true, true).animate(o.animation, o.speed, function (){
o.onShow.call($ul);
});
return this;
},
destroy: function (){
return this.each(function (){
var $this=$(this),
o=$this.data('sfOptions'),
$hasPopUp;
if(!o){
return false;
}
$hasPopUp=$this.find(o.popUpSelector).parent('li');
clearTimeout(o.sfTimer);
toggleMenuClasses($this, o);
toggleAnchorClass($hasPopUp);
toggleTouchAction($this);
$this.off('.superfish').off('.hoverIntent');
$hasPopUp.children(o.popUpSelector).attr('style', function (i, style){
return style.replace(/display[^;]+;?/g, '');
});
o.$path.removeClass(o.hoverClass + ' ' + c.bcClass).addClass(o.pathClass);
$this.find('.' + o.hoverClass).removeClass(o.hoverClass);
o.onDestroy.call($this);
$this.removeData('sfOptions');
});
},
init: function (op){
return this.each(function (){
var $this=$(this);
if($this.data('sfOptions')){
return false;
}
var o=$.extend({}, $.fn.superfish.defaults, op),
$hasPopUp=$this.find(o.popUpSelector).parent('li');
o.$path=setPathToCurrent($this, o);
$this.data('sfOptions', o);
toggleMenuClasses($this, o, true);
toggleAnchorClass($hasPopUp, true);
toggleTouchAction($this);
applyHandlers($this, o);
$hasPopUp.not('.' + c.bcClass).superfish('hide', true);
o.onInit.call(this);
});
}};})();
$.fn.superfish=function (method, args){
if(methods[method]){
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
}
else if(typeof method==='object'||! method){
return methods.init.apply(this, arguments);
}else{
return $.error('Method ' +  method + ' does not exist on jQuery.fn.superfish');
}};
$.fn.superfish.defaults={
popUpSelector: 'ul,.sf-mega',
hoverClass: 'sfHover',
pathClass: 'overrideThisToUse',
pathLevels: 1,
delay: 800,
animation: {opacity: 'show'},
animationOut: {opacity: 'hide'},
speed: 'normal',
speedOut: 'fast',
cssArrows: true,
disableHI: false,
onInit: $.noop,
onBeforeShow: $.noop,
onShow: $.noop,
onBeforeHide: $.noop,
onHide: $.noop,
onIdle: $.noop,
onDestroy: $.noop,
onHandleTouch: $.noop
};})(jQuery, window);
(function ($){
$.fn.theiaStickySidebar=function (options){
var defaults={
'containerSelector': '',
'additionalMarginTop': 0,
'additionalMarginBottom': 0,
'updateSidebarHeight': true,
'minWidth': 0,
'disableOnResponsiveLayouts': true,
'sidebarBehavior': 'modern'
};
options=$.extend(defaults, options);
options.additionalMarginTop=parseInt(options.additionalMarginTop)||0;
options.additionalMarginBottom=parseInt(options.additionalMarginBottom)||0;
tryInitOrHookIntoEvents(options, this);
function tryInitOrHookIntoEvents(options, $that){
var success=tryInit(options, $that);
if(!success){
console.log('TSS: Body width smaller than options.minWidth. Init is delayed.');
$(document).scroll(function (options, $that){
return function (evt){
var success=tryInit(options, $that);
if(success){
$(this).unbind(evt);
}};}(options, $that));
$(window).resize(function (options, $that){
return function (evt){
var success=tryInit(options, $that);
if(success){
$(this).unbind(evt);
}};}(options, $that))
}}
function tryInit(options, $that){
if(options.initialized===true){
return true;
}
if($('body').width() < options.minWidth){
return false;
}
init(options, $that);
return true;
}
function init(options, $that){
options.initialized=true;
$('head').append($('<style>.theiaStickySidebar:after {content: ""; display: table; clear: both;}</style>'));
$that.each(function (){
var o={};
o.sidebar=$(this);
o.options=options||{};
o.container=$(o.options.containerSelector);
if(o.container.length==0){
o.container=o.sidebar.parent();
}
o.sidebar.parents().css('-webkit-transform', 'none'); // Fix for WebKit bug - https://code.google.com/p/chromium/issues/detail?id=20574
o.sidebar.css({
'position': 'relative',
'overflow': 'visible',
'-webkit-box-sizing': 'border-box',
'-moz-box-sizing': 'border-box',
'box-sizing': 'border-box'
});
o.stickySidebar=o.sidebar.find('.theiaStickySidebar');
if(o.stickySidebar.length==0){
var javaScriptMIMETypes=/(?:text|application)\/(?:x-)?(?:javascript|ecmascript)/i;
o.sidebar.find('script').filter(function(index, script){
return script.type.length===0||script.type.match(javaScriptMIMETypes);
}).remove();
o.stickySidebar=$('<div>').addClass('theiaStickySidebar').append(o.sidebar.children());
o.sidebar.append(o.stickySidebar);
}
o.marginBottom=parseInt(o.sidebar.css('margin-bottom'));
o.paddingTop=parseInt(o.sidebar.css('padding-top'));
o.paddingBottom=parseInt(o.sidebar.css('padding-bottom'));
var collapsedTopHeight=o.stickySidebar.offset().top;
var collapsedBottomHeight=o.stickySidebar.outerHeight();
o.stickySidebar.css('padding-top', 1);
o.stickySidebar.css('padding-bottom', 1);
collapsedTopHeight -=o.stickySidebar.offset().top;
collapsedBottomHeight=o.stickySidebar.outerHeight() - collapsedBottomHeight - collapsedTopHeight;
if(collapsedTopHeight==0){
o.stickySidebar.css('padding-top', 0);
o.stickySidebarPaddingTop=0;
}else{
o.stickySidebarPaddingTop=1;
}
if(collapsedBottomHeight==0){
o.stickySidebar.css('padding-bottom', 0);
o.stickySidebarPaddingBottom=0;
}else{
o.stickySidebarPaddingBottom=1;
}
o.previousScrollTop=null;
o.fixedScrollTop=0;
resetSidebar();
o.onScroll=function (o){
if(!o.stickySidebar.is(":visible")){
return;
}
if($('body').width() < o.options.minWidth){
resetSidebar();
return;
}
if(o.options.disableOnResponsiveLayouts){
var sidebarWidth=o.sidebar.outerWidth(o.sidebar.css('float')=='none');
if(sidebarWidth + 50 > o.container.width()){
resetSidebar();
return;
}}
var scrollTop=$(document).scrollTop();
var position='static';
if(scrollTop >=o.sidebar.offset().top + (o.paddingTop - o.options.additionalMarginTop)){
var offsetTop=o.paddingTop + options.additionalMarginTop;
var offsetBottom=o.paddingBottom + o.marginBottom + options.additionalMarginBottom;
var containerTop=o.sidebar.offset().top;
var containerBottom=o.sidebar.offset().top + getClearedHeight(o.container);
var windowOffsetTop=0 + options.additionalMarginTop;
var windowOffsetBottom;
var sidebarSmallerThanWindow=(o.stickySidebar.outerHeight() + offsetTop + offsetBottom) < $(window).height();
if(sidebarSmallerThanWindow){
windowOffsetBottom=windowOffsetTop + o.stickySidebar.outerHeight();
}else{
windowOffsetBottom=$(window).height() - o.marginBottom - o.paddingBottom - options.additionalMarginBottom;
}
var staticLimitTop=containerTop - scrollTop + o.paddingTop;
var staticLimitBottom=containerBottom - scrollTop - o.paddingBottom - o.marginBottom;
var top=o.stickySidebar.offset().top - scrollTop;
var scrollTopDiff=o.previousScrollTop - scrollTop;
if(o.stickySidebar.css('position')=='fixed'){
if(o.options.sidebarBehavior=='modern'){
top +=scrollTopDiff;
}}
if(o.options.sidebarBehavior=='stick-to-top'){
top=options.additionalMarginTop;
}
if(o.options.sidebarBehavior=='stick-to-bottom'){
top=windowOffsetBottom - o.stickySidebar.outerHeight();
}
if(scrollTopDiff > 0){
top=Math.min(top, windowOffsetTop);
}else{
top=Math.max(top, windowOffsetBottom - o.stickySidebar.outerHeight());
}
top=Math.max(top, staticLimitTop);
top=Math.min(top, staticLimitBottom - o.stickySidebar.outerHeight());
var sidebarSameHeightAsContainer=o.container.height()==o.stickySidebar.outerHeight();
if(!sidebarSameHeightAsContainer&&top==windowOffsetTop){
position='fixed';
}
else if(!sidebarSameHeightAsContainer&&top==windowOffsetBottom - o.stickySidebar.outerHeight()){
position='fixed';
}
else if(scrollTop + top - o.sidebar.offset().top - o.paddingTop <=options.additionalMarginTop){
position='static';
}else{
position='absolute';
}}
if(position=='fixed'){
var scrollLeft=$(document).scrollLeft();
o.stickySidebar.css({
'position': 'fixed',
'width': getWidthForObject(o.stickySidebar) + 'px',
'transform': 'translateY(' + top + 'px)',
'left': (o.sidebar.offset().left + parseInt(o.sidebar.css('padding-left')) - scrollLeft) + 'px',
'top': '0px'
});
}
else if(position=='absolute'){
var css={};
if(o.stickySidebar.css('position')!='absolute'){
css.position='absolute';
css.transform='translateY(' + (scrollTop + top - o.sidebar.offset().top - o.stickySidebarPaddingTop - o.stickySidebarPaddingBottom) + 'px)';
css.top='0px';
}
css.width=getWidthForObject(o.stickySidebar) + 'px';
css.left='';
o.stickySidebar.css(css);
}
else if(position=='static'){
resetSidebar();
}
if(position!='static'){
if(o.options.updateSidebarHeight==true){
o.sidebar.css({
'min-height': o.stickySidebar.outerHeight() + o.stickySidebar.offset().top - o.sidebar.offset().top + o.paddingBottom
});
}}
o.previousScrollTop=scrollTop;
};
o.onScroll(o);
$(document).scroll(function (o){
return function (){
o.onScroll(o);
};}(o));
$(window).resize(function (o){
return function (){
o.stickySidebar.css({'position': 'static'});
o.onScroll(o);
};}(o));
function resetSidebar(){
o.fixedScrollTop=0;
o.sidebar.css({
'min-height': '1px'
});
o.stickySidebar.css({
'position': 'static',
'width': '',
'transform': 'none'
});
}
function getClearedHeight(e){
var height=e.height();
e.children().each(function (){
height=Math.max(height, $(this).height());
});
return height;
}});
}
function getWidthForObject(object){
var width;
try {
width=object[0].getBoundingClientRect().width;
}
catch(err){
}
if(typeof width==="undefined"){
width=object.width();
}
return width;
}}
})(jQuery);
(function(){
'use strict'
var keyCounter=0
var allWaypoints={}
function Waypoint(options){
if(!options){
throw new Error('No options passed to Waypoint constructor')
}
if(!options.element){
throw new Error('No element option passed to Waypoint constructor')
}
if(!options.handler){
throw new Error('No handler option passed to Waypoint constructor')
}
this.key='waypoint-' + keyCounter
this.options=Waypoint.Adapter.extend({}, Waypoint.defaults, options)
this.element=this.options.element
this.adapter=new Waypoint.Adapter(this.element)
this.callback=options.handler
this.axis=this.options.horizontal ? 'horizontal':'vertical'
this.enabled=this.options.enabled
this.triggerPoint=null
this.group=Waypoint.Group.findOrCreate({
name: this.options.group,
axis: this.axis
})
this.context=Waypoint.Context.findOrCreateByElement(this.options.context)
if(Waypoint.offsetAliases[this.options.offset]){
this.options.offset=Waypoint.offsetAliases[this.options.offset]
}
this.group.add(this)
this.context.add(this)
allWaypoints[this.key]=this
keyCounter +=1
}
Waypoint.prototype.queueTrigger=function(direction){
this.group.queueTrigger(this, direction)
}
Waypoint.prototype.trigger=function(args){
if(!this.enabled){
return
}
if(this.callback){
this.callback.apply(this, args)
}}
Waypoint.prototype.destroy=function(){
this.context.remove(this)
this.group.remove(this)
delete allWaypoints[this.key]
}
Waypoint.prototype.disable=function(){
this.enabled=false
return this
}
Waypoint.prototype.enable=function(){
this.context.refresh()
this.enabled=true
return this
}
Waypoint.prototype.next=function(){
return this.group.next(this)
}
Waypoint.prototype.previous=function(){
return this.group.previous(this)
}
Waypoint.invokeAll=function(method){
var allWaypointsArray=[]
for (var waypointKey in allWaypoints){
allWaypointsArray.push(allWaypoints[waypointKey])
}
for (var i=0, end=allWaypointsArray.length; i < end; i++){
allWaypointsArray[i][method]()
}}
Waypoint.destroyAll=function(){
Waypoint.invokeAll('destroy')
}
Waypoint.disableAll=function(){
Waypoint.invokeAll('disable')
}
Waypoint.enableAll=function(){
Waypoint.invokeAll('enable')
}
Waypoint.refreshAll=function(){
Waypoint.Context.refreshAll()
}
Waypoint.viewportHeight=function(){
return window.innerHeight||document.documentElement.clientHeight
}
Waypoint.viewportWidth=function(){
return document.documentElement.clientWidth
}
Waypoint.adapters=[]
Waypoint.defaults={
context: window,
continuous: true,
enabled: true,
group: 'default',
horizontal: false,
offset: 0
}
Waypoint.offsetAliases={
'bottom-in-view': function(){
return this.context.innerHeight() - this.adapter.outerHeight()
},
'right-in-view': function(){
return this.context.innerWidth() - this.adapter.outerWidth()
}}
window.Waypoint=Waypoint
}())
;(function(){
'use strict'
function requestAnimationFrameShim(callback){
window.setTimeout(callback, 1000 / 60)
}
var keyCounter=0
var contexts={}
var Waypoint=window.Waypoint
var oldWindowLoad=window.onload
function Context(element){
this.element=element
this.Adapter=Waypoint.Adapter
this.adapter=new this.Adapter(element)
this.key='waypoint-context-' + keyCounter
this.didScroll=false
this.didResize=false
this.oldScroll={
x: this.adapter.scrollLeft(),
y: this.adapter.scrollTop()
}
this.waypoints={
vertical: {},
horizontal: {}}
element.waypointContextKey=this.key
contexts[element.waypointContextKey]=this
keyCounter +=1
this.createThrottledScrollHandler()
this.createThrottledResizeHandler()
}
Context.prototype.add=function(waypoint){
var axis=waypoint.options.horizontal ? 'horizontal':'vertical'
this.waypoints[axis][waypoint.key]=waypoint
this.refresh()
}
Context.prototype.checkEmpty=function(){
var horizontalEmpty=this.Adapter.isEmptyObject(this.waypoints.horizontal)
var verticalEmpty=this.Adapter.isEmptyObject(this.waypoints.vertical)
if(horizontalEmpty&&verticalEmpty){
this.adapter.off('.waypoints')
delete contexts[this.key]
}}
Context.prototype.createThrottledResizeHandler=function(){
var self=this
function resizeHandler(){
self.handleResize()
self.didResize=false
}
this.adapter.on('resize.waypoints', function(){
if(!self.didResize){
self.didResize=true
Waypoint.requestAnimationFrame(resizeHandler)
}})
}
Context.prototype.createThrottledScrollHandler=function(){
var self=this
function scrollHandler(){
self.handleScroll()
self.didScroll=false
}
this.adapter.on('scroll.waypoints', function(){
if(!self.didScroll||Waypoint.isTouch){
self.didScroll=true
Waypoint.requestAnimationFrame(scrollHandler)
}})
}
Context.prototype.handleResize=function(){
Waypoint.Context.refreshAll()
}
Context.prototype.handleScroll=function(){
var triggeredGroups={}
var axes={
horizontal: {
newScroll: this.adapter.scrollLeft(),
oldScroll: this.oldScroll.x,
forward: 'right',
backward: 'left'
},
vertical: {
newScroll: this.adapter.scrollTop(),
oldScroll: this.oldScroll.y,
forward: 'down',
backward: 'up'
}}
for (var axisKey in axes){
var axis=axes[axisKey]
var isForward=axis.newScroll > axis.oldScroll
var direction=isForward ? axis.forward:axis.backward
for (var waypointKey in this.waypoints[axisKey]){
var waypoint=this.waypoints[axisKey][waypointKey]
var wasBeforeTriggerPoint=axis.oldScroll < waypoint.triggerPoint
var nowAfterTriggerPoint=axis.newScroll >=waypoint.triggerPoint
var crossedForward=wasBeforeTriggerPoint&&nowAfterTriggerPoint
var crossedBackward = !wasBeforeTriggerPoint&&!nowAfterTriggerPoint
if(crossedForward||crossedBackward){
waypoint.queueTrigger(direction)
triggeredGroups[waypoint.group.id]=waypoint.group
}}
}
for (var groupKey in triggeredGroups){
triggeredGroups[groupKey].flushTriggers()
}
this.oldScroll={
x: axes.horizontal.newScroll,
y: axes.vertical.newScroll
}}
Context.prototype.innerHeight=function(){
if(this.element==this.element.window){
return Waypoint.viewportHeight()
}
return this.adapter.innerHeight()
}
Context.prototype.remove=function(waypoint){
delete this.waypoints[waypoint.axis][waypoint.key]
this.checkEmpty()
}
Context.prototype.innerWidth=function(){
if(this.element==this.element.window){
return Waypoint.viewportWidth()
}
return this.adapter.innerWidth()
}
Context.prototype.destroy=function(){
var allWaypoints=[]
for (var axis in this.waypoints){
for (var waypointKey in this.waypoints[axis]){
allWaypoints.push(this.waypoints[axis][waypointKey])
}}
for (var i=0, end=allWaypoints.length; i < end; i++){
allWaypoints[i].destroy()
}}
Context.prototype.refresh=function(){
var isWindow=this.element==this.element.window
var contextOffset=isWindow ? undefined:this.adapter.offset()
var triggeredGroups={}
var axes
this.handleScroll()
axes={
horizontal: {
contextOffset: isWindow ? 0:contextOffset.left,
contextScroll: isWindow ? 0:this.oldScroll.x,
contextDimension: this.innerWidth(),
oldScroll: this.oldScroll.x,
forward: 'right',
backward: 'left',
offsetProp: 'left'
},
vertical: {
contextOffset: isWindow ? 0:contextOffset.top,
contextScroll: isWindow ? 0:this.oldScroll.y,
contextDimension: this.innerHeight(),
oldScroll: this.oldScroll.y,
forward: 'down',
backward: 'up',
offsetProp: 'top'
}}
for (var axisKey in axes){
var axis=axes[axisKey]
for (var waypointKey in this.waypoints[axisKey]){
var waypoint=this.waypoints[axisKey][waypointKey]
var adjustment=waypoint.options.offset
var oldTriggerPoint=waypoint.triggerPoint
var elementOffset=0
var freshWaypoint=oldTriggerPoint==null
var contextModifier, wasBeforeScroll, nowAfterScroll
var triggeredBackward, triggeredForward
if(waypoint.element!==waypoint.element.window){
elementOffset=waypoint.adapter.offset()[axis.offsetProp]
}
if(typeof adjustment==='function'){
adjustment=adjustment.apply(waypoint)
}
else if(typeof adjustment==='string'){
adjustment=parseFloat(adjustment)
if(waypoint.options.offset.indexOf('%') > - 1){
adjustment=Math.ceil(axis.contextDimension * adjustment / 100)
}}
contextModifier=axis.contextScroll - axis.contextOffset
waypoint.triggerPoint=elementOffset + contextModifier - adjustment
wasBeforeScroll=oldTriggerPoint < axis.oldScroll
nowAfterScroll=waypoint.triggerPoint >=axis.oldScroll
triggeredBackward=wasBeforeScroll&&nowAfterScroll
triggeredForward = !wasBeforeScroll&&!nowAfterScroll
if(!freshWaypoint&&triggeredBackward){
waypoint.queueTrigger(axis.backward)
triggeredGroups[waypoint.group.id]=waypoint.group
}
else if(!freshWaypoint&&triggeredForward){
waypoint.queueTrigger(axis.forward)
triggeredGroups[waypoint.group.id]=waypoint.group
}
else if(freshWaypoint&&axis.oldScroll >=waypoint.triggerPoint){
waypoint.queueTrigger(axis.forward)
triggeredGroups[waypoint.group.id]=waypoint.group
}}
}
Waypoint.requestAnimationFrame(function(){
for (var groupKey in triggeredGroups){
triggeredGroups[groupKey].flushTriggers()
}})
return this
}
Context.findOrCreateByElement=function(element){
return Context.findByElement(element)||new Context(element)
}
Context.refreshAll=function(){
for (var contextId in contexts){
contexts[contextId].refresh()
}}
Context.findByElement=function(element){
return contexts[element.waypointContextKey]
}
window.onload=function(){
if(oldWindowLoad){
oldWindowLoad()
}
Context.refreshAll()
}
Waypoint.requestAnimationFrame=function(callback){
var requestFn=window.requestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
requestAnimationFrameShim
requestFn.call(window, callback)
}
Waypoint.Context=Context
}())
;(function(){
'use strict'
function byTriggerPoint(a, b){
return a.triggerPoint - b.triggerPoint
}
function byReverseTriggerPoint(a, b){
return b.triggerPoint - a.triggerPoint
}
var groups={
vertical: {},
horizontal: {}}
var Waypoint=window.Waypoint
function Group(options){
this.name=options.name
this.axis=options.axis
this.id=this.name + '-' + this.axis
this.waypoints=[]
this.clearTriggerQueues()
groups[this.axis][this.name]=this
}
Group.prototype.add=function(waypoint){
this.waypoints.push(waypoint)
}
Group.prototype.clearTriggerQueues=function(){
this.triggerQueues={
up: [],
down: [],
left: [],
right: []
}}
Group.prototype.flushTriggers=function(){
for (var direction in this.triggerQueues){
var waypoints=this.triggerQueues[direction]
var reverse=direction==='up'||direction==='left'
waypoints.sort(reverse ? byReverseTriggerPoint:byTriggerPoint)
for (var i=0, end=waypoints.length; i < end; i +=1){
var waypoint=waypoints[i]
if(waypoint.options.continuous||i===waypoints.length - 1){
waypoint.trigger([direction])
}}
}
this.clearTriggerQueues()
}
Group.prototype.next=function(waypoint){
this.waypoints.sort(byTriggerPoint)
var index=Waypoint.Adapter.inArray(waypoint, this.waypoints)
var isLast=index===this.waypoints.length - 1
return isLast ? null:this.waypoints[index + 1]
}
Group.prototype.previous=function(waypoint){
this.waypoints.sort(byTriggerPoint)
var index=Waypoint.Adapter.inArray(waypoint, this.waypoints)
return index ? this.waypoints[index - 1]:null
}
Group.prototype.queueTrigger=function(waypoint, direction){
this.triggerQueues[direction].push(waypoint)
}
Group.prototype.remove=function(waypoint){
var index=Waypoint.Adapter.inArray(waypoint, this.waypoints)
if(index > -1){
this.waypoints.splice(index, 1)
}}
Group.prototype.first=function(){
return this.waypoints[0]
}
Group.prototype.last=function(){
return this.waypoints[this.waypoints.length - 1]
}
Group.findOrCreate=function(options){
return groups[options.axis][options.name]||new Group(options)
}
Waypoint.Group=Group
}())
;(function(){
'use strict'
var $=window.jQuery
var Waypoint=window.Waypoint
function JQueryAdapter(element){
this.$element=$(element)
}
$.each([
'innerHeight',
'innerWidth',
'off',
'offset',
'on',
'outerHeight',
'outerWidth',
'scrollLeft',
'scrollTop'
], function(i, method){
JQueryAdapter.prototype[method]=function(){
var args=Array.prototype.slice.call(arguments)
return this.$element[method].apply(this.$element, args)
}})
$.each([
'extend',
'inArray',
'isEmptyObject'
], function(i, method){
JQueryAdapter[method]=$[method]
})
Waypoint.adapters.push({
name: 'jquery',
Adapter: JQueryAdapter
})
Waypoint.Adapter=JQueryAdapter
}())
;(function(){
'use strict'
var Waypoint=window.Waypoint
function createExtension(framework){
return function(){
var waypoints=[]
var overrides=arguments[0]
if(framework.isFunction(arguments[0])){
overrides=framework.extend({}, arguments[1])
overrides.handler=arguments[0]
}
this.each(function(){
var options=framework.extend({}, overrides, {
element: this
})
if(typeof options.context==='string'){
options.context=framework(this).closest(options.context)[0]
}
waypoints.push(new Waypoint(options))
})
return waypoints
}}
if(window.jQuery){
window.jQuery.fn.waypoint=createExtension(window.jQuery)
}
if(window.Zepto){
window.Zepto.fn.waypoint=createExtension(window.Zepto)
}}())
;