var gMenuParcours = new Array;
var gmenuHeaderP = new Array;

var tabHMWidth = 100;
var tabSMWidth = 150;
var celSMWidth = 140;
var celSMHeight = 25;

/* variables de traitement pour AJAX */
var UPSIdx = -1;
var actUPSIdx = -1;
var dftUPSIdx = -1;
var dftGRPUPSIdx = -1;
var dftUPSID = -1;
var dftGRPUPSID = -1;
var currUPSIdx = -1;
var currGRPUPSIdx = -1;
var currUPSID = -1;
var currUSRID = -1;
var currGRPUPSID = -1;
var gnboffsety=-1;
var offsety = 0;
var gtabHidCels = new Array();

function copyMenu(tabMenu)
{
    var i=0;
    var j = 0;
    var tabMenuP = new Array;

    for (i=0;i<tabMenu.length;i++)
    {
        tabMenuP[i] = new Array;
        for (j=0;j<tabMenu[i].length;j++)
            tabMenuP[i][j] = tabMenu[i][j];
    }

    tabMenuP = parserMenu(tabMenuP);

    // ajout des gen
    fctAddGenMenu(tabMenuP);

    return tabMenuP;
}


function delHid(tabMenu,pere)
{
    tabMenu[pere][7] = 1;

    var i = 0;
    // recuperer les enfants et les marquer

    var tabFils = new Array;

    // fonction qui recuepere les fils du niveau i;
    fctFils(tabMenu[pere][3],tabFils,tabMenu);

    // pour chaque fils lancer la proc qui les marquent
    for (i=0;i<tabFils.length;i++)
        delHid(tabMenu,tabFils[i]);
}


function parserMenu(tabMenu)
{
    if (self.document.FormMenu == null)
        return tabMenu;

    var i=0;
    var j = 0;

    // si au moins un element est caché il faut reconstruire le tableau
    var construire = 0;

    for (i=0;i<tabMenu.length;i++)
    {
        //case a cacher
        if (document.FormMenu.elements['hidCellMenuHidX'+i] || tabMenu[i][7]) // si la case est à cacher
        {
            if (tabMenu[i][1]) // si la case à un frere suivant alors
                tabMenu[tabMenu[i][1]][2] = tabMenu[i][2]; // le suivant c mon precedent
            if (tabMenu[i][2]) // si la case à un frere precedent alors
                tabMenu[tabMenu[i][2]][1] = tabMenu[i][1];// le precedent c mon suivant
            else // sinon la case c le premier enfant
                tabMenu[tabMenu[i][4]][3] = tabMenu[i][1]; // alors le premier fils de mon pere c mon suivant
            // il faut marquer à partir de cette case ainsi que tous les enfants afin de les supprimer
            //if (tabMenu[i][3]) // si la case à des enfants alors il faut
                delHid(tabMenu,i);
            construire = 1;
        }
    }
    if (construire)
    {
        var tabMenuP = fctReconstruire(tabMenu);
        return tabMenuP;
    }
    else // aucun element n'a ete caché
        return tabMenu;
}

function fctReconstruire(tabMenu)
{
    var tabMenuP = new Array;

    var tabIdPrec = new Array;

    var k = 0;
    var i = 0;
    var j = 0;
    for (i=0;i<tabMenu.length;i++)
    {
        if (!tabMenu[i][7])
        {
            tabMenuP[k] = new Array;
            for (j=0;j<tabMenu[i].length;j++)
                tabMenuP[k][j] = tabMenu[i][j];
            tabIdPrec[k] = i;
            k++;
        }
    }

    for (i=0;i<tabIdPrec.length;i++)
    {
        if (tabIdPrec[i] != i)
        {
            if (tabMenu[tabIdPrec[i]][1]) // si noeud actuel possedait un suivant
            {
                var suiv = fctChrProp(tabIdPrec,tabMenu[tabIdPrec[i]][1]); // rechercher ou est son suivant maintenant
                if (suiv != -1)// changer le suivant par celui trouvé
                {
                    tabMenuP[i][1] = suiv;
                    tabMenuP[suiv][2] = i;
                }

            }
            if (tabMenu[tabIdPrec[i]][2])// si noeud actuel possedait un precedent
            {
                var prec = fctChrProp(tabIdPrec,tabMenu[tabIdPrec[i]][2]);// rechercher ou est son precedent maintenant
                if (prec != -1)// changer le precedent par celui trouvé
                {
                    tabMenuP[i][2] = prec;
                    tabMenuP[prec][1] = i;
                }

                else
                {
// a revoir po sur
                    var pere = fctChrProp(tabIdPrec,tabMenu[tabIdPrec[i]][4]);// si on en trouve po alors chercher ou est son pere
                    tabMenuP[pere][3] = i;// et changer son fils par le noeud
                }
            }
            else
            {
                var pere = fctChrProp(tabIdPrec,tabMenu[tabIdPrec[i]][4]);// si on en trouve po alors chercher ou est son pere
                tabMenuP[pere][3] = i;// et changer son fils par le noeud
            }
            // si noeud actuel possedait des fils
            var tabFils = new Array;
            fctFils(tabMenu[tabIdPrec[i]][3],tabFils,tabMenu); // les fils avant
            // pour chaque fils //changer la val du pere par le noeud
            for (j=0;j<tabFils.length;j++)
            {
                var fils = fctChrProp(tabIdPrec,tabFils[j]);// rechercher ou ils sont maintenant
                tabMenuP[fils][4] = i;
            }
        }
    }
    return tabMenuP;
}


//methode qui cherche une propriete donné
function fctChrProp(tabIdPrec,idPrec)
{
    var i=0;
    for (i=0;i<tabIdPrec.length;i++)
        if (tabIdPrec[i] == idPrec)
            return i;
    return -1;
}

if(self.document.FormUps){
    gmenuHeaderP = copyMenu(gmenuHeader);

    var clickLg = -1;

    var posXmenu = 0;
    var posYmenu = 33;

    var maxniv =0;

    fctnbNiv();
    var iDiv = 0;
    var iZIdx = 1000;

    for( iDiv = 0;iDiv <= maxniv; iDiv++)
    {
        document.write('<div id="divMenu' + iDiv + '" style="position:absolute; left:-150px; top:-150px; visibility: hidden; z-index:'+ (iZIdx + iDiv) + '"></div>');
    }

    document.onclick = clickDocument;

    voirMenu();
}

function fctNbElemNiv(elem,tabMenu)
{
    var nb = 1;
    while(tabMenu[elem][1])
    {
        elem = tabMenu[elem][1];
        ++nb;
    }
    return nb;
}

