/*
* fonction permettant de trouver les positions d'une balise
*/
jQuery.fn.extend({
   findPos : function() {
       obj = $(this).get(0);
       if(obj){
	       var curleft = obj.offsetLeft || 0;
	       var curtop = obj.offsetTop || 0;
	       while (obj = obj.offsetParent) {
	                curleft += obj.offsetLeft
	                curtop += obj.offsetTop
	       }
	       return {x:curleft,y:curtop};
       }else{
    	   return false;
       }
   }
});

/* fonction exécutée lors du chargement de la page
--> gère le sous menu + le menu vertical qui reste fixe sur la page

-->la taille du sous menu est ajustable manuellement pour chaque lien du menu :
		-> modification des marges dans la fonctin showSousMenu()
		-> décallage vers la droite possible grace à initiSousMenu(494); par exemple
*/
$(document).ready(function(){
	
	
	
	var largeurLien = 160;//largeur moyenne d'un lien du sous menu (en px)
	var isMenuOpen = 0;
	var nbLiens = 0;
	var isPositionMenuRight = 0;
	
	
	initiSousMenu(0);
	
	//on repositionne le sous menu si on modifie la taille de la fenetre
	$(window).bind('resize', function() {initiSousMenu(0);initiMenuVertical();} );
	
	
	/*pour chaque lien du menu, on associe un évenement hover() */
	$("#main_menu li").each(function(i){
		
		$(this).hover(	function () 
					{
						$("#sous_menu ul").hide();//on cache tous les sous menu
						$("#sous_menu #sous_menu_"+i).show();// on affiche uniquemetn le sous menu en question
						
						nbLiens = $("#sous_menu #sous_menu_"+i+" li a").size();
						
						//affichage du sous menu si il contient des liens
						if(nbLiens > 0)
						{
						
							/*re-positionnement du menu a gauche, si il a été décalé a droite*/
							if(isPositionMenuRight == 1)
							{
								initiSousMenu(0);	
								isPositionMenuRight = 0;
							}
							
							/*positionnement du menu décallé vers la droite, pour certains liens du menu*/
							if(i == 4)
							{
								initiSousMenu(144);
								isPositionMenuRight = 1;
							}
							
					
							/*affichage du sous menu*/
							showSousMenu(nbLiens,i,largeurLien);
							isMenuOpen = 1;
						}
						else
						{
							hideSousMenu();
						}
					}, 
					function () 
					{
						//hideSousMenu();
					}
		);
	});
	
	
	/*détermine la zone  (associées  à la position de la souris de la souris) dans laquelle le sous menu se ferme*/
	$().mousemove(function(e){
		
		if(e.pageY < 50 || e.pageY > 115)
		{
			if(isMenuOpen == 1)
			{
				hideSousMenu();
				isMenuOpen = 0;
			}
		}
	});

	
	initiMenuVertical();
	
});



/*
initialise la position du sous menu, par defaut le sous menu est placé jsute en dessous du menu, en partant par la gauche du menu.
left_decalage permet de décaller horizontalement vers la droite, la position initiale du menu --> utile pour les derniers sous menu
*/
function initiSousMenu(left_decalage){

	menu_content_pos = $('#menu_content').findPos();
	$("#sous_menu").css({width:"0px",left:(menu_content_pos.x+left_decalage)+"px", top:(menu_content_pos.y+20)+"px",display:"none"});
}



function initiMenuVertical(){

	/*positionnement du menu vertical de gauche*/
	menu_content_pos = $('#contenu_content').findPos();
	$("#menu_fix").css({left:(menu_content_pos.x)+"px"});
	
/*	menuYloc = parseInt($(name).css("top").substring(0,$(name).css("top").indexOf("px")));
	offset = menuYloc+$(document).scrollTop()+"px";
	$(name).animate({top:offset },{duration:500,queue:false});*/
	
}


/*affiche le sous menu a partir de la gauche de l'ecran*/
function showSousMenu(nbLiens,i,largeurLien){
	
	var marge = 0;
	
	//ajouter de la marge ici pour certains sous menus
	if(i == 0)
		marge = 0;
	if(i == 1)
		marge = 0;
	if(i == 2)
		marge = 250;
	if(i == 3)
		marge = -169;
	if(i == 4)
		marge = -153;
		
	
	
	//calcul de la largeur du sous menu
	var largeur = nbLiens * largeurLien + marge;
	
    $("#sous_menu").animate( { height:"20px" }, { queue:false, duration:300 } )
		.animate( { width: largeur+"px" }, { queue:false, duration:300 } );
}


function hideSousMenu(){

    $("#sous_menu").animate( { height:"0px" }, { queue:false, duration:300 } )
		.animate( { width:"0px" }, { queue:false, duration:300 } );
}
