Template:Team:Leeds TouchSwipejs

From 2013.igem.org

(Difference between revisions)
m
m
Line 4: Line 4:
  * to bypass the global wiki html and tags when referencing.
  * to bypass the global wiki html and tags when referencing.
  */
  */
-
(function(e){var o="left",n="right",d="up",v="down",c="in",w="out",l="none",r="auto",k="swipe",s="pinch",x="tap",i="doubletap",b="longtap",A="horizontal",t="vertical",h="all",q=10,f="start",j="move",g="end",p="cancel",a="ontouchstart" in window,y="TouchSwipe";var m={fingers:1,threshold:75,cancelThreshold:null,pinchThreshold:20,maxTimeThreshold:null,fingerReleaseThreshold:250,longTapThreshold:500,doubleTapThreshold:200,swipe:null,swipeLeft:null,swipeRight:null,swipeUp:null,swipeDown:null,swipeStatus:null,pinchIn:null,pinchOut:null,pinchStatus:null,click:null,tap:null,doubleTap:null,longTap:null,triggerOnTouchEnd:true,triggerOnTouchLeave:false,allowPageScroll:"auto",fallbackToMouseEvents:true,excludedElements:"button, input, select, textarea, a, .noSwipe"};e.fn.swipe=function(D){var C=e(this),B=C.data(y);if(B&&typeof D==="string"){if(B[D]){return B[D].apply(this,Array.prototype.slice.call(arguments,1))}else{e.error("Method "+D+" does not exist on jQuery.swipe")}}else{if(!B&&(typeof D==="object"||!D)){return u.apply(this,arguments)}}return C};e.fn.swipe.defaults=m;e.fn.swipe.phases={PHASE_START:f,PHASE_MOVE:j,PHASE_END:g,PHASE_CANCEL:p};e.fn.swipe.directions={LEFT:o,RIGHT:n,UP:d,DOWN:v,IN:c,OUT:w};e.fn.swipe.pageScroll={NONE:l,HORIZONTAL:A,VERTICAL:t,AUTO:r};e.fn.swipe.fingers={ONE:1,TWO:2,THREE:3,ALL:h};function u(B){if(B&&(B.allowPageScroll===undefined&&(B.swipe!==undefined||B.swipeStatus!==undefined))){B.allowPageScroll=l}if(B.click!==undefined&&B.tap===undefined){B.tap=B.click}if(!B){B={}}B=e.extend({},e.fn.swipe.defaults,B);return this.each(function(){var D=e(this);var C=D.data(y);if(!C){C=new z(this,B);D.data(y,C)}})}function z(a0,aq){var av=(a||!aq.fallbackToMouseEvents),G=av?"touchstart":"mousedown",au=av?"touchmove":"mousemove",R=av?"touchend":"mouseup",P=av?null:"mouseleave",az="touchcancel";var ac=0,aL=null,Y=0,aX=0,aV=0,D=1,am=0,aF=0,J=null;var aN=e(a0);var W="start";var T=0;var aM=null;var Q=0,aY=0,a1=0,aa=0,K=0;var aS=null;try{aN.bind(G,aJ);aN.bind(az,a5)}catch(ag){e.error("events not supported "+G+","+az+" on jQuery.swipe")}this.enable=function(){aN.bind(G,aJ);aN.bind(az,a5);return aN};this.disable=function(){aG();return aN};this.destroy=function(){aG();aN.data(y,null);return aN};this.option=function(a8,a7){if(aq[a8]!==undefined){if(a7===undefined){return aq[a8]}else{aq[a8]=a7}}else{e.error("Option "+a8+" does not exist on jQuery.swipe.options")}};function aJ(a9){if(ax()){return}if(e(a9.target).closest(aq.excludedElements,aN).length>0){return}var ba=a9.originalEvent?a9.originalEvent:a9;var a8,a7=a?ba.touches[0]:ba;W=f;if(a){T=ba.touches.length}else{a9.preventDefault()}ac=0;aL=null;aF=null;Y=0;aX=0;aV=0;D=1;am=0;aM=af();J=X();O();if(!a||(T===aq.fingers||aq.fingers===h)||aT()){ae(0,a7);Q=ao();if(T==2){ae(1,ba.touches[1]);aX=aV=ap(aM[0].start,aM[1].start)}if(aq.swipeStatus||aq.pinchStatus){a8=L(ba,W)}}else{a8=false}if(a8===false){W=p;L(ba,W);return a8}else{ak(true)}}function aZ(ba){var bd=ba.originalEvent?ba.originalEvent:ba;if(W===g||W===p||ai()){return}var a9,a8=a?bd.touches[0]:bd;var bb=aD(a8);aY=ao();if(a){T=bd.touches.length}W=j;if(T==2){if(aX==0){ae(1,bd.touches[1]);aX=aV=ap(aM[0].start,aM[1].start)}else{aD(bd.touches[1]);aV=ap(aM[0].end,aM[1].end);aF=an(aM[0].end,aM[1].end)}D=a3(aX,aV);am=Math.abs(aX-aV)}if((T===aq.fingers||aq.fingers===h)||!a||aT()){aL=aH(bb.start,bb.end);ah(ba,aL);ac=aO(bb.start,bb.end);Y=aI();aE(aL,ac);if(aq.swipeStatus||aq.pinchStatus){a9=L(bd,W)}if(!aq.triggerOnTouchEnd||aq.triggerOnTouchLeave){var a7=true;if(aq.triggerOnTouchLeave){var bc=aU(this);a7=B(bb.end,bc)}if(!aq.triggerOnTouchEnd&&a7){W=ay(j)}else{if(aq.triggerOnTouchLeave&&!a7){W=ay(g)}}if(W==p||W==g){L(bd,W)}}}else{W=p;L(bd,W)}if(a9===false){W=p;L(bd,W)}}function I(a7){var a8=a7.originalEvent;if(a){if(a8.touches.length>0){C();return true}}if(ai()){T=aa}a7.preventDefault();aY=ao();Y=aI();if(a6()){W=p;L(a8,W)}else{if(aq.triggerOnTouchEnd||(aq.triggerOnTouchEnd==false&&W===j)){W=g;L(a8,W)}else{if(!aq.triggerOnTouchEnd&&a2()){W=g;aB(a8,W,x)}else{if(W===j){W=p;L(a8,W)}}}}ak(false)}function a5(){T=0;aY=0;Q=0;aX=0;aV=0;D=1;O();ak(false)}function H(a7){var a8=a7.originalEvent;if(aq.triggerOnTouchLeave){W=ay(g);L(a8,W)}}function aG(){aN.unbind(G,aJ);aN.unbind(az,a5);aN.unbind(au,aZ);aN.unbind(R,I);if(P){aN.unbind(P,H)}ak(false)}function ay(bb){var ba=bb;var a9=aw();var a8=aj();var a7=a6();if(!a9||a7){ba=p}else{if(a8&&bb==j&&(!aq.triggerOnTouchEnd||aq.triggerOnTouchLeave)){ba=g}else{if(!a8&&bb==g&&aq.triggerOnTouchLeave){ba=p}}}return ba}function L(a9,a7){var a8=undefined;if(F()||S()){a8=aB(a9,a7,k)}else{if((M()||aT())&&a8!==false){a8=aB(a9,a7,s)}}if(aC()&&a8!==false){a8=aB(a9,a7,i)}else{if(al()&&a8!==false){a8=aB(a9,a7,b)}else{if(ad()&&a8!==false){a8=aB(a9,a7,x)}}}if(a7===p){a5(a9)}if(a7===g){if(a){if(a9.touches.length==0){a5(a9)}}else{a5(a9)}}return a8}function aB(ba,a7,a9){var a8=undefined;if(a9==k){aN.trigger("swipeStatus",[a7,aL||null,ac||0,Y||0,T]);if(aq.swipeStatus){a8=aq.swipeStatus.call(aN,ba,a7,aL||null,ac||0,Y||0,T);if(a8===false){return false}}if(a7==g&&aR()){aN.trigger("swipe",[aL,ac,Y,T]);if(aq.swipe){a8=aq.swipe.call(aN,ba,aL,ac,Y,T);if(a8===false){return false}}switch(aL){case o:aN.trigger("swipeLeft",[aL,ac,Y,T]);if(aq.swipeLeft){a8=aq.swipeLeft.call(aN,ba,aL,ac,Y,T)}break;case n:aN.trigger("swipeRight",[aL,ac,Y,T]);if(aq.swipeRight){a8=aq.swipeRight.call(aN,ba,aL,ac,Y,T)}break;case d:aN.trigger("swipeUp",[aL,ac,Y,T]);if(aq.swipeUp){a8=aq.swipeUp.call(aN,ba,aL,ac,Y,T)}break;case v:aN.trigger("swipeDown",[aL,ac,Y,T]);if(aq.swipeDown){a8=aq.swipeDown.call(aN,ba,aL,ac,Y,T)}break}}}if(a9==s){aN.trigger("pinchStatus",[a7,aF||null,am||0,Y||0,T,D]);if(aq.pinchStatus){a8=aq.pinchStatus.call(aN,ba,a7,aF||null,am||0,Y||0,T,D);if(a8===false){return false}}if(a7==g&&a4()){switch(aF){case c:aN.trigger("pinchIn",[aF||null,am||0,Y||0,T,D]);if(aq.pinchIn){a8=aq.pinchIn.call(aN,ba,aF||null,am||0,Y||0,T,D)}break;case w:aN.trigger("pinchOut",[aF||null,am||0,Y||0,T,D]);if(aq.pinchOut){a8=aq.pinchOut.call(aN,ba,aF||null,am||0,Y||0,T,D)}break}}}if(a9==x){if(a7===p||a7===g){clearTimeout(aS);if(V()&&!E()){K=ao();aS=setTimeout(e.proxy(function(){K=null;aN.trigger("tap",[ba.target]);if(aq.tap){a8=aq.tap.call(aN,ba,ba.target)}},this),aq.doubleTapThreshold)}else{K=null;aN.trigger("tap",[ba.target]);if(aq.tap){a8=aq.tap.call(aN,ba,ba.target)}}}}else{if(a9==i){if(a7===p||a7===g){clearTimeout(aS);K=null;aN.trigger("doubletap",[ba.target]);if(aq.doubleTap){a8=aq.doubleTap.call(aN,ba,ba.target)}}}else{if(a9==b){if(a7===p||a7===g){clearTimeout(aS);K=null;aN.trigger("longtap",[ba.target]);if(aq.longTap){a8=aq.longTap.call(aN,ba,ba.target)}}}}}return a8}function aj(){var a7=true;if(aq.threshold!==null){a7=ac>=aq.threshold}return a7}function a6(){var a7=false;if(aq.cancelThreshold!==null&&aL!==null){a7=(aP(aL)-ac)>=aq.cancelThreshold}return a7}function ab(){if(aq.pinchThreshold!==null){return am>=aq.pinchThreshold}return true}function aw(){var a7;if(aq.maxTimeThreshold){if(Y>=aq.maxTimeThreshold){a7=false}else{a7=true}}else{a7=true}return a7}function ah(a7,a8){if(aq.allowPageScroll===l||aT()){a7.preventDefault()}else{var a9=aq.allowPageScroll===r;switch(a8){case o:if((aq.swipeLeft&&a9)||(!a9&&aq.allowPageScroll!=A)){a7.preventDefault()}break;case n:if((aq.swipeRight&&a9)||(!a9&&aq.allowPageScroll!=A)){a7.preventDefault()}break;case d:if((aq.swipeUp&&a9)||(!a9&&aq.allowPageScroll!=t)){a7.preventDefault()}break;case v:if((aq.swipeDown&&a9)||(!a9&&aq.allowPageScroll!=t)){a7.preventDefault()}break}}}function a4(){var a8=aK();var a7=U();var a9=ab();return a8&&a7&&a9}function aT(){return !!(aq.pinchStatus||aq.pinchIn||aq.pinchOut)}function M(){return !!(a4()&&aT())}function aR(){var ba=aw();var bc=aj();var a9=aK();var a7=U();var a8=a6();var bb=!a8&&a7&&a9&&bc&&ba;return bb}function S(){return !!(aq.swipe||aq.swipeStatus||aq.swipeLeft||aq.swipeRight||aq.swipeUp||aq.swipeDown)}function F(){return !!(aR()&&S())}function aK(){return((T===aq.fingers||aq.fingers===h)||!a)}function U(){return aM[0].end.x!==0}function a2(){return !!(aq.tap)}function V(){return !!(aq.doubleTap)}function aQ(){return !!(aq.longTap)}function N(){if(K==null){return false}var a7=ao();return(V()&&((a7-K)<=aq.doubleTapThreshold))}function E(){return N()}function at(){return((T===1||!a)&&(isNaN(ac)||ac===0))}function aW(){return((Y>aq.longTapThreshold)&&(ac<q))}function ad(){return !!(at()&&a2())}function aC(){return !!(N()&&V())}function al(){return !!(aW()&&aQ())}function C(){a1=ao();aa=event.touches.length+1}function O(){a1=0;aa=0}function ai(){var a7=false;if(a1){var a8=ao()-a1;if(a8<=aq.fingerReleaseThreshold){a7=true}}return a7}function ax(){return !!(aN.data(y+"_intouch")===true)}function ak(a7){if(a7===true){aN.bind(au,aZ);aN.bind(R,I);if(P){aN.bind(P,H)}}else{aN.unbind(au,aZ,false);aN.unbind(R,I,false);if(P){aN.unbind(P,H,false)}}aN.data(y+"_intouch",a7===true)}function ae(a8,a7){var a9=a7.identifier!==undefined?a7.identifier:0;aM[a8].identifier=a9;aM[a8].start.x=aM[a8].end.x=a7.pageX||a7.clientX;aM[a8].start.y=aM[a8].end.y=a7.pageY||a7.clientY;return aM[a8]}function aD(a7){var a9=a7.identifier!==undefined?a7.identifier:0;var a8=Z(a9);a8.end.x=a7.pageX||a7.clientX;a8.end.y=a7.pageY||a7.clientY;return a8}function Z(a8){for(var a7=0;a7<aM.length;a7++){if(aM[a7].identifier==a8){return aM[a7]}}}function af(){var a7=[];for(var a8=0;a8<=5;a8++){a7.push({start:{x:0,y:0},end:{x:0,y:0},identifier:0})}return a7}function aE(a7,a8){a8=Math.max(a8,aP(a7));J[a7].distance=a8}function aP(a7){return J[a7].distance}function X(){var a7={};a7[o]=ar(o);a7[n]=ar(n);a7[d]=ar(d);a7[v]=ar(v);return a7}function ar(a7){return{direction:a7,distance:0}}function aI(){return aY-Q}function ap(ba,a9){var a8=Math.abs(ba.x-a9.x);var a7=Math.abs(ba.y-a9.y);return Math.round(Math.sqrt(a8*a8+a7*a7))}function a3(a7,a8){var a9=(a8/a7)*1;return a9.toFixed(2)}function an(){if(D<1){return w}else{return c}}function aO(a8,a7){return Math.round(Math.sqrt(Math.pow(a7.x-a8.x,2)+Math.pow(a7.y-a8.y,2)))}function aA(ba,a8){var a7=ba.x-a8.x;var bc=a8.y-ba.y;var a9=Math.atan2(bc,a7);var bb=Math.round(a9*180/Math.PI);if(bb<0){bb=360-Math.abs(bb)}return bb}function aH(a8,a7){var a9=aA(a8,a7);if((a9<=45)&&(a9>=0)){return o}else{if((a9<=360)&&(a9>=315)){return o}else{if((a9>=135)&&(a9<=225)){return n}else{if((a9>45)&&(a9<135)){return v}else{return d}}}}}function ao(){var a7=new Date();return a7.getTime()}function aU(a7){a7=e(a7);var a9=a7.offset();var a8={left:a9.left,right:a9.left+a7.outerWidth(),top:a9.top,bottom:a9.top+a7.outerHeight()};return a8}function B(a7,a8){return(a7.x>a8.left&&a7.x<a8.right&&a7.y>a8.top&&a7.y<a8.bottom)}}})(jQuery);
+
(function (e) {
 +
    var o = "left",
 +
        n = "right",
 +
        d = "up",
 +
        v = "down",
 +
        c = "in",
 +
        w = "out",
 +
        l = "none",
 +
        r = "auto",
 +
        k = "swipe",
 +
        s = "pinch",
 +
        x = "tap",
 +
        i = "doubletap",
 +
        b = "longtap",
 +
        A = "horizontal",
 +
        t = "vertical",
 +
        h = "all",
 +
        q = 10,
 +
        f = "start",
 +
        j = "move",
 +
        g = "end",
 +
        p = "cancel",
 +
        a = "ontouchstart" in window,
 +
        y = "TouchSwipe";
 +
    var m = {
 +
        fingers: 1,
 +
        threshold: 75,
 +
        cancelThreshold: null,
 +
        pinchThreshold: 20,
 +
        maxTimeThreshold: null,
 +
        fingerReleaseThreshold: 250,
 +
        longTapThreshold: 500,
 +
        doubleTapThreshold: 200,
 +
        swipe: null,
 +
        swipeLeft: null,
 +
        swipeRight: null,
 +
        swipeUp: null,
 +
        swipeDown: null,
 +
        swipeStatus: null,
 +
        pinchIn: null,
 +
        pinchOut: null,
 +
        pinchStatus: null,
 +
        click: null,
 +
        tap: null,
 +
        doubleTap: null,
 +
        longTap: null,
 +
        triggerOnTouchEnd: true,
 +
        triggerOnTouchLeave: false,
 +
        allowPageScroll: "auto",
 +
        fallbackToMouseEvents: true,
 +
        excludedElements: "button, input, select, textarea, a, .noSwipe"
 +
    };
 +
    e.fn.swipe = function (D) {
 +
        var C = e(this),
 +
            B = C.data(y);
 +
        if (B && typeof D === "string") {
 +
            if (B[D]) {
 +
                return B[D].apply(this, Array.prototype.slice.call(arguments, 1))
 +
            } else {
 +
                e.error("Method " + D + " does not exist on jQuery.swipe")
 +
            }
 +
        } else {
 +
            if (!B && (typeof D === "object" || !D)) {
 +
                return u.apply(this, arguments)
 +
            }
 +
        }
 +
        return C
 +
    };
 +
    e.fn.swipe.defaults = m;
 +
    e.fn.swipe.phases = {
 +
        PHASE_START: f,
 +
        PHASE_MOVE: j,
 +
        PHASE_END: g,
 +
        PHASE_CANCEL: p
 +
    };
 +
    e.fn.swipe.directions = {
 +
        LEFT: o,
 +
        RIGHT: n,
 +
        UP: d,
 +
        DOWN: v,
 +
        IN: c,
 +
        OUT: w
 +
    };
 +
    e.fn.swipe.pageScroll = {
 +
        NONE: l,
 +
        HORIZONTAL: A,
 +
        VERTICAL: t,
 +
        AUTO: r
 +
    };
 +
    e.fn.swipe.fingers = {
 +
        ONE: 1,
 +
        TWO: 2,
 +
        THREE: 3,
 +
        ALL: h
 +
    };
 +
 
 +
    function u(B) {
 +
        if (B && (B.allowPageScroll === undefined && (B.swipe !== undefined || B.swipeStatus !== undefined))) {
 +
            B.allowPageScroll = l
 +
        }
 +
        if (B.click !== undefined && B.tap === undefined) {
 +
            B.tap = B.click
 +
        }
 +
        if (!B) {
 +
            B = {}
 +
        }
 +
        B = e.extend({}, e.fn.swipe.defaults, B);
 +
        return this.each(function () {
 +
            var D = e(this);
 +
            var C = D.data(y);
 +
            if (!C) {
 +
                C = new z(this, B);
 +
                D.data(y, C)
 +
            }
 +
        })
 +
    }
 +
 
 +
    function z(a0, aq) {
 +
        var av = (a || !aq.fallbackToMouseEvents),
 +
            G = av ? "touchstart" : "mousedown",
 +
            au = av ? "touchmove" : "mousemove",
 +
            R = av ? "touchend" : "mouseup",
 +
            P = av ? null : "mouseleave",
 +
            az = "touchcancel";
 +
        var ac = 0,
 +
            aL = null,
 +
            Y = 0,
 +
            aX = 0,
 +
            aV = 0,
 +
            D = 1,
 +
            am = 0,
 +
            aF = 0,
 +
            J = null;
 +
        var aN = e(a0);
 +
        var W = "start";
 +
        var T = 0;
 +
        var aM = null;
 +
        var Q = 0,
 +
            aY = 0,
 +
            a1 = 0,
 +
            aa = 0,
 +
            K = 0;
 +
        var aS = null;
 +
        try {
 +
            aN.bind(G, aJ);
 +
            aN.bind(az, a5)
 +
        } catch (ag) {
 +
            e.error("events not supported " + G + "," + az + " on jQuery.swipe")
 +
        }
 +
        this.enable = function () {
 +
            aN.bind(G, aJ);
 +
            aN.bind(az, a5);
 +
            return aN
 +
        };
 +
        this.disable = function () {
 +
            aG();
 +
            return aN
 +
        };
 +
        this.destroy = function () {
 +
            aG();
 +
            aN.data(y, null);
 +
            return aN
 +
        };
 +
        this.option = function (a8, a7) {
 +
            if (aq[a8] !== undefined) {
 +
                if (a7 === undefined) {
 +
                    return aq[a8]
 +
                } else {
 +
                    aq[a8] = a7
 +
                }
 +
            } else {
 +
                e.error("Option " + a8 + " does not exist on jQuery.swipe.options")
 +
            }
 +
        };
 +
 
 +
        function aJ(a9) {
 +
            if (ax()) {
 +
                return
 +
            }
 +
            if (e(a9.target).closest(aq.excludedElements, aN).length > 0) {
 +
                return
 +
            }
 +
            var ba = a9.originalEvent ? a9.originalEvent : a9;
 +
            var a8, a7 = a ? ba.touches[0] : ba;
 +
            W = f;
 +
            if (a) {
 +
                T = ba.touches.length
 +
            } else {
 +
                a9.preventDefault()
 +
            }
 +
            ac = 0;
 +
            aL = null;
 +
            aF = null;
 +
            Y = 0;
 +
            aX = 0;
 +
            aV = 0;
 +
            D = 1;
 +
            am = 0;
 +
            aM = af();
 +
            J = X();
 +
            O();
 +
            if (!a || (T === aq.fingers || aq.fingers === h) || aT()) {
 +
                ae(0, a7);
 +
                Q = ao();
 +
                if (T == 2) {
 +
                    ae(1, ba.touches[1]);
 +
                    aX = aV = ap(aM[0].start, aM[1].start)
 +
                }
 +
                if (aq.swipeStatus || aq.pinchStatus) {
 +
                    a8 = L(ba, W)
 +
                }
 +
            } else {
 +
                a8 = false
 +
            } if (a8 === false) {
 +
                W = p;
 +
                L(ba, W);
 +
                return a8
 +
            } else {
 +
                ak(true)
 +
            }
 +
        }
 +
 
 +
        function aZ(ba) {
 +
            var bd = ba.originalEvent ? ba.originalEvent : ba;
 +
            if (W === g || W === p || ai()) {
 +
                return
 +
            }
 +
            var a9, a8 = a ? bd.touches[0] : bd;
 +
            var bb = aD(a8);
 +
            aY = ao();
 +
            if (a) {
 +
                T = bd.touches.length
 +
            }
 +
            W = j;
 +
            if (T == 2) {
 +
                if (aX == 0) {
 +
                    ae(1, bd.touches[1]);
 +
                    aX = aV = ap(aM[0].start, aM[1].start)
 +
                } else {
 +
                    aD(bd.touches[1]);
 +
                    aV = ap(aM[0].end, aM[1].end);
 +
                    aF = an(aM[0].end, aM[1].end)
 +
                }
 +
                D = a3(aX, aV);
 +
                am = Math.abs(aX - aV)
 +
            }
 +
            if ((T === aq.fingers || aq.fingers === h) || !a || aT()) {
 +
                aL = aH(bb.start, bb.end);
 +
                ah(ba, aL);
 +
                ac = aO(bb.start, bb.end);
 +
                Y = aI();
 +
                aE(aL, ac);
 +
                if (aq.swipeStatus || aq.pinchStatus) {
 +
                    a9 = L(bd, W)
 +
                }
 +
                if (!aq.triggerOnTouchEnd || aq.triggerOnTouchLeave) {
 +
                    var a7 = true;
 +
                    if (aq.triggerOnTouchLeave) {
 +
                        var bc = aU(this);
 +
                        a7 = B(bb.end, bc)
 +
                    }
 +
                    if (!aq.triggerOnTouchEnd && a7) {
 +
                        W = ay(j)
 +
                    } else {
 +
                        if (aq.triggerOnTouchLeave && !a7) {
 +
                            W = ay(g)
 +
                        }
 +
                    } if (W == p || W == g) {
 +
                        L(bd, W)
 +
                    }
 +
                }
 +
            } else {
 +
                W = p;
 +
                L(bd, W)
 +
            } if (a9 === false) {
 +
                W = p;
 +
                L(bd, W)
 +
            }
 +
        }
 +
 
 +
        function I(a7) {
 +
            var a8 = a7.originalEvent;
 +
            if (a) {
 +
                if (a8.touches.length > 0) {
 +
                    C();
 +
                    return true
 +
                }
 +
            }
 +
            if (ai()) {
 +
                T = aa
 +
            }
 +
            a7.preventDefault();
 +
            aY = ao();
 +
            Y = aI();
 +
            if (a6()) {
 +
                W = p;
 +
                L(a8, W)
 +
            } else {
 +
                if (aq.triggerOnTouchEnd || (aq.triggerOnTouchEnd == false && W === j)) {
 +
                    W = g;
 +
                    L(a8, W)
 +
                } else {
 +
                    if (!aq.triggerOnTouchEnd && a2()) {
 +
                        W = g;
 +
                        aB(a8, W, x)
 +
                    } else {
 +
                        if (W === j) {
 +
                            W = p;
 +
                            L(a8, W)
 +
                        }
 +
                    }
 +
                }
 +
            }
 +
            ak(false)
 +
        }
 +
 
 +
        function a5() {
 +
            T = 0;
 +
            aY = 0;
 +
            Q = 0;
 +
            aX = 0;
 +
            aV = 0;
 +
            D = 1;
 +
            O();
 +
            ak(false)
 +
        }
 +
 
 +
        function H(a7) {
 +
            var a8 = a7.originalEvent;
 +
            if (aq.triggerOnTouchLeave) {
 +
                W = ay(g);
 +
                L(a8, W)
 +
            }
 +
        }
 +
 
 +
        function aG() {
 +
            aN.unbind(G, aJ);
 +
            aN.unbind(az, a5);
 +
            aN.unbind(au, aZ);
 +
            aN.unbind(R, I);
 +
            if (P) {
 +
                aN.unbind(P, H)
 +
            }
 +
            ak(false)
 +
        }
 +
 
 +
        function ay(bb) {
 +
            var ba = bb;
 +
            var a9 = aw();
 +
            var a8 = aj();
 +
            var a7 = a6();
 +
            if (!a9 || a7) {
 +
                ba = p
 +
            } else {
 +
                if (a8 && bb == j && (!aq.triggerOnTouchEnd || aq.triggerOnTouchLeave)) {
 +
                    ba = g
 +
                } else {
 +
                    if (!a8 && bb == g && aq.triggerOnTouchLeave) {
 +
                        ba = p
 +
                    }
 +
                }
 +
            }
 +
            return ba
 +
        }
 +
 
 +
        function L(a9, a7) {
 +
            var a8 = undefined;
 +
            if (F() || S()) {
 +
                a8 = aB(a9, a7, k)
 +
            } else {
 +
                if ((M() || aT()) && a8 !== false) {
 +
                    a8 = aB(a9, a7, s)
 +
                }
 +
            } if (aC() && a8 !== false) {
 +
                a8 = aB(a9, a7, i)
 +
            } else {
 +
                if (al() && a8 !== false) {
 +
                    a8 = aB(a9, a7, b)
 +
                } else {
 +
                    if (ad() && a8 !== false) {
 +
                        a8 = aB(a9, a7, x)
 +
                    }
 +
                }
 +
            } if (a7 === p) {
 +
                a5(a9)
 +
            }
 +
            if (a7 === g) {
 +
                if (a) {
 +
                    if (a9.touches.length == 0) {
 +
                        a5(a9)
 +
                    }
 +
                } else {
 +
                    a5(a9)
 +
                }
 +
            }
 +
            return a8
 +
        }
 +
 
 +
        function aB(ba, a7, a9) {
 +
            var a8 = undefined;
 +
            if (a9 == k) {
 +
                aN.trigger("swipeStatus", [a7, aL || null, ac || 0, Y || 0, T]);
 +
                if (aq.swipeStatus) {
 +
                    a8 = aq.swipeStatus.call(aN, ba, a7, aL || null, ac || 0, Y || 0, T);
 +
                    if (a8 === false) {
 +
                        return false
 +
                    }
 +
                }
 +
                if (a7 == g && aR()) {
 +
                    aN.trigger("swipe", [aL, ac, Y, T]);
 +
                    if (aq.swipe) {
 +
                        a8 = aq.swipe.call(aN, ba, aL, ac, Y, T);
 +
                        if (a8 === false) {
 +
                            return false
 +
                        }
 +
                    }
 +
                    switch (aL) {
 +
                    case o:
 +
                        aN.trigger("swipeLeft", [aL, ac, Y, T]);
 +
                        if (aq.swipeLeft) {
 +
                            a8 = aq.swipeLeft.call(aN, ba, aL, ac, Y, T)
 +
                        }
 +
                        break;
 +
                    case n:
 +
                        aN.trigger("swipeRight", [aL, ac, Y, T]);
 +
                        if (aq.swipeRight) {
 +
                            a8 = aq.swipeRight.call(aN, ba, aL, ac, Y, T)
 +
                        }
 +
                        break;
 +
                    case d:
 +
                        aN.trigger("swipeUp", [aL, ac, Y, T]);
 +
                        if (aq.swipeUp) {
 +
                            a8 = aq.swipeUp.call(aN, ba, aL, ac, Y, T)
 +
                        }
 +
                        break;
 +
                    case v:
 +
                        aN.trigger("swipeDown", [aL, ac, Y, T]);
 +
                        if (aq.swipeDown) {
 +
                            a8 = aq.swipeDown.call(aN, ba, aL, ac, Y, T)
 +
                        }
 +
                        break
 +
                    }
 +
                }
 +
            }
 +
            if (a9 == s) {
 +
                aN.trigger("pinchStatus", [a7, aF || null, am || 0, Y || 0, T, D]);
 +
                if (aq.pinchStatus) {
 +
                    a8 = aq.pinchStatus.call(aN, ba, a7, aF || null, am || 0, Y || 0, T, D);
 +
                    if (a8 === false) {
 +
                        return false
 +
                    }
 +
                }
 +
                if (a7 == g && a4()) {
 +
                    switch (aF) {
 +
                    case c:
 +
                        aN.trigger("pinchIn", [aF || null, am || 0, Y || 0, T, D]);
 +
                        if (aq.pinchIn) {
 +
                            a8 = aq.pinchIn.call(aN, ba, aF || null, am || 0, Y || 0, T, D)
 +
                        }
 +
                        break;
 +
                    case w:
 +
                        aN.trigger("pinchOut", [aF || null, am || 0, Y || 0, T, D]);
 +
                        if (aq.pinchOut) {
 +
                            a8 = aq.pinchOut.call(aN, ba, aF || null, am || 0, Y || 0, T, D)
 +
                        }
 +
                        break
 +
                    }
 +
                }
 +
            }
 +
            if (a9 == x) {
 +
                if (a7 === p || a7 === g) {
 +
                    clearTimeout(aS);
 +
                    if (V() && !E()) {
 +
                        K = ao();
 +
                        aS = setTimeout(e.proxy(function () {
 +
                            K = null;
 +
                            aN.trigger("tap", [ba.target]);
 +
                            if (aq.tap) {
 +
                                a8 = aq.tap.call(aN, ba, ba.target)
 +
                            }
 +
                        }, this), aq.doubleTapThreshold)
 +
                    } else {
 +
                        K = null;
 +
                        aN.trigger("tap", [ba.target]);
 +
                        if (aq.tap) {
 +
                            a8 = aq.tap.call(aN, ba, ba.target)
 +
                        }
 +
                    }
 +
                }
 +
            } else {
 +
                if (a9 == i) {
 +
                    if (a7 === p || a7 === g) {
 +
                        clearTimeout(aS);
 +
                        K = null;
 +
                        aN.trigger("doubletap", [ba.target]);
 +
                        if (aq.doubleTap) {
 +
                            a8 = aq.doubleTap.call(aN, ba, ba.target)
 +
                        }
 +
                    }
 +
                } else {
 +
                    if (a9 == b) {
 +
                        if (a7 === p || a7 === g) {
 +
                            clearTimeout(aS);
 +
                            K = null;
 +
                            aN.trigger("longtap", [ba.target]);
 +
                            if (aq.longTap) {
 +
                                a8 = aq.longTap.call(aN, ba, ba.target)
 +
                            }
 +
                        }
 +
                    }
 +
                }
 +
            }
 +
            return a8
 +
        }
 +
 
 +
        function aj() {
 +
            var a7 = true;
 +
            if (aq.threshold !== null) {
 +
                a7 = ac >= aq.threshold
 +
            }
 +
            return a7
 +
        }
 +
 
 +
        function a6() {
 +
            var a7 = false;
 +
            if (aq.cancelThreshold !== null && aL !== null) {
 +
                a7 = (aP(aL) - ac) >= aq.cancelThreshold
 +
            }
 +
            return a7
 +
        }
 +
 
 +
        function ab() {
 +
            if (aq.pinchThreshold !== null) {
 +
                return am >= aq.pinchThreshold
 +
            }
 +
            return true
 +
        }
 +
 
 +
        function aw() {
 +
            var a7;
 +
            if (aq.maxTimeThreshold) {
 +
                if (Y >= aq.maxTimeThreshold) {
 +
                    a7 = false
 +
                } else {
 +
                    a7 = true
 +
                }
 +
            } else {
 +
                a7 = true
 +
            }
 +
            return a7
 +
        }
 +
 
 +
        function ah(a7, a8) {
 +
            if (aq.allowPageScroll === l || aT()) {
 +
                a7.preventDefault()
 +
            } else {
 +
                var a9 = aq.allowPageScroll === r;
 +
                switch (a8) {
 +
                case o:
 +
                    if ((aq.swipeLeft && a9) || (!a9 && aq.allowPageScroll != A)) {
 +
                        a7.preventDefault()
 +
                    }
 +
                    break;
 +
                case n:
 +
                    if ((aq.swipeRight && a9) || (!a9 && aq.allowPageScroll != A)) {
 +
                        a7.preventDefault()
 +
                    }
 +
                    break;
 +
                case d:
 +
                    if ((aq.swipeUp && a9) || (!a9 && aq.allowPageScroll != t)) {
 +
                        a7.preventDefault()
 +
                    }
 +
                    break;
 +
                case v:
 +
                    if ((aq.swipeDown && a9) || (!a9 && aq.allowPageScroll != t)) {
 +
                        a7.preventDefault()
 +
                    }
 +
                    break
 +
                }
 +
            }
 +
        }
 +
 
 +
        function a4() {
 +
            var a8 = aK();
 +
            var a7 = U();
 +
            var a9 = ab();
 +
            return a8 && a7 && a9
 +
        }
 +
 
 +
        function aT() {
 +
            return !!(aq.pinchStatus || aq.pinchIn || aq.pinchOut)
 +
        }
 +
 
 +
        function M() {
 +
            return !!(a4() && aT())
 +
        }
 +
 
 +
        function aR() {
 +
            var ba = aw();
 +
            var bc = aj();
 +
            var a9 = aK();
 +
            var a7 = U();
 +
            var a8 = a6();
 +
            var bb = !a8 && a7 && a9 && bc && ba;
 +
            return bb
 +
        }
 +
 
 +
        function S() {
 +
            return !!(aq.swipe || aq.swipeStatus || aq.swipeLeft || aq.swipeRight || aq.swipeUp || aq.swipeDown)
 +
        }
 +
 
 +
        function F() {
 +
            return !!(aR() && S())
 +
        }
 +
 
 +
        function aK() {
 +
            return ((T === aq.fingers || aq.fingers === h) || !a)
 +
        }
 +
 
 +
        function U() {
 +
            return aM[0].end.x !== 0
 +
        }
 +
 
 +
        function a2() {
 +
            return !!(aq.tap)
 +
        }
 +
 
 +
        function V() {
 +
            return !!(aq.doubleTap)
 +
        }
 +
 
 +
        function aQ() {
 +
            return !!(aq.longTap)
 +
        }
 +
 
 +
        function N() {
 +
            if (K == null) {
 +
                return false
 +
            }
 +
            var a7 = ao();
 +
            return (V() && ((a7 - K) <= aq.doubleTapThreshold))
 +
        }
 +
 
 +
        function E() {
 +
            return N()
 +
        }
 +
 
 +
        function at() {
 +
            return ((T === 1 || !a) && (isNaN(ac) || ac === 0))
 +
        }
 +
 
 +
        function aW() {
 +
            return ((Y > aq.longTapThreshold) && (ac < q))
 +
        }
 +
 
 +
        function ad() {
 +
            return !!(at() && a2())
 +
        }
 +
 
 +
        function aC() {
 +
            return !!(N() && V())
 +
        }
 +
 
 +
        function al() {
 +
            return !!(aW() && aQ())
 +
        }
 +
 
 +
        function C() {
 +
            a1 = ao();
 +
            aa = event.touches.length + 1
 +
        }
 +
 
 +
        function O() {
 +
            a1 = 0;
 +
            aa = 0
 +
        }
 +
 
 +
        function ai() {
 +
            var a7 = false;
 +
            if (a1) {
 +
                var a8 = ao() - a1;
 +
                if (a8 <= aq.fingerReleaseThreshold) {
 +
                    a7 = true
 +
                }
 +
            }
 +
            return a7
 +
        }
 +
 
 +
        function ax() {
 +
            return !!(aN.data(y + "_intouch") === true)
 +
        }
 +
 
 +
        function ak(a7) {
 +
            if (a7 === true) {
 +
                aN.bind(au, aZ);
 +
                aN.bind(R, I);
 +
                if (P) {
 +
                    aN.bind(P, H)
 +
                }
 +
            } else {
 +
                aN.unbind(au, aZ, false);
 +
                aN.unbind(R, I, false);
 +
                if (P) {
 +
                    aN.unbind(P, H, false)
 +
                }
 +
            }
 +
            aN.data(y + "_intouch", a7 === true)
 +
        }
 +
 
 +
        function ae(a8, a7) {
 +
            var a9 = a7.identifier !== undefined ? a7.identifier : 0;
 +
            aM[a8].identifier = a9;
 +
            aM[a8].start.x = aM[a8].end.x = a7.pageX || a7.clientX;
 +
            aM[a8].start.y = aM[a8].end.y = a7.pageY || a7.clientY;
 +
            return aM[a8]
 +
        }
 +
 
 +
        function aD(a7) {
 +
            var a9 = a7.identifier !== undefined ? a7.identifier : 0;
 +
            var a8 = Z(a9);
 +
            a8.end.x = a7.pageX || a7.clientX;
 +
            a8.end.y = a7.pageY || a7.clientY;
 +
            return a8
 +
        }
 +
 
 +
        function Z(a8) {
 +
            for (var a7 = 0; a7 < aM.length; a7++) {
 +
                if (aM[a7].identifier == a8) {
 +
                    return aM[a7]
 +
                }
 +
            }
 +
        }
 +
 
 +
        function af() {
 +
            var a7 = [];
 +
            for (var a8 = 0; a8 <= 5; a8++) {
 +
                a7.push({
 +
                    start: {
 +
                        x: 0,
 +
                        y: 0
 +
                    },
 +
                    end: {
 +
                        x: 0,
 +
                        y: 0
 +
                    },
 +
                    identifier: 0
 +
                })
 +
            }
 +
            return a7
 +
        }
 +
 
 +
        function aE(a7, a8) {
 +
            a8 = Math.max(a8, aP(a7));
 +
            J[a7].distance = a8
 +
        }
 +
 
 +
        function aP(a7) {
 +
            return J[a7].distance
 +
        }
 +
 
 +
        function X() {
 +
            var a7 = {};
 +
            a7[o] = ar(o);
 +
            a7[n] = ar(n);
 +
            a7[d] = ar(d);
 +
            a7[v] = ar(v);
 +
            return a7
 +
        }
 +
 
 +
        function ar(a7) {
 +
            return {
 +
                direction: a7,
 +
                distance: 0
 +
            }
 +
        }
 +
 
 +
        function aI() {
 +
            return aY - Q
 +
        }
 +
 
 +
        function ap(ba, a9) {
 +
            var a8 = Math.abs(ba.x - a9.x);
 +
            var a7 = Math.abs(ba.y - a9.y);
 +
            return Math.round(Math.sqrt(a8 * a8 + a7 * a7))
 +
        }
 +
 
 +
        function a3(a7, a8) {
 +
            var a9 = (a8 / a7) * 1;
 +
            return a9.toFixed(2)
 +
        }
 +
 
 +
        function an() {
 +
            if (D < 1) {
 +
                return w
 +
            } else {
 +
                return c
 +
            }
 +
        }
 +
 
 +
        function aO(a8, a7) {
 +
            return Math.round(Math.sqrt(Math.pow(a7.x - a8.x, 2) + Math.pow(a7.y - a8.y, 2)))
 +
        }
 +
 
 +
        function aA(ba, a8) {
 +
            var a7 = ba.x - a8.x;
 +
            var bc = a8.y - ba.y;
 +
            var a9 = Math.atan2(bc, a7);
 +
            var bb = Math.round(a9 * 180 / Math.PI);
 +
            if (bb < 0) {
 +
                bb = 360 - Math.abs(bb)
 +
            }
 +
            return bb
 +
        }
 +
 
 +
        function aH(a8, a7) {
 +
            var a9 = aA(a8, a7);
 +
            if ((a9 <= 45) && (a9 >= 0)) {
 +
                return o
 +
            } else {
 +
                if ((a9 <= 360) && (a9 >= 315)) {
 +
                    return o
 +
                } else {
 +
                    if ((a9 >= 135) && (a9 <= 225)) {
 +
                        return n
 +
                    } else {
 +
                        if ((a9 > 45) && (a9 < 135)) {
 +
                            return v
 +
                        } else {
 +
                            return d
 +
                        }
 +
                    }
 +
                }
 +
            }
 +
        }
 +
 
 +
        function ao() {
 +
            var a7 = new Date();
 +
            return a7.getTime()
 +
        }
 +
 
 +
        function aU(a7) {
 +
            a7 = e(a7);
 +
            var a9 = a7.offset();
 +
            var a8 = {
 +
                left: a9.left,
 +
                right: a9.left + a7.outerWidth(),
 +
                top: a9.top,
 +
                bottom: a9.top + a7.outerHeight()
 +
            };
 +
            return a8
 +
        }
 +
 
 +
        function B(a7, a8) {
 +
            return (a7.x > a8.left && a7.x < a8.right && a7.y > a8.top && a7.y < a8.bottom)
 +
        }
 +
    }
 +
})(jQuery);

