/*! swipe plugin for Cycle2; version: 20121120 */ (function($) { "use strict"; // this script adds support for touch events. the logic is lifted from jQuery Mobile. // if you have jQuery Mobile installed, you do NOT need this script var supportTouch = 'ontouchend' in document; $.event.special.swipe = $.event.special.swipe || { scrollSupressionThreshold: 10, // More than this horizontal displacement, and we will suppress scrolling. durationThreshold: 1000, // More time than this, and it isn't a swipe. horizontalDistanceThreshold: 30, // Swipe horizontal displacement must be more than this. verticalDistanceThreshold: 75, // Swipe vertical displacement must be less than this. setup: function() { var $this = $( this ); $this.bind( 'touchstart', function( event ) { var data = event.originalEvent.touches ? event.originalEvent.touches[ 0 ] : event; var stop, start = { time: ( new Date() ).getTime(), coords: [ data.pageX, data.pageY ], origin: $( event.target ) }; function moveHandler( event ) { if ( !start ) return; var data = event.originalEvent.touches ? event.originalEvent.touches[ 0 ] : event; stop = { time: ( new Date() ).getTime(), coords: [ data.pageX, data.pageY ] }; // prevent scrolling if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { event.preventDefault(); } } $this.bind( 'touchmove', moveHandler ) .one( 'touchend', function( event ) { $this.unbind( 'touchmove', moveHandler ); if ( start && stop ) { if ( stop.time - start.time < $.event.special.swipe.durationThreshold && Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold && Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) { start.origin.trigger( "swipe" ) .trigger( start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight" ); } } start = stop = undefined; }); }); } }; $.event.special.swipeleft = $.event.special.swipeleft || { setup: function() { $( this ).bind( 'swipe', $.noop ); } }; $.event.special.swiperight = $.event.special.swiperight || $.event.special.swipeleft; })(jQuery);