// Largeur fixée des menus de niveau 2. Si = 0, la taille sera celle des menus 
// de niveau 1
var menu2_width = 0;

//-- Une fois l'objet window chargé, la fonction gereMenus est appelée
Event.observe(this,'load',gereMenus);
var timeout;
var timeout2;
var height_container_menus;

//-- Cache tous les div surgissants
//-- Appelle la fonction affiche_div après un click sur un élément de classe "lien_contact"
function gereMenus(event){
	
    infos_menus_1 = gereMenus_1();
    //alert(Object.inspect(infos_menus_1));
	 gereMenus_2(infos_menus_1);
    
}
/* 
/* Positionne les menus de niveau 1 et renvoie un tableau sous la forme :
/* position - largeur - id
*/

function gereMenus_1(){

	/* largeur du conteneur de tous les menus de niveau 1 : */
    container_menus = $('content_menus');
		var dimensions = container_menus.getDimensions();
		width_container_menus 	= dimensions.width;
    height_container_menus 	= dimensions.height;
    
    /* Nombre et largeur des menus de niveau 1 */
    count_menus1 = $$('.mjs_menu1,.mjs_menu1_selected').length;
    width_menus_1	= Math.floor(width_container_menus/count_menus1);
    
    //création d'un tableau pour tous les niveau 1
    var info_menus_1 = new Array();
    
    //création du tableau pour chaque niveau 1
     var info_menu_1 = new Array();
     
    /*Positionnement des menus de niveau 1 */
    position  = 0;
    cpt 			=	0;
    
    /* Classement des menus en fonction de leur id ****************************/
    var menus_1_order = new Array();
    menus_1_order     = $$('.mjs_menu1,.mjs_menu1_selected');
    ordered = false;
    
    // Tri à bulles
    while (!ordered){
      ordered = true;
      for(i=0; i<menus_1_order.length; i++){
        if(i < (menus_1_order.length-1) && (menus_1_order[i].id > menus_1_order[i+1].id)){
          tmp = menus_1_order[i];
          menus_1_order[i] = menus_1_order[i+1];
          menus_1_order[i+1] = tmp;
          ordered = false;
        }         
	     }
    }

    menus_1_order.each(function(menu_1){    
       
       menu_1.style.left 	= position+"px";
       menu_1.style.width = width_menus_1+"px";

       info_menu_1[0] 	= position;
       info_menu_1[1] 	= width_menus_1;
       info_menu_1[2] 	= menu_1.id;

	    position += width_menus_1; 
       
       info_menus_1[cpt] = info_menu_1.clone();
       cpt ++;
	});

   return info_menus_1;
}
function gereMenus_2(infos_menus_1){
	/* parcours des menus de niveau 1 : */

   infos_menus_1.each(function(menu_1) {
   		 
      /* S'il existe un élément d'id, menu1, menu1_0 existe peut être ... */
    	if ($(menu_1[2]) != null && $(menu_1[2]+"_0") != null && $("link_"+menu_1[2]) != null){
        
      	$(menu_1[2]+"_0").absolutize();
        $(menu_1[2]+"_0").style.left= "0px";
        
        /* Positionnement vertical */
        $(menu_1[2]+"_0").style.top = height_container_menus+"px";
        
        /* 
        /* Largeur des menus de niveau 2 : Le comportement est le suivant : 
        /*  . soit menu2_width est fixé et dans ce cas, ce sera la taille des 
        /*    menus sauf quand le texte est trop grand (cas de textes nowrap)
        /*  . Soit menu2_width est à 0 et dans ce cas, si le texte est suffisamment
        /*    petit, la largeur est celle des menus de niveau 1
        */
        
        dim = $(menu_1[2]+"_0").getDimensions();
				$width_this_menu2 = dim.width;
        
       	if (menu2_width == 0) {
        	if ($width_this_menu2 < menu_1[1]) $(menu_1[2]+"_0").style.width = menu_1[1]+"px";        
        }
        else if ($width_this_menu2 < menu2_width) $(menu_1[2]+"_0").style.width = menu2_width+"px";
        
        /*
        /* Gestion des événements au survol des liens de niveau 1 et 
        /* des rubriques de niveau 2
        */
        Event.observe($("link_"+menu_1[2]),'mouseover',gereOverMenu1);
        Event.observe($(menu_1[2]),'mouseout',gereOutMenu1);
        Event.observe($(menu_1[2]+"_0"),'mouseout',gereOutMenu2);
        Event.observe($(menu_1[2]+"_0"),'mouseover',gereOverMenu2);
        
      	
      }
   })
}

function gereOverMenu1(event){
 
  /* Effacement de toutes les rubriques de niveau 2 sauf celui concerné par l'événement*/
  if (timeout2) clearTimeout(timeout2);
  if (timeout) clearTimeout(timeout);
  id_menu2_to_preserve = Event.findElement(event,'li').id+"_0";
  msg = '';

  $$('.mjs_menu2,.mjs_menu2_selected').each(function(menu2){
  
    if(menu2.id != id_menu2_to_preserve) {
      menu2.hide();//Pour l'instant ça empêche de stabiliser le menu 2 qui est apparu
      msg = msg+" "+menu2.id+" effacé ";
    }   
  });
  //alert(msg);
  
  /* affichage des rubriques de niveau 2 concernées */
	element_id = Event.findElement(event,'li').id;

  /* Pour ne faire apparaitre que les menus 2, je teste la longeur de l'id :  */
  /* mjs_menu0 fait exactement 9 caractères : ATTENTION, Ca ne marchera que   */
  /* jusqu'à 10 menus de niveau 1, ce qui n'est pas terrible ...              */
  
   if (element_id.length == 9) {
   	if ($(element_id+"_0") != null){
   		if($(element_id+"_0").style.visibility	!= "visible") {
        $(element_id+"_0").style.visibility	= "visible";
        $(element_id+"_0").show();
      }else $(element_id+"_0").show();
   	}
   } 
}

function gereOutMenu1(event){
	element_id = Event.element(event).id;
   if (element_id.length == 9) {
   	if ($(element_id+"_0") != null && $(element_id+"_0").visible()){
      if (timeout) clearTimeout(timeout);
   		timeout2 = window.setTimeout(function() {$(element_id+"_0").hide();}, 200);
   	}
   }
}

function gereOutMenu2(event){
	container_li = Event.findElement(event,'ul');
   if (timeout2) clearTimeout(timeout2);
  	timeout = window.setTimeout(function() {
 	container_li.hide(); }, 200);
}

function gereOverMenu2(event){
	if (timeout) clearTimeout(timeout);
   if (timeout2) clearTimeout(timeout2);

    
	container_li = Event.findElement(event,'ul');
   $$('.mjs_menu2').each(function(m2){
    		if(m2.id != container_li.id && m2.visible()) m2.hide();
  
    })   
 	container_li.show();

}

