
//Lecture du nom du navigateur
var Navigateur = new navigateurDetection();

// Programme principal
function menuInitialise(MenuClasse, MenuIndicateur, MenuTemporisation)
{
	//On fixe la temporisation
	temporisation = MenuTemporisation;
	// On évite les anciens navigateurs
	if (Navigateur.isDOM1 && !(Navigateur.isMac && Navigateur.isIE) && !(Navigateur.isOpera && (Navigateur.versionMajor < 7)) && !(Navigateur.isIE && (Navigateur.versionMajor < 5))) {
		// On récupère l'éléments racine
		var Menu = document.getElementById(MenuClasse);
		// On enregistre le nom de la classe de l'élement racine pour assurer la compatibilité avec les anciens navigateurs
		Menu.className = MenuClasse;
		// On récupère les éléments LI contenus
		var MenuLis = Menu.getElementsByTagName('li');
		//On initalise les temporisations
		initialiseTemporisations(MenuLis.length);
		// On cherche les elements UL contenus dans un LI
		for (var i = 0; i < MenuLis.length; i++) {
			// On regarde si l'element est un UL
			if (MenuLis.item(i).getElementsByTagName('ul').length > 0) {
				// On associe les evenements
				ajouteEvenement(MenuLis.item(i), 'mouseover', montre);
				ajouteEvenement(MenuLis.item(i), 'mouseout', cache);
				ajouteEvenement(MenuLis.item(i), 'blur', cache);
				ajouteEvenement(MenuLis.item(i), 'focus', montre);
				// On ajoute un ID
				MenuLis.item(i).setAttribute('id', "li" + i );
				// On ajoute l'indicateur de sous menu
				MenuLis.item(i).getElementsByTagName('a')[0].className = MenuIndicateur;
			}
		}
	}
}
// Initialisation des temporisations
function initialiseTemporisations(nombre)
{
	// Remise a 0 des temporisations
	for (var i = 0; i < nombre; i++) {
		eval("timeoutli" + i + "=false;");
	}
}
// Ajout d'évenement à un élément
function ajouteEvenement(target, eventName, functionName)
{
	if (Navigateur.isIE) {
		eval('target.on' + eventName + '=functionName');
	} else {
		target.addEventListener(eventName, functionName, true);
    }
}
// Cache les elements UL avec une temporisation
function cache()
{
	eval("timeout" + this.id + "=window.setTimeout('cacheULS(\"" + this.id + "\")', " + temporisation + ");");
}
// Cache les éléments UL contenu dans l'élément id
function cacheULS(id)
{
	document.getElementById(id).getElementsByTagName('ul')[0].style['visibility'] = 'hidden';
}
// Montre le premier élément UL
function montre()
{
	this.getElementsByTagName('ul')[0].style['visibility'] = 'visible';
	eval("clearTimeout(timeout" + this.id + ");");
	cacheFreres(this);
}
// Cache tous les éléments UL freres (de même niveau)
function cacheFreres(li)
{
	var ul = li.parentNode;
	for (var i = 0; i < ul.childNodes.length; i++) {
		if (ul.childNodes[i].id && (ul.childNodes[i].id != li.id)) {
			cacheEnfants(ul.childNodes[i]);
		}
	}
}
// Cache tous les éléments UL enfants
function cacheEnfants(li)
{
	var uls = li.getElementsByTagName('ul');
	for (var i = 0; i < uls.length; i++) {
		uls.item(i).style['visibility'] = 'hidden';
	}
}

