/*
* 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(e){function g(t){if(t&&t.allowPageScroll===undefined&&(t.swipe!==undefined||t.swipeStatus!==undefined)){t.allowPageScroll=s}if(!t){t={}}t=e.extend({},e.fn.swipe.defaults,t);return this.each(function(){var n=e(this);var r=n.data(v);if(!r){r=new y(this,t);n.data(v,r)}})}function y(m,g){function H(t){t=t.originalEvent;var n,r=d?t.touches[0]:t;k=l;if(d){L=t.touches.length}else{if(t.preventDefault){t.preventDefault()}else{t.returnValue=false}}x=0;T=null;N=0;if(!d||L===g.fingers||g.fingers===f){A.x=O.x=e.browser.msie&&e.browser.version<="8.0"?r.clientX:r.pageX;A.y=O.y=e.browser.msie&&e.browser.version<="8.0"?r.clientY:r.pageY;_=J();if(g.swipeStatus){n=I(t,k)}}else{F(t)}if(n===false){k=p;I(t,k);return n}else{C.bind(w,B);C.bind(E,j)}}function B(t){t=t.originalEvent;if(k===h||k===p)return;var n,r=d?t.touches[0]:t;O.x=e.browser.msie&&e.browser.version<="8.0"?r.clientX:r.pageX;O.y=e.browser.msie&&e.browser.version<="8.0"?r.clientY:r.pageY;D=J();T=V();if(d){L=t.touches.length}k=c;U(t,T);if(L===g.fingers||g.fingers===f||!d){x=W();N=z();if(g.swipeStatus){n=I(t,k,T,x,N)}if(!g.triggerOnTouchEnd){var i=!R();if(q()===true){k=h;n=I(t,k)}else if(i){k=p;I(t,k)}}}else{k=p;I(t,k)}if(n===false){k=p;I(t,k)}}function j(e){e=e.originalEvent;if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}D=J();x=W();T=V();N=z();if(g.triggerOnTouchEnd||g.triggerOnTouchEnd===false&&k===c){k=h;if((L===g.fingers||g.fingers===f||!d)&&O.x!==0){var t=!R();if((q()===true||q()===null)&&!t){I(e,k)}else if(t||q()===false){k=p;I(e,k)}}else{k=p;I(e,k)}}else if(k===c){k=p;I(e,k)}C.unbind(w,B,false);C.unbind(E,j,false)}function F(){L=0;A.x=0;A.y=0;O.x=0;O.y=0;M.x=0;M.y=0;D=0;_=0}function I(e,s){var o=undefined;if(g.swipeStatus){o=g.swipeStatus.call(C,e,s,T||null,x||0,N||0,L)}if(s===p){if(g.click&&(L===1||!d)&&(isNaN(x)||x===0)){o=g.click.call(C,e,e.target)}}if(s==h){if(g.swipe){o=g.swipe.call(C,e,T,x,N,L)}switch(T){case t:if(g.swipeLeft){o=g.swipeLeft.call(C,e,T,x,N,L)}break;case n:if(g.swipeRight){o=g.swipeRight.call(C,e,T,x,N,L)}break;case r:if(g.swipeUp){o=g.swipeUp.call(C,e,T,x,N,L)}break;case i:if(g.swipeDown){o=g.swipeDown.call(C,e,T,x,N,L)}break}}if(s===p||s===h){F(e)}return o}function q(){if(g.threshold!==null){return x>=g.threshold}return null}function R(){var e;if(g.maxTimeThreshold){if(N>=g.maxTimeThreshold){e=false}else{e=true}}else{e=true}return e}function U(e,f){if(g.allowPageScroll===s){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}}else{var l=g.allowPageScroll===o;switch(f){case t:if(g.swipeLeft&&l||!l&&g.allowPageScroll!=u){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}}break;case n:if(g.swipeRight&&l||!l&&g.allowPageScroll!=u){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}}break;case r:if(g.swipeUp&&l||!l&&g.allowPageScroll!=a){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}}break;case i:if(g.swipeDown&&l||!l&&g.allowPageScroll!=a){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}}break}}}function z(){return D-_}function W(){return Math.round(Math.sqrt(Math.pow(O.x-A.x,2)+Math.pow(O.y-A.y,2)))}function X(){var e=A.x-O.x;var t=O.y-A.y;var n=Math.atan2(t,e);var r=Math.round(n*180/Math.PI);if(r<0){r=360-Math.abs(r)}return r}function V(){var e=X();if(e<=45&&e>=0){return t}else if(e<=360&&e>=315){return t}else if(e>=135&&e<=225){return n}else if(e>45&&e<135){return i}else{return r}}function J(){var e=new Date;return e.getTime()}function K(){C.unbind(b,H);C.unbind(S,F);C.unbind(w,B);C.unbind(E,j)}var y=d||!g.fallbackToMouseEvents,b=y?"touchstart":"mousedown",w=y?"touchmove":"mousemove",E=y?"touchend":"mouseup",S="touchcancel";var x=0;var T=null;var N=0;var C=e(m);var k="start";var L=0;var A={x:0,y:0};var O={x:0,y:0};var M={x:0,y:0};var _=0;var D=0;try{C.bind(b,H);C.bind(S,F)}catch(P){e.error("events not supported "+b+","+S+" on jQuery.swipe")}this.enable=function(){C.bind(b,H);C.bind(S,F);return C};this.disable=function(){K();return C};this.destroy=function(){K();C.data(v,null);return C};}var t="left",n="right",r="up",i="down",s="none",o="auto",u="horizontal",a="vertical",f="all",l="start",c="move",h="end",p="cancel",d="ontouchstart"in window,v="TouchSwipe";var m={fingers:1,threshold:50,maxTimeThreshold:null,swipe:null,swipeLeft:null,swipeRight:null,swipeUp:null,swipeDown:null,swipeStatus:null,click:null,triggerOnTouchEnd:true,allowPageScroll:"auto",fallbackToMouseEvents:true};e.fn.swipe=function(t){var n=e(this),r=n.data(v);if(r&&typeof t==="string"){if(r[t]){return r[t].apply(this,Array.prototype.slice.call(arguments,1))}else{e.error("Method "+t+" does not exist on jQuery.swipe")}}else if(!r&&(typeof t==="object"||!t)){return g.apply(this,arguments)}return n};e.fn.swipe.defaults=m;e.fn.swipe.phases={PHASE_START:l,PHASE_MOVE:c,PHASE_END:h,PHASE_CANCEL:p};e.fn.swipe.directions={LEFT:t,RIGHT:n,UP:r,DOWN:i};e.fn.swipe.pageScroll={NONE:s,HORIZONTAL:u,VERTICAL:a,AUTO:o};e.fn.swipe.fingers={ONE:1,TWO:2,THREE:3,ALL:f}})(jQuery);