// 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;

//pour menus CES, ARTS, THEATRE et DANSE
var gSousMenuActif=0;
var gSousSousMenuActif=0;
var gNbreDeDelais=4;
var gDureeDelai=500;
var gCompteurDeDelais=0;
var gIdMinuterie=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;
					}
				}
		}
	}
	if(document.getElementById('premierNiveau')!=null){
	initMouseOvers(); // on enchaine sur la 2e initialisation
	}
	}
	else{
		if(document.getElementById('premierNiveau')!=null){
		initMouseOvers(); // on enchaine sur la 2e initialisation
		}
	}
}


// 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)
		}
}

// fonctions pour menus CES, ARTS, THEATRE et DANSE
function initMouseOvers() { 
	var nav=document.getElementById('premierNiveau');
	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")=='premierNiveau'){
			// Association dynamique des evenements et des methodes aux hyperliens concernes
			listeLiensEnfants[cpt].onfocus=afficherFrereSousMenu; 
	  		listeLiensEnfants[cpt].onmouseover=afficherFrereSousMenu;	
			listeLiensEnfants[cpt].onmouseout=cacherSousMenu; 
	 		listeLiensEnfants[cpt].onblur=cacherSousMenu;
		}
	}	
	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")=='premierNiveau'){
				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")=='premierNiveau'){
						listeLiensEnfants[cpt2].onfocus=afficherGrandPereSousMenu; 
	  					listeLiensEnfants[cpt2].onmouseover=afficherGrandPereSousMenu;	
						listeLiensEnfants[cpt2].onmouseout=cacherSousMenu; 
	 					listeLiensEnfants[cpt2].onblur=cacherSousMenu;
					}
				}
		}
	}
}

// Methode pour afficher le sousMenu a partir des items de la liste de premier niveau
function afficherFrereSousMenu() { 
	clearTimeout(gIdMinuterie);
	gCompteurDeDelais=0;
	gIdMinuterie=null;
	if (gSousMenuActif!=0){
		gSousMenuActif.style.display='none';
		gSousMenuActif=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';
		gSousMenuActif=sousMenus; 
	}
}

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

//Methode pour cacher un sousMenu
function cacherSousMenu() { 
	gCompteurDeDelais=gCompteurDeDelais+1;
	if (gCompteurDeDelais==gNbreDeDelais){
		if (gSousMenuActif!=0){
			gSousMenuActif.style.display='none';
		}
		gSousMenuActif=0;
		gCompteurDeDelais=0;
		gIdMinuterie=null;
		}
	 else{
		gIdMinuterie=setTimeout("cacherSousMenu()",gDureeDelai)
		}
}