function fctAddGenMenu(tabMenu)
{
    var FormUps = self.document.FormUps;
    var FormMajUps = self.document.UPSUSRID;
    var lFormPICA = self.document.FormPICA;

    if(!FormUps)
        return false;

    // retourner l'indice du dernier elem d'un niveau
    var der = fctDerNiv(tabMenu,0);

    // lg du tableau
    var lTab = tabMenu.length;
    var prec = 0;

    if(FormUps.hidIsPerso && FormUps.hidIsPerso.value == "1"){
        UPSIdx = lTab;
        console.debug('UPSIdx='+UPSIdx);

        /******************/
        /* JEU DE DONNEES */
        /******************/
        tabMenu[lTab] = new Array;
        tabMenu[lTab][0] = gstrMenuUpsLbl;//libelle formulaire
        tabMenu[lTab][1] = 0; //suivant
        tabMenu[lTab][2] = der;//prec
        tabMenu[lTab][3] = 0;//enfant
        tabMenu[lTab][4] = 0; //pere
        tabMenu[lTab][5] = 0;//onclick
        tabMenu[lTab][6] = 0;// raccourci

        // changer la valeur du suivant du dernier trouvé
        if (der)
            tabMenu[der][1] = lTab;

        //on sauvegarde le ID du formulaire
        der = lTab;
        var pere = 0;
        var fils = 0;

        if(parseInt(FormUps.hidUPSNB.value, 10) >= 0){
            //integration de "Utiliser" (jeux de donnees utilisateur)  : niveau 2
            ++lTab;
            tabMenu[lTab] = new Array;
            tabMenu[lTab][0] = gstrMenuUseLbl;//libelle
            tabMenu[lTab][1] = 0; //suivant
            tabMenu[lTab][2] = 0;//prec
            tabMenu[lTab][3] = 0;//enfant
            tabMenu[lTab][4] = der; //pere
            tabMenu[lTab][5] = 0;//onclick
            tabMenu[lTab][6] = 0;// raccourci

            // changer le fils de formulaire
            tabMenu[der][3] = lTab;
            pere = lTab;

            //met a jour l'enfant de Utiliser
            tabMenu[lTab][3] = lTab+1;

            prec = 0;
            //on va boucler pour chaque jeu  : niveau 3
            for(var i = 1;i<=parseInt(FormUps.hidUPSNB.value, 10);i++){
                ++lTab;
                tabMenu[lTab] = new Array;
                if(fctIsDft("hidUPSID" + i)) { //defaut
                    dftUPSIdx = lTab;
                    dftUPSID = eval("FormUps.hidUPSID" + i + ".value;")
                    tabMenu[lTab][0] = "<b>"+eval("FormUps.hidUPSLIB" + i + ".value;")+"</b>";//libelle
                }
                else
                    tabMenu[lTab][0] = eval("FormUps.hidUPSLIB" + i + ".value;");//libelle

                if(fctUPSIsCurrent(eval("FormUps.hidUPSID" + i + ".value;"))) {
                    currUPSIdx = lTab;
                    currUPSID = eval("FormUps.hidUPSID" + i + ".value;");
                    currUSRID = self.document.FormUps.hidUSRID.value;
                    tabMenu[lTab][0] += " *"; //on indique que c'est le jeu courant
                }
                tabMenu[lTab][1] = lTab+1; //suivant
                tabMenu[lTab][2] = prec;//prec
                tabMenu[lTab][3] = 0;//enfant
                tabMenu[lTab][4] = pere; //pere
                tabMenu[lTab][5] = "fctUPSNav("+lTab+", " + eval("FormUps.hidUPSID" + i + ".value;") + ")";//onclick
                tabMenu[lTab][6] = 0;// raccourci

                prec = lTab;
            }
            //on met a jour le dernier suivant par 0
            if(prec != 0)
                tabMenu[prec][1] = 0;
            else
                tabMenu[lTab][3] = 0;
        }
        ++lTab;

        if(FormUps.hidGRPNB){
            //gestion des utilisations/sauvegardes des groupes
            if(parseInt(FormUps.hidGRPNB.value, 10) > 0){

                //on va ajouter le menu GROUPE : niveau 2
                tabMenu[lTab] = new Array;
                tabMenu[lTab][0] = gstrMenuModLbl;//libelle
                tabMenu[lTab][1] = 0; //suivant
                tabMenu[lTab][2] = pere;//precedent
                if(parseInt(FormUps.hidGRPNB.value, 10) > 0)
                    tabMenu[lTab][3] = lTab+1;//enfant
                else
                    tabMenu[lTab][3] = 0;//enfant
                tabMenu[lTab][4] = der; //pere
                tabMenu[lTab][5] = 0;//onclick
                tabMenu[lTab][6] = 0;// raccourci

                //on met a jour le suivant de "Utiliser" (Groupes) si il existe
                if(pere != 0)
                    tabMenu[pere][1] = lTab;
                else{
                    //on met a jour le fils de "Formulaire"
                    tabMenu[der][3] = lTab;
                }

                //le pere devient "Groupes"
                pere = lTab;
                prec = 0;

                var prec_grp = 0;
                //on va ajouter les groupes : niveau 3
                for(i=1;i<=parseInt(FormUps.hidGRPNB.value, 10);i++){
                    lTab++;

                    //if(parseInt(eval("FormUps.hidGRPUPSNB"+i+".value")) > 0) {
                        tabMenu[lTab] = new Array;
                        //nom du groupe
                        tabMenu[lTab][0] = eval("FormUps.hidGRP" + i + ".value;");
                        //suivant
                        tabMenu[lTab][1] = parseInt(eval("FormUps.hidGRPUPSNB"+i+".value"),10)+lTab+1;
                        //precedent
                        tabMenu[lTab][2] = prec;
                        if(parseInt(eval("FormUps.hidGRPUPSNB"+i+".value"),10) == 0)
                            tabMenu[lTab][3] = 0;//enfant
                        else
                            tabMenu[lTab][3] = lTab+1;
                        tabMenu[lTab][4] = pere; //pere
                        tabMenu[lTab][5] = 0;//onclick
                        tabMenu[lTab][6] = 0;// raccourci
                        tabMenu[lTab][7] = 0;// raccourci
                        tabMenu[lTab][8] = eval("FormUps.hidGRPID" + i + ".value;");// ID generique

                        prec = lTab;

                        prec_grp = 0;
                        //integration des fils des groupes (UPS) : niveau 4
                        for(j=1;j<=parseInt(eval("FormUps.hidGRPUPSNB"+i+".value"),10);j++){
                            lTab++;
                            tabMenu[lTab] = new Array;
                            //si defaut alors jmets en gras
                            if(fctIsDft("hidUPSGRP"+i+"ID"+j)) {
                                //defaut
                                tabMenu[lTab][0] = "<b>"+eval("FormUps.hidUPSGRP"+i+"LIB"+j+".value")+"</b>";
                                dftGRPUPSID = eval("FormUps.hidUPSGRP"+i+"ID"+j+".value;");
                                dftGRPUPSIdx = lTab;
                            }
                            else
                                tabMenu[lTab][0] = eval("FormUps.hidUPSGRP"+i+"LIB"+j+".value");//libelle

                            if(fctUPSIsCurrent(eval("FormUps.hidUPSGRP"+i+"ID"+j+".value"))) {
                                tabMenu[lTab][0] += " *";
                                currUPSID = eval("FormUps.hidUPSGRP"+i+"ID"+j+".value;");
                                currUPSIdx = lTab;
                                currUSRID = eval("FormUps.hidGRPID"+i+".value")
                            }
                            tabMenu[lTab][1] = lTab+1;//suivant
                            tabMenu[lTab][2] = prec_grp;//precedent
                            tabMenu[lTab][3] = 0;//enfant
                            tabMenu[lTab][4] = prec; //pere
                            tabMenu[lTab][5] = "fctUPSNav("+lTab+", " + eval("FormUps.hidUPSGRP"+i+"ID"+j+".value") + "," + eval("FormUps.hidGRPID"+i+".value") + ")";//onclick
                            tabMenu[lTab][6] = 0;// raccourci

                            prec_grp = lTab;
                        }
                        //enleve le suivant du dernier ups
                        if(prec_grp != 0)
                            tabMenu[prec_grp][1] = 0;
                    }

                //}
                //enleve le suivant du dernier groupe
                if(prec != 0)
                    tabMenu[prec][1] = 0;

                prec = 0;
                lTab++;
            }
        }

        if((FormUps.hidModeFrm && FormUps.hidModeFrm.value == 1) || FormUps.wFormAjax){

            //met a jour le suivant de Groupe par Sauvegarder
            tabMenu[pere][1] = lTab;

            //sauvegarde dun jeu de donnees

            tabMenu[lTab] = new Array;
            tabMenu[lTab][0] = "Sauvegarder";//libelle
            tabMenu[lTab][1] = 0; //suivant
            tabMenu[lTab][2] = pere;//precedent
            tabMenu[lTab][3] = lTab+1;//enfant
            tabMenu[lTab][4] = der; //pere
            tabMenu[lTab][5] = 0;//onclick
            tabMenu[lTab][6] = 0;// raccourci

            //on met a jour le suivant de "Utiliser" ou "Groupe" (Sauvegarder) si il existe
            if(pere != 0) {
                tabMenu[pere][1] = lTab;
                console.debug(tabMenu[pere][0]+'suiv'+lTab);
            }
            else{
                //on met a jour le fils de "formulaire"
                tabMenu[der][3] = lTab;
            }

            //le pere devient "Sauvegarder"
            pere = lTab;
            actUPSIdx = lTab;
            console.debug('actUPSIdx'+actUPSIdx);

            lTab++;
            tabMenu[lTab] = new Array;
            tabMenu[lTab][0] = "Créer Nouveau";//libelle
            tabMenu[lTab][1] = lTab+1; //suivant
            tabMenu[lTab][2] = 0;//precedent
            tabMenu[lTab][3] = 0;//enfant
            tabMenu[lTab][4] = pere; //pere
            tabMenu[lTab][5] = "fctUPSAddNew()";//onclick
            tabMenu[lTab][6] = 0;// raccourci

            //affiche les fils de
            //if(FormMajUps && FormMajUps.hidUPSID && FormMajUps.hidUPSID.value != "" && (FormMajUps.hidUSRID.value == FormMajUps.hidCURRUSRID.value || FormMajUps.hidISADMIN.value == "1")){
            if(FormMajUps && FormMajUps.hidUPSID.value != "" && (FormMajUps.hidUSRID.value == FormMajUps.hidCURRUSRID.value || FormMajUps.hidISADMIN.value == "1")){
                lTab++;
                tabMenu[lTab] = new Array;
                tabMenu[lTab][0] = "Mettre à jour '" + fctUPSChrCurrent() + "'";//libelle
                tabMenu[lTab][1] = lTab+1; //suivant
                tabMenu[lTab][2] = lTab-1;//precedent
                tabMenu[lTab][3] = 0;//enfant
                tabMenu[lTab][4] = pere; //pere
                tabMenu[lTab][5] = "fctUPSUpt()";//onclick
                tabMenu[lTab][6] = 0;// raccourci

                if(FormUps.hidIsDft.value == "0" || FormUps.wFormAjax){
                    lTab++;
                    tabMenu[lTab] = new Array;
                    tabMenu[lTab][0] = "Utiliser par défaut '" + fctUPSChrCurrent() + "'";//libelle
                    tabMenu[lTab][1] = lTab+1; //suivant
                    tabMenu[lTab][2] = lTab-1;//precedent
                    tabMenu[lTab][3] = 0;//enfant
                    tabMenu[lTab][4] = pere; //pere
                    tabMenu[lTab][5] = "fctUPSDft()";//onclick
                    tabMenu[lTab][6] = 0;// raccourci
                }

                lTab++;
                tabMenu[lTab] = new Array;
                tabMenu[lTab][0] = "Supprimer '" + fctUPSChrCurrent() + "'";//libelle
                tabMenu[lTab][1] = 0; //suivant
                tabMenu[lTab][2] = lTab-1;//precedent
                tabMenu[lTab][3] = 0;//enfant
                tabMenu[lTab][4] = pere; //pere
                tabMenu[lTab][5] = "fctUPSDel()";//onclick
                tabMenu[lTab][6] = 0;// raccourci
            }
            else {
                tabMenu[lTab][1] = 0;
            }
            ++lTab;
        }

        //on met a jour le suivant de Jeux de Données (Affichage)
        tabMenu[der][1] = lTab;
    }

    /****************/
    /*  Affichage   */
    /****************/

    tabMenu[lTab] = new Array;
    tabMenu[lTab][0] = gstrMenuOptLbl;//libelle affichage
    tabMenu[lTab][1] = 0; //suivant
    tabMenu[lTab][2] = der; //precedent
    tabMenu[lTab][3] = 0; //enfant
    tabMenu[lTab][4] = 0; //pere
    tabMenu[lTab][5] = 0;//onclick
    tabMenu[lTab][6] = 0;// raccourci

    // changer la valeur du suivant du dernier trouvé
    if (der)
        tabMenu[der][1] = lTab;

    der = lTab;
/*    ++lTab;

    tabMenu[lTab] = new Array;
    tabMenu[lTab][0] = "Alertes";//libelle affichage
    tabMenu[lTab][1] = lTab+1; //suivant
    tabMenu[lTab][2] = 0; //precedent
    tabMenu[lTab][3] = 0; //enfant
    tabMenu[lTab][4] = der; //pere
    tabMenu[lTab][5] = "dijit.byId('alertes').showHide()";//onclick
    tabMenu[lTab][6] = 0;// raccourci

*/
    ++lTab;

    tabMenu[lTab] = new Array;
    tabMenu[lTab][0] = gstrMenuAffLbl;//libelle affichage
    tabMenu[lTab][1] = 0; //suivant
    tabMenu[lTab][2] = 0; //precedent
    tabMenu[lTab][3] = 0; //enfant
    tabMenu[lTab][4] = der; //pere
    tabMenu[lTab][5] = 0;//onclick
    tabMenu[lTab][6] = 0;// raccourci

    // changer le pere
    tabMenu[der][3] = lTab;

    var idxaff = lTab;

    ++lTab;
    tabMenu[lTab] = new Array;
    tabMenu[lTab][0] = "Actualiser";//libelle actualiser
    tabMenu[lTab][1] = lTab+1; //suivant
    tabMenu[lTab][2] = 0;//prec
    tabMenu[lTab][3] = 0;//enfant
    tabMenu[lTab][4] = idxaff; //pere
    tabMenu[lTab][5] = "fctReload()";//onclick
    tabMenu[lTab][6] = "F5";// raccourci

    // changer le pere
    tabMenu[lTab-1][3] = lTab;

    ++lTab;
    tabMenu[lTab] = new Array;
    tabMenu[lTab][0] = "Fermer";//libelle fermer
    tabMenu[lTab][1] = lTab+1;
    tabMenu[lTab][2] = lTab-1;//prec
    tabMenu[lTab][3] = 0;//enfant
    tabMenu[lTab][4] = idxaff;
    tabMenu[lTab][5] = "fctRetour(4)";//onclick
    tabMenu[lTab][6] = 0;// raccourci

    if (self.document.getElementById("hidRetournerURL") && self.document.getElementById("hidRetournerURL").value != "#")
    {
        ++lTab;
        tabMenu[lTab] = new Array;
        tabMenu[lTab][0] = fctRetournerLib();//libelle
        tabMenu[lTab][1] = 0;
        tabMenu[lTab][2] = lTab-1;//prec
        tabMenu[lTab][3] = 0;//enfant
        tabMenu[lTab][4] = idxaff;
        tabMenu[lTab][5] = "fctRetourner()";//onclick
        tabMenu[lTab][6] = fctKeyDownRetournerText();// raccourci
    }
    else
        tabMenu[lTab][1] = 0;

        if(lFormPICA) {

        //connexion automatique
        ++lTab;
        tabMenu[lTab] = new Array;
        tabMenu[lTab][0] = gstrMenuCaLbl;//libelle
        tabMenu[lTab][1] = 0; //suivant
        tabMenu[lTab][2] = idxaff; //precedent
        tabMenu[lTab][3] = lTab+1; //enfant
        tabMenu[lTab][4] = der; //pere
        tabMenu[lTab][5] = 0;//onclick
        tabMenu[lTab][6] = 0;// raccourci

        tabMenu[idxaff][1] = lTab;

        if(lFormPICA.hidPICAID.value == ""){
            ++lTab;
            tabMenu[lTab] = new Array;
            tabMenu[lTab][0] = "Activer";//libelle
            tabMenu[lTab][1] = 0; //suivant
            tabMenu[lTab][2] = 0; //precedent
            tabMenu[lTab][3] = 0; //enfant
            tabMenu[lTab][4] = lTab-1; //pere
            tabMenu[lTab][5] = "fctPICA(1)";//onclick
            tabMenu[lTab][6] = 0;// raccourci
        }
        else {
            ++lTab;
            tabMenu[lTab] = new Array;
            tabMenu[lTab][0] = "Désactiver";//libelle
            tabMenu[lTab][1] = 0; //suivant
            tabMenu[lTab][2] = 0; //precedent
            tabMenu[lTab][3] = 0; //enfant
            tabMenu[lTab][4] = lTab-1; //pere
            tabMenu[lTab][5] = "fctPICA(0)";//onclick
            tabMenu[lTab][6] = 0;// raccourci
        }
    }

    ++lTab;
    tabMenu[lTab] = new Array;
    tabMenu[lTab][0] = gstrMenuHlpLbl;//libelle
    tabMenu[lTab][1] = 0;//suivant
    tabMenu[lTab][2] = der;//precedent
    tabMenu[lTab][3] = 0;//enfant
    tabMenu[lTab][4] = 0;//pere
    tabMenu[lTab][5] = 0;//onclick
    tabMenu[lTab][6] = 0;// raccourci

    // changer la valeur du suivant du dernier trouvé
    tabMenu[der][1] = lTab;

    der = lTab;
    var prev = null;

    if(self.document.getElementById("PIVERSION")) {
        lversion = self.document.getElementById("PIVERSION").content;
        ++lTab;
        // niv 2 pere lTab
        tabMenu[lTab] = new Array;
        tabMenu[lTab][0] = 'Version : '+lversion;//libelle aide
        tabMenu[lTab][1] = 0;//suiv
        tabMenu[lTab][2] = 0;//prec
        tabMenu[lTab][3] = 0;//enfant
        tabMenu[lTab][4] = der;
        tabMenu[lTab][5] = 0;//onclick
        tabMenu[lTab][6] = 0;// raccourci

        if(prev == null) {
            prev = lTab;
            tabMenu[der][3] = lTab;
        }
        else {
            tabMenu[prev][1] = lTab;
            tabMenu[lTab][2] = prev;
        }
    }

    if(self.document.FORMUSERCONNECTED && self.document.FORMUSERCONNECTED.hidUserName.value != '') {
        ++lTab;
        // niv 2 pere lTab
        tabMenu[lTab] = new Array;
        tabMenu[lTab][0] = 'Connecté en : '+self.document.FORMUSERCONNECTED.hidUserName.value;
        tabMenu[lTab][1] = 0;//suiv
        tabMenu[lTab][2] = 0;//prec
        tabMenu[lTab][3] = 0;//enfant
        tabMenu[lTab][4] = der;
        tabMenu[lTab][5] = 0;//onclick
        tabMenu[lTab][6] = 0;// raccourci

        if(prev == null) {
            prev = lTab;
            tabMenu[der][3] = lTab;
        }
        else {
            tabMenu[prev][1] = lTab;
            tabMenu[lTab][2] = prev;
        }
    }

    if(self.document.FormPersoMenu && self.document.FormPersoMenu.hidMENUPRMID.value != '0') {
        ++lTab;
        // niv 2 pere lTab
        tabMenu[lTab] = new Array;
        if(self.document.FormPersoMenu.hidVIEWMENU.value == 'N') {
            tabMenu[lTab][0] = '<img src="'+ gstrImagesRep + '/ph2/view_menu.png" TITLE="Afficher le Menu" />';//libelle aide
            tabMenu[lTab][5] = "fctShowHideMenu()";//onclick
            //tabMenu[lTab][0] = '<img src="'+ gstrImagesRep + '/ph2/view_menu.png" TITLE="Afficher le Menu" />';//libelle aide
            //tabMenu[lTab][5] = "fctURL('PK_PERSO_HTML8.PR_MENUPERSO_UPTACT_MAIN?wPRMID="+self.document.FormPersoMenu.hidMENUPRMID.value+"&wMNPID="+self.document.FormPersoMenu.hidMENUMNPID.value+"&wViewMENU=O&wCallProc="+self.document.FormPersoMenu.hidMNPNOM.value+"',1)";//onclick
        }
        else {
            tabMenu[lTab][0] = '<img src="'+ gstrImagesRep + '/ph2/close_menu.png" TITLE="Cacher le Menu" />';//libelle aide
            //tabMenu[lTab][5] = "fctURL('PK_PERSO_HTML8.PR_MENUPERSO_UPTACT_MAIN?wPRMID="+self.document.FormPersoMenu.hidMENUPRMID.value+"&wMNPID="+self.document.FormPersoMenu.hidMENUMNPID.value+"&wViewMENU=N&wCallProc="+self.document.FormPersoMenu.hidMNPNOM.value+"',1)";//onclick
            tabMenu[lTab][5] = "fctShowHideMenu()";//onclick
        }

        tabMenu[lTab][1] = 0;//suiv
        tabMenu[lTab][2] = der;//prec
        tabMenu[lTab][3] = 0;//enfant
        tabMenu[lTab][4] = 0;
        tabMenu[lTab][6] = '';// raccourci

        // changer la valeur du suivant du dernier trouvé
        tabMenu[der][1] = lTab;
    }
}

