(function(a,c,b){if(typeof define==="function"&&define.amd){define(["jquery"],function(d){b(d,a,c);return d.mobile})}else{b(a.jQuery,a,c)}}(this,document,function(c,b,a,d){(function(B,K,j,q){var J="virtualMouseBindings",f="virtualTouchID",e="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),A="clientX clientY pageX pageY screenX screenY".split(" "),G=B.event.mouseHooks?B.event.mouseHooks.props:[],C=B.event.props.concat(G),E={},L=0,w=0,v=0,t=false,O=[],l=false,V=false,y="addEventListener" in j,x=B(j),I=1,R=0,g,P;B.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};function u(i){while(i&&typeof i.originalEvent!=="undefined"){i=i.originalEvent}return i}function m(X,Y){var ag=X.type,ah,af,Z,W,ad,ac,ab,aa,ae;X=B.Event(X);X.type=Y;ah=X.originalEvent;af=B.event.props;if(ag.search(/^(mouse|click)/)>-1){af=C}if(ah){for(ab=af.length,W;ab;){W=af[--ab];X[W]=ah[W]}}if(ag.search(/mouse(down|up)|click/)>-1&&!X.which){X.which=1}if(ag.search(/^touch/)!==-1){Z=u(ah);ag=Z.touches;ad=Z.changedTouches;ac=(ag&&ag.length)?ag[0]:((ad&&ad.length)?ad[0]:q);if(ac){for(aa=0,ae=A.length;aaY||Math.abs(X.pageY-v)>Y);if(t&&!W){r("vmousecancel",Z,i)}r("vmousemove",Z,i);z()}function k(Y){if(V){return}o();var i=T(Y.target),W,X;r("vmouseup",Y,i);if(!t){W=r("vclick",Y,i);if(W&&W.isDefaultPrevented()){X=u(Y).changedTouches[0];O.push({touchID:R,x:X.clientX,y:X.clientY});l=true}}r("vmouseout",Y,i);t=false;z()}function H(W){var X=B.data(W,J),i;if(X){for(i in X){if(X[i]){return true}}}return false}function Q(){}function p(i){var W=i.substr(1);return{setup:function(){if(!H(this)){B.data(this,J,{})}var X=B.data(this,J);X[i]=true;E[i]=(E[i]||0)+1;if(E[i]===1){x.bind(W,n)}B(this).bind(W,Q);if(y){E.touchstart=(E.touchstart||0)+1;if(E.touchstart===1){x.bind("touchstart",S).bind("touchend",k).bind("touchmove",h).bind("scroll",M)}}},teardown:function(){--E[i];if(!E[i]){x.unbind(W,n)}if(y){--E.touchstart;if(!E.touchstart){x.unbind("touchstart",S).unbind("touchmove",h).unbind("touchend",k).unbind("scroll",M)}}var X=B(this),Y=B.data(this,J);if(Y){Y[i]=false}X.unbind(W,Q);if(!H(this)){X.removeData(J)}}}}for(P=0;P