ajouteScript("/core/javascript/getElementsByClassName-1.0.1.js");

/* Le principe des sous-menus multiples est d'utiliser des ID speciaux de 
	la forme suivante:
	- menu1, menu2, menu3... pour les entrees principales, puis
	- menu1.1, menu1.2, menu1.3 pour le sous-menu attache a 'menu1', puis
	- menu1.1.1, menu1.1.2, menu1.1.3... pour le sous-menu d'ordre 2 attache 
	          au sous-menu menu1.1, etc...
	
	Quand on affiche un sous-menu, tous les sous-menus intermediaires 
	conduisant a ce sous-menus sont affiches et seulement ceux-la (c.a.d. on 
	ne peut pas ouvrir simultanement plusieurs branches de l'arborescence. 
	Si on sort de cette chaine de sous-menus, on retire tous les sous-menus 
	precedemment affiches.  
	Pour cela, on conserve les noms des sous-menus affiches dans un tableau 
	sousmenu[] qu'on met a jour au fil des demandes. */
	
	var sousmenu = new Array()
	
	/* fonctions pour retirer ou montrer un bloc */
	
	function retire() {  //le nombre d'arguments est variable
		var id			  = null;
		var element_style = null;
		var element = null;
		
	
		for(var i=0;i<arguments.length;i++) {
			element_style = null;
			element = null;
			id 			  = arguments[i];
			var dernier		  = arguments.length - 1;
			
			if (i == 0) { // premier argument ==> le cookie
				
				var lastNum = getAggloCookie(id);

				if (lastNum != null){
					var tabMenu = lastNum.split("#");
				} else {
					var tabMenu = "";	
				}
			
			} else {
			
				if (document.getElementById) {
					element = document.getElementById(id);
					element_style = element.style;
				} else if (document.all) {
					element = document.all[id];
					element_style = element.style;
				} 
				element.parentNode.className = element.parentNode.className.replace(" bloc_en_cours", "");
				
				if(element_style) {
					//alert('retire : ' + id + " " + lastNum + " " + arguments.length);
						
					if (!js_in_array(id, tabMenu) || arguments.length == 2){
						element_style.display="none";
					} else {
						element_style.display="block";	
					}
				}
			}
		}
	}
	
	
	function montre(id) {
		var element_style = null;
		var element = null;	
		
		if (document.getElementById) {
			element = document.getElementById(id);
			element_style = element.style;
		} else if (document.all) {
			element = document.all[id];
			element_style = document.all[id].style;
		} 
		element.parentNode.className += " bloc_en_cours";	
		if(element_style){
			element_style.display="block";
		}
	}
	
	
	/* Affichage du sous-menu 'id' */
	
	function affiche(id, cookie) {
		//alert(id);
		// Creation cookie
		if (id && id.length >= 5){
			lastNum = getAggloCookie(cookie); // tous les liens qui ne sont pas des feuilles
			
			//if (lastNum != ""){
			//	setAggloCookie(lastNum, id);
			//	alert(lastNum);
			//} else {
				setAggloCookie(cookie, id);
			//	alert(cookie);
			//}
			//alert(getAggloCookie("aggloMenuNumIntranet"));			
			
		}	
			
		/* Si on a reclique la derniere entree, on replie le sous-menu correspondant*/ 
		
		if (id == sousmenu[sousmenu.length-1]) { 
			retire(cookie, id); 
			sousmenu.length --;
			return;
		}
		
		/* on retire les differents sous-menus qui ne sont pas dans la nouvelle 
		arborescence demandee.  Si on a ouvert menu1 :
		- l'ouverture de menu2 doit entrainer la fermeture de menu1
		- l'ouverture de menu1.1 ne doit pas entrainer cette fermeture 
		Pour cela, on va enlever les deux derniers caracteres de 'id' et
		comparer aux elements stockes dans le tableau des elements ouverts sousmenu[],
		en retirant un par un tous les derniers blocs ouverts, jusqu'a ce qu'on 
		ait la meme chose ou qu'il ne reste plus rien.*/
		
		var id1 = id.substring(0,id.length-2);
		while (sousmenu.length != 0 && id1 != sousmenu[sousmenu.length-1]) {
			retire(cookie, sousmenu[sousmenu.length-1]);  sousmenu.length -- ;
		}
		
		
		/* On ouvre le bloc demande, sauf si id est vide */
		if (id) { 
			montre(id); 
			sousmenu[sousmenu.length]=id;
		}  
	
	
	}
	
	/**
	Cette fonction recherche dans une chaîne expr toutes les occurrences d'une sous-chaîne a 
	et les remplace par une sous-chaîne b.
	Ce script fonctionne pour toutes les versions de navigateurs au-delà de 3.
	**/
	
	function remplace(expr,a,b) {
      var i=0
      while (i!=-1) {
         i=expr.indexOf(a,i);
         if (i>=0) {
            expr=expr.substring(0,i)+b+expr.substring(i+a.length);
            i+=b.length;
         }
      }
      return expr
   }

	/**
		Teste si l'element existe dans le tableau
	**/
	function js_in_array(the_needle, the_haystack){
		
    	var the_hay = the_haystack.toString();
        if(the_hay == ''){
            return false;
        }
       // alert('Hay ' + the_hay + 'Needle ' + the_needle + '.');
  
        var the_pattern = new RegExp(the_needle, 'g');
        var matched = the_pattern.test(the_haystack);
        
        return matched;
    }
	
	function getMenuOfLien(lien){
		var objTmp = lien;
		
		while((objTmp.className != "ordre_0")&&(objTmp != null)){
			objTmp = objTmp.parentNode;
		}
		
		return objTmp;
	}
	function highlightLienEncours(){
		var tabMenu = document.getElementsByClassName("lien_en_cours");
		for (var i= 0; i < tabMenu.length; i++){
			var Elt = tabMenu[i];
			var objMenu = getMenuOfLien(Elt);
			
			objMenu.className += " bloc_en_cours";
		}
	}
