/*
	Le menu est constitué de listes imbriquées.
	Chaque ligne possede un lien avec un id mlink_XX avec XX le numero de la section correspondante
	Il est suivi (s'il a des sous rubriques) d'une liste de ses sous-rubriques identifiée par mlist_XX
	
	On va donc attribuer a tout les liens commencant par mlink la fonction place_div() en mouseover.
	Cette fonction affiche la liste correspondante à la droite du lien
*/

//On défini les largeurs de chaque parties
arr_menu_width = new Array();
arr_menu_width[3] = "200px"; //Agitateurs
arr_menu_width[1] = "200px"; //Pompes
arr_menu_width[4] = "150px"; //Pneumatiques à membranes



function vd_node(node_name) {
	text = document.getElementById("espace_texte");
	node = document.getElementById(node_name);
	
	text.innerHTML+= "<br>Node : "+node_name;
	if (node.nodeName) text.innerHTML+= "<br>Node name : "+node.nodeName;
	if (node.getAttribute("id")) text.innerHTML+= "<br>Node id : "+node.getAttribute("id");
	//text.innerHTML+= "<br>Attributes : "+node.attributes;
	//text.innerHTML+= "<br>nbr Attributes : "+node.attributes.length;
	//vd_attr(node.attributes);
	if (node.nodeValue) text.innerHTML+= "<br>Node value : "+node.nodeValue;
	if (node.nodeType) text.innerHTML+= "<br>Node type : "+node.nodeType;
	//text.innerHTML+= "<br>Parent node : "+node.parentNode;
	var nbr = node.childNodes.length;
	text.innerHTML+= "<br>Node type : "+nbr;
	for (var i=0; i!=nbr; i++) text.innerHTML+= "<br>&nbsp;&nbsp;&nbsp;"+node.childNodes[i].nodeName+ " => "+node.childNodes[i].nodeValue;
	
	//text.innerHTML+= "<br>fisrt child : "+node.firstChild;
	//text.innerHTML+= "<br>last child : "+node.lastChild;
	//text.innerHTML+= "<br>previous sibling : "+node.previousSibling;
	//text.innerHTML+= "<br>next sibling : "+node.nextSibling;
	
	text.innerHTML+= "<br><br>Node value "+node.firstChild;
	
	
}
function vd_attr(attribute_node) {
	var nbr = attribute_node.length;
	for (var i=0; i!=nbr; i++) text.innerHTML+= "<br>&nbsp;&nbsp;&nbsp;"+attribute_node[i].nodeName+ " => "+attribute_node[i].nodeValue;
}

function vd(texte) {
	text = document.getElementById("espace_texte");
	text.innerHTML+= texte+"<br>\n";
}


//On va appliquer des fonctions sur les différents items du menu
window.onload = function() {
	SetOnMouseFunctions(document.getElementById("mlist_0"));
	/*
	var read = document.getElementsByTagName('a');
	for (var i=0;i<read.length;i++) {
		if (read[i].id.substring(0,6)=="mlink_") {
			var my_id = read[i].id.substring(6);
			read[i].onmouseover = function() { place_menu(my_id) };
			//read[i].onmouseout = remove_menu;
			//document.getElementById("espace_texte").innerHTML+= read[i].data+" ";			
		}
	}
	*/
		
}

text = document.getElementById("espace_texte");
	
//On va attribuer a tout les items du menu de ce niveau les fonctions qui vont avec
function SetOnMouseFunctions(node) {
	//Vide, on passe
	if (node==null) return;
	
	var nType, nValue, nSkip, nLink, nLinkIdNumber;
	//Je choppe tout les liens (premiers éléments) qui sont dans les différents li
	for (var i=0; i!=node.childNodes.length; i++) {
		nType = node.childNodes[i].nodeType;
		nValue = node.childNodes[i].nodeValue;
		//Je passe les noeuds vide de texte (Mozzy en rajoute lors des sauts de ligne)
		if (nType==3) {
			nSkip = true;
			//Je regarde chaque lettre, si c'est autre chose qu'un espace ou saut de ligne on continue
			for (var j=0; j!=nValue.length;j++) {
				if (nValue.charAt(j)!='\n' && nValue.charAt(j)!=' ' && nValue.charAt(j)!='\t') { nSkip = false; break;}
			}
			//Si ici c'est pas passé false c'est que que du vide, donc on passe au noeud suivant
			if (nSkip) continue;
		}
		
		
		//Je trouve le premier lien qui est dans la liste
		for (var j=0; j!=node.childNodes[i].childNodes; j++) {
			if (node.childNodes[i].childNodes[j].nodeName=="A") {
				nLink = node.childNodes[i].childNodes[j];
				break;
			}			
		}
		nLinkIdNumber = nLink.getAttribute("id").substring(6);
		//Je lui attribue un mousover qui affiche le sous-menu
		nLink.onmouseover = place_menu;
		nLink.onmouseout = remove_menu;
		//J'applique les sous-menus à ce sous menu
		SetOnMouseFunctions(document.getElementById("mlist_"+nLinkIdNumber));
		
	}

	
}

