var minuterie = null;
var minuterie2 = null;

var delaiMenu = 500;
var delaiSousMenu = 500;


function getLeftPos(inputObj) { 
	var returnValue = inputObj.offsetLeft; 
	while((inputObj = inputObj.offsetParent) != null) 
		returnValue += inputObj.offsetLeft; 
	return returnValue; 
} 


function attacherEvenement(obj, evt, fct) {
	try {
		var lObjet = obj;
		if(lObjet) {
			if(lObjet.addEventListener) {
				lObjet.addEventListener(evt, fct, false);
			} else if(lObjet.attachEvent) {
				lObjet.attachEvent("on"+ evt, fct);
			} else {
				return false;
			}
		}

	} catch(ex) { return false; }

	return true;
}

function afficherCalque(idCalque) {
	cacherTousLesCalquesSaufUn(idCalque);
	cacherTousLesSousCalques(idCalque);
	var leCalque = document.getElementById(idCalque);

	if(leCalque) {
		
		if(leCalque.declancheur)
			leCalque.declancheur.className = "menuDeroule";

		leCalque.style.display = "block";
	}
}

function afficherSousCalque(idCalque, idSousCalque) {
	cacherTousLesSousCalquesSaufUn(idCalque, idSousCalque);

	var leSousCalque = document.getElementById(idSousCalque);

	if(leSousCalque) {
		leSousCalque.style.display = "block";
	}
}

function cacherCalque(idCalque) {
	var leCalque = document.getElementById(idCalque);
	if(leCalque) {
		cacherTousLesSousCalques(idCalque);

		if(leCalque.declancheur)
			if(leCalque.declancheur.className != "")
				leCalque.declancheur.className = "";

		leCalque.style.display = "none";
	}
}

function cacherSousCalque(idCalque, idSousCalque) {
	var leSousCalque = document.getElementById(idSousCalque);
	if(leSousCalque) {
		leSousCalque.style.display = "none";

		var leLien = document.getElementById(leSousCalque.idLien);

		if(leLien) {
			if(leLien.sousMenu)
				if(leLien.className != leLien.classNameOriginal)
					leLien.className = leLien.classNameOriginal;
		}
	}
}

function cacherTousLesCalques() {
	for(var iMenu=0; iMenu<lesMenus.length; iMenu++) {
		var leMenu = lesMenus[iMenu];
		cacherCalque(leMenu.idCalque);
	}
}

function cacherTousLesSousCalques(idCalque) {
	var leCalque = document.getElementById(idCalque);
	if(leCalque) {
		var lesLiens = leCalque.getElementsByTagName("A");
		
		for(var iLien=0; iLien<lesLiens.length; iLien++) {
			var leLien = lesLiens[iLien];
			if(leLien.parentNode.parentNode.id == idCalque) {
				cacherSousCalque(idCalque, leLien.id +"_sousMenu");
			}
		}
	}
}

function cacherTousLesCalquesSaufUn(idCalque) {
	for(var iMenu=0; iMenu<lesMenus.length; iMenu++) {
		var leMenu = lesMenus[iMenu];
		if(leMenu.idCalque != idCalque)
			cacherCalque(leMenu.idCalque);
	}
}

function cacherTousLesSousCalquesSaufUn(idCalque, sousCalque) {
	var leCalque = document.getElementById(idCalque);
	if(leCalque) {
		var lesLiens = leCalque.getElementsByTagName("A");
		
		for(var iLien=0; iLien<lesLiens.length; iLien++) {
			var leLien = lesLiens[iLien];
			
			if(leLien.parentNode.parentNode.id == idCalque && (leLien.id +"_sousMenu" != sousCalque) ) {
				cacherSousCalque(idCalque, leLien.id +"_sousMenu");
			}
		}
	}
}

var lesMenus = new Array();

function oMenu(idDeclancheur, idCalque, gauche, haut) {
	this.idDeclancheur = idDeclancheur;
	this.idCalque = idCalque;

	this.gauche = gauche;
	this.haut = haut;

	return this;
}

function ajouterMenu(idDeclancheur, idCalque, gauche, haut) {
	lesMenus[lesMenus.length] = new oMenu(idDeclancheur, idCalque, gauche, haut);
}

function menu_onmouseover() {
	window.clearTimeout(minuterie);

	var obj;
	if(typeof event != "undefined") obj = event.srcElement;
	else obj = this;

	if(obj.menu) {
		afficherCalque(obj.menu.idCalque);
	}
}

function menu_onmouseout() {
	var obj;
	if(typeof event != "undefined") obj = event.srcElement;
	else obj = this;

	if(obj.menu) {
		minuterie = window.setTimeout("cacherCalque('"+ obj.menu.idCalque +"')", delaiMenu);
	}
}

function calque_onmouseover() {
	window.clearTimeout(minuterie);
}