function fctDerNiv(tabMenu,pere)
{
    var i = tabMenu[pere][3];

    if (i == 0 || !tabMenu[i]) // pere sans fils
        return 0;
    while(1)
    {
        if (tabMenu[i][1])
            i = tabMenu[i][1];
        else
            return i;
    }
}

function fctMenuAide()
{
    var lFormMenu = self.document.FormMenu;
    if (lFormMenu && lFormMenu.hidAideURL)
        fctNewWinURL(lFormMenu.hidAideURL.value, "winDoc");
}

function fctonloadMenu(){
    // ajout des gen
    var boonext = true;

    var content ="<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=2><TR>";
    var i= gmenuHeaderP[0][3];
    while(1)
    {
        if (!(gmenuHeaderP[i][1]))
            boonext = false;

        if(!boonext && self.document.FormPersoMenu && self.document.FormPersoMenu.hidMENUPRMID.value != '0'){
            // verifier si la case de menu contient des sous menus ou pas
            //content += "<TD style=\"width:25px; background-Image:URL("+ gstrImagesRep + lFormCurStyle.hidStyle17.value + "); cursor:pointer;\" HEIGHT=\"25\" ALIGN=\"center\" onMouseOver=\"menu(" + i +")\" onClick=\"clickMenu(" + i + ")\">";
            if(gmenuHeaderP[i][5] != 0)
                content += "<TD class=\"celMenuJSHeader\" onMouseOver=\"menu(" + i +")\" onClick=\""+gmenuHeaderP[i][5]+"\">";
            else
                content += "<TD class=\"celMenuJSHeader\" onMouseOver=\"menu(" + i +")\" onClick=\"clickMenu(" + i + ")\">";
        }
        else    // verifier si la case de menu contient des sous menus ou pas
            //content += "<TD style=\"width:"+tabHMWidth+"px; background-Image:URL("+ gstrImagesRep + lFormCurStyle.hidStyle17.value + "); cursor:pointer;\" HEIGHT=\"25\" ALIGN=\"center\" onMouseOver=\"menu(" + i +")\" onClick=\"clickMenu(" + i + ")\">";
            if(gmenuHeaderP[i][5] != 0)
                content += "<TD class=\"celMenuJSHeader\" onMouseOver=\"menu(" + i +")\" onClick=\""+gmenuHeaderP[i][5]+"\">";
            else
                content += "<TD class=\"celMenuJSHeader\" onMouseOver=\"menu(" + i +")\" onClick=\"clickMenu(" + i + ")\">";

        // on click appelle d'une fonction <A onClick="return(false)"
        // texte de la case
        content += gmenuHeaderP[i][0] + "</TD>";

        if(!boonext)
            break;
        else
            i = gmenuHeaderP[i][1];
    }
    content += "</TR></TABLE>";
    document.getElementById("divMenu0").style.visibility = "visible";
    document.getElementById("divMenu0").innerHTML = content;

    var t = document.getElementById("divMenu0").style;
    t.top = posYmenu;
    t.left = posXmenu;

}

