/* jquery easing */
jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return -(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e},easeOutElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return g*Math.pow(2,-10*h)*Math.sin((h*k-i)*(2*Math.PI)/j)+l+e},easeInOutElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k/2)==2){return e+l}if(!j){j=k*(0.3*1.5)}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}if(h<1){return -0.5*(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e}return g*Math.pow(2,-10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j)*0.5+l+e},easeInBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}return i*(f/=h)*f*((g+1)*f-g)+a},easeOutBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}return i*((f=f/h-1)*f*((g+1)*f+g)+1)+a},easeInOutBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}if((f/=h/2)<1){return i/2*(f*f*(((g*=(1.525))+1)*f-g))+a}return i/2*((f-=2)*f*(((g*=(1.525))+1)*f+g)+2)+a},easeInBounce:function(e,f,a,h,g){return h-jQuery.easing.easeOutBounce(e,g-f,0,h,g)+a},easeOutBounce:function(e,f,a,h,g){if((f/=g)<(1/2.75)){return h*(7.5625*f*f)+a}else{if(f<(2/2.75)){return h*(7.5625*(f-=(1.5/2.75))*f+0.75)+a}else{if(f<(2.5/2.75)){return h*(7.5625*(f-=(2.25/2.75))*f+0.9375)+a}else{return h*(7.5625*(f-=(2.625/2.75))*f+0.984375)+a}}}},easeInOutBounce:function(e,f,a,h,g){if(f<g/2){return jQuery.easing.easeInBounce(e,f*2,0,h,g)*0.5+a}return jQuery.easing.easeOutBounce(e,f*2-g,0,h,g)*0.5+h*0.5+a}});

jQuery(function ($) {
	
	///////////////////////////////////////////////////
	//
	//  Variables
	//
	///////////////////////////////////////////////////
	
	// Return boolean TRUE/FALSE
	function isThisiPhone(){
		return (
			(navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))
		);
	}
	
	var $doc 								= $(document);
	var $win 								= $(window);
	var $body								= $('html, body');
	//var $headerWrapper 			= $('#header_wrapper');
	//var $header							= $('#header');
	//var $headerTable				= $('#header_table');
	var $content 						= $('#content');
	var $assetWrapper 			= $('#assets');
	var $assets 						= $('.asset');
	var $navArrows 					= $('.asset-nav-arrow');
	var $prevArrow 					= $('.asset-nav-arrow.prev');
	var $nextArrow 					= $('.asset-nav-arrow.next');
	var $assetBackLink 			= $('.asset-back-link');
	//var $headerPlaceholder 	= $('<div id="header_placeholder"></div>');
	var startLine 					= $content.offset().left;
	var arrow 							= {'left': 37, 'up': 38, 'right': 39, 'down': 40 };
	var assetLen 						= $assets.length;
	var isiPhone						= isThisiPhone();
	var prevPossition					= 0;
	var ASSET_HEIGHT 				= 450;
	var $linkbox 					= $('.boxlink');
	//headerTable
	
	///////////////////////////////////////////////////
	//
	//  Action
	//
	///////////////////////////////////////////////////
	function isThisiPhone(){
		return (
			(navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))
		);
	}


	// Scroll to any given position //
	function scrollTo(position){
		$body.stop().animate({ scrollLeft: position }, 'slow', 'easeInOutExpo');
	}
	
	// Select Asset //
	function selectAsset(typeOrID){
		if(!isiPhone){
		var $asset = false;
		var $selectedAsset = $('.asset.selected');
		var selectedIndex = $selectedAsset.index('.asset');
		
		if(!$selectedAsset.length) return false;
		
		// get asset by type
		if(typeOrID == 'prev'){
			if(selectedIndex == 0) return false;
			var index = selectedIndex - 1;
			var $asset = $($assets.get(index));
		}
		else if(typeOrID == 'next'){
			if(selectedIndex + 1 == assetLen) return false;
			var index = selectedIndex + 1;
			var $asset = $($assets.get(index));
		}
		else if(typeOrID != null && typeOrID != undefined){
			var $asset = $($assets.get(typeOrID));
			
		}
		else {
			return false;
		}
		
		if($asset.length){
			var assetLeft = $asset.offset().left;
			var goToPos = assetLeft - startLine;
			prevPossition = goToPos;
			scrollTo(goToPos);
		}
		}
	}
	
	
	
	// Scroll back to beginning //
	$assetBackLink.click(function(event){
		event.preventDefault();
		scrollTo(0);
		return false;
	});
	

	
	// Manage Selected Asset //
	$doc.bind('asset:selected', function(event, ui){
	if(!isiPhone){
		var index = ui.index;
		var $asset = $($assets.get(index));
		
		// Select the asset //
		$assets.removeClass('selected');
		$asset.addClass('selected');
		
		// Manage Arrows //
		
			if(index == 0){
				$prevArrow.hide();
				$nextArrow.show();
			}
			else if (index == (assetLen - 1)){
				$prevArrow.show();
				$nextArrow.hide();
			}
			else {
				$prevArrow.show();
				$nextArrow.show();
			}
		
	}
	});
	
	// Scroll to asset when clicked //
	$assets.click(function(){
		if(!isiPhone){				   
		
			
		
		var $asset = $(this);
		 
			
		var assetLeft = $asset.offset().left;
		
		var goToPos = assetLeft - 140;
		
		
		if (prevPossition != goToPos){
			prevPossition = goToPos;
			scrollTo(goToPos);
			}
		else {
			prevPossition = goToPos;
			selectAsset('next');
		}
		
		
		}
	});
	
	
	
	// Prev Arrows Click //
	$prevArrow.click(function(event){
		event.preventDefault();
		selectAsset('prev');
		return false;
	});
	
	// Next Arrows Click //
	$nextArrow.click(function(event){
		event.preventDefault();
		selectAsset('next');
		return false;
	});

	// Arrow Keys //
	$doc.keydown(function(event){
		if(!isiPhone){
		var keyCode = event.keyCode || event.which;
	  switch (keyCode) {
	    case arrow.left:
				event.preventDefault();
	      selectAsset('prev');
				return false;
	    break;
	    
			case arrow.right:
				event.preventDefault();
	      selectAsset('next');
				return false;
	    break;
	  }
		}
	});
	
	
	
	
	
	// Change Selected Asset on Scrolling //
	$win.bind('scroll', function(){
							 
		var winWidth = $win.width();
		var scrollPos = $doc.scrollLeft();
		var foundAsset = false;
		
		// loop over assets
		$assets.each(function(index){
							  
			var $asset = $(this);
			var assetPos = $asset.offset().left;
			
			// show asset caption if in viewable location
			if( !foundAsset && assetPos > (scrollPos + startLine - 30)){
				foundAsset = true;
				$doc.trigger('asset:selected', {'index': index});
			} 
		});
	}).trigger('scroll');
	
});