function calque_onmouseout() {
	var obj;
	if(typeof event != "undefined") obj = event.srcElement;
	else obj = this;

	if(obj.tagName == "A") obj = obj.parentElement.parentElement;
	if(obj.className == "coin") obj = obj.parentElement.parentElement;

	if(obj.menu) {
		minuterie = window.setTimeout("cacherCalque('"+ obj.menu.idCalque +"')", delaiMenu);
	}
}

function lien_onmouseover() {
	window.clearTimeout(minuterie);
	window.clearTimeout(minuterie2);

	var obj;
	if(typeof event != "undefined") obj = event.srcElement;
	else obj = this;

	if(obj.menu) {
		if(obj.sousMenu) {
			cacherTousLesSousCalquesSaufUn(obj.menu.idCalque, obj.sousMenu);
			afficherSousCalque(obj.menu.idCalque, obj.sousMenu);

			obj.className = obj.classNameOriginal +" lienActif";
		} else {			
			cacherTousLesSousCalques(obj.parentNode.parentNode.id);
		}
	}
}

function lien_onmouseout() {
	var obj;
	if(typeof event != "undefined") obj = event.srcElement;
	else obj = this;

	if(obj.menu) {
		minuterie2 = window.setTimeout("cacherSousCalque('"+ obj.menu.idCalque +"', '"+ obj.id +"_sousMenu')", delaiSousMenu);
	}
}

function sousCalque_onmouseover() {
	cacherTousLesSousCalques();

	window.clearTimeout(minuterie2);
}

function sousCalque_onmouseout() {
	var obj;
	if(typeof event != "undefined") obj = event.srcElement;
	else obj = this;

	if(obj.tagName == "A") obj = obj.parentElement;

	if(obj.menu) {
		minuterie2 = window.setTimeout("cacherSousCalque('"+ obj.menu.idCalque +"', '"+ obj.id +"')", delaiSousMenu);
	}
}

function initMenu() {
	cacherTousLesCalques();

	for(var iMenu=0; iMenu<lesMenus.length; iMenu++) {
		var leMenu = lesMenus[iMenu];
		
		var leDeclancheur = document.getElementById(leMenu.idDeclancheur);
		var leCalque = document.getElementById(leMenu.idCalque);

		var offsetLeft = leDeclancheur.offsetLeft;

	
		//leCalque.style.left = (offsetLeft + 149) +"px";
		leCalque.style.left = (offsetLeft + 0) +"px";
		

		leCalque.style.top = leMenu.haut +"px";
		attacherEvenement(leCalque, "mouseover", calque_onmouseover);
		attacherEvenement(leCalque, "mouseout", calque_onmouseout);

		leDeclancheur.menu = leMenu;
		leCalque.menu = leMenu;
		leCalque.declancheur = leDeclancheur;

		attacherEvenement(leDeclancheur, "mouseover", menu_onmouseover);
		attacherEvenement(leDeclancheur, "mouseout", menu_onmouseout);

		var lesLiens = leCalque.getElementsByTagName("A");
		var aCount = 0;

		for(var iLien=0; iLien<lesLiens.length; iLien++) {

			if(lesLiens[iLien].parentNode.parentNode.id == leCalque.id) {

				aCount++;

				var leLien = lesLiens[iLien];
				var leSousCalque = document.getElementById(leLien.id +"_sousMenu");

				leLien.classNameOriginal = leLien.className;

				if(leSousCalque) {
					if(leDeclancheur.offsetLeft + 250 > leDeclancheur.parentNode.parentNode.offsetWidth) {
						leSousCalque.style.left = "-203px";
						//leCalque.style.left = leDeclancheur.offsetLeft + leDeclancheur.offsetWidth - 200 - 12 +"px";
					} else {
						leSousCalque.style.left = "200px";
					}

					//leSousCalque.style.top = leLien.offsetTop - 1 +"px";
					//leSousCalque.style.top = ((aCount-1) * 29 - 1) +"px";
					
					leSousCalque.menu = leMenu;
					//alert(leLien.offsetTop);

					leLien.sousMenu = leSousCalque.id;
					leSousCalque.idLien = leLien.id;

					attacherEvenement(leSousCalque, "mouseover", sousCalque_onmouseover);
					attacherEvenement(leSousCalque, "mouseout", sousCalque_onmouseout);
				}

				leLien.menu = leMenu;
				attacherEvenement(leLien, "mouseover", lien_onmouseover);
				attacherEvenement(leLien, "mouseout", lien_onmouseout);

			}
		}

	}
}

function debug(msg) {
	alert("DEBUG: "+ msg);
}

ajouterMenu("lien-profil", "m_profil", 65, 39);
ajouterMenu("lien-produits", "m_produits", 65, 43);


attacherEvenement(window, "load", initMenu);
attacherEvenement(document, "click", cacherTousLesCalques);