function voirMenu() {
  var posy;

  //decommenter ce code pour prendre en compte le deplacement du menu verticalement
  /*if (gbooBrowserIE == -1)
  {
   offsety = window.pageYOffset;
  }
  else {
   offsety = document.body.scrollTop;
  }*/

  //if(gnboffsety != offsety){
    gnboffsety = offsety;

    if(self.document.FormPersoMenu && self.document.FormPersoMenu.hidMENUPRMID.value != '0') {
        if(self.document.FormPersoMenu.hidVIEWMENU.value == 'N') {
            posXmenu = 0 - (100*fctNbElemNiv(1,gmenuHeaderP)) + 60;
        }
        else
            placeDftMenuPerso();
    }
    else
        placeDftMenu();

    placeObj(posXmenu,offsety + posYmenu);
  //}
  //decommenter ce code pour prendre en compte le deplacement du menu verticalement
  //tempo = setTimeout("voirMenu()",100);
}

function placeDftMenu(){
    posXmenu = 320;
    /*if (document.all)
        posXmenu = (document.body.clientWidth/2)-(100*fctNbElemNiv(1,gmenuHeaderP)/2);
    else
        posXmenu = (window.innerWidth/2)-(100*fctNbElemNiv(1,gmenuHeaderP)/2);
*/
    //alert(posXmenu);
}

