(function(e){
e.fn.hoverIntent=function(t, n, r){
var i={
interval: 100,
sensitivity: 7,
timeout: 0
};
if(typeof t==="object"){
i=e.extend(i, t)
}else if(typeof n==='function'){
i=e.extend(i, {
over: t,
out: n,
selector: r
})
}else{
i=e.extend(i, {
over: t,
out: t,
selector: n
})
}
var s, o, u, a;
var f=function(e){
s=e.pageX;
o=e.pageY
};
var l=function(t, n){
n.hoverIntent_t=clearTimeout(n.hoverIntent_t);
if(Math.abs(u - s) + Math.abs(a - o) < i.sensitivity){
e(n).off("mousemove.hoverIntent", f);
n.hoverIntent_s=1;
return i.over.apply(n, [t])
}else{
u=s;
a=o;
n.hoverIntent_t=setTimeout(function(){
l(t, n)
}, i.interval)
}};
var c=function(e, t){
t.hoverIntent_t=clearTimeout(t.hoverIntent_t);
t.hoverIntent_s=0;
return i.out.apply(t, [e])
};
var h=function(t){
var n=jQuery.extend({}, t);
var r=this;
if(r.hoverIntent_t){
r.hoverIntent_t=clearTimeout(r.hoverIntent_t)
}
if(t.type=="mouseenter"){
u=n.pageX;
a=n.pageY;
e(r).on("mousemove.hoverIntent", f);
if(r.hoverIntent_s!=1){
r.hoverIntent_t=setTimeout(function(){
l(n, r)
}, i.interval)
}}else{
e(r).off("mousemove.hoverIntent", f);
if(r.hoverIntent_s==1){
r.hoverIntent_t=setTimeout(function(){
c(n, r)
}, i.timeout)
}}
};
return this.on({
"mouseenter.hoverIntent": h,
"mouseleave.hoverIntent": h
}, i.selector)
}}
)(jQuery);