// JavaScript Document
// Ce script permet de creer un menu en cascade a 2 niveaux
// La navigation doit être balisee sous forme de listes imbriquées, la liste de premier niveau etant ol ou ul
// et les listes de second niveau etant des ul
// 
// Ce script a ete teste sur PC avec FireFox et IE. 
// Les syntaxes de DOM qui ne sont pas supportees par IE ont ete identifies (voir les commentaires) et remplacees par des équivalences.
window.onload = initMouseOversMenuPrincipal;

//pour menu principal
var gSousMenuPrincipalActif=0;
var gSousSousMenuPrincipalActif=0;
var gNbreDeDelaisMenuPrincipal=4;
var gDureeDelaiMenuPrincipal=500;
var gCompteurDeDelaisMenuPrincipal=0;
var gIdMinuterieMenuPrincipal=null;


function initMouseOversMenuPrincipal() {
	if(document.getElementById('navigationPrincipale')!=null){
	var nav=document.getElementById('navigationPrincipale');
	var listeLiensEnfants=nav.getElementsByTagName('a');
	for (var cpt=0;cpt<listeLiensEnfants.length;cpt++) { 
	// Attention, pour que les liens de parenté fonctionnent, il faut contrer les noeuds anonymes creer par 
	// les blancs (espace, tabulation, saut de ligne) dans le code HTML
		if (listeLiensEnfants[cpt].parentNode.parentNode.getAttribute("id")=='navigationPrincipale'){
			// Association dynamique des evenements et des methodes aux hyperliens concernes
			listeLiensEnfants[cpt].onfocus=afficherFrereSousMenuPrincipal; 
	  		listeLiensEnfants[cpt].onmouseover=afficherFrereSousMenuPrincipal;	
			listeLiensEnfants[cpt].onmouseout=cacherSousMenuPrincipal; 
	 		listeLiensEnfants[cpt].onblur=cacherSousMenuPrincipal;
		}
	}	
	var listeSousMenus=nav.getElementsByTagName('ul');
	for (var cpt=0;cpt<listeSousMenus.length;cpt++) { 
	// la condition suivante n'est pas fonctionnelle sur IE
	// if (listeSousMenus[cpt].getAttribute("class")=='sousMenu'){
			if (listeSousMenus[cpt].parentNode.parentNode.getAttribute("id")=='navigationPrincipale'){
				var listeLiensEnfants=nav.getElementsByTagName('a');
				for (var cpt2=0;cpt2<listeLiensEnfants.length;cpt2++) { 
					//if (listeLiensEnfants[cpt2].parentNode.parentNode.getAttribute("class")=='sousSousMenu'){
					if (listeLiensEnfants[cpt2].parentNode.parentNode.parentNode.parentNode.getAttribute("id")=='navigationPrincipale'){
						listeLiensEnfants[cpt2].onfocus=afficherGrandPereSousMenuPrincipal; 
	  					listeLiensEnfants[cpt2].onmouseover=afficherGrandPereSousMenuPrincipal;	
						listeLiensEnfants[cpt2].onmouseout=cacherSousMenuPrincipal; 
	 					listeLiensEnfants[cpt2].onblur=cacherSousMenuPrincipal;
					}
				}
		}//fin du if
	}//fin du for
	}// fin condtion si on trouve navigationPrincipale
}


// Methode pour afficher le sousMenu a partir des items de la liste de premier niveau
function afficherFrereSousMenuPrincipal() { 
	clearTimeout(gIdMinuterieMenuPrincipal);
	gCompteurDeDelaisMenuPrincipal=0;
	gIdMinuterieMenuPrincipal=null;
	if (gSousMenuPrincipalActif!=0){
		gSousMenuPrincipalActif.style.display='none';
		gSousMenuPrincipalActif=0;
	}
	//var sousMenus=this.nextSibling; // Cette instruction n'est pas fonctionnelle sous IE remplacee par:
	var sousMenus=this.parentNode.getElementsByTagName("ul")[0];
	if (sousMenus!=null){
	sousMenus.style.display='block';
	gSousMenuPrincipalActif=sousMenus; 
	}
}

// Methode pour garder le sousMenu actif a partir des items de la liste de second niveau
function afficherGrandPereSousMenuPrincipal() { 
	clearTimeout(gIdMinuterieMenuPrincipal);
	gCompteurDeDelaisMenuPrincipal=0;
	gIdMinuterieMenuPrincipal=null;
	if (gSousMenuPrincipalActif!=0){
		gSousMenuPrincipalActif.style.display='none';
		gSousMenuPrincipalActif=0;
	}
	var sousMenus=this.parentNode.parentNode.parentNode.getElementsByTagName("ul")[0];
	sousMenus.style.display='block';
	gSousMenuPrincipalActif=sousMenus; 
}

//Methode pour cacher un sousMenu
function cacherSousMenuPrincipal() { 
	gCompteurDeDelaisMenuPrincipal=gCompteurDeDelaisMenuPrincipal+1;
	if (gCompteurDeDelaisMenuPrincipal==gNbreDeDelaisMenuPrincipal){
		if (gSousMenuPrincipalActif!=0){
			gSousMenuPrincipalActif.style.display='none';
			gSousMenuPrincipalActif=0;
		}
		gCompteurDeDelaisMenuPrincipal=0;
		gIdMinuterieMenuPrincipal=null;
		}
	 else{
		gIdMinuterieMenuPrincipal=setTimeout("cacherSousMenuPrincipal()",gDureeDelaiMenuPrincipal)
		}
}