Revision as of 15:17, 2 September 2013

/*!

* To initialize the javascript within the wiki properly, use this url:
* https://2013.igem.org/Template:Team:Leeds_TouchSwipejs?action=raw&ctype=text/javascript
* to bypass the global wiki html and tags when referencing.
*/

(function (e) {

   var o = "left",
       n = "right",
       d = "up",
       v = "down",
       c = "in",
       w = "out",
       l = "none",
       r = "auto",
       k = "swipe",
       s = "pinch",
       x = "tap",
       i = "doubletap",
       b = "longtap",
       A = "horizontal",
       t = "vertical",
       h = "all",
       q = 10,
       f = "start",
       j = "move",
       g = "end",
       p = "cancel",
       a = "ontouchstart" in window,
       y = "TouchSwipe";
   var m = {
       fingers: 1,
       threshold: 75,
       cancelThreshold: null,
       pinchThreshold: 20,
       maxTimeThreshold: null,
       fingerReleaseThreshold: 250,
       longTapThreshold: 500,
       doubleTapThreshold: 200,
       swipe: null,
       swipeLeft: null,
       swipeRight: null,
       swipeUp: null,
       swipeDown: null,
       swipeStatus: null,
       pinchIn: null,
       pinchOut: null,
       pinchStatus: null,
       click: null,
       tap: null,
       doubleTap: null,
       longTap: null,
       triggerOnTouchEnd: true,
       triggerOnTouchLeave: false,
       allowPageScroll: "auto",
       fallbackToMouseEvents: true,
       excludedElements: "button, input, select, textarea, a, .noSwipe"
   };
   e.fn.swipe = function (D) {
       var C = e(this),
           B = C.data(y);
       if (B && typeof D === "string") {
           if (B[D]) {
               return B[D].apply(this, Array.prototype.slice.call(arguments, 1))
           } else {
               e.error("Method " + D + " does not exist on jQuery.swipe")
           }
       } else {
           if (!B && (typeof D === "object" || !D)) {
               return u.apply(this, arguments)
           }
       }
       return C
   };
   e.fn.swipe.defaults = m;
   e.fn.swipe.phases = {
       PHASE_START: f,
       PHASE_MOVE: j,
       PHASE_END: g,
       PHASE_CANCEL: p
   };
   e.fn.swipe.directions = {
       LEFT: o,
       RIGHT: n,
       UP: d,
       DOWN: v,
       IN: c,
       OUT: w
   };
   e.fn.swipe.pageScroll = {
       NONE: l,
       HORIZONTAL: A,
       VERTICAL: t,
       AUTO: r
   };
   e.fn.swipe.fingers = {
       ONE: 1,
       TWO: 2,
       THREE: 3,
       ALL: h
   };
   function u(B) {
       if (B && (B.allowPageScroll === undefined && (B.swipe !== undefined || B.swipeStatus !== undefined))) {
           B.allowPageScroll = l
       }
       if (B.click !== undefined && B.tap === undefined) {
           B.tap = B.click
       }
       if (!B) {
           B = {}
       }
       B = e.extend({}, e.fn.swipe.defaults, B);
       return this.each(function () {
           var D = e(this);
           var C = D.data(y);
           if (!C) {
               C = new z(this, B);
               D.data(y, C)
           }
       })
   }
   function z(a0, aq) {
       var av = (a || !aq.fallbackToMouseEvents),
           G = av ? "touchstart" : "mousedown",
           au = av ? "touchmove" : "mousemove",
           R = av ? "touchend" : "mouseup",
           P = av ? null : "mouseleave",
           az = "touchcancel";
       var ac = 0,
           aL = null,
           Y = 0,
           aX = 0,
           aV = 0,
           D = 1,
           am = 0,
           aF = 0,
           J = null;
       var aN = e(a0);
       var W = "start";
       var T = 0;
       var aM = null;
       var Q = 0,
           aY = 0,
           a1 = 0,
           aa = 0,
           K = 0;
       var aS = null;
       try {
           aN.bind(G, aJ);
           aN.bind(az, a5)
       } catch (ag) {
           e.error("events not supported " + G + "," + az + " on jQuery.swipe")
       }
       this.enable = function () {
           aN.bind(G, aJ);
           aN.bind(az, a5);
           return aN
       };
       this.disable = function () {
           aG();
           return aN
       };
       this.destroy = function () {
           aG();
           aN.data(y, null);
           return aN
       };
       this.option = function (a8, a7) {
           if (aq[a8] !== undefined) {
               if (a7 === undefined) {
                   return aq[a8]
               } else {
                   aq[a8] = a7
               }
           } else {
               e.error("Option " + a8 + " does not exist on jQuery.swipe.options")
           }
       };
       function aJ(a9) {
           if (ax()) {
               return
           }
           if (e(a9.target).closest(aq.excludedElements, aN).length > 0) {
               return
           }
           var ba = a9.originalEvent ? a9.originalEvent : a9;
           var a8, a7 = a ? ba.touches[0] : ba;
           W = f;
           if (a) {
               T = ba.touches.length
           } else {
               a9.preventDefault()
           }
           ac = 0;
           aL = null;
           aF = null;
           Y = 0;
           aX = 0;
           aV = 0;
           D = 1;
           am = 0;
           aM = af();
           J = X();
           O();
           if (!a || (T === aq.fingers || aq.fingers === h) || aT()) {
               ae(0, a7);
               Q = ao();
               if (T == 2) {
                   ae(1, ba.touches[1]);
                   aX = aV = ap(aM[0].start, aM[1].start)
               }
               if (aq.swipeStatus || aq.pinchStatus) {
                   a8 = L(ba, W)
               }
           } else {
               a8 = false
           } if (a8 === false) {
               W = p;
               L(ba, W);
               return a8
           } else {
               ak(true)
           }
       }
       function aZ(ba) {
           var bd = ba.originalEvent ? ba.originalEvent : ba;
           if (W === g || W === p || ai()) {
               return
           }
           var a9, a8 = a ? bd.touches[0] : bd;
           var bb = aD(a8);
           aY = ao();
           if (a) {
               T = bd.touches.length
           }
           W = j;
           if (T == 2) {
               if (aX == 0) {
                   ae(1, bd.touches[1]);
                   aX = aV = ap(aM[0].start, aM[1].start)
               } else {
                   aD(bd.touches[1]);
                   aV = ap(aM[0].end, aM[1].end);
                   aF = an(aM[0].end, aM[1].end)
               }
               D = a3(aX, aV);
               am = Math.abs(aX - aV)
           }
           if ((T === aq.fingers || aq.fingers === h) || !a || aT()) {
               aL = aH(bb.start, bb.end);
               ah(ba, aL);
               ac = aO(bb.start, bb.end);
               Y = aI();
               aE(aL, ac);
               if (aq.swipeStatus || aq.pinchStatus) {
                   a9 = L(bd, W)
               }
               if (!aq.triggerOnTouchEnd || aq.triggerOnTouchLeave) {
                   var a7 = true;
                   if (aq.triggerOnTouchLeave) {
                       var bc = aU(this);
                       a7 = B(bb.end, bc)
                   }
                   if (!aq.triggerOnTouchEnd && a7) {
                       W = ay(j)
                   } else {
                       if (aq.triggerOnTouchLeave && !a7) {
                           W = ay(g)
                       }
                   } if (W == p || W == g) {
                       L(bd, W)
                   }
               }
           } else {
               W = p;
               L(bd, W)
           } if (a9 === false) {
               W = p;
               L(bd, W)
           }
       }
       function I(a7) {
           var a8 = a7.originalEvent;
           if (a) {
               if (a8.touches.length > 0) {
                   C();
                   return true
               }
           }
           if (ai()) {
               T = aa
           }
           a7.preventDefault();
           aY = ao();
           Y = aI();
           if (a6()) {
               W = p;
               L(a8, W)
           } else {
               if (aq.triggerOnTouchEnd || (aq.triggerOnTouchEnd == false && W === j)) {
                   W = g;
                   L(a8, W)
               } else {
                   if (!aq.triggerOnTouchEnd && a2()) {
                       W = g;
                       aB(a8, W, x)
                   } else {
                       if (W === j) {
                           W = p;
                           L(a8, W)
                       }
                   }
               }
           }
           ak(false)
       }
       function a5() {
           T = 0;
           aY = 0;
           Q = 0;
           aX = 0;
           aV = 0;
           D = 1;
           O();
           ak(false)
       }
       function H(a7) {
           var a8 = a7.originalEvent;
           if (aq.triggerOnTouchLeave) {
               W = ay(g);
               L(a8, W)
           }
       }
       function aG() {
           aN.unbind(G, aJ);
           aN.unbind(az, a5);
           aN.unbind(au, aZ);
           aN.unbind(R, I);
           if (P) {
               aN.unbind(P, H)
           }
           ak(false)
       }
       function ay(bb) {
           var ba = bb;
           var a9 = aw();
           var a8 = aj();
           var a7 = a6();
           if (!a9 || a7) {
               ba = p
           } else {
               if (a8 && bb == j && (!aq.triggerOnTouchEnd || aq.triggerOnTouchLeave)) {
                   ba = g
               } else {
                   if (!a8 && bb == g && aq.triggerOnTouchLeave) {
                       ba = p
                   }
               }
           }
           return ba
       }
       function L(a9, a7) {
           var a8 = undefined;
           if (F() || S()) {
               a8 = aB(a9, a7, k)
           } else {
               if ((M() || aT()) && a8 !== false) {
                   a8 = aB(a9, a7, s)
               }
           } if (aC() && a8 !== false) {
               a8 = aB(a9, a7, i)
           } else {
               if (al() && a8 !== false) {
                   a8 = aB(a9, a7, b)
               } else {
                   if (ad() && a8 !== false) {
                       a8 = aB(a9, a7, x)
                   }
               }
           } if (a7 === p) {
               a5(a9)
           }
           if (a7 === g) {
               if (a) {
                   if (a9.touches.length == 0) {
                       a5(a9)
                   }
               } else {
                   a5(a9)
               }
           }
           return a8
       }
       function aB(ba, a7, a9) {
           var a8 = undefined;
           if (a9 == k) {
               aN.trigger("swipeStatus", [a7, aL || null, ac || 0, Y || 0, T]);
               if (aq.swipeStatus) {
                   a8 = aq.swipeStatus.call(aN, ba, a7, aL || null, ac || 0, Y || 0, T);
                   if (a8 === false) {
                       return false
                   }
               }
               if (a7 == g && aR()) {
                   aN.trigger("swipe", [aL, ac, Y, T]);
                   if (aq.swipe) {
                       a8 = aq.swipe.call(aN, ba, aL, ac, Y, T);
                       if (a8 === false) {
                           return false
                       }
                   }
                   switch (aL) {
                   case o:
                       aN.trigger("swipeLeft", [aL, ac, Y, T]);
                       if (aq.swipeLeft) {
                           a8 = aq.swipeLeft.call(aN, ba, aL, ac, Y, T)
                       }
                       break;
                   case n:
                       aN.trigger("swipeRight", [aL, ac, Y, T]);
                       if (aq.swipeRight) {
                           a8 = aq.swipeRight.call(aN, ba, aL, ac, Y, T)
                       }
                       break;
                   case d:
                       aN.trigger("swipeUp", [aL, ac, Y, T]);
                       if (aq.swipeUp) {
                           a8 = aq.swipeUp.call(aN, ba, aL, ac, Y, T)
                       }
                       break;
                   case v:
                       aN.trigger("swipeDown", [aL, ac, Y, T]);
                       if (aq.swipeDown) {
                           a8 = aq.swipeDown.call(aN, ba, aL, ac, Y, T)
                       }
                       break
                   }
               }
           }
           if (a9 == s) {
               aN.trigger("pinchStatus", [a7, aF || null, am || 0, Y || 0, T, D]);
               if (aq.pinchStatus) {
                   a8 = aq.pinchStatus.call(aN, ba, a7, aF || null, am || 0, Y || 0, T, D);
                   if (a8 === false) {
                       return false
                   }
               }
               if (a7 == g && a4()) {
                   switch (aF) {
                   case c:
                       aN.trigger("pinchIn", [aF || null, am || 0, Y || 0, T, D]);
                       if (aq.pinchIn) {
                           a8 = aq.pinchIn.call(aN, ba, aF || null, am || 0, Y || 0, T, D)
                       }
                       break;
                   case w:
                       aN.trigger("pinchOut", [aF || null, am || 0, Y || 0, T, D]);
                       if (aq.pinchOut) {
                           a8 = aq.pinchOut.call(aN, ba, aF || null, am || 0, Y || 0, T, D)
                       }
                       break
                   }
               }
           }
           if (a9 == x) {
               if (a7 === p || a7 === g) {
                   clearTimeout(aS);
                   if (V() && !E()) {
                       K = ao();
                       aS = setTimeout(e.proxy(function () {
                           K = null;
                           aN.trigger("tap", [ba.target]);
                           if (aq.tap) {
                               a8 = aq.tap.call(aN, ba, ba.target)
                           }
                       }, this), aq.doubleTapThreshold)
                   } else {
                       K = null;
                       aN.trigger("tap", [ba.target]);
                       if (aq.tap) {
                           a8 = aq.tap.call(aN, ba, ba.target)
                       }
                   }
               }
           } else {
               if (a9 == i) {
                   if (a7 === p || a7 === g) {
                       clearTimeout(aS);
                       K = null;
                       aN.trigger("doubletap", [ba.target]);
                       if (aq.doubleTap) {
                           a8 = aq.doubleTap.call(aN, ba, ba.target)
                       }
                   }
               } else {
                   if (a9 == b) {
                       if (a7 === p || a7 === g) {
                           clearTimeout(aS);
                           K = null;
                           aN.trigger("longtap", [ba.target]);
                           if (aq.longTap) {
                               a8 = aq.longTap.call(aN, ba, ba.target)
                           }
                       }
                   }
               }
           }
           return a8
       }
       function aj() {
           var a7 = true;
           if (aq.threshold !== null) {
               a7 = ac >= aq.threshold
           }
           return a7
       }
       function a6() {
           var a7 = false;
           if (aq.cancelThreshold !== null && aL !== null) {
               a7 = (aP(aL) - ac) >= aq.cancelThreshold
           }
           return a7
       }
       function ab() {
           if (aq.pinchThreshold !== null) {
               return am >= aq.pinchThreshold
           }
           return true
       }
       function aw() {
           var a7;
           if (aq.maxTimeThreshold) {
               if (Y >= aq.maxTimeThreshold) {
                   a7 = false
               } else {
                   a7 = true
               }
           } else {
               a7 = true
           }
           return a7
       }
       function ah(a7, a8) {
           if (aq.allowPageScroll === l || aT()) {
               a7.preventDefault()
           } else {
               var a9 = aq.allowPageScroll === r;
               switch (a8) {
               case o:
                   if ((aq.swipeLeft && a9) || (!a9 && aq.allowPageScroll != A)) {
                       a7.preventDefault()
                   }
                   break;
               case n:
                   if ((aq.swipeRight && a9) || (!a9 && aq.allowPageScroll != A)) {
                       a7.preventDefault()
                   }
                   break;
               case d:
                   if ((aq.swipeUp && a9) || (!a9 && aq.allowPageScroll != t)) {
                       a7.preventDefault()
                   }
                   break;
               case v:
                   if ((aq.swipeDown && a9) || (!a9 && aq.allowPageScroll != t)) {
                       a7.preventDefault()
                   }
                   break
               }
           }
       }
       function a4() {
           var a8 = aK();
           var a7 = U();
           var a9 = ab();
           return a8 && a7 && a9
       }
       function aT() {
           return !!(aq.pinchStatus || aq.pinchIn || aq.pinchOut)
       }
       function M() {
           return !!(a4() && aT())
       }
       function aR() {
           var ba = aw();
           var bc = aj();
           var a9 = aK();
           var a7 = U();
           var a8 = a6();
           var bb = !a8 && a7 && a9 && bc && ba;
           return bb
       }
       function S() {
           return !!(aq.swipe || aq.swipeStatus || aq.swipeLeft || aq.swipeRight || aq.swipeUp || aq.swipeDown)
       }
       function F() {
           return !!(aR() && S())
       }
       function aK() {
           return ((T === aq.fingers || aq.fingers === h) || !a)
       }
       function U() {
           return aM[0].end.x !== 0
       }
       function a2() {
           return !!(aq.tap)
       }
       function V() {
           return !!(aq.doubleTap)
       }
       function aQ() {
           return !!(aq.longTap)
       }
       function N() {
           if (K == null) {
               return false
           }
           var a7 = ao();
           return (V() && ((a7 - K) <= aq.doubleTapThreshold))
       }
       function E() {
           return N()
       }
       function at() {
           return ((T === 1 || !a) && (isNaN(ac) || ac === 0))
       }
       function aW() {
           return ((Y > aq.longTapThreshold) && (ac < q))
       }
       function ad() {
           return !!(at() && a2())
       }
       function aC() {
           return !!(N() && V())
       }
       function al() {
           return !!(aW() && aQ())
       }
       function C() {
           a1 = ao();
           aa = event.touches.length + 1
       }
       function O() {
           a1 = 0;
           aa = 0
       }
       function ai() {
           var a7 = false;
           if (a1) {
               var a8 = ao() - a1;
               if (a8 <= aq.fingerReleaseThreshold) {
                   a7 = true
               }
           }
           return a7
       }
       function ax() {
           return !!(aN.data(y + "_intouch") === true)
       }
       function ak(a7) {
           if (a7 === true) {
               aN.bind(au, aZ);
               aN.bind(R, I);
               if (P) {
                   aN.bind(P, H)
               }
           } else {
               aN.unbind(au, aZ, false);
               aN.unbind(R, I, false);
               if (P) {
                   aN.unbind(P, H, false)
               }
           }
           aN.data(y + "_intouch", a7 === true)
       }
       function ae(a8, a7) {
           var a9 = a7.identifier !== undefined ? a7.identifier : 0;
           aM[a8].identifier = a9;
           aM[a8].start.x = aM[a8].end.x = a7.pageX || a7.clientX;
           aM[a8].start.y = aM[a8].end.y = a7.pageY || a7.clientY;
           return aM[a8]
       }
       function aD(a7) {
           var a9 = a7.identifier !== undefined ? a7.identifier : 0;
           var a8 = Z(a9);
           a8.end.x = a7.pageX || a7.clientX;
           a8.end.y = a7.pageY || a7.clientY;
           return a8
       }
       function Z(a8) {
           for (var a7 = 0; a7 < aM.length; a7++) {
               if (aM[a7].identifier == a8) {
                   return aM[a7]
               }
           }
       }
       function af() {
           var a7 = [];
           for (var a8 = 0; a8 <= 5; a8++) {
               a7.push({
                   start: {
                       x: 0,
                       y: 0
                   },
                   end: {
                       x: 0,
                       y: 0
                   },
                   identifier: 0
               })
           }
           return a7
       }
       function aE(a7, a8) {
           a8 = Math.max(a8, aP(a7));
           J[a7].distance = a8
       }
       function aP(a7) {
           return J[a7].distance
       }
       function X() {
           var a7 = {};
           a7[o] = ar(o);
           a7[n] = ar(n);
           a7[d] = ar(d);
           a7[v] = ar(v);
           return a7
       }
       function ar(a7) {
           return {
               direction: a7,
               distance: 0
           }
       }
       function aI() {
           return aY - Q
       }
       function ap(ba, a9) {
           var a8 = Math.abs(ba.x - a9.x);
           var a7 = Math.abs(ba.y - a9.y);
           return Math.round(Math.sqrt(a8 * a8 + a7 * a7))
       }
       function a3(a7, a8) {
           var a9 = (a8 / a7) * 1;
           return a9.toFixed(2)
       }
       function an() {
           if (D < 1) {
               return w
           } else {
               return c
           }
       }
       function aO(a8, a7) {
           return Math.round(Math.sqrt(Math.pow(a7.x - a8.x, 2) + Math.pow(a7.y - a8.y, 2)))
       }
       function aA(ba, a8) {
           var a7 = ba.x - a8.x;
           var bc = a8.y - ba.y;
           var a9 = Math.atan2(bc, a7);
           var bb = Math.round(a9 * 180 / Math.PI);
           if (bb < 0) {
               bb = 360 - Math.abs(bb)
           }
           return bb
       }
       function aH(a8, a7) {
           var a9 = aA(a8, a7);
           if ((a9 <= 45) && (a9 >= 0)) {
               return o
           } else {
               if ((a9 <= 360) && (a9 >= 315)) {
                   return o
               } else {
                   if ((a9 >= 135) && (a9 <= 225)) {
                       return n
                   } else {
                       if ((a9 > 45) && (a9 < 135)) {
                           return v
                       } else {
                           return d
                       }
                   }
               }
           }
       }
       function ao() {
           var a7 = new Date();
           return a7.getTime()
       }
       function aU(a7) {
           a7 = e(a7);
           var a9 = a7.offset();
           var a8 = {
               left: a9.left,
               right: a9.left + a7.outerWidth(),
               top: a9.top,
               bottom: a9.top + a7.outerHeight()
           };
           return a8
       }
       function B(a7, a8) {
           return (a7.x > a8.left && a7.x < a8.right && a7.y > a8.top && a7.y < a8.bottom)
       }
   }

})(jQuery);