function getChildNodesByTagName(obj, tagName)
{
	var children = new Array();
	for(var i=0; i<obj.childNodes.length; i++)
		if(obj.childNodes[i].nodeName == tagName.toUpperCase()) children[children.length] = obj.childNodes[i];

	return children;
}

function buildMenuCascadeJS(menu)
{
    function hoverMenuCascadeJS(obj)
    {
	if(!obj.resized && (obj.nodeName == 'TD'))
	{
		var listUl=obj.getElementsByTagName('ul');
		if (listUl.length>0)
		{
			var secondLevelWidthAsFirst = false;
			eval("secondLevelWidthAsFirst = " + menu + "_SecondLevelWidthAsFirst;");
			if(secondLevelWidthAsFirst)
			listUl[0].style.width = obj.offsetWidth + 'px'; 

			var LI = listUl[0].getElementsByTagName('li');
			for(var i=0; i < LI.length; i++)
			{  
				if ((LI[i].parentNode == listUl[0]) && secondLevelWidthAsFirst)
				{   
					LI[i].style.width = obj.offsetWidth+'px';
					var A = getChildNodesByTagName(LI[i], 'a');
					if(A.length > 0)
					{
						A = A[0];
						A.style.width = obj.offsetWidth + 'px'; 
						
					}
				}
			}     
		}
		obj.resized=true;
	}

	UL = obj.getElementsByTagName('ul');
	if(UL.length > 0)
	{
		sousMenu = UL[0];
		if(sousMenu.style.display == 'none' || sousMenu.style.display == '')
		sousMenu.style.display = 'block';
		else
		sousMenu.style.display = 'none';
	}
    }

    function setNextStyleTdMenuCascadeJS(objLi)
    { 
	    var listUl=objLi.getElementsByTagName('ul');
	    if (listUl.length>0)
	    {
            var secondLevelWidthAsFirst = false;
            eval("secondLevelWidthAsFirst = " + menu + "_SecondLevelWidthAsFirst;");
            if(secondLevelWidthAsFirst) listUl[0].style.width = objLi.offsetWidth + 'px'; 
            
		    var LI = listUl[0].getElementsByTagName('li');
		    for(var i=0; i < LI.length; i++)
		    {  
			    LI[i].clickAndGoto = function(url, target)
			    {
				    clickMenuCascadeJS(objLi, url, target)
			    };

			    LI[i].className="liout";

			    if ((LI[i].parentNode == listUl[0]) && secondLevelWidthAsFirst)
			    {   
				    LI[i].style.width = objLi.offsetWidth+'px';
				    var A = getChildNodesByTagName(LI[i], 'a');
				    if(A.length > 0)
				    {
					    A = A[0];
					    A.style.width = objLi.offsetWidth + 'px'; 
					 
				    }
			    }
		    }
       
		    var A = getChildNodesByTagName(objLi, 'a');
		    if(A.length > 0)
		    {
			    A = A[0];
			    A.className="next"; 			 
		    }
	    }
    }

    function setNextStyleLiMenuCascadeJS(objLi)
    { 
	    var listUl=getChildNodesByTagName(objLi, 'ul');
	    if (listUl.length>0)
	    { 
	        objLi.className = objLi.className + " next";
		    var A = getChildNodesByTagName(objLi, 'a');
		    if(A.length > 0)
		    {
			    A = A[0];
			    A.className="next";		    
		    }
	    }
    }
    	
    function setTdLengthMenuCascadeJS(table)
    {
	    var TD = getChildNodesByTagName(getChildNodesByTagName(getChildNodesByTagName(table, 'tbody')[0], 'tr')[0], 'td');

	    var widthtd=(table.offsetWidth / TD.length);
	    for(var i = 0; i<TD.length; i++)
		    TD[i].style.width = widthtd + 'px';
    }

    function setHoverMenuCascadeJS(menu)
    {
	    var TD = getChildNodesByTagName(getChildNodesByTagName(getChildNodesByTagName(document.getElementById(menu), 'tbody')[0], 'tr')[0], 'td');
	    
	    var processWidthTd = false;
	    eval("processWidthTd = " + menu + "_ProcessWidthTD;");
	    if(processWidthTd) setTdLengthMenuCascadeJS(document.getElementById(menu));

	    for(var i=0; i < TD.length; i++)
	    {
		    TD[i].onmouseover = function()
		    {
			    if (this.className !="selected") this.className="tdover";
			    hoverMenuCascadeJS(this); 
		    }

		    TD[i].onmouseout = function()
		    {
			    if (this.className != "selected") this.className="tdout";
	            hoverMenuCascadeJS(this);
		    }

		    TD[i].clickAndGoto = function(url, target)
		    {
			    clickMenuCascadeJS(this, url, target)
		    };

		    TD[i].className="tdout";
		    setNextStyleTdMenuCascadeJS(TD[i]);    
	    }

	    var LI = document.getElementById(menu).getElementsByTagName('li');
	        
	    for(i=0; i < LI.length; i++)
	    {		
		    LI[i].onmouseover = function()
		    {
			    this.className=this.className.replace("liout", "liover");
			    hoverMenuCascadeJS(this); 
		    }
    		
		    LI[i].onmouseout = function()
		    {
			    this.className=this.className.replace("liover", "liout");
			    hoverMenuCascadeJS(this);			
		    } 
    		
		    LI[i].className="liout";
		    
		    if(LI[i].parentNode.parentNode.nodeName == "TD")
		        LI[i].parentNode.className = "level2";
		    else
		        LI[i].parentNode.className = "level" + (Number(LI[i].parentNode.parentNode.parentNode.className.substr(5, 1))+1);
		    
		    setNextStyleLiMenuCascadeJS(LI[i])
	    }
    }

    function clickMenuCascadeJS(td, url, target)
    {
	    var hidden = document.getElementById(menu + "_selected");
        if((hidden.value != "") && document.getElementById(hidden.value)) document.getElementById(hidden.value).className = "tdout";
	    td.className = 'selected';    	   
	    hidden.value = td.id;

        if(url != "") 
        {
            if(url.toUpperCase().substr(0, 11) == "JAVASCRIPT:")
                eval(url.substr(11, url.length - 11));
            else
            {        
                if(target == "") target = "_SELF";

                if(target.toUpperCase() == "_TOP") top.location = url;
                else if(target.toUpperCase() == "_SELF") document.location = url;
                else if(target.toUpperCase() == "_PARENT") document.parent.location = url;                        
                else if(target.toUpperCase() == "_POPUP") window.open(url, "", "");
                else window[target].location = url;	
            }
        }
    }

	var menuObj = document.getElementById(menu);
	if(!menuObj) return;
	
	A = menuObj.getElementsByTagName('a');
	for(var i=0; i<A.length; i++)
	{
	    if
	    (
	        A[i].href
	        && (A[i].href.length > 0)
	        && (
	            (A[i].href.length < 11)
	            || (A[i].href.substring(0, 11).toUpperCase() != "JAVASCRIPT:")
	        )
	    )
	    {
	        A[i].href = "javascript:document.getElementById('" + A[i].parentNode.id + "').clickAndGoto('" + A[i].href + "', '" + A[i].target + "');";
	        // SI on ne retire pas l'attribut target, le code javascript contenu dans le href sera exécuté dans le document ciblé par le target!
	        // or il doit être exécuter dans le document courant
	        A[i].removeAttribute("target");	        
	    }
	}
	
	var table = document.createElement("table");
	table.id = menu;
	table.className = "menuCascade";
	table.cellpadding = 0;
	table.cellspacing = 0;
	var tbody = document.createElement('tbody');
	table.appendChild(tbody);
	var tr = document.createElement("tr");
	tbody.appendChild(tr);

	var i;
	var childLI = getChildNodesByTagName(menuObj, "li");
	for(i=0; i<childLI.length; i++)
	{
		var li = childLI[i]; 
		var td = document.createElement("td");
		tr.appendChild(td);
		if(li.id) td.id = li.id;
		td.innerHTML = li.innerHTML;
	}

	menuObj.parentNode.replaceChild(table, menuObj);

	setHoverMenuCascadeJS(menu);
}