$(function() {
	// base animation easing
	jQuery.easing.def = "easeInOutExpo";

	//the loading image
	var $loader		= $('#st_loading');
	//the ul element 
	var $list		= $('#st_nav');
	//the current image being shown
	var $currImage 	= $('#st_main').children('img:first');
	
	//let's load the current image 
	//and just then display the navigation menu
	$('<img>').load(function(){
		$loader.hide();
		$currImage.fadeIn(3000, function(){
			$list.animate({'left':'0px'},1500);
		});
	}).attr('src',$currImage.attr('src'));
	
	//calculates the width of the div element 
	//where the thumbs are going to be displayed
	buildThumbs();
	
	function buildThumbs(){
		$list.children('li.album').each(function(){
			var $elem 			= $(this);
			var $thumbs_wrapper = $elem.find('.st_thumbs_wrapper');
			var $thumbs 		= $thumbs_wrapper.children(':first');
			//each thumb has 180px and we add 3 of margin
			var finalW 			= $thumbs.find('img').length * 183;
			$thumbs.css('width',finalW + 'px');
			//make this element scrollable
			makeScrollable($thumbs_wrapper,$thumbs);
		});
	}
	
	//clicking on the menu items (up and down arrow)
	//makes the thumbs div appear, and hides the current 
	//opened menu (if any)
	$list.find('.st_arrow_down').live('click',function(){
		var $this = $(this);

		// hides thumbnails when moving the mouse over the thumblist
		hideThumbs();
		// simulates click on the closebio button, so we can be sure that the bio is closed
		$('.close').click();
		
		$this.addClass('st_arrow_up').removeClass('st_arrow_down');
		var $elem = $this.closest('li');
		$elem.addClass('current').animate({'height':'170px'},200);
		var $thumbs_wrapper = $this.parent().next();
		$thumbs_wrapper.show(200);
	});

	$list.find('.st_arrow_up').live('click',function(){
		var $this = $(this);
		$this.addClass('st_arrow_down').removeClass('st_arrow_up');
		hideThumbs();
	});
	
	//clicking on a thumb, replaces the large image
	$list.find('.st_thumbs img').bind('click',function(){
		var $this = $(this);		
		$loader.show();      
		
		$('<img class="st_preview"/>').load(function(){
			var $this = $(this);
			var $currImage = $('#st_main').children('img:first');
			$this.insertBefore($currImage);
			$loader.hide();

			$currImage.fadeOut(2000,function(){
				$(this).remove();
			});

		}).attr('src',$this.attr('alt'));

	}).bind('mouseenter',function(){
		$(this).stop().animate({'opacity':'1'});
	}).bind('mouseleave',function(){
		$(this).stop().animate({'opacity':'0.7'});
	});
	
	//function to hide the current opened menu
	function hideThumbs(){
		$list.find('li.current')
			 .animate({'height':'50px'},400,function(){
				$(this).removeClass('current');
			 })
			 .find('.st_thumbs_wrapper')
			 .hide(200)
			 .andSelf()
			 .find('.st_link span')
			 .addClass('st_arrow_down')
			 .removeClass('st_arrow_up');
	}

	// make the thumbs dissapear when you move the mouse out
	$(".st_thumbs").bind("mouseleave",function(e){
		hideThumbs();
	})

	//makes the thumbs div scrollable
	//on mouse move the div scrolls automatically
	function makeScrollable($outer, $inner){
		var extra = 800;
		//Get menu width
		var divWidth = $outer.width();
		//Remove scrollbars
		$outer.css({
			overflow: 'hidden'
		});
		//Find last image in container
		var lastElem = $inner.find('img:last');
		$outer.scrollLeft(0);
		//When user move mouse over menu
		$outer.unbind('mousemove').bind('mousemove',function(e){
			var containerWidth = lastElem[0].offsetLeft + lastElem.outerWidth() + 2*extra;
			var left = (e.pageX - $outer.offset().left) * (containerWidth-divWidth) / divWidth - extra;
			$outer.scrollLeft(left);
		});
	}

	$('.about').click(function(){
		$('.close').click();
		$('.bio').slideDown(500);
		$(this).addClass("current");
		
	});

	$('.availability').click(function(){
		$('.close').click();
		$('.calendar').slideDown(500);
		$(this).addClass("current");
	});

	    
	$('.close').click(function(){
		if ($('.about').hasClass("current")) {
			$(".about").removeClass("current");
			$('.bio').slideUp(500);			
		};  
		if ($('.availability').hasClass("current")) {
			$(".availability").removeClass("current");		
			$('.calendar').slideUp(500);
		}
	});
});
