// ---------------------------------------------
// =initSwipe [Function - jQuery plugin]
// ---------------------------------------------
(function($) {
	$.fn.initSwipe = function(topCallback, rightCallback, bottomCallback, leftCallback)
	{
		var TOUCH_DISTANCE = 150;
		
		var _topCallback = topCallback;
		var _rightCallback = rightCallback;
		var _bottomCallback = bottomCallback;
		var _leftCallback = leftCallback;
		
		var _startX = 0;
		var _startY = 0;
		var _startTime = 0;
		var _delatX = 0;
		var _delatY = 0;
		var _delatT = 0;
		
		this.bind('touchstart', onTouchStart);
		this.bind('touchmove', 	onTouchMove);
		this.bind('touchend', 	onTouchEnd);
		
		function onTouchStart(event)
		{
			var e = event.originalEvent;
			_startX = e.changedTouches[0].clientX;
			_startY = e.changedTouches[0].clientY;
				
			_startTime = (new Date).getTime();
			_delatX = 0;
			_delatY = 0;
			_delatT = 0;
		};
		
		function onTouchMove(event)
		{
			updateChanges();
			var absX = Math.abs(_deltaX);
			var absY = Math.abs(_deltaY);
			
			// Swipe left || right
			if(absX > absY) event.preventDefault();
			if (absX > absY && (absX > TOUCH_DISTANCE) && _deltaT < 1000) {
				(_deltaX < 0)
					? _leftCallback()
					: _rightCallback();
			} else if (absY > 1) {
			}
	
			// Swipe up || down
			/*if (absY > absX && (absY > TOUCH_DISTANCE) && _deltaT < 1000) {
				(_deltaY < 0) 
					? alert('UP')
					: alert('DOWN');
			} else if (absX > 1) {
			}*/
		};
		
		function onTouchEnd(event) {
			updateChanges();
		};
		
		function updateChanges()
		{
			var first = event.changedTouches[0] || null;
			_deltaX = first.pageX - _startX;
			_deltaY = first.pageY - _startY;
			_deltaT = (new Date).getTime() - _startTime
		};
	}
})(jQuery);
