/*
 * jSwipe - jQuery Plugin
 * http://plugins.jquery.com/project/swipe
 * http://www.ryanscherf.com/demos/swipe/
 *
 * Copyright (c) 2009 Ryan Scherf (www.ryanscherf.com)
 * Licensed under the MIT license
 *
 * $Date: 2009-07-14 (Tue, 14 Jul 2009) $
 * $version: 0.1.2
 * 
 * This jQuery plugin will only run on devices running Mobile Safari
 * on iPhone or iPod Touch devices running iPhone OS 2.0 or later. 
 * http://developer.apple.com/iphone/library/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW5
 */
(function($) {
 $.fn.swipe = function(options) {
 
 // Default thresholds & swipe functions
 var defaults = {
 threshold: {
 x: 30,
 y: 10
 },
 swipeLeft: function() { alert('swiped left') },
 swipeRight: function() { alert('swiped right') }
 };
 
 var options = $.extend(defaults, options);
 
 if (!this) return false;
 
 return this.each(function() {
				  
				  var me = $(this)
				  
				  // Private variables for each element
				  var originalCoord = { x: 0, y: 0 }
				  var finalCoord = { x: 0, y: 0 }
				  
				  // Screen touched, store the original coordinate
				  function touchStart(event) {
				  //console.log('Starting swipe gesture...')
				  originalCoord.x = event.targetTouches[0].pageX
				  originalCoord.y = event.targetTouches[0].pageY
				  }
				  
				  // Store coordinates as finger is swiping
				  function touchMove(event) {
				  event.preventDefault();
				  finalCoord.x = event.targetTouches[0].pageX // Updated X,Y coordinates
				  finalCoord.y = event.targetTouches[0].pageY
				  }
				  
				  // Done Swiping
				  // Swipe should only be on X axis, ignore if swipe on Y axis
				  // Calculate if the swipe was left or right
				  function touchEnd(event) {
				  //console.log('Ending swipe gesture...')
				  var changeY = originalCoord.y - finalCoord.y
				  if(changeY < defaults.threshold.y && changeY > (defaults.threshold.y*-1)) {
				  changeX = originalCoord.x - finalCoord.x
				  
				  if(changeX > defaults.threshold.x) {
				  defaults.swipeLeft()
				  }
				  if(changeX < (defaults.threshold.x*-1)) {
				  defaults.swipeRight()
				  }
				  }
				  }
				  
				  // Swipe was started
				  function touchStart(event) {
				  //console.log('Starting swipe gesture...')
				  originalCoord.x = event.targetTouches[0].pageX
				  originalCoord.y = event.targetTouches[0].pageY
				  
				  finalCoord.x = originalCoord.x
				  finalCoord.y = originalCoord.y
				  }
				  
				  // Swipe was canceled
				  function touchCancel(event) { 
				  //console.log('Canceling swipe gesture...')
				  }
				  
				  // Add gestures to all swipable areas
				  this.addEventListener("touchstart", touchStart, false);
				  this.addEventListener("touchmove", touchMove, false);
				  this.addEventListener("touchend", touchEnd, false);
				  this.addEventListener("touchcancel", touchCancel, false);
				  
				  });
 };
 })(jQuery);