function placeDftMenuPerso(){
    posXmenu = 320;
    /*if (document.all)
        posXmenu = (document.body.clientWidth/2)-(100*fctNbElemNiv(1,gmenuHeaderP)/2) + 37;
    else
        posXmenu = (window.innerWidth/2)-(100*fctNbElemNiv(1,gmenuHeaderP)/2) + 37;*/
}

//appelé toutes les 50ms
function placeObj(px,py) {
    for (i=0;i<=maxniv;i++)
    {
        var ldiv = "divMenu" + i;

        if (!document.getElementById(ldiv))
            return;

        var t = document.getElementById(ldiv).style;
        if (document.getElementById(ldiv).style.visibility == "hidden")
            return;

        if(i==0)
        {
            //niveau 1 (affichage)
            t.left = px;
            t.top = py;
        }
        else {
            //valeur X de la cellule du HEADER, on se basera la dessus pour décaler vers la gauche (en fonction du niveau)
            var xParent = posXmenu + posNiv(gMenuParcours[0]) * (tabHMWidth+3);
            if (i == 1) // niveau 0
            {
                t.left = xParent; //on se base sur la largeur des cellules du HEADER
                t.top = py + 25;
            }
            else if (i == 2)
            {
                t.left = xParent + ((i-1) * (tabSMWidth+3)) - 10;
                t.top = py + (i-1+posNiv(gMenuParcours[1]))*30 ;
            }
            else if (i == 3)
            {
                //niveau 4 (affichage)
                t.left = xParent + ((i-1) * (tabSMWidth+3)) - 10*(i-1);
                t.top = py + (1 + posNiv(gMenuParcours[2]) + posNiv(gMenuParcours[1]))*30; // ma position dans le niveau + la position dans le niveau de mon pere //posNiv(gmenuHeaderP[gMenuParcours[2]][4]))*25 +10;
            }
            else if (i == 4)
            {
                //pour le moment, pas arrivé jusque la
                t.left = xParent + ((i-1) * (tabSMWidth+3)) - 10*(i-1);
                t.top = py + (1 + posNiv(gMenuParcours[3]) + posNiv(gMenuParcours[2])  + posNiv(gMenuParcours[1]))*25 +15;  // ma position dans le niveau + la position dans le niveau de mon pere + la position dans le niveau de mon grand-pere
            }
        }
    }
}

function monNiv(lg)
{
    llg = lg;
    niv = 0;
    while((llg = gmenuHeaderP[llg][4]))
        niv++;
    return niv;
}