function HideMenuLvl(lvl) {
	var nLvl, nLvlSubType, nLvlSubValue, bLvlSubSkip, nLvlSubMenuToHide, iLvlSubLinkIdNumber;
	nLvl = document.getElementById("mlist_"+lvl);
	if (!nLvl) return;

	//Je choppe tout les liens (premiers éléments) qui sont dans les différents li
	for (var i=0; i!=nLvl.childNodes.length; i++) {
		//On passe en revue les éléments qui sont dans le ul (à priori des li)
		nLvlSubType = nLvl.childNodes[i].nodeType;
		nLvlSubValue = nLvl.childNodes[i].nodeValue;
		//Je passe les noeuds vide de texte (Mozzy en rajoute lors des sauts de ligne)
		if (nLvlSubType==3) {
			bLvlSubSkip = true;
			//Je regarde chaque lettre, si c'est autre chose qu'un espace ou saut de ligne on continue
			for (var j=0; j!=nLvlSubValue.length;j++) {
				if (nLvlSubValue.charAt(j)!='\n' && nLvlSubValue.charAt(j)!=' ' && nLvlSubValue.charAt(j)!='\t') { nLvlSubSkip = false; break;}
			}
			//Si ici c'est pas passé false c'est que que du vide, donc on passe au noeud suivant
			if (bLvlSubSkip) continue;
		}
		
		
		//Je trouve le premier lien qui est dans la liste
		for (var j=0; j!=nLvl.childNodes[i].childNodes; j++) {
			if (nLvl.childNodes[i].childNodes[j].nodeName=="A") {
				nLvlSubLink = nLvl.childNodes[i].childNodes[j];
				break;
			}			
		}
		
		//Je trouve le numero de chaque sous menu grace aux liens qui sont ici
		if (nLvlSubLink.getAttribute("id").substring(0,6)=="mlink_") {
			iLvlSubLinkIdNumber = nLvlSubLink.getAttribute("id").substring(6);
			//Vérification que le sous menu existe
			nLvlSubMenuToHide = document.getElementById("mlist_"+iLvlSubLinkIdNumber);
			if (nLvlSubMenuToHide) 	nLvlSubMenuToHide.style.display = "none";
			HideMenuLvl(iLvlSubLinkIdNumber);
		}
		
	}

	
}
//On efface tout les sous-menus du même niveau, puis on affiche celui qu'on a mouseoveré
function place_menu() {
	MesaMenu_IAmOnMenu = true; //j'indique que je suis sur le menu (variable a tester pour voir si on efface le menu)
	iLinkIdNumber = this.getAttribute("id").substring(6);
	iParentUlIdNumber = this.parentNode.parentNode.getAttribute("id").substring(6);
	
	HideMenuLvl(iParentUlIdNumber);


	
	//Affiche du sous menu  
	var my_div = document.getElementById("mlist_"+iLinkIdNumber);
	if (my_div==null) return; //pas de sous menu, return
	my_div.style.display = "block"; 							//affichage
	my_div.style.marginLeft = (this.offsetWidth - 10) + "px"; 	//un peu en arriere
	my_div.style.marginTop = "-15px"; 							//un peu en dessous
	//if (arr_menu_width[iLinkIdNumber]) my_div.style.width = arr_menu_width[iLinkIdNumber]; 				//on ajuste la taille
	
}

/*
	Lorsque je quitte un lien :
	 -> Si un intervale à été défini, je l'efface et le recommence à zero
	 -> Je me défini comme n'étant plus sur le menu
	 -> Je compte deux secondes
	 
	Au bout des deux secondes
	 -> J'arrete de compter
	 -> Si je suis sur le menu, il se passe rien
	 -> Sinon on efface récursivement tout les sous-menus
*/
function remove_menu() {
	if (typeof(MesaMenu_Interval)!="undefined") clearInterval(MesaMenu_Interval); //On remets l'intervale à zero s'il est défini
	MesaMenu_Interval = setInterval(remove_menu2, 500);
	MesaMenu_IAmOnMenu = false; //Je ne suis plus sur le menu
	nLvlToHide = this;
}
function remove_menu2() {
	clearInterval(MesaMenu_Interval); //On arrete de compter
	if (MesaMenu_IAmOnMenu) return; //On regarde si je ne suis pas revenu sur le menu entre temps
	
	//J'efface maintenant véritablement le menu, en commencant par le dernier menu quitté, en remontant jusque 0 par ses parents
	while (nLvlToHide.getAttribute("id").substring(6)!=0) {
		HideMenuLvl(nLvlToHide.getAttribute("id").substring(6));
		nLvlToHide = nLvlToHide.parentNode.parentNode;
	}
	HideMenuLvl(0);

	
}
