jQuery(function($){
new WOW().init();
});
(function(){
var MutationObserver, Util, WeakMap, getComputedStyle, getComputedStyleRX,
bind=function(fn, me){ return function(){ return fn.apply(me, arguments); };},
indexOf=[].indexOf||function(item){ for (var i=0, l=this.length; i < l; i++){ if(i in this&&this[i]===item) return i; } return -1; };
Util=(function(){
function Util(){}
Util.prototype.extend=function(custom, defaults){
var key, value;
for (key in defaults){
value=defaults[key];
if(custom[key]==null){
custom[key]=value;
}}
return custom;
};
Util.prototype.isMobile=function(agent){
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent);
};
Util.prototype.createEvent=function(event, bubble, cancel, detail){
var customEvent;
if(bubble==null){
bubble=false;
}
if(cancel==null){
cancel=false;
}
if(detail==null){
detail=null;
}
if(document.createEvent!=null){
customEvent=document.createEvent('CustomEvent');
customEvent.initCustomEvent(event, bubble, cancel, detail);
}else if(document.createEventObject!=null){
customEvent=document.createEventObject();
customEvent.eventType=event;
}else{
customEvent.eventName=event;
}
return customEvent;
};
Util.prototype.emitEvent=function(elem, event){
if(elem.dispatchEvent!=null){
return elem.dispatchEvent(event);
}else if(event in (elem!=null)){
return elem[event]();
}else if(("on" + event) in (elem!=null)){
return elem["on" + event]();
}};
Util.prototype.addEvent=function(elem, event, fn){
if(elem.addEventListener!=null){
return elem.addEventListener(event, fn, false);
}else if(elem.attachEvent!=null){
return elem.attachEvent("on" + event, fn);
}else{
return elem[event]=fn;
}};
Util.prototype.removeEvent=function(elem, event, fn){
if(elem.removeEventListener!=null){
return elem.removeEventListener(event, fn, false);
}else if(elem.detachEvent!=null){
return elem.detachEvent("on" + event, fn);
}else{
return delete elem[event];
}};
Util.prototype.innerHeight=function(){
if('innerHeight' in window){
return window.innerHeight;
}else{
return document.documentElement.clientHeight;
}};
return Util;
})();
WeakMap=this.WeakMap||this.MozWeakMap||(WeakMap=(function(){
function WeakMap(){
this.keys=[];
this.values=[];
}
WeakMap.prototype.get=function(key){
var i, item, j, len, ref;
ref=this.keys;
for (i=j = 0, len=ref.length; j < len; i=++j){
item=ref[i];
if(item===key){
return this.values[i];
}}
};
WeakMap.prototype.set=function(key, value){
var i, item, j, len, ref;
ref=this.keys;
for (i=j = 0, len=ref.length; j < len; i=++j){
item=ref[i];
if(item===key){
this.values[i]=value;
return;
}}
this.keys.push(key);
return this.values.push(value);
};
return WeakMap;
})());
MutationObserver=this.MutationObserver||this.WebkitMutationObserver||this.MozMutationObserver||(MutationObserver=(function(){
function MutationObserver(){
if(typeof console!=="undefined"&&console!==null){
console.warn('MutationObserver is not supported by your browser.');
}
if(typeof console!=="undefined"&&console!==null){
console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');
}}
MutationObserver.notSupported=true;
MutationObserver.prototype.observe=function(){};
return MutationObserver;
})());
getComputedStyle=this.getComputedStyle||function(el, pseudo){
this.getPropertyValue=function(prop){
var ref;
if(prop==='float'){
prop='styleFloat';
}
if(getComputedStyleRX.test(prop)){
prop.replace(getComputedStyleRX, function(_, _char){
return _char.toUpperCase();
});
}
return ((ref=el.currentStyle)!=null ? ref[prop]:void 0)||null;
};
return this;
};
getComputedStyleRX=/(\-([a-z]){1})/g;
this.WOW=(function(){
WOW.prototype.defaults={
boxClass: 'wow',
animateClass: 'animated',
offset: 0,
mobile: true,
live: true,
callback: null,
scrollContainer: null
};
function WOW(options){
if(options==null){
options={};}
this.scrollCallback=bind(this.scrollCallback, this);
this.scrollHandler=bind(this.scrollHandler, this);
this.resetAnimation=bind(this.resetAnimation, this);
this.start=bind(this.start, this);
this.scrolled=true;
this.config=this.util().extend(options, this.defaults);
if(options.scrollContainer!=null){
this.config.scrollContainer=document.querySelector(options.scrollContainer);
}
this.animationNameCache=new WeakMap();
this.wowEvent=this.util().createEvent(this.config.boxClass);
}
WOW.prototype.init=function(){
var ref;
this.element=window.document.documentElement;
if((ref=document.readyState)==="interactive"||ref==="complete"){
this.start();
}else{
this.util().addEvent(document, 'DOMContentLoaded', this.start);
}
return this.finished=[];
};
WOW.prototype.start=function(){
var box, j, len, ref;
this.stopped=false;
this.boxes=(function(){
var j, len, ref, results;
ref=this.element.querySelectorAll("." + this.config.boxClass);
results=[];
for (j=0, len=ref.length; j < len; j++){
box=ref[j];
results.push(box);
}
return results;
}).call(this);
this.all=(function(){
var j, len, ref, results;
ref=this.boxes;
results=[];
for (j=0, len=ref.length; j < len; j++){
box=ref[j];
results.push(box);
}
return results;
}).call(this);
if(this.boxes.length){
if(this.disabled()){
this.resetStyle();
}else{
ref=this.boxes;
for (j=0, len=ref.length; j < len; j++){
box=ref[j];
this.applyStyle(box, true);
}}
}
if(!this.disabled()){
this.util().addEvent(this.config.scrollContainer||window, 'scroll', this.scrollHandler);
this.util().addEvent(window, 'resize', this.scrollHandler);
this.interval=setInterval(this.scrollCallback, 50);
}
if(this.config.live){
return new MutationObserver((function(_this){
return function(records){
var k, len1, node, record, results;
results=[];
for (k=0, len1=records.length; k < len1; k++){
record=records[k];
results.push((function(){
var l, len2, ref1, results1;
ref1=record.addedNodes||[];
results1=[];
for (l=0, len2=ref1.length; l < len2; l++){
node=ref1[l];
results1.push(this.doSync(node));
}
return results1;
}).call(_this));
}
return results;
};})(this)).observe(document.body, {
childList: true,
subtree: true
});
}};
WOW.prototype.stop=function(){
this.stopped=true;
this.util().removeEvent(this.config.scrollContainer||window, 'scroll', this.scrollHandler);
this.util().removeEvent(window, 'resize', this.scrollHandler);
if(this.interval!=null){
return clearInterval(this.interval);
}};
WOW.prototype.sync=function(element){
if(MutationObserver.notSupported){
return this.doSync(this.element);
}};
WOW.prototype.doSync=function(element){
var box, j, len, ref, results;
if(element==null){
element=this.element;
}
if(element.nodeType!==1){
return;
}
element=element.parentNode||element;
ref=element.querySelectorAll("." + this.config.boxClass);
results=[];
for (j=0, len=ref.length; j < len; j++){
box=ref[j];
if(indexOf.call(this.all, box) < 0){
this.boxes.push(box);
this.all.push(box);
if(this.stopped||this.disabled()){
this.resetStyle();
}else{
this.applyStyle(box, true);
}
results.push(this.scrolled=true);
}else{
results.push(void 0);
}}
return results;
};
WOW.prototype.show=function(box){
this.applyStyle(box);
box.className=box.className + " " + this.config.animateClass;
if(this.config.callback!=null){
this.config.callback(box);
}
this.util().emitEvent(box, this.wowEvent);
this.util().addEvent(box, 'animationend', this.resetAnimation);
this.util().addEvent(box, 'oanimationend', this.resetAnimation);
this.util().addEvent(box, 'webkitAnimationEnd', this.resetAnimation);
this.util().addEvent(box, 'MSAnimationEnd', this.resetAnimation);
return box;
};
WOW.prototype.applyStyle=function(box, hidden){
var delay, duration, iteration;
duration=box.getAttribute('data-wow-duration');
delay=box.getAttribute('data-wow-delay');
iteration=box.getAttribute('data-wow-iteration');
return this.animate((function(_this){
return function(){
return _this.customStyle(box, hidden, duration, delay, iteration);
};})(this));
};
WOW.prototype.animate=(function(){
if('requestAnimationFrame' in window){
return function(callback){
return window.requestAnimationFrame(callback);
};}else{
return function(callback){
return callback();
};}})();
WOW.prototype.resetStyle=function(){
var box, j, len, ref, results;
ref=this.boxes;
results=[];
for (j=0, len=ref.length; j < len; j++){
box=ref[j];
results.push(box.style.visibility='visible');
}
return results;
};
WOW.prototype.resetAnimation=function(event){
var target;
if(event.type.toLowerCase().indexOf('animationend') >=0){
target=event.target||event.srcElement;
return target.className=target.className.replace(this.config.animateClass, '').trim();
}};
WOW.prototype.customStyle=function(box, hidden, duration, delay, iteration){
if(hidden){
this.cacheAnimationName(box);
}
box.style.visibility=hidden ? 'hidden':'visible';
if(duration){
this.vendorSet(box.style, {
animationDuration: duration
});
}
if(delay){
this.vendorSet(box.style, {
animationDelay: delay
});
}
if(iteration){
this.vendorSet(box.style, {
animationIterationCount: iteration
});
}
this.vendorSet(box.style, {
animationName: hidden ? 'none':this.cachedAnimationName(box)
});
return box;
};
WOW.prototype.vendors=["moz", "webkit"];
WOW.prototype.vendorSet=function(elem, properties){
var name, results, value, vendor;
results=[];
for (name in properties){
value=properties[name];
elem["" + name]=value;
results.push((function(){
var j, len, ref, results1;
ref=this.vendors;
results1=[];
for (j=0, len=ref.length; j < len; j++){
vendor=ref[j];
results1.push(elem["" + vendor + (name.charAt(0).toUpperCase()) + (name.substr(1))]=value);
}
return results1;
}).call(this));
}
return results;
};
WOW.prototype.vendorCSS=function(elem, property){
var j, len, ref, result, style, vendor;
style=getComputedStyle(elem);
result=style.getPropertyCSSValue(property);
ref=this.vendors;
for (j=0, len=ref.length; j < len; j++){
vendor=ref[j];
result=result||style.getPropertyCSSValue("-" + vendor + "-" + property);
}
return result;
};
WOW.prototype.animationName=function(box){
var animationName, error;
try {
animationName=this.vendorCSS(box, 'animation-name').cssText;
} catch (error){
animationName=getComputedStyle(box).getPropertyValue('animation-name');
}
if(animationName==='none'){
return '';
}else{
return animationName;
}};
WOW.prototype.cacheAnimationName=function(box){
return this.animationNameCache.set(box, this.animationName(box));
};
WOW.prototype.cachedAnimationName=function(box){
return this.animationNameCache.get(box);
};
WOW.prototype.scrollHandler=function(){
return this.scrolled=true;
};
WOW.prototype.scrollCallback=function(){
var box;
if(this.scrolled){
this.scrolled=false;
this.boxes=(function(){
var j, len, ref, results;
ref=this.boxes;
results=[];
for (j=0, len=ref.length; j < len; j++){
box=ref[j];
if(!(box)){
continue;
}
if(this.isVisible(box)){
this.show(box);
continue;
}
results.push(box);
}
return results;
}).call(this);
if(!(this.boxes.length||this.config.live)){
return this.stop();
}}
};
WOW.prototype.offsetTop=function(element){
var top;
while (element.offsetTop===void 0){
element=element.parentNode;
}
top=element.offsetTop;
while (element=element.offsetParent){
top +=element.offsetTop;
}
return top;
};
WOW.prototype.isVisible=function(box){
var bottom, offset, top, viewBottom, viewTop;
offset=box.getAttribute('data-wow-offset')||this.config.offset;
viewTop=(this.config.scrollContainer&&this.config.scrollContainer.scrollTop)||window.pageYOffset;
viewBottom=viewTop + Math.min(this.element.clientHeight, this.util().innerHeight()) - offset;
top=this.offsetTop(box);
bottom=top + box.clientHeight;
return top <=viewBottom&&bottom >=viewTop;
};
WOW.prototype.util=function(){
return this._util!=null ? this._util:this._util=new Util();
};
WOW.prototype.disabled=function(){
return !this.config.mobile&&this.util().isMobile(navigator.userAgent);
};
return WOW;
})();
}).call(this);