//#12.00Aa WDMenu.JS
//VersionVI: 30F120056c
// Le seul support technique disponible pour cette librairie est
// accessible a travers le service "Assistance Directe".

// Manipulation des menus
function WDMenu(sNomMenu, bOnglet)
{
	this.m_sNom = sNomMenu;
	this.m_bOnglet = bOnglet;
}

WDMenu.prototype =
{
//	m_sNom:			"",
//	this.m_bOnglet:	false,
//	m_oRacine:		null,

	Init:function ()
	{
		// Trouve la racine du menu
		this.m_oRacine = _JGE(this.m_sNom, document, true, false);

		// Applique le changement de style et l'affichage des sous menus en survol d'option
		if (this.m_bOnglet)
		{
			// Traite les onglets
			this.AjouteJSSurvolOnglet(this.m_oRacine);
		}
		// Traite les sous menus normaux
		this.AjouteJSSurvolSousMenu(this.m_oRacine);
	},

	// Applique le changement de style et l'affichage des onglets
	AjouteJSSurvolOnglet:function (oRacine)
	{
		// Les options sont les TD avec WDOngletOption comme class
		var tabOnglets = oRacine.getElementsByTagName("TD");
		var i;
		var nLimiteI = tabOnglets.length;
		for (i = 0; i < nLimiteI; i++)
		{
			var oOnglet = tabOnglets[i];
			if ((oOnglet.className == "WDOngletOption") || (oOnglet.className == "WDOngletOptionSelect"))
			{
				var bAvecSousMenu = false;
				// Cherche sont eventuel sous menu
				var tabTABLE = oOnglet.getElementsByTagName("TABLE");
				var j;
				var nLimiteJ = tabTABLE.length;
				for (j = 0; j < nLimiteJ; j++)
				{
					var oTABLE = tabTABLE[j];
					if (oTABLE.parentNode.className == "WDSousOnglet")
					{
						bAvecSousMenu = true;
						this.AjouteJSSurvol_SousMenu(oOnglet, oTABLE);
					}
				}

				// Si on a pas de sous menu : mettre le code de survol
				if (!bAvecSousMenu)
				{
					this.AjouteJSSurvol_Simple(oOnglet);
				}
			}
		}
	},


	// Applique le changement de style et l'affichage des sous menus en survol d'option
	AjouteJSSurvolSousMenu:function (oRacine)
	{
		// Liste les fils de la balise et trouve la balise TR si elle existe
		var tabOptionsMenu = oRacine.getElementsByTagName("TR");
		var i;
		var nLimiteI = tabOptionsMenu.length;
		for (i = 0; i < nLimiteI; i++)
		{
			// Applique le changement de style et l'affichage des sous menus en survol d'un option
			this.AjouteJSSurvol(tabOptionsMenu[i])
		}
	},

	// Applique le changement de style et l'affichage des sous menus en survol d'un option
	AjouteJSSurvol:function (oOptionMenu)
	{
		// Si le style de la ligne n'est pas celui d'une option
		if ((oOptionMenu.className != "WDMenuOption") && (oOptionMenu.className != "WDMenuOptionSelect"))
			return;

		// Regarde si l'option a un sous menu
		var tabSousMenus = oOptionMenu.getElementsByTagName("TABLE");

		if (tabSousMenus.length)
		{
			this.AjouteJSSurvol_SousMenu(oOptionMenu, tabSousMenus[0]);
		}
		else
		{
			this.AjouteJSSurvol_Simple(oOptionMenu);
		}
	},

	// Ajoute les fonctions JS en survol pour une option avec un sous menu
	AjouteJSSurvol_SousMenu:function (oOptionMenu, oSousMenu)
	{
		// Sauve la classe normale de l'option
		oOptionMenu.oldClassName = oOptionMenu.className;

		if (bIE)
		{
			oOptionMenu.onmouseover = function ()
			{
				oOptionMenu.className = oOptionMenu.oldClassName + "Hover";
				// Seulement si le menu n'est pas desactive
				// La norme indique que les elements sont retournes dans l'ordre => On demand le premier donc [0]
				var tabLiens = oOptionMenu.getElementsByTagName("A");
				if (!(tabLiens && tabLiens[0].disabled))
					oSousMenu.style.display = 'block';
			};
			oOptionMenu.onmouseout = function ()
			{
				oOptionMenu.className = oOptionMenu.oldClassName;
				oSousMenu.style.display = 'none';
			};
		}
		else
		{
			oOptionMenu.onmouseover = function (event)
			{
				oOptionMenu.className = oOptionMenu.oldClassName + "Hover";
								// Seulement si le menu n'est pas desactive
				// La norme indique que les elements sont retournes dans l'ordre => On demand le premier donc [0]
				var tabLiens = oOptionMenu.getElementsByTagName("A");
				if (!(tabLiens && tabLiens[0].disabled))
					oSousMenu.style.display = 'block';
			};
			oOptionMenu.onmouseout = function (event)
			{
				oOptionMenu.className = oOptionMenu.oldClassName;
				oSousMenu.style.display = 'none';
			};
		}
	},

	// Ajoute les fonctions JS en survol pour une option sans sous menu
	AjouteJSSurvol_Simple:function (oOptionMenu)
	{
		// Sauve la classe normale de l'option
		oOptionMenu.oldClassName = oOptionMenu.className;

		if (this.m_bIE)
		{
			oOptionMenu.onmouseover = function () { oOptionMenu.className = oOptionMenu.oldClassName + "Hover"; };
			oOptionMenu.onmouseout = function () { oOptionMenu.className = oOptionMenu.oldClassName; };
		}
		else
		{
			oOptionMenu.onmouseover = function (event) { oOptionMenu.className = oOptionMenu.oldClassName + "Hover"; };
			oOptionMenu.onmouseout = function (event) { oOptionMenu.className = oOptionMenu.oldClassName; };
		}
	}

//	// Applique les style est les actions JS recursivement aux options du menu
//	FixeStylesActions_TABLE:function (oTABLE, nzIndex)
//	{
//		// Liste les fils de la balise et trouve la balise UL si elle existe
//		var oNodes = oTABLE.childNodes;
//		var i;
//		var nLimiteI = oNodes.length;
//		for (i = 0; i < nLimiteI; i++)
//		{
//			var oLI = oNodes[i];
//			if (oLI.tagName && (oLI.tagName.toUpperCase() == "LI"))
//			{
//				// Fixe le zIndex de la balise
//				oLI.style.zIndex = nzIndex;
//				// Ajoute les fonctions a la balise
//				this.FixeStylesActions_LI(oLI, nzIndex + 1);
//			}
//		}
//	},
//
//	// Applique les style est les actions JS a une option de menu
//	FixeStylesActions_LI:function (oLI, nzIndex)
//	{
//		// Recupere l'ID de l'element
//		var sID = oLI.id;
//		// Trouve le sous menu s'il existe
//		var oUL = _JGE(sID + "_SM", document, true, false);
//		// Fixe le zIndex de la balise
//		if (oUL)
//		{
//			oUL.style.zIndex = nzIndex;
//			// Ajoute les fonctions a la balise
//			this.FixeActions_LI(oLI, oUL);
//
//			// Appel recursif
//			this.FixeStylesActions_UL(oUL, nzIndex + 1);
//		}
//	},
//
//	// Applique les actions JS a une option de menu
//	FixeActions_LI:function (oLI, oUL)
//	{
//		oLI.onmouseover = function() { oUL.style.display='block'; };
//		oLI.onmouseout = function() { oUL.style.display='none'; };
//	}
}