1 /* jquery.scrollex v0.2.1 | (c) @ajlkn | github.com/ajlkn/jquery.scrollex | MIT licensed */
2 !function(t
){function e(t
,e
,n
){return"string"==typeof t
&&("%"==t
.slice(-1)?t
=parseInt(t
.substring(0,t
.length
-1))/100*e:"vh"==t.slice(-2)?t=parseInt(t.substring(0,t.length-2))/100*n
:"px"==t
.slice(-2)&&(t
=parseInt(t
.substring(0,t
.length
-2)))),t
}var n
=t(window
),i
=1,o
={};n
.on("scroll",function(){var e
=n
.scrollTop();t
.map(o
,function(t
){window
.clearTimeout(t
.timeoutId
),t
.timeoutId
=window
.setTimeout(function(){t
.handler(e
)},t
.options
.delay
)})}).on("load",function(){n
.trigger("scroll")}),jQuery
.fn
.scrollex=function(l
){var s
=t(this);if(0==this.length
)return s
;if(this.length
>1){for(var r
=0;r
<this.length
;r
++)t(this[r
]).scrollex(l
);return s
}if(s
.data("_scrollexId"))return s
;var a
,u
,h
,c
,p
;switch(a
=i
++,u
=jQuery
.extend({top
:0,bottom
:0,delay
:0,mode
:"default",enter
:null,leave
:null,initialize
:null,terminate
:null,scroll
:null},l
),u
.mode
){case"top":h=function(t
,e
,n
,i
,o
){return t
>=i
&&o
>=t
};break;case"bottom":h=function(t
,e
,n
,i
,o
){return n
>=i
&&o
>=n
};break;case"middle":h=function(t
,e
,n
,i
,o
){return e
>=i
&&o
>=e
};break;case"top-only":h=function(t
,e
,n
,i
,o
){return i
>=t
&&n
>=i
};break;case"bottom-only":h=function(t
,e
,n
,i
,o
){return n
>=o
&&o
>=t
};break;default:case"default":h=function(t
,e
,n
,i
,o
){return n
>=i
&&o
>=t
}}return c=function(t
){var i
,o
,l
,s
,r
,a
,u
=this.state
,h
=!1,c
=this.$element
.offset();i
=n
.height(),o
=t
+i
/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a
-r
)])},p
={id
:a
,options
:u
,test
:h
,handler
:c
,state
:null,element
:this,$element
:s
,timeoutId
:null},o
[a
]=p
,s
.data("_scrollexId",p
.id
),p
.options
.initialize
&&p
.options
.initialize
.apply(this),s
},jQuery
.fn
.unscrollex=function(){var e
=t(this);if(0==this.length
)return e
;if(this.length
>1){for(var n
=0;n
<this.length
;n
++)t(this[n
]).unscrollex();return e
}var i
,l
;return(i
=e
.data("_scrollexId"))?(l
=o
[i
],window
.clearTimeout(l
.timeoutId
),delete o
[i
],e
.removeData("_scrollexId"),l
.options
.terminate
&&l
.options
.terminate
.apply(this),e
):e
}}(jQuery
);