function Swipe() {
	
	document.body.addEventListener("touchstart", OnTouchStart, false);
	document.body.addEventListener("touchmove", OnTouchMove, false);
	document.body.addEventListener("touchend", OnTouchEnd, false);
	document.body.addEventListener("touchcancel", OnTouchCancel, false);

	var startX
	var startY 
	var startTime 
	var deltaX
	var deltaY 
	var deltaT
	var endTime
	this.callback;
	
	var scope = this;
		 
	function OnTouchStart(event)		
	{			
		startX = event.changedTouches[0].clientX
		startY = event.changedTouches[0].clientY
		startTime = (new Date).getTime()
		deltaX = 0
		deltaY = 0
		deltaT = 0		
	}
	
	function OnTouchEnd(event)
	{
		 updateChanges();
	}
			
	function OnTouchMove(event)
	{		
		updateChanges();
		var absX = Math.abs(deltaX);
		var absY = Math.abs(deltaY);
						
		// Check for swipe
		if (absX > absY && (absX > 35) && deltaT < 1000) {
			(deltaX < 0) ? scope.callback("left") : scope.callback("right")
		} else if (absY > 1) {
		}
		
		//Custom code for swipe up and down
		if (absY > absX && (absY > 35) && deltaT < 1000) {
		  (deltaY < 0) ? scope.callback("up") : scope.callback("down")
		} else if (absX > 1) {
		}
	}
	
	function OnTouchCancel(event)
	{
	}
	
	function updateChanges(){
		var first = event.changedTouches[0] || null;
		deltaX = first.pageX - startX;
		deltaY = first.pageY - startY;
		deltaT = (new Date).getTime() - startTime;
	}

	return this;
}
