var PadLeft;
PadLeft = 14;

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 timerMDDHide(menuTDId, force) {
    var obj = document.getElementById(menuTDId);

    if (obj) {
        var UL = obj.getElementsByTagName('ul');
        if (UL.length > 0) {
            sousMenu = UL[0]; 
            if (obj.nodeName == 'TD' && (obj.className.indexOf("over") > 0)||force) {
                var MDDTable = obj.childNodes[1];
                MDDTable.style.display = 'none'; 
                MDDTable.typeEventMDD = '';
                if (obj.className.indexOf("selected") < 0) obj.className = "tdout"
                else obj.className = "selected";
            }
        }
    }
}
function hideOtherMDDTD(menuTDId) {
    var obj = document.getElementById(menuTDId);
    var parentObj = obj.parentNode;
    for (var i = 0; i < parentObj.childNodes.length; i++) {
        if (parentObj.childNodes[i].id != menuTDId) { timerMDDHide(parentObj.childNodes[i].id) }
    }

}

function buildMenuMegaDropDownJS(menu) {
    function hoverMenuCascadeJS(obj, forceShow, typeEvent) {
        if (!forceShow) forceShow = 'auto';
        var _Timer = 0;
        var MDDWidth = 0;
        if (obj.nodeName == 'TD') {
            //  II_calculScroll();
            if (obj.resized) {// si deja positionné MAIS la taille a changé, alors, on re-positionne
                if (II_windowWidth != obj._II_windowWidth) obj.resized = false;
                else if (forceShow == "show" &&   obj.className.indexOf("over")>= 0 && typeEvent == 'onmouseover') {
             //       alert('l46');
                    return;
                }
            }
            eval("_Timer = " + menu + "_Timer;");
            hideOtherMDDTD(obj.id);
            if (!obj.resized) {

                var _ForceWidthCol = false;
                obj._II_windowWidth = II_windowWidth;
                obj._posx = posElement(obj)[0];
                eval("_ForceWidthCol = " + menu + "_ForceWidthCol;");

                if (!_ForceWidthCol) _ForceWidthCol = 0;
                if (_ForceWidthCol <= 0) _ForceWidthCol = obj.offsetWidth;
                var listUl = obj.getElementsByTagName('ul');
                if (listUl.length > 0) {
                    var secondLevelWidthAsFirst = true; ///false;
                    /*	eval("secondLevelWidthAsFirst = " + menu + "_SecondLevelWidthAsFirst;");
                    if(secondLevelWidthAsFirst)
                    listUl[0].style.width = obj.offsetWidth + 'px'; 
                    */
                    var TDContenu = listUl[0].parentNode;
                    var LI = listUl[0].getElementsByTagName('li');
                    var td2 = listUl[0].parentElement;
                    var TDContenuMinWidth = 0;
                    var nbCol = 0;
                    for (var i = 0; i < LI.length; i++) {
                        if ((LI[i].parentNode == listUl[0]) && secondLevelWidthAsFirst) {
                            LI[i].style.minWidth = _ForceWidthCol  - PadLeft + 'px';
                            LI[i].style.width = _ForceWidthCol - PadLeft + 'px';
                            LI[i].style.float = 'left';
                            if (nbCol < 3)
                            { TDContenuMinWidth += _ForceWidthCol;nbCol++; }
                            

                            var A = getChildNodesByTagName(LI[i], 'a');
                            if (A.length > 0) {
                                A = A[0];
                                A.style.width = _ForceWidthCol + 'px';

                            }
                        }
                    }
                    if (TDContenuMinWidth > 0) {
                        TDContenu.style.width = TDContenuMinWidth + 'px';

                        var _LargeurBorduresMDD = 0;
                        eval("_LargeurBorduresMDD = " + menu + "_LargeurBorduresMDD;");

                        MDDWidth = TDContenuMinWidth + _LargeurBorduresMDD; //TDContenu.parentNode.childNodes[0].offsetWidth + TDContenuMinWidth + TDContenu.parentNode.childNodes[2].offsetWidth
                    }

                }
            }

            UL = obj.getElementsByTagName('ul');
            if (UL.length > 0) {
                sousMenu = UL[0];
                //if (obj.nodeName == 'TD') {
                var MDDTable = obj.childNodes[1];
                if (!obj.resized) {
                    // c'est le 1er passage: on recalcule donc le tout à faire

                    var _IE_Impaire_DeltaX = 0;
                    if (document.all) {

                        if (!((parseInt(II_windowWidth) & 1) == '0')) {// si impaire
                            eval("_IE_Impaire_DeltaX = " + menu + "_IE_Impaire_DeltaX;");
                        }
                    }
                    // initialisation variables de position
                    var MDDMaxWidth = table.parentNode.offsetWidth;
                    var MDDMinLeft = posElement(table.parentNode)[0];
                    var MDDMaxRight = MDDMinLeft + MDDMaxWidth - 1;
                    var MDDRightDirLeftPos = obj._posx + (1 * _IE_Impaire_DeltaX);
                    var MDDLeftDirRightPos = obj._posx + obj.offsetWidth - 1 + (1 * _IE_Impaire_DeltaX);
                    // on cale le MDD à gauche en direction droite  ...
                    MDDTable.style.left = MDDMinLeft + 'px';
                    //et on l'affiche pour calculer sa largeur
                    // d'abord le "ul" de 2me niveau
                    sousMenu.style.display = 'block';
                    // puis le MDD
                    if (forceShow == 'show') {
                        MDDTable.style.display = 'block';
                        if (MDDTable.typeEventMDD != 'onclick') MDDTable.typeEventMDD = typeEvent;
                        // lancer le timer 
                        if (_Timer > 0) window.setTimeout("timerMDDHide('" + obj.id + "');", _Timer);
                    }
                    else if (forceShow == 'hide')
                        MDDTable.style.display = 'none';
                    else {
                        if (MDDTable.style.display == 'none' || MDDTable.style.display == '') {
                            MDDTable.style.display = 'block';
                            if (MDDTable.typeEventMDD != 'onclick') MDDTable.typeEventMDD = typeEvent;
                            // lancer le timer
                            if (_Timer > 0) window.setTimeout("timerMDDHide('" + obj.id + "');", _Timer);

                        }
                        else
                            MDDTable.style.display = 'none';
                    }
                    //on récupere la largeur du MDD
                    if (MDDWidth < 1) MDDWidth = MDDTable.offsetWidth;
                    MDDTable.style.width = MDDWidth + 'px';
                    if (MDDWidth + MDDRightDirLeftPos < MDDMaxRight) {
                        // si ca ne risque pas d déborder par la droite 
                        // on le remet vers la droite, calé à gauche de la cellule parent
                        MDDTable.style.left = MDDRightDirLeftPos + 'px';
                    }
                    else {
                        // si ca déborde, on met de droite à gauche

                        // d'abord, est-ce que le bord droit est < droite cellule parent ? si ou on recale par la droite
                        if (1 * (MDDWidth + MDDMinLeft) < MDDLeftDirRightPos) {
                            MDDTable.style.left = 1 * (MDDLeftDirRightPos - MDDWidth + 1) + 'px';
                        }
                        else 
                        {  // on cale à droite le MDD 
                         MDDTable.style.left = (MDDMaxRight -MDDWidth ) +'px';
                   
                        }
                        MDDTable.className = "level2Right";
                    }
                    obj.resized = true;
                }

                else {
                    if (forceShow == 'show') {
                        MDDTable.style.display = 'block';
                        if (MDDTable.typeEventMDD != 'onclick') MDDTable.typeEventMDD = typeEvent;
                        // lancer le timer
                        if (_Timer > 0) window.setTimeout("timerMDDHide('" + obj.id + "');", _Timer);
                    }
                    else if (forceShow == 'hide')
                        MDDTable.style.display = 'none';
                    else {
                        if (MDDTable.style.display == 'none' || MDDTable.style.display == '') {
                            if (forceShow != 'hideornothing') {
                                MDDTable.style.display = 'block';
                                // lancer le timer
                                if (_Timer > 0) window.setTimeout("timerMDDHide('" + obj.id + "');", _Timer);

                            }
                        }
                        else {
                            if (MDDTable.typeEventMDD == 'onmouseover' && (typeEvent == 'timer' || typeEvent == 'onmouseout'))
                                MDDTable.style.display = 'none';
                            else if (MDDTable.typeEventMDD == 'onclick' && (typeEvent == 'timer' || typeEvent == 'onclick'))
                                MDDTable.style.display = 'none';
                            else if (MDDTable.typeEventMDD == 'onmouseout')
                                MDDTable.style.display = 'none';

                        }
                    }
                }
                if (MDDTable.style.display == 'none') {
                    MDDTable.typeEventMDD = '';
                    if (obj.className.indexOf("selected") < 0) obj.className = "tdout"
                    else obj.className = "selected";


                }
                else {
                    if (MDDTable.typeEventMDD != 'onclick') MDDTable.typeEventMDD = typeEvent;
                    if (obj.className.indexOf("selected") < 0) obj.className = "tdover"
                    else obj.className = "tdselectedover";

                }
                // }
            }
        }
    }

    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.minWidth = objLi.offsetWidth + 'px';
                    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() {
                hoverMenuCascadeJS(this, 'show', 'onmouseover');
            }

            TD[i].onmouseout = function() {
            hoverMenuCascadeJS(this, 'hideornothing', 'onmouseout');
            }

            TD[i].clickAndGoto = function(url, target) {
                clickMenuCascadeJS(this, url, target)
            };

            TD[i].className = "tdout";

            TD[i].typeEventMDD = "";
            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 (url != "") {
            if ((hidden.value != "") && document.getElementById(hidden.value)) document.getElementById(hidden.value).className = "tdout";
            //alert(hidden.value);
            hidden.value = td.id;
            timerMDDHide(hidden.value,true);
            td.className = 'selected';
        

            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;
            }
        }
        else
            hoverMenuCascadeJS(td, 'auto', 'onclick');

    }

    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 = "menuMDD";
    table.cellpadding = 0;
    table.cellspacing = 0;
    var tbody = document.createElement('tbody');
    table.appendChild(tbody);
    var tr = document.createElement("tr");
    tbody.appendChild(tr);


    var mddHTMLBlocHaut = '<table class="level2Left" id="tMDD" border="0" cellspacing="0" cellpadding="0" style="min-width:1px;"><tr><td  class="hg"><img class="gh" src="' + URL_SITE + 'BibliRessources/images/imgnav/shim.gif"></td><td class="haut"><img class="haut" src="' + URL_SITE + 'BibliRessources/images/imgnav/shim.gif"></td><td class="hd"><img class="hd" src="' + URL_SITE + 'BibliRessources/images/imgnav/shim.gif"></td></tr><tr><td class="gauche"><img class="gauche" src="' + URL_SITE + 'BibliRessources/images/imgnav/shim.gif"></td><td  class="contenu" id="tdMDDcontenu">';
    var mddHTMLBlocBas = '</td><td class="droite"><img class="droite" src="' + URL_SITE + 'BibliRessources/images/imgnav/shim.gif"></td></tr><tr><td class="bg"><img class="bg"   src="' + URL_SITE + 'BibliRessources/images/imgnav/shim.gif"></td><td class="bas"><img class="bas"  src="' + URL_SITE + 'BibliRessources/images/imgnav/shim.gif"></td><td class="bd"><img class="bd"  src="' + URL_SITE + 'BibliRessources/images/imgnav/shim.gif"></td></tr></table>'
    var i;
    var childLI = getChildNodesByTagName(menuObj, "li");
    for (i = 0; i < childLI.length; i++) {
        var li = childLI[i];
        var td = document.createElement("td");
        td.setAttribute("id", li.id);
        tr.appendChild(td);
    
        var childLIUL = getChildNodesByTagName(li, "ul");

        if (childLIUL.length == 0) { td.innerHTML = li.innerHTML }
        else {
            var posULmin = li.innerHTML.indexOf('<ul');
            var posULmaj = li.innerHTML.indexOf('<UL');
            var posUL = posULmin;
            if (((posUL <= 0) || (posULmaj < posUL)) && posULmaj > 0) posUL = posULmaj;
            var td_innerHTML = li.innerHTML;
            var td_a = td_innerHTML.substr(0, posUL).replace(/^\s+/g, '').replace(/\s+$/g, '');
            var td_ul = li.innerHTML.substring(posUL).replace(/^\s+/g, '').replace(/\s+$/g, '');
            td.innerHTML = td_a + mddHTMLBlocHaut + td_ul + mddHTMLBlocBas;
            
        }

    }
    var processWidthTd = false;
    eval("processWidthTd = " + menu + "_ProcessWidthTD;");
    if (processWidthTd == false) {
        var tddern = document.createElement("td");
        tddern.setAttribute("id", menu + '_tddern');
        tr.appendChild(tddern);
    }
    menuObj.parentNode.replaceChild(table, menuObj);

    setHoverMenuCascadeJS(menu);
}