//affiche sous-niveau
function menu(lg)
{
    lniv = monNiv(lg); // niveau du mouseover
    // verifier le niveau
    // si niveau plus haut et la case parcours differente alors initialiser la parcours
    if(lg != gMenuParcours[lniv])
    {
        gMenuParcours[lniv] = lg;
        // parcourir le tableau
        var p = 0;
        for (p = (lniv+1); p <= gMenuParcours.length;p++)
        {
            var hDiv = "divMenu" + p;
            if (document.getElementById(hDiv))
                document.getElementById(hDiv).style.visibility = "hidden";

        }
        gMenuParcours.length = gMenuParcours.length - ((p -1) - (lniv+1));
        if (!gMenuParcours.length)
            gMenuParcours[0] = lg;
        if (gmenuHeaderP[lg][3])
            gMenuParcours[lniv+1] = gmenuHeaderP[lg][3];
    }

    var ldiv = "divMenu" + (lniv +1);

    if (!document.getElementById(ldiv))
        return;

    var t = document.getElementById(ldiv).style;

    var xParent = posXmenu + posNiv(gMenuParcours[0]) * (tabHMWidth+3);

    if (!lniv) // niveau 0
    {
        //t.left = posXmenu + posNiv(lg)*100 + 2;
        t.left = xParent; //on se base sur la largeur des cellules du HEADER
        t.top = posYmenu + 25;
    }
    else if (lniv == 1)
    {
        t.left = xParent + lniv * (tabSMWidth+3) - 10;
        t.top = posYmenu + (1+posNiv(lg))*30 ;
        //alert(lniv + " " + t.top);
    }
    else if (lniv == 2)
    {
        //t.left = posXmenu + ((posNiv(gmenuHeaderP[lg][4])*celSMWidth) + celSMWidth);
        t.left = xParent + lniv * (tabSMWidth+3) - (10*lniv);
        t.top = posYmenu + (1 + posNiv(lg) + posNiv(gmenuHeaderP[lg][4]))*30;
    }
    else if (lniv == 3)
    {
        t.left = xParent + lniv * (tabSMWidth+3) - (10*lniv);
        t.top = posYmenu + (1 + posNiv(lg) + posNiv(gmenuHeaderP[lg][4]) + posNiv(gmenuHeaderP[gmenuHeaderP[lg][4]][4]))*25 +15;   // ma position dans le niveau + la position dans le niveau de mon pere + la position dans le niveau de mon grand-pere
    }

    t.visibility = "hidden";

    // verifier s'il existe des sous menus
    if (gmenuHeaderP[lg][3])
    {
//        var content ="<TABLE BORDER=1 BORDERCOLOR='#CAD4DE' CELLPADDING=0 CELLSPACING=0 BGCOLOR=#000000 WIDTH=150>";
        var content ="<TABLE WIDTH="+tabSMWidth+">";
//        var content ="<TABLE BGCOLOR=\"#FFFFFF\" border=1 cellspacing=0 cellpadding=3 bordercolorlight=#63676B bordercolordark=#" +lFormCurStyle.hidStyle20.value+ " WIDTH=150>";
        i = gmenuHeaderP[lg][3]
        while(1)
        {
            if(gtabHidCels.indexOf(i) > -1)
                var lstyle = 'style="display:none;"';
            else
                var lstyle = '';

            // verifier si la case de menu contient des sous menus ou pas
            //content += "<TR><TD HEIGHT=25 STYLE='cursor:pointer' onMouseOver=\"this.style.background='#"+lFormCurStyle.hidStyle19.value+"';menu("+ i + ")\" onMouseOut=\"this.style.background='#"+lFormCurStyle.hidStyle18.value+"'\" onClick=\"clickMenu(" + i + ")\">";
            if(gmenuHeaderP[i][5] != 0) //fct js
                content += "<TR><TD class=\"celMenuJSChild\" id=\"celMenuJSChild"+i+"\" onMouseOver=\"menu("+ i + ")\" onClick=\""+gmenuHeaderP[i][5]+"\" "+lstyle+">";
            else
                content += "<TR><TD class=\"celMenuJSChild\" id=\"celMenuJSChild"+i+"\" onMouseOver=\"menu("+ i + ")\" onClick=\"clickMenu(" + i + ")\" "+lstyle+">";

            content +="<TABLE><TR><TD WIDTH="+celSMWidth+" ALIGN=LEFT>";
            content += gmenuHeaderP[i][0] + "</TD>";

            if (gmenuHeaderP[i][6]) //il y a un raccourcis
            {
                content +="<TD WIDTH=10 ALIGN=CENTER>";
                content += gmenuHeaderP[i][6] + "</TD>";
            }
            if(gmenuHeaderP[i][3]) //il y a des enfants
                content += "<TD WIDTH=10 ALIGN=RIGHT><IMG ALIGN=RIGHT SRC=" + gstrImagesRep + "flechemenu.gif></TD>";
            else
                content += "<TD WIDTH=10 ALIGN=RIGHT></TD>";

            content +="</TR></TABLE>";
            content += "</TD></TR>";

            if (!gmenuHeaderP[i][1])
                break;
            i = gmenuHeaderP[i][1];
        }
        content += "</TABLE>";

        document.getElementById(ldiv).innerHTML = content;
        t.visibility = "visible";
    }

    return false;
}

function posNiv(lg)
{
    var pos = 0;
    var llg = lg;

    while ((llg = gmenuHeaderP[llg][2]))
    {

        ++pos;
    }

    return pos;
}

function fctnbNiv()
{
    var g = 1;
    while(1)
    {
        nbNiv(0,g);
        if (!(g = gmenuHeaderP[g][1]))
            break;
    }
}

function nbNiv(fils,i)
{

    var tabFils = new Array;
    // fonction qui recupere les fils du niveau i;
    fctFils(gmenuHeaderP[i][3],tabFils,gmenuHeaderP);

    var nivSup = fils + 1;
    var j=0;
    for (j=0;j<tabFils.length;j++)
    {
        if (maxniv < nivSup)
            maxniv = nivSup;
        nbNiv(nivSup,tabFils[j]);
    }
    return;
}

function fctFils(i,tabFils,tabMenu) // index du fils
{
    j = 0;
    k = i;

    while(1)
    {
        if(!k)
            break;
        tabFils[j] = k
        k = tabMenu[k][1];
        j++;
    }
    return;
}

function clickMenu(lg)
{
    clickLg = lg;
}

function kill()
{
    for (k=1;k<= maxniv; k++)
    {
        var ldiv = "divMenu" + k;
        if (!document.getElementById(ldiv))
            return;
        var t = document.getElementById(ldiv).style;
        t.visibility = "hidden";
    }
}

function clickDocument()
{

    if (clickLg != -1)
    {
        if (gmenuHeaderP[clickLg][5] != 0)
            eval(gmenuHeaderP[clickLg][5]);
        clickLg = -1;
    }
    else
    {
        kill();
    }
}

/*************************************************************/
/****         ACTIONS & FONCTIONS JEUX DE DONNEES         ****/
/*************************************************************/

function fctUPSNav(lUpsIdx,lnbUPSID,lnbUSRID){
    var FormUps = self.document.FormUps;

    console.debug(lUpsIdx);
    console.debug(gmenuHeaderP[lUpsIdx][0]);

    if(FormUps.wFormAjax){
        //change depuis AJAX
        dijit.byId(FormUps.wFormAjax.value).changeUPS(lUpsIdx,lnbUPSID,lnbUSRID);
        return false;
    }
    else{
        var FormHiderso = self.document.FormHIDPersoValOrd;
        var lstrURL = "PK_PARAMS_HTML8.PR_PRMSPARAMS_UPSMAIN?wPRMID=" + FormHiderso.wPRMID.value;
        lstrURL += "&wCallProc=" + FormHiderso.wCallProc.value;
        lstrURL += "&wHIDMNPID=" + FormHiderso.wHIDMNPID.value;
        if(lnbUSRID)
            lstrURL += "&wHIDUSRID=" + lnbUSRID;
        else
            lstrURL += "&wHIDUSRID=" + FormHiderso.wHIDUSRID.value;
        lstrURL += "&wHIDUPSID=" + lnbUPSID;
        lstrURL += "&wHIDUPSORD=" + self.document.FormUps.hidUPSORD.value;

        fctURL(lstrURL);
        return false;
    }
}

