$(function() {
	//all the menu items
	var $items 		= $('#cc_menu .cc_item');
	//number of menu items
	var cnt_items	= $items.length;
	//if menu is expanded then folded is true
	var folded		= false;
	//timeout to trigger the mouseenter event on the menu items
	var menu_time;
	/**
	bind the mouseenter, mouseleave to each item:
	- shows / hides image and submenu
	bind the click event to the list elements (submenu):
	- hides all items except the clicked one, 
	and shows the content for that item
	*/
	$items.unbind('mouseenter')
		  .bind('mouseenter',m_enter)
		  .unbind('mouseleave')
		  .bind('mouseleave',m_leave)
		  .find('.cc_submenu > ul > li')
		  .bind('click',function(){
		var $li_e = $(this);
			  //if the menu is already folded,
			  //just replace the content
		if(folded){
			hideContent();
			showContent($li_e.attr('class'));
		}	
			  else //fold and show the content
			fold($li_e);
	});
	
	/**
	mouseenter function for the items
	the timeout is used to prevent this event 
	to trigger if the user moves the mouse with 
	a considerable speed through the menu items
	*/
	function m_enter(){
		var $this 	= $(this);
		clearTimeout(menu_time);
		menu_time 	= setTimeout(function(){
		//img
		$this.find('img').stop().animate({'top':'0px'},400);
		$this.find('.cc_title').stop().animate({'top':'457px'},400);
		//cc_submenu ul
		$this.find('.cc_submenu > ul').stop().animate({'height':'83px'},400);
		},200);
	}
	
	//mouseleave function for the items
	function m_leave(){
		var $this = $(this);
		clearTimeout(menu_time);
		//img
		$this.find('img').stop().animate({'top':'-600px'},400);
		$this.find('.cc_title').stop().animate({'top':'270px'},400);
		//cc_submenu ul
		$this.find('.cc_submenu > ul').stop().animate({'height':'0px'},400);
	}
	
	//back to menu button - unfolds the menu
	$('#cc_back').bind('click',unfold);
	
	
	/**
	hides all the menu items except the clicked one
	after that, the content is shown
	*/
	function fold($li_e){
		var $item		= $li_e.closest('.cc_item');
		
		var d = 100;
		var step = 0;
		$items.unbind('mouseenter mouseleave');
		$items.not($item).each(function(){
			var $item = $(this);
			$item.stop().animate({
				'marginLeft':'-231px'
			},d += 200,function(){
				++step;
				if(step == cnt_items-1){
					folded = true;
					showContent($li_e.attr('class'));
				}	
			});
		});
	}
	
	/**
	shows all the menu items 
	also hides any item's image / submenu 
	that might be displayed
	*/
	function unfold(){
		$('#cc_content').stop().animate({'left':'-693px'},600,function(){
			var d = 100;
			var step = 0;
		$items.each(function(){
				var $item = $(this);
				
				$item.find('img')
					 .stop()
					 .animate({'top':'-600px'},200)
					 .andSelf()
					 .find('.cc_submenu > ul')
					 .stop()
					 .animate({'height':'0px'},200)
					 .andSelf()
					 .find('.cc_title')
					 .stop()
					 .animate({'top':'270px'},200);								 
					 
				$item.stop().animate({
				'marginLeft':'0px'
				},d += 200,function(){
					++step;
					if(step == cnt_items-1){
						folded = false;
						$items.unbind('mouseenter')
							  .bind('mouseenter',m_enter)
							  .unbind('mouseleave')
							  .bind('mouseleave',m_leave);
						
						hideContent();
					}		  
				});
			});
		});
	}
	
	//function to show the content
	function showContent(idx){
		$('#cc_content').stop().animate({'left':'231px'},200,function(){
			$(this).find('.'+idx).fadeIn();
		});
	}
	
	//function to hide the content
	function hideContent(){
		$('#cc_content').find('div.block').hide();
	}
	
});
