$(document).ready(function() {

	var ua = navigator.userAgent.toLowerCase();
    var isAndroid = ua.indexOf("android") > -1;
    
    touch = {
    	startX: 0,
    	startY: 0,
    	lastX: 0,
    	lastY: 0,
    	startTime: 0
    };
    
    var activeContainer;

	if(window.Touch || isAndroid) {

    	$('.container').bind('touchstart', onTouchStart);
    	$('.container').bind('touchmove', onTouchMove);
    	$('.container').bind('touchend', onTouchEnd);
    	
	}
	
	/* touch callbacks */
	
	function onTouchStart(e) {
       //alert("onTouchStart " + e.pageX);
       
		//e.preventDefault();
		var t = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
		var elm = $(this).offset();
		var x = t.pageX - elm.left;
		var y = t.pageY - elm.top;
		if(x < $(this).width() && x > 0){
		  if(y < $(this).height() && y > 0){
				  touch.startX = touch.lastX = t.pageX;
				  touch.startY = touch.lastY = t.pageY;
		  }
		}

		touch.startTime = new Date().getTime();
    }

    function onTouchMove(e) {
        //alert("onTouchMove " + e);
        
        var $scroller = $('#fp_thumbScroller');
        
		e.preventDefault();
		var t = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
		var elm = $(this).offset();
		var x = t.pageX - elm.left;
		var y = t.pageY - elm.top;
		if(x < $(this).width() && x > 0){
		if(y < $(this).height() && y > 0){
			  
			  var difX = touch.lastX - t.pageX;
			  touch.lastX = t.pageX;
			  
			  var currentScrollLeft = parseFloat($scroller.scrollLeft(), 10);
			  
			  $scroller.scrollLeft(currentScrollLeft+difX);
		}
		}
		
		
    }

    function onTouchEnd(e) {
    	
    	//glCheckClosest();
    
    	var $scroller = $('#fp_thumbScroller');
    	var slideDuration = (new Date().getTime() - touch.startTime);
    	
    	//e.preventDefault();
		var t = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
		var elm = $(this).offset();
		var x = t.pageX - elm.left;
		var y = t.pageY - elm.top;
		if(x < $(this).width() && x > 0){
		  if(y < $(this).height() && y > 0){
			var totalDifX = t.pageX - touch.startX;
			
			var momentumLeft = Math.round(totalDifX/(slideDuration/200));
			
			// if move was short or had long duration, dont do momentum
			if(Math.abs(momentumLeft) < 50) return;
			
			// if sliding with momentum, dont open photo
			e.preventDefault();
			e.stopPropagation();
			
			var currentScrollLeft = parseFloat($scroller.scrollLeft(), 10);
			var newScroll = currentScrollLeft - momentumLeft;
			//console.log("diff: "+totalDifX + ', momentum: '+momentumLeft + ', duration: '+slideDuration);
			
			//$scroller.scrollLeft(currentScrollLeft+100);
			
			// make momentum animation
			$scroller.stop().animate({
				'scrollLeft': ''+newScroll+'px'
				}, (slideDuration), 'easeOutExpo');
			
		  }
		}
    	

    	
    }
    
    function touchFromEvent(e) {
		var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
		var elm = $(this).offset();
		var x = touch.pageX - elm.left;
		var y = touch.pageY - elm.top;
		if(x < $(this).width() && x > 0){
			if(y < $(this).height() && y > 0){
				return touch;			
			}
		}
    }
});
			
			
			