//va inserer un nouveau formulaire
function fctUPSAddNew(){
    var FormUps = self.document.FormUps;

    if(FormUps.wFormAjax){
        dijit.byId(FormUps.wFormAjax.value).newUPS();
        return false;
    }

    //fenetre modale pour entrer le nom du UPS et choisir par defaut ou non
    var pFormAdmin = self.document.FORMAPPADMIN;

    //administrateur
    if(pFormAdmin && pFormAdmin.hidDFTUSRID){ //il y a un ou plusieurs groupes
        if(pFormAdmin.hidDFTUSRID.value != '') {
            self.document.FormHIDPersoValOrd.wHIDUSRID.value = pFormAdmin.hidDFTUSRID.value;
        }
    }

    //on met a jour les données du formulaire FormHIDPersoValOrd
    var lFormChp = self.document.FormHIDPersoValOrd;
    lFormChp.wMode.value = "2"; //insertion
    var lLib = prompt('Libellé du formulaire');
    if(lLib == null || lLib == '')
        return false;

    var lDesc = prompt('Description du formulaire');
    if(lDesc == null)
        return false;

    lFormChp.wUPSLIB.value = lLib;
    lFormChp.wUPSDESC.value = lDesc;

    if(confirm("Voulez-vous utiliser ce formulaire par défaut?"))
        lFormChp.wUPSDFT.value = "1";
    else
        lFormChp.wUPSDFT.value = "0";

    lFormChp.wUPSORD.value = self.document.FormUps.hidUPSORD.value;

    //on lance la sauvegarde des parametres
    fctValidDft();
    return false;
}

//va supprimer le formulaire courant
function fctUPSDel(){
    var FormUps = self.document.FormUps;

    if(FormUps.wFormAjax){
        dijit.byId(FormUps.wFormAjax.value).delUPS();
        return false;
    }
    var hidformUsr = self.document.UPSUSRID;
    if(!confirm("Êtes-vous sûr de vouloir supprimer le formulaire '" + fctUPSChrCurrent() + "'?"))
        return false;
    else{
        var lFormChp = self.document.FormHIDPersoValOrd;
        lFormChp.wMode.value = "3"; //suppression
        lFormChp.wUPSID.value = self.document.FormUps.hidCurUPSID.value;
        lFormChp.wUPSORD.value = self.document.FormUps.hidUPSORD.value;
        lFormChp.wHIDUSRID.value = hidformUsr.hidUSRID.value;
        //on lance la sauvegarde des parametres
        fctValidDft();
        return false;
    }
}

//va mettre a jour le formulaire courant
function fctUPSUpt(){
    var FormUps = self.document.FormUps;
    if(FormUps.wFormAjax){
        //change depuis AJAX
        dijit.byId(FormUps.wFormAjax.value).majUPS();
        return false;
    }
    var hidformUsr = self.document.UPSUSRID;
    var lFormChp = self.document.FormHIDPersoValOrd;

    var lLib = prompt('Nouveau libellé du formulaire', hidformUsr.hidUPSLIB.value);
    if(lLib == null || lLib == '')
        return false;

    var lDesc = prompt('Nouvelle description du formulaire', hidformUsr.hidUPSDESC.value);
    if(lDesc == null)
        return false;

    lFormChp.wUPSLIB.value = lLib;
    lFormChp.wUPSDESC.value = lDesc;
    lFormChp.wUPSDFT.value = hidformUsr.hidUPSDFT.value;

    lFormChp.wMode.value = "1"; //modification
    lFormChp.wUPSID.value = self.document.FormUps.hidCurUPSID.value;
    lFormChp.wHIDUSRID.value = hidformUsr.hidUSRID.value;

    //on lance la sauvegarde des parametres
    fctValidDft();
    return false;
}

//va rendre DEFAUT le formulaire courant
function fctUPSDft(){
    var FormUps = self.document.FormUps;

    if(FormUps.wFormAjax){
        dijit.byId(FormUps.wFormAjax.value).dftUPS();
        return false;
    }
    var lFormChp = self.document.FormHIDPersoValOrd;
    lFormChp.wMode.value = "5"; //defaut
    lFormChp.wUPSID.value = self.document.FormUps.hidCurUPSID.value;
    //on lance la sauvegarde des parametres
    fctValidDft();
    return false;
}

function fctUPSZero() {
    var lFormChp = self.document.FormHIDPersoValOrd;
    if(confirm("Ceci va générer un formulaire vide et toutes vos modifications seront perdues.\nVoulez-vous continuer?")) {
        if(!self.document.FormHIDPersoValOrd.wHidFormName || self.document.FormHIDPersoValOrd.wHidFormName.value == ""){
            alert("Probleme de configuration du formulaire personnalisable");
            return false;
        }
        else
            lFormName = self.document.FormHIDPersoValOrd.wHidFormName.value;

        lFormChp.wUPSORD.value = self.document.FormUps.hidUPSORD.value;
        lFormChp.wMode.value = "4";
        lFormChp.submit();
        return false;
    }
    return false;
}

//va chercher le libellé du UPSID courant a la page
function fctUPSChrCurrent(){
    var FormUps = self.document.FormUps;

    if(FormUps.hidCurUPSID.value == ""){
        return null;
    }
    else{
        for(var i = 1;i<=parseInt(FormUps.hidUPSNB.value, 10) && FormUps.hidCurUPSID.value != eval("FormUps.hidUPSID" + i + ".value;");i++);
        if(i>parseInt(FormUps.hidUPSNB.value, 10)){ // non trouve
            if(FormUps.hidIsAdmin.value == 1){
                //on va chercher dans les groupes car utilisateur est ADMIN
                for(i=1;i<=parseInt(FormUps.hidGRPNB.value, 10);i++){
                    for(j=1;j<=parseInt(eval("FormUps.hidGRPUPSNB"+i+".value"),10) && FormUps.hidCurUPSID.value != eval("FormUps.hidUPSGRP"+i+"ID"+j+".value;");j++);
                    if(j<=parseInt(eval("FormUps.hidGRPUPSNB"+i+".value"),10)) // trouve
                        return eval("FormUps.hidUPSGRP"+i+"LIB"+j+".value;");
                }
                return null;
            }
            else
                return null;
        }
        else
            return eval("FormUps.hidUPSLIB" + i + ".value;");
    }
}

//renvoie true si le UPSID est courant a la page sinon false
function fctUPSIsCurrent(lnbUPSID){
    if(self.document.FormUps.hidCurUPSID.value == lnbUPSID)
        return true;
    else
        return false;
}

function fctIsDft(lName) {
    var FormUps = self.document.FormUps;

    if(eval("FormUps."+lName+".checked"))
        return true;
    return false;
}

/***************************************************************************/
/*******    Effectue la sauvegarde/suppression dun formulaire    *******/
/***************************************************************************/
function fctValidDft(lFormName)
{
    if(!lFormName){ //pas de nom de formulaire en entrée
        if(!self.document.FormHIDPersoValOrd.wHidFormName || self.document.FormHIDPersoValOrd.wHidFormName.value == ""){
            alert("Probleme de configuration du formulaire personnalisable");
            return false;
        }
        else
            lFormName = self.document.FormHIDPersoValOrd.wHidFormName.value;
    }

    var lFormChp = self.document.FormHIDPersoFrmChp;
    var lNB = 0;
    //calcul du nombre de champs personnalisables dans le formulaire
    if(lFormChp.wHIDPERSONAME){
        if(!lFormChp.wHIDPERSONAME.length)
            lNB = 1;
        else
            lNB = lFormChp.wHIDPERSONAME.length;
    }

    var wIdx = 0;
    var lBoo = false;
    var lBooVisu = false;
    //sauvegarde les valeurs des champs du formulaire
    if(lNB > 1) {
        for(var j=0;j<lNB;j++){
            if((wIdx = fctExistOrd(lFormChp.wHIDPERSOORD[j].value)) != -1){
                lBoo = true;
                fctMAJOrdChp(wIdx, lFormChp.wHIDPERSONAME[j].value, lFormChp.wHIDPERSOTYPE[j].value, lFormName);
            }
        }
    }
    else {
        if((wIdx = fctExistOrd(lFormChp.wHIDPERSOORD.value)) != -1){
            lBoo = true;
            fctMAJOrdChp(wIdx, lFormChp.wHIDPERSONAME.value, lFormChp.wHIDPERSOTYPE.value, lFormName);
        }
   }

    //sauvegarde les valeurs de visibilité des champs
    lBooVisu = fctMAJVisu(lFormName);

    if(lBoo || lBooVisu){
        self.document.FormHIDPersoValOrd.submit();
        return false;
    }
    else{
        alert('Aucun Champ à personnaliser');
        return false;
    }
}

