
PK 
/*
* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55
* http://jquerymobile.com
*
* Copyright 2011 (c) jQuery Project
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
*/
/*
* Stripped the touch swipe logic from jQuery Mobile and turned it into this plugin
* Copyright 2012 (c) CodingJack - http://codecanyon.net/user/CodingJack
* Dual licensed under the MIT or GPL Version 2 licenses.
*/
/* USAGE
// listen both left and right signals, the String "left" or "right" will be passed as an argument to the callback
* $(element).touchSwipe(callback);
// second parameter is optional and will invoke "event.stopImmediatePropagation()"
// use this if you need to prevent other mouse events from firing on the same object when a swipe gesture is detected
* $(element).touchSwipe(callback, true);
// listen for only the left swipe event
* $(element).touchSwipeLeft(callback);
// listen for only the right swipe event
* $(element).touchSwipeRight(callback);
// unbind both left and right swipe events
* $(element).unbindSwipe();
// unbind only left swipe event
* $(element).unbindSwipeLeft();
// unbind only right swipe event
* $(element).unbindSwipeRight();
// SPECIAL NOTES
* all methods return "this" for chaining
* before a plugin event is added, "unbind" is called first to make sure events are never erroneously duplicated
*/
;(function($) {
var touchStopEvent, touchMoveEvent, touchStartEvent,
horizontalDistanceThreshold = 30,
verticalDistanceThreshold = 75,
scrollSupressionThreshold = 10,
durationThreshold = 1000;
if("ontouchend" in document) {
touchStopEvent = "touchend.cj_swp";
touchMoveEvent = "touchmove.cj_swp";
touchStartEvent = "touchstart.cj_swp";
}
else {
touchStopEvent = "mouseup.cj_swp";
touchMoveEvent = "mousemove.cj_swp";
touchStartEvent = "mousedown.cj_swp";
}
$.fn.touchSwipe = function(cb, prevent) {
if(prevent) this.data("stopPropagation", true);
if(cb) return this.each(swipeBoth, [cb]);
}
$.fn.touchSwipeLeft = function(cb, prevent) {
if(prevent) this.data("stopPropagation", true);
if(cb) return this.each(swipeLeft , [cb]);
}
$.fn.touchSwipeRight = function(cb, prevent) {
if(prevent) this.data("stopPropagation", true);
if(cb) return this.each(swipeRight, [cb]);
}
function swipeBoth(cb) {
$(this).touchSwipeLeft(cb).touchSwipeRight(cb);
}
function swipeLeft(cb) {
var $this = $(this);
if(!$this.data("swipeLeft")) $this.data("swipeLeft", cb);
if(!$this.data("swipeRight")) addSwipe($this);
}
function swipeRight(cb) {
var $this = $(this);
if(!$this.data("swipeRight")) $this.data("swipeRight", cb);
if(!$this.data("swipeLeft")) addSwipe($this);
}
$.fn.unbindSwipeLeft = function() {
this.removeData("swipeLeft");
if(!this.data("swipeRight")) this.unbindSwipe(true);
}
$.fn.unbindSwipeRight = function() {
this.removeData("swipeRight");
if(!this.data("swipeLeft")) this.unbindSwipe(true);
}
$.fn.unbindSwipe = function(changeData) {
if(!changeData) this.removeData("swipeLeft swipeRight stopPropagation");
return this.unbind(touchStartEvent + " " + touchMoveEvent + " " + touchStopEvent);
}
function addSwipe($this) {
$this.unbindSwipe(true).bind(touchStartEvent, touchStart);
}
function touchStart(event) {
var time = new Date().getTime(),
data = event.originalEvent.touches ? event.originalEvent.touches[0] : event,
$this = $(this).bind(touchMoveEvent, moveHandler).one(touchStopEvent, touchEnded),
pageX = data.pageX,
pageY = data.pageY,
newPageX,
newPageY,
newTime;
if($this.data("stopPropagation")) event.stopImmediatePropagation();
function touchEnded(event) {
$this.unbind(touchMoveEvent);
if(time && newTime) {
if(newTime - time < durationThreshold && Math.abs(pageX - newPageX) > horizontalDistanceThreshold && Math.abs(pageY - newPageY) < verticalDistanceThreshold) {
if(pageX > newPageX) {
if($this.data("swipeLeft")) $this.data("swipeLeft")("left");
}
else {
if($this.data("swipeRight")) $this.data("swipeRight")("right");
}
}
}
time = newTime = null;
}
function moveHandler(event) {
if(time) {
data = event.originalEvent.touches ? event.originalEvent.touches[0] : event;
newTime = new Date().getTime();
newPageX = data.pageX;
newPageY = data.pageY;
if(Math.abs(pageX - newPageX) > scrollSupressionThreshold) event.preventDefault();
}
}
}
})(jQuery);


PK 99