/* * touchSwipe - jQuery Plugin * https://github.com/mattbryson/TouchSwipe-Jquery-Plugin * http://labs.skinkers.com/touchSwipe/ * http://plugins.jquery.com/project/touchSwipe * * Copyright (c) 2010 Matt Bryson (www.skinkers.com) * Dual licensed under the MIT or GPL Version 2 licenses. * * $version: 1.3.3 */ (function (g) { function P(c) { if (c && void 0 === c.allowPageScroll && (void 0 !== c.swipe || void 0 !== c.swipeStatus))c.allowPageScroll = G; c || (c = {}); c = g.extend({}, g.fn.swipe.defaults, c); return this.each(function () { var b = g(this), f = b.data(w); f || (f = new W(this, c), b.data(w, f)) }) } function W(c, b) { var f, p, r, s; function H(a) { var a = a.originalEvent, c, Q = n ? a.touches[0] : a; d = R; n ? h = a.touches.length : a.preventDefault(); i = 0; j = null; k = 0; !n || h === b.fingers || b.fingers === x ? (r = f = Q.pageX, s = p = Q.pageY, y = (new Date).getTime(), b.swipeStatus && (c = l(a, d))) : t(a); if (!1 === c)return d = m, l(a, d), c; e.bind(I, J); e.bind(K, L) } function J(a) { a = a.originalEvent; if (!(d === q || d === m)) { var c, e = n ? a.touches[0] : a; f = e.pageX; p = e.pageY; u = (new Date).getTime(); j = S(); n && (h = a.touches.length); d = z; var e = a, g = j; if (b.allowPageScroll === G)e.preventDefault(); else { var o = b.allowPageScroll === T; switch (g) { case v: (b.swipeLeft && o || !o && b.allowPageScroll != M) && e.preventDefault(); break; case A: (b.swipeRight && o || !o && b.allowPageScroll != M) && e.preventDefault(); break; case B: (b.swipeUp && o || !o && b.allowPageScroll != N) && e.preventDefault(); break; case C: (b.swipeDown && o || !o && b.allowPageScroll != N) && e.preventDefault() } } h === b.fingers || b.fingers === x || !n ? (i = U(), k = u - y, b.swipeStatus && (c = l(a, d, j, i, k)), b.triggerOnTouchEnd || (e = !(b.maxTimeThreshold ? !(k >= b.maxTimeThreshold) : 1), !0 === D() ? (d = q, c = l(a, d)) : e && (d = m, l(a, d)))) : (d = m, l(a, d)); !1 === c && (d = m, l(a, d)) } } function L(a) { a = a.originalEvent; a.preventDefault(); u = (new Date).getTime(); i = U(); j = S(); k = u - y; if (b.triggerOnTouchEnd || !1 === b.triggerOnTouchEnd && d === z)if (d = q, (h === b.fingers || b.fingers === x || !n) && 0 !== f) { var c = !(b.maxTimeThreshold ? !(k >= b.maxTimeThreshold) : 1); if ((!0 === D() || null === D()) && !c)l(a, d); else if (c || !1 === D())d = m, l(a, d) } else d = m, l(a, d); else d === z && (d = m, l(a, d)); e.unbind(I, J, !1); e.unbind(K, L, !1) } function t() { y = u = p = f = s = r = h = 0 } function l(a, c) { var d = void 0; b.swipeStatus && (d = b.swipeStatus.call(e, a, c, j || null, i || 0, k || 0, h)); if (c === m && b.click && (1 === h || !n) && (isNaN(i) || 0 === i))d = b.click.call(e, a, a.target); if (c == q)switch (b.swipe && (d = b.swipe.call(e, a, j, i, k, h)), j) { case v: b.swipeLeft && (d = b.swipeLeft.call(e, a, j, i, k, h)); break; case A: b.swipeRight && (d = b.swipeRight.call(e, a, j, i, k, h)); break; case B: b.swipeUp && (d = b.swipeUp.call(e, a, j, i, k, h)); break; case C: b.swipeDown && (d = b.swipeDown.call(e, a, j, i, k, h)) } (c === m || c === q) && t(a); return d } function D() { return null !== b.threshold ? i >= b.threshold : null } function U() { return Math.round(Math.sqrt(Math.pow(f - r, 2) + Math.pow(p - s, 2))) } function S() { var a; a = Math.atan2(p - s, r - f); a = Math.round(180 * a / Math.PI); 0 > a && (a = 360 - Math.abs(a)); return 45 >= a && 0 <= a ? v : 360 >= a && 315 <= a ? v : 135 <= a && 225 >= a ? A : 45 < a && 135 > a ? C : B } function V() { e.unbind(E, H); e.unbind(F, t); e.unbind(I, J); e.unbind(K, L) } var O = n || !b.fallbackToMouseEvents, E = O ? "touchstart" : "mousedown", I = O ? "touchmove" : "mousemove", K = O ? "touchend" : "mouseup", F = "touchcancel", i = 0, j = null, k = 0, e = g(c), d = "start", h = 0, y = p = f = s = r = 0, u = 0; try { e.bind(E, H), e.bind(F, t) } catch (P) { g.error("events not supported " + E + "," + F + " on jQuery.swipe") } this.enable = function () { e.bind(E, H); e.bind(F, t); return e }; this.disable = function () { V(); return e }; this.destroy = function () { V(); e.data(w, null); return e } } var v = "left", A = "right", B = "up", C = "down", G = "none", T = "auto", M = "horizontal", N = "vertical", x = "all", R = "start", z = "move", q = "end", m = "cancel", n = "ontouchstart" in window, w = "TouchSwipe"; g.fn.swipe = function (c) { var b = g(this), f = b.data(w); if (f && "string" === typeof c) { if (f[c])return f[c].apply(this, Array.prototype.slice.call(arguments, 1)); g.error("Method " + c + " does not exist on jQuery.swipe") } else if (!f && ("object" === typeof c || !c))return P.apply(this, arguments); return b }; g.fn.swipe.defaults = { fingers: 1, threshold: 75, maxTimeThreshold: null, swipe: null, swipeLeft: null, swipeRight: null, swipeUp: null, swipeDown: null, swipeStatus: null, click: null, triggerOnTouchEnd: !0, allowPageScroll: "auto", fallbackToMouseEvents: !0 }; g.fn.swipe.phases = {PHASE_START: R, PHASE_MOVE: z, PHASE_END: q, PHASE_CANCEL: m}; g.fn.swipe.directions = {LEFT: v, RIGHT: A, UP: B, DOWN: C}; g.fn.swipe.pageScroll = {NONE: G, HORIZONTAL: M, VERTICAL: N, AUTO: T}; g.fn.swipe.fingers = {ONE: 1, TWO: 2, THREE: 3, ALL: x} })(jQuery);