function fctExistOrd(lnbOrd)
{
    var lForm = self.document.FormHIDPersoValOrd;

    if(lForm.wUPMVALS.length) lNB = lForm.wUPMVALS.length;
    else if(lForm.wUPMVALS) lNB = 1
    else lNB = 0;

    for(var i=0;i<lNB && lForm.wTabOrds[i].value != lnbOrd;i++);
    if(i != lForm.wUPMVALS.length)
        return i;
    else
        return -1;
}

function fctMAJOrdChp(lnbIdx, lnbChpName, lnbChpTyp, lFormName)
{
    var lFormAct = self.document.FormHIDPersoValOrd;
    eval("var lForm = self.document." + lFormName + ";");
    var lTmpVal = "";
    var lElem = "";
    if(lnbChpTyp == "TEXT" || lnbChpTyp == "SELECT" || lnbChpTyp == "COMBOBOX")
        eval("lTmpVal = lForm." + lnbChpName + ".value;");
    else if(lnbChpTyp == "RADIO" || lnbChpTyp == "RADIOBUTTON"){
        eval("lElem = lForm." + lnbChpName + ";");
        for(var k=0;k<lElem.length && !lElem[k].checked;k++);
        if(k != lElem.length)
            lTmpVal = lElem[k].value;
    }
    else if(lnbChpTyp == "CHECKBOX"){
        eval("lElem = lForm." + lnbChpName + ";");
        if(lElem.checked)
            lTmpVal = lElem.value;
        else
            lTmpVal = "";
    }

    lFormAct.wUPMVALS[lnbIdx].value = lTmpVal;
}

//va sauvegarder les valeurs de la visibilite des champs
function fctMAJVisu(lFormName)
{
    var lBoo = false;
    var i=0, wIdx=0;
    var lFormUPS = self.document.FormHIDPersoValOrd;
    eval("var lForm = self.document." + lFormName + ";");
    if(lForm.wVisu) //il y a une gestion de visibilite
    {
        if(!lForm.wVisu.length){
            if((wIdx = fctExistOrd(lForm.wVisu.value)) != -1){ //verifie lexistence de l'ordre dans le form des UPM caches
                lBoo = true;
                if(lForm.wVisu.checked)
                    lFormUPS.wUPMVALS[wIdx].value = 'O';
                else
                    lFormUPS.wUPMVALS[wIdx].value = 'N';
            }
         }
         else{
            for(i=0;i<lForm.wVisu.length;i++){
                if((wIdx = fctExistOrd(lForm.wVisu[i].value)) != -1){ //verifie lexistence de l'ordre dans le form des UPM caches

                    lBoo = true;
                    if(lForm.wVisu[i].checked)
                        lFormUPS.wUPMVALS[wIdx].value = 'O';
                    else
                        lFormUPS.wUPMVALS[wIdx].value = 'N';
                }
            }
        }
    }
    if(lForm.wLock) //il y a une gestion de lockage
    {
        if(!lForm.wLock.length){
            if((wIdx = fctExistOrd(lForm.wLock.value)) != -1){ //verifie lexistence de l'ordre dans le form des UPM caches
                lBoo = true;
                if(lForm.wLock.checked)
                    lFormUPS.wUPMVALS[wIdx].value = 'O';
                else
                    lFormUPS.wUPMVALS[wIdx].value = 'N';
            }
         }
         else{
            for(i=0;i<lForm.wLock.length;i++){
                if((wIdx = fctExistOrd(lForm.wLock[i].value)) != -1){ //verifie lexistence de l'ordre dans le form des UPM caches
                    lBoo = true;
                    if(lForm.wLock[i].checked)
                        lFormUPS.wUPMVALS[wIdx].value = 'O';
                    else
                        lFormUPS.wUPMVALS[wIdx].value = 'N';
                }
            }
        }
    }
    return lBoo;
}

function fctPICA(lMode){
    var lFormPICA = self.document.FormPICA;

    if(lMode == "1") {
        if(!confirm("Vous êtes sur les points de créer une connexion automatique sur votre poste.\n Cela vous permettra d'accéder aux notifications sans avoir à vous reconnecter.\nVoulez-vous continuer?")){
            return false;
        }
    }
    else {
        if(!confirm("Êtes-vous sûr de vouloir supprimer cette connexion automatique?")){
            return false;
        }
    }

    gstrAjaxEnable = 'N';

    var lstrURL = "PK_WPICA_HTML8.PR_WPICA_ACT_MAIN?wPRMID="+lFormPICA.hidPICAPRMID.value;
    lstrURL += "&wMODE="+lMode;
    fctURL(lstrURL);
}

function fctHideCelMenu(celId){
    var cel = dojo.byId("celMenuJSChild"+celId);
    if(cel){
        cel.style.display = 'none';
    }
    if(gtabHidCels.indexOf(celId) == -1)
        gtabHidCels.push(celId);
    //gmenuHeaderP = copyMenu(gmenuHeader);
    //fctonloadMenu();
}

function fctShowCelMenu(celId){
    var cel = dojo.byId("celMenuJSChild"+celId);
    if(cel){
        cel.style.display = '';
    }
    if(gtabHidCels.indexOf(celId) > -1)
        gtabHidCels = gtabHidCels.removeObj(celId);
}

function fctShowHideMenu(){
    if(self.document.FormPersoMenu.hidVIEWMENU.value == 'O') {
        self.document.FormPersoMenu.hidVIEWMENU.value = 'N';
        sylogis.gen.url.fctAjaxURL("PK_PERSO_HTML8.PR_MENUPERSO_UPTACT_MAIN?wPRMID="+self.document.FormPersoMenu.hidMENUPRMID.value+"&wMNPID="+self.document.FormPersoMenu.hidMENUMNPID.value+"&wViewMENU=N&wCallProc="+self.document.FormPersoMenu.hidMNPNOM.value,1)
    }
    else {
        self.document.FormPersoMenu.hidVIEWMENU.value = 'O';
        sylogis.gen.url.fctAjaxURL("PK_PERSO_HTML8.PR_MENUPERSO_UPTACT_MAIN?wPRMID="+self.document.FormPersoMenu.hidMENUPRMID.value+"&wMNPID="+self.document.FormPersoMenu.hidMENUMNPID.value+"&wViewMENU=O&wCallProc="+self.document.FormPersoMenu.hidMNPNOM.value,1)
    }

    voirMenu();
}