// -------------------------------------------------------------------------
//  Boite a outils popup menus (IE4+, Netscape 6+)
// -------------------------------------------------------------------------
//  PREFIXE: pmnu0
// -------------------------------------------------------------------------
//  Le menu est compose d'une hierarchie de containers (Cntr) contenant
//  chacun des Members (Mmbr)
//
//  Donnees de l'objet Container
//    m_tobjPA: Proprietes container
//    m_intNSubs: Nombre de sous-menus
//    m_objFrstMmbr: Premier member (enfant)
//    m_objPrvCntr: Chainage containers de niveau 0
//    m_intStrtLft: Abscisse de depart
//    m_intStrtTp: Ordonnee de depart
//    m_intOrgLft: Abscisse de depart
//    m_intOrgTp: Ordonnee de depart
//    m_intLvl: Niveau dans la hierarchie (commence a 0)
//    m_objTop: Objet DOM de base du container (table ou div)
//
//  Donnees de l'objet Member
//    m_tobjPA: Proprietes
//    m_intNSubs: Nombre de sous-menus
//    m_strMName: Nom menu
//    m_objCntr: Container (parent)
//    m_objChldCntr: Container enfant
//    m_strLinkTxt: Lien a suivre
//    m_intLvl: Niveau dans la hierarchie
//    m_blnHighlight: En surbrillance
//    m_objNxtMmbr: Member suivant (frere)
//    m_objImg: Objet image dans member
//    m_objIntl: Objet interne (contenant le texte)
// -------------------------------------------------------------------------

// Parametrage
var pmnu0_gblnDyn=true; // Creation dynamique des menus
var pmnu0_gintTmrOpenDelay=300; // Delai ouverture menu
var pmnu0_gintTmrClsDelay=600; // Delai fermeture menu
var pmnu0_gintZtp=100; // ZIndex initial
var pmnu0_gblnOvrl=true; // Chevauchement menus
var pmnu0_gblnDbg=false; // Affichage infos debuggage

// Donnees globales pour fonctionnement menus
var pmnu0_gblnLdd=false; // ???
var pmnu0_gblnCrtd=false; // Initialisation effectuee
var pmnu0_gblnInitialize; // En cours d'initialisation
var pmnu0_gobjLastCntr=null; // Tout premier container
var pmnu0_gobjCurMmbr=null; // Membre courant (menu sur lequel on est positionne)
var pmnu0_gobjTmrOpenClose; // Timer ouverture/fermeture menu
var pmnu0_gblnShowCombo=true; // Etat d'affichage des combobox

// Infos navigateur
var pmnu0_gblnDom; // Dom dispo ?
var pmnu0_gblnNav; // Netscape
var pmnu0_gblnIE; // IE
var pmnu0_gblnOpr; // Opera
var pmnu0_gblnDomNav; // Dom et Netscape
var pmnu0_gblnDomIE; // Dom et IE
var pmnu0_gblnIE5; // IE5
var pmnu0_gblnIE55; // IE5.5
var pmnu0_gblnIE6; // IE6
var pmnu0_gblnMacCom; // Macintosh
var pmnu0_gblnMacIE5; // Macintosh et IE5
var pmnu0_gstrPx; // Unite pour "pixel"
var pmnu0_gblnCmplnt=false; // Compliant (compatibilite navigateurs...)
var pmnu0_gblnPd; // Gestion particuliere du padding

// Cache valeurs et pointeurs d'objets
var pmnu0_gintWinWdt; // Largeur fenetre
var pmnu0_gintWinHgt; // Hauteur fenetre
var pmnu0_gobjHtml=null; // Tag HTML
var pmnu0_gobjWin; // Fenetre courante
var pmnu0_gobjDoc; // Document courant
var pmnu0_gobjBody; // Tag Body courant

var pmnu0_gobjEventData=null; // Donnee evenement

// -------------------------------------------------------------------------
//  Initialisation menu (a appeler dans le OnLoad de la page)
// -------------------------------------------------------------------------

function menu0_Init()
{
 var lstrUserAgent=navigator.userAgent.toLowerCase(); // User agent
 var lstrAppVersion=navigator.appVersion.toLowerCase(); // Version navigateur

 // Definition des variables liees aux specificites du navigateur
 pmnu0_gblnDom=document.getElementById?true:false;
 pmnu0_gblnNav=lstrUserAgent.indexOf('mozilla')!=-1&&lstrUserAgent.indexOf('compatible')==-1?true:false;
 pmnu0_gblnIE=lstrUserAgent.indexOf('msie')!=-1?true:false;
 pmnu0_gblnOpr=lstrUserAgent.indexOf('opera')!=-1?true:false;
 pmnu0_gblnDomNav=pmnu0_gblnDom&&pmnu0_gblnNav?true:false;
 pmnu0_gblnDomIE=pmnu0_gblnDom&&pmnu0_gblnIE?true:false;
 pmnu0_gblnIE55=lstrAppVersion.indexOf("msie 5.5")!=-1?true:false;
 pmnu0_gblnIE5=(lstrAppVersion.indexOf("msie 5")!=-1)&&(!pmnu0_gblnIE55)?true:false;
 pmnu0_gblnIE6=lstrAppVersion.indexOf("msie 6")!=-1?true:false;
 pmnu0_gblnMacCom=(lstrAppVersion.indexOf("mac")!=-1)?true:false;
 pmnu0_gblnMacIE5=(pmnu0_gblnMacCom && pmnu0_gblnIE5)?true:false;

 if (pmnu0_gblnDbg)
   {
    // Debuggage type de navigateur
    alert( "pmnu0_gblnDom: "+pmnu0_gblnDom+"\n"
          +"pmnu0_gblnNav: "+pmnu0_gblnNav+"\n"
          +"pmnu0_gblnIE: "+pmnu0_gblnIE+"\n"
          +"pmnu0_gblnOpr: "+pmnu0_gblnOpr+"\n"
          +"pmnu0_gblnDomNav: "+pmnu0_gblnDomNav+"\n"
          +"pmnu0_gblnDomIE: "+pmnu0_gblnDomIE+"\n"
          +"pmnu0_gblnIE5: "+pmnu0_gblnIE5+"\n"
          +"pmnu0_gblnIE55: "+pmnu0_gblnIE55+"\n"
          +"pmnu0_gblnIE6: "+pmnu0_gblnIE6+"\n"
          +"pmnu0_gblnMacCom: "+pmnu0_gblnMacCom+"\n"
          +"pmnu0_gblnMacIE5: "+pmnu0_gblnMacIE5);
   }

 // Verifier que le menu peut fonctionner sous cet environnement
 if (!pmnu0_gblnDom)
   { return; }

 pmnu0_gobjWin=window;
 pmnu0_gobjDoc=pmnu0_gobjWin.document;
 pmnu0_gobjBody=pmnu0_gobjDoc.body;

 if (pmnu0_gblnDomIE && document.compatMode)
   {
    pmnu0_gobjHtml=pmnu0_gobjDoc.getElementsByTagName("HTML")[0];
    pmnu0_gblnCmplnt=pmnu0_gobjDoc.compatMode.indexOf('CSS')==-1?false:true
   }

 pmnu0_gstrPx="px";
 pmnu0_gblnPd=pmnu0_gblnDomNav||pmnu0_gblnCmplnt||pmnu0_gblnMacIE5?true:false;
 pmnu0_gblnCrtd=false;
 pmnu0_gblnLdd=true;
 menu0_CreateAll();
 menu0_PosAll();
 menu0_ResetHideAll();
 menu0_RestoreStateAll();
 pmnu0_gobjWin.onresize = menu0_Resize;
 pmnu0_gblnCrtd=true;
}


// -------------------------------------------------------------------------
//  Afficher un menu popup
// -------------------------------------------------------------------------
//  [IN] pstrMName:     Nom du menu a afficher
//  [IN] pobjEvent:     Evenement qui a declenche l'ouverture de ce menu
//  [IN] pobjEventData: Données liees à l'evenement
// -------------------------------------------------------------------------

function menu0_Popup(pstrMName, pobjEvent, pobjEventData)
{
 if (pmnu0_gblnDomNav)
   { pobjEvent.stopPropagation(); }
 else
   { window.event.cancelBubble=true; }

 if (!pmnu0_gblnLdd||!pmnu0_gblnCrtd)
   { return; }

 // Recherche member courant et container
 pmnu0_gobjCurMmbr=pmnu0_gobjDoc.getElementById(pstrMName+'_1');
 var lobjCntr=pmnu0_gobjDoc.getElementById(pstrMName+'c');

 pmnu0_gobjEventData = pobjEventData;

 // Reinitialiser tous menus
 menu0_ResetHideAll();

 // Cacher selecteurs
 menu0_ShowCombo(false);

 // Nouvelle position souris
 var lobjMousePos = menu0_GetMousePos(pobjEvent);

 // Largeur et hauteur disponible espace de travail
 var lintWinWidth=pmnu0_gblnIE?pmnu0_gblnCmplnt?pmnu0_gobjHtml.clientWidth:pmnu0_gobjBody.clientWidth:window.innerWidth;
 var lintWinHeight=pmnu0_gblnIE?pmnu0_gblnCmplnt?pmnu0_gobjHtml.clientHeight:pmnu0_gobjBody.clientHeight:window.innerHeight;

 // Modifier position et visibilite du conteneur (avec un leger decallage de 5 pixels pour faciliter le
 // position du pointeur sur le menu

 // Position en bas ou en haut suivant place disponible
 if (lobjMousePos.y - 5 + parseInt(lobjCntr.style.height) - shr_tool0_GetScrollTop() < lintWinHeight)
   { lobjCntr.style.top = lobjMousePos.y - 5; }
 else
   { lobjCntr.style.top = lobjMousePos.y + 5 - parseInt(lobjCntr.style.height); }

 // Position droite ou gauche suivant place disponible
 if (lobjMousePos.x - 5 + parseInt(lobjCntr.style.width) - shr_tool0_GetScrollLeft() < lintWinWidth)
   { lobjCntr.style.left = lobjMousePos.x - 5; }
 else
   { lobjCntr.style.left = lobjMousePos.x + 5 - parseInt(lobjCntr.style.width); }

 lobjCntr.style.visibility='visible';
 pmnu0_gblnInitialize=false;
}


// -------------------------------------------------------------------------
//  Obtenir la position de la souris
// -------------------------------------------------------------------------
//  [IN] pobjEvent : Evenement souris
//  [RETURN] Objet coordonnées
// -------------------------------------------------------------------------

function menu0_GetMousePos(pobjEvent)
{
 if (  (pobjEvent.pageX)
     ||(pobjEvent.pageY) )
   { return({x:pobjEvent.pageX, y:pobjEvent.pageY}); }

 return({x:pobjEvent.clientX + document.body.scrollLeft - document.body.clientLeft, y:pobjEvent.clientY + document.body.scrollTop - document.body.clientTop});
}


// -------------------------------------------------------------------------
//  Afficher un menu
// -------------------------------------------------------------------------
//  [IN] pstrMName: Nom du menu a afficher
//  [IN] pobjEvent: Evenement qui a declenche l'ouverture de ce menu
// -------------------------------------------------------------------------

function menu0_Pop(pstrMName,pobjEvent)
{
 if (pmnu0_gblnDomNav)
   { pobjEvent.stopPropagation(); }

 if (!pmnu0_gblnLdd||!pmnu0_gblnCrtd)
   { return; }

 // Menu deja ouvert, appel immediat
 if (pmnu0_gobjCurMmbr)
   {
    menu0_PopDo(pstrMName);
    return;
   }

 // Initialisation timer pour affichage menu
 pmnu0_gblnInitialize=true;
 if (pmnu0_gobjTmrOpenClose)
   clearTimeout(pmnu0_gobjTmrOpenClose);
 pmnu0_gobjTmrOpenClose=setTimeout('menu0_PopDo(\'' + pstrMName + '\')',pmnu0_gintTmrOpenDelay)
}


// -------------------------------------------------------------------------
//  Afficher un menu
// -------------------------------------------------------------------------
//  [IN] pstrMName: Nom du menu a afficher
// -------------------------------------------------------------------------

function menu0_PopDo(pstrMName)
{
 // Recherche member courant et container
 pmnu0_gobjCurMmbr=pmnu0_gobjDoc.getElementById(pstrMName+'_1');
 var lobjCntr=pmnu0_gobjDoc.getElementById(pstrMName+'c');

 // Reinitialiser tous menus
 menu0_ResetHideAll();

 // Cacher selecteurs
 menu0_ShowCombo(false);

 // Modifier position et visibilite du conteneur
 lobjCntr.style.left=lobjCntr.m_intOrgLft+pmnu0_gstrPx;
 lobjCntr.style.top=lobjCntr.m_intOrgTp+pmnu0_gstrPx;
 lobjCntr.style.visibility='visible';
 pmnu0_gblnInitialize=false;
}


// -------------------------------------------------------------------------
//  Cacher un menu
// -------------------------------------------------------------------------
//  [IN] pstrMName: Nom du menu a cacher
// -------------------------------------------------------------------------

function menu0_Out(pstrMName)
{
 if (!pmnu0_gblnLdd||!pmnu0_gblnCrtd)
   return;

 // Initialisation timer pour effacement menu
 pmnu0_gblnInitialize=true;
 if (pmnu0_gobjTmrOpenClose)
   clearTimeout(pmnu0_gobjTmrOpenClose);
 pmnu0_gobjTmrOpenClose=setTimeout('menu0_ResetHideCur()',pmnu0_gintTmrClsDelay)
}


// -------------------------------------------------------------------------
//  Creation du premier niveau de structure de menu
// -------------------------------------------------------------------------

function menu0_CreateAll()
{
 var lintI;
 var lintJ;
 var lobjCntr;
 var lobjCntr;
 var lobjPrvCntr=null;

 // Initialisation
 menu0_intNbMenus = 0;

 if (typeof menu0_gtobjListMenus == 'undefined')
   { return; }

 for (lintI=0; lintI<menu0_gtobjListMenus.length; lintI++)
    {
     menu0_intNbMenus = menu0_intNbMenus + menu0_gtobjListMenus[lintI][1];

     for (lintJ=0; lintJ<menu0_gtobjListMenus[lintI][1]; lintJ++)
        {
         var lstrMName=menu0_gtobjListMenus[lintI][0]+(lintJ+1);
         var ltobjPA=eval(lstrMName);

         lobjCntr=menu0_CreateMenuStructure(ltobjPA,lstrMName,ltobjPA[0],ltobjPA[1],ltobjPA[2],null,null,0);
         lobjCntr.m_objPrvCntr=lobjPrvCntr;
         lobjPrvCntr=lobjCntr
        }
    }

 pmnu0_gobjLastCntr=lobjCntr
}


// -------------------------------------------------------------------------
//  Initialisation de tout le menu
// -------------------------------------------------------------------------

function menu0_ResetHideAll()
{
 var lobjCntr=pmnu0_gobjLastCntr;
 while (lobjCntr)
      {
       menu0_ResetHide(lobjCntr);
       lobjCntr=lobjCntr.m_objPrvCntr
      }
}


// -------------------------------------------------------------------------
//  Repositionnement/dimensionnement de tout le menu
// -------------------------------------------------------------------------

function menu0_PosAll()
{
 if (typeof menu0_intNbMenus == 'undefined')
   { return; }

 pmnu0_gintWinWdt=pmnu0_gblnIE?pmnu0_gblnCmplnt?pmnu0_gobjHtml.clientWidth:pmnu0_gobjBody.clientWidth:pmnu0_gobjWin.innerWidth;
 pmnu0_gintWinHgt=pmnu0_gblnIE?pmnu0_gblnCmplnt?pmnu0_gobjHtml.clientHeight:pmnu0_gobjBody.clientHeight:pmnu0_gobjWin.innerHeight;

 var lintI;
 var lobjCntr=pmnu0_gobjLastCntr;
 var lintSz;
 var ltobjPA;

 for (lintI=0; lintI<menu0_intNbMenus; lintI++)
    {
     ltobjPA=lobjCntr.m_tobjPA;
     var lobjPrePos = {x:0, y:0};

     // Calcul offset ancrage menu
     if (ltobjPA[15])
       { lobjPrePos = shr_tools_GetElementPos(pmnu0_gobjDoc.getElementById(ltobjPA[15])); }

     // Positionner menu
     menu0_Pos(lobjCntr,(lobjCntr.m_intStrtTp+lobjPrePos.y),(lobjCntr.m_intStrtLft+lobjPrePos.x), 0);

     // Container precedent
     lobjCntr=lobjCntr.m_objPrvCntr
    }
}


// -------------------------------------------------------------------------
//  Sauvegarder etat de tous les menus
// -------------------------------------------------------------------------

function menu0_SaveStateAll()
{
 var lstrState; // Etat menus

 if (typeof menu0_strMenusID == 'undefined')
   { return; }

 // Parcours containers
 var lobjCntr=pmnu0_gobjLastCntr;
 while (lobjCntr)
      {
       // Sauvegarde etat
       if (lobjCntr.m_tobjPA[12]==2)
         {
          if (lstrState)
            { lstrState += "; "; }
          else
            { lstrState = ""; }

          lstrState += lobjCntr.id+"=";
          lstrState += escape(menu0_SaveTreeMenuState(lobjCntr));
         }

       // Menu suivant
       lobjCntr=lobjCntr.m_objPrvCntr
      }

 shr_tool0_gclsCookies.SetCookie("menu0_"+menu0_strMenusID+"State", lstrState,0);
}


// -------------------------------------------------------------------------
//  Restaurer etat de tous les menus
// -------------------------------------------------------------------------

function menu0_RestoreStateAll()
{
 var lintI=0;
 var lintIMax=0;

 if (typeof menu0_strMenusID == 'undefined')
   { return; }

 // Lecture etat de tous les menus de la page
 var lstrState = shr_tool0_gclsCookies.GetCookie("menu0_"+menu0_strMenusID+"State");

 if (!lstrState)
   { return; }

 var lobjStates = lstrState.split("; "); // Splitter pour obtenir l'etat de chaque menu

 // Restaurer l'etat de chaque menu
 for (lintI=0,lintIMax=lobjStates.length ; lintI<lintIMax ; lintI++)
    {
     var lobjState = lobjStates[lintI].split("="); // Separer le nom du menu de son etat
     var lobjCntr=pmnu0_gobjDoc.getElementById(lobjState[0]); // Retrouver une reference du menu

     // Restaurer l'etat du menu
     if (  (lobjCntr)
         &&(lobjCntr.m_tobjPA[12]==2) )
       { menu0_RestoreTreeMenuState(lobjCntr, unescape(lobjState[1])); }
    }
}


// -------------------------------------------------------------------------
//  Redimensionnement de la fenetre du navigateur
// -------------------------------------------------------------------------

function menu0_Resize()
{
 // Reinitialiser tous menus
 menu0_ResetHideAll();

 // Repositionner menu
 menu0_PosAll();
}


// -------------------------------------------------------------------------
//  Repositionnement/dimensionnement d'un conteneur et de chacun de ses
//  members
// -------------------------------------------------------------------------
//  Fonction recursive
// -------------------------------------------------------------------------
//  [IN] pobjCntr: Container
//  [IN] pintTp: Coordonnee haut
//  [IN] pintLft: Coordonnee gauche
//  [IN] pintLvl: Niveau de hierarchie courante
// -------------------------------------------------------------------------

function menu0_Pos(pobjCntr,pintTp,pintLft,pintLvl)
{
 var ltobjPA=pobjCntr.m_tobjPA; // Proprietes
 var lblnHori = pintLvl==0 && (ltobjPA[12]==1); // Affichage horizontal si premier niveau horizontal

 // Positionnement conteneur
 pobjCntr.style.left=pintLft+pmnu0_gstrPx
 pobjCntr.style.top=pintTp+pmnu0_gstrPx;
 pobjCntr.m_intOrgLft=pintLft;
 pobjCntr.m_intOrgTp=pintTp;

 // Positionnements members
 if (ltobjPA[12]==2)
   {
    // Menu arborescent
    pobjCntr.style.width=160+pmnu0_gstrPx;
    pobjCntr.style.height=305+pmnu0_gstrPx;
    document.images["MENU0_ROOTMENUS"].width=160;
    document.images["MENU0_ROOTMENUS"].height=305;
    return;
   }
 else if (  (!lblnHori)
     &&(!(ltobjPA[13]&&(pobjCntr.m_intLvl==0))) )
   {
    // Menu en colonnes
    // Tout menu vertical, sauf si premier niveau et premier niveau tjrs visible
    menu0_PosMmbrColumns(pobjCntr,pintTp,pintLft,pintLvl);
   }
 else
   {
    // Menu ou les elements sont les uns a la suite des autres
    // Menu vertical de premier niveau et menu horizontal
    menu0_PosMmbrList(pobjCntr,pintTp,pintLft,pintLvl);
   }
}


// -------------------------------------------------------------------------
//  Positionnement members en colonnes
// -------------------------------------------------------------------------
//  [IN] pobjCntr: Container
//  [IN] pintY: Coordonnee haut
//  [IN] pintX: Coordonnee gauche
//  [IN] pintLvl: Niveau de hierarchie courante
// -------------------------------------------------------------------------

function menu0_PosMmbrColumns(pobjCntr,pintY,pintX,pintLvl)
{
 var lintWdt;
 var lintHgt;
 var lintNCols = 0;
 var ltobjPA=pobjCntr.m_tobjPA; // Proprietes
 var lintBW=ltobjPA[14]; // Border-width
 var lblnHori = pintLvl==0 && (ltobjPA[12]==1); // Affichage horizontal si premier niveau horizontal
 var lblnBbtw=lblnHori?true:ltobjPA[16]; // Border-text

 // Uniquement si au moins un membre dans le container !
 if (pobjCntr.m_objFrstMmbr == null)
   { return; }

 // Calcul taille member (on suppose que tous les members de ce container font la meme taille)
 var lintMmbrWdt=parseInt(pobjCntr.m_objFrstMmbr.style.width);
 var lintMmbrHgt=parseInt(pobjCntr.m_objFrstMmbr.style.height);

 // Calcul nombre de colonnes necessaires
 var lintScrllTp=pmnu0_gblnIE?pmnu0_gblnCmplnt?pmnu0_gobjHtml.scrollTop:pmnu0_gobjBody.scrollTop:pmnu0_gobjWin.pageYOffset;
 var lintMaxHgt=lintScrllTp+pmnu0_gintWinHgt-parseInt(pobjCntr.style.top);

 // Hauteur maximale insufisante
 if (lintMaxHgt < lintMmbrHgt + lintBW*2)
   { return; }

 do
   {
    lintNCols++;
    lintWdt = (lintMmbrWdt+lintBW+(pmnu0_gblnDomNav?ltobjPA[24]:0))*lintNCols+lintBW;
    lintHgt = (lintMmbrHgt+(pmnu0_gblnDomNav?ltobjPA[23]:0)+(lblnBbtw?lintBW:0))*(Math.ceil(pobjCntr.m_intNSubs/lintNCols))+lintBW*2-(lblnBbtw?lintBW:0);
   }
 while (lintHgt > lintMaxHgt);

 // Redimensionner container
 pobjCntr.style.width = lintWdt+pmnu0_gstrPx;
 pobjCntr.style.height = lintHgt+pmnu0_gstrPx;
      
 // Repositionner chaque member du conteneur
 var lintNb=0;
 var lobjMmbr=pobjCntr.m_objFrstMmbr;
 var lintNbByCol = Math.ceil(pobjCntr.m_intNSubs/lintNCols);
 while (lobjMmbr!=null)
      {
       // Espace d'affichage insufisant
       if (lintNbByCol == 0)
         { break; }

       // Positionnement member
       lobjMmbr.style.left=(parseInt(lintNb/lintNbByCol))*(lintMmbrWdt+lintBW+(pmnu0_gblnDomNav?ltobjPA[24]:0))+lintBW+pmnu0_gstrPx;
       lobjMmbr.style.top=(lintNb%lintNbByCol)*(lintMmbrHgt+(pmnu0_gblnDomNav?ltobjPA[23]:0)+(lblnBbtw?lintBW:0))+lintBW+pmnu0_gstrPx;

       // Positionnement conteneur enfant
       menu0_PosChldCntr(lobjMmbr,pintLvl);

       // Membre suivant
       lobjMmbr=lobjMmbr.m_objNxtMmbr;
       lintNb++;
      }
      
 // Masquage fond du container si plusieurs colonnes et nombre d'options impair
 if (pobjCntr.m_objMaskMmbr != null)
   {
    if (  (lintNCols > 1)
        &&(lintNbByCol > 0)
        &&(pobjCntr.m_intNSubs%lintNbByCol>0) )
      {
       pobjCntr.m_objMaskMmbr.style.left=(parseInt(lintNb/lintNbByCol))*(lintMmbrWdt+lintBW+(pmnu0_gblnDomNav?ltobjPA[24]:0))+lintBW+pmnu0_gstrPx;
       pobjCntr.m_objMaskMmbr.style.top=(lintNb%lintNbByCol)*(lintMmbrHgt+(pmnu0_gblnDomNav?ltobjPA[23]:0)+(lblnBbtw?lintBW:0))+lintBW+pmnu0_gstrPx;
       pobjCntr.m_objMaskMmbr.style.height=(lintMmbrHgt+(pmnu0_gblnDomNav?ltobjPA[23]:0)+(lblnBbtw?lintBW:0))*(lintNbByCol-(pobjCntr.m_intNSubs%lintNbByCol))-(lblnBbtw?lintBW:0) + pmnu0_gstrPx;
       pobjCntr.m_objMaskMmbr.style.visibility='';
      }
    else
      { pobjCntr.m_objMaskMmbr.style.visibility='hidden'; }
   }
}


// -------------------------------------------------------------------------
//  Positionnement members en liste
// -------------------------------------------------------------------------
//  [IN] pobjCntr: Container
//  [IN] pintY: Coordonnee haut
//  [IN] pintX: Coordonnee gauche
//  [IN] pintLvl: Niveau de hierarchie courante
// -------------------------------------------------------------------------

function menu0_PosMmbrList(pobjCntr,pintY,pintX,pintLvl)
{
 var lintX=0;
 var lintY=0;
 var ltobjPA=pobjCntr.m_tobjPA; // Proprietes
 var lblnHori = pintLvl==0 && (ltobjPA[12]==1); // Affichage horizontal si premier niveau horizontal
 var lintBW=ltobjPA[14]; // Border-width
 var lblnBbtw=lblnHori?true:ltobjPA[16]; // Border-text
 var lintMaxX = 0;

 // Calculer taille maxi ligne
 var lintMaxWdt;

 if (pmnu0_gblnIE && !pmnu0_gblnIE5)
   { lintMaxWdt=parseInt(pmnu0_gobjDoc.getElementById(ltobjPA[15]).offsetWidth); }
 else
   { lintMaxWdt=pmnu0_gobjDoc.getElementById(ltobjPA[15]).offsetParent.offsetWidth; }

 // Repositionner chaque member du conteneur
 var lobjMmbr=pobjCntr.m_objFrstMmbr;
 while (lobjMmbr!=null)
      {
       // Calcul taille member
       var lintMmbrWdt=parseInt(lobjMmbr.style.width);
       var lintMmbrHgt=parseInt(lobjMmbr.style.height);

       // Ajouter ligne si necessaire (menu horizontal secable)
       if (lblnHori)
         {
          if (lintX+lintBW+lintMmbrWdt > lintMaxWdt)
            {
             lintMaxX = Math.max(lintMaxX,lintX+(lblnBbtw?lintBW:0));
             lintX=0;
             lintY += lintMmbrHgt + lintBW;
            }
         }

       // Positionnement member
       lobjMmbr.style.left=lintX+lintBW+pmnu0_gstrPx;
       lobjMmbr.style.top=lintY+lintBW+pmnu0_gstrPx;

       // Positionnement conteneur enfant
       menu0_PosChldCntr(lobjMmbr,pintLvl);

       // Decalage taille member + border
       if (lblnHori)
         { lintX += lintMmbrWdt + (lblnBbtw?lintBW:0); }
       else
         { lintY += lintMmbrHgt + (lblnBbtw?lintBW:0); }

       // Membre suivant
       lobjMmbr=lobjMmbr.m_objNxtMmbr;
      }

 // Redimensionnement container
 var lintWdt;
 var lintHgt;
 if (lblnHori)
   {
    lintWdt = Math.max(lintMaxX,lintX+lintBW);
    lintHgt = lintY+lintMmbrHgt+lintBW*2;

    if (pobjCntr.m_intLvl==0)
      {
       document.images["MENU0_ROOTMENUS"].width = lintWdt;
       document.images["MENU0_ROOTMENUS"].height = lintHgt;
      }
    pobjCntr.style.width = lintWdt+pmnu0_gstrPx;
    pobjCntr.style.height = lintHgt+pmnu0_gstrPx;
   }
 else
   {
    lintWdt = lintX+lintMmbrWdt+lintBW*2+(pmnu0_gblnDomNav?ltobjPA[24]:0);
    lintHgt = lintY+lintBW*2+(pmnu0_gblnDomNav?ltobjPA[23]:0);

    if (pobjCntr.m_intLvl==0)
      {
       document.images["MENU0_ROOTMENUS"].width = lintWdt;
       document.images["MENU0_ROOTMENUS"].height = lintHgt;
      }
    pobjCntr.style.width = lintWdt+pmnu0_gstrPx;
    pobjCntr.style.height = lintHgt+pmnu0_gstrPx;
   }
}


// -------------------------------------------------------------------------
//  Positionnement conteneur enfant a partir du member parent
// -------------------------------------------------------------------------
//  [IN] pobjMmbr: Member
//  [IN] pintLvl: Niveau de hierarchie courante
// -------------------------------------------------------------------------

function menu0_PosChldCntr(pobjMmbr,pintLvl)
{
 if (pobjMmbr.m_objChldCntr)
   {
    var ltobjPA=pobjMmbr.m_objCntr.m_tobjPA; // Proprietes
    var lblnHori = pintLvl==0 && (ltobjPA[12]==1); // Affichage horizontal si premier niveau horizontal
    var lblnBbtw=lblnHori?true:ltobjPA[16]; // Border-text
    var lintBW=ltobjPA[14]; // Border-width
    var lintChldCntrLft; // Abscisse container enfant
    var lintChldCntrTp; // Ordonnee container enfant

    // Calcul taille member, en tenant compte du padding
    var lintMmbrWdt=parseInt(pobjMmbr.style.width);
    var lintMmbrHgt=parseInt(pobjMmbr.style.height);

    // Determiner position sous-menu
    if (lblnHori)
      {
       lintChldCntrLft=parseInt(pobjMmbr.style.left);
       lintChldCntrTp=parseInt(pobjMmbr.style.top)+lintMmbrHgt;
      }
    else
      {
       lintChldCntrLft=parseInt(pobjMmbr.style.left)+lintMmbrWdt;
       lintChldCntrTp=parseInt(pobjMmbr.style.top)-lintBW;
      }

    // Positionnement sous-menu
    menu0_Pos(pobjMmbr.m_objChldCntr,lintChldCntrTp,lintChldCntrLft-(pmnu0_gblnOvrl&&!lblnHori?lintBW:0),pintLvl+1)
   }
}


// -------------------------------------------------------------------------
//  Reinitialisation menu courant
// -------------------------------------------------------------------------

function menu0_ResetHideCur()
{
 if (!pmnu0_gblnInitialize)
   return;

 if (!pmnu0_gobjCurMmbr)
   return;

 // On part du conteneur courant pour revenir jusqu'au premier conteneur
 var lobjCntr=pmnu0_gobjCurMmbr.m_objCntr;
 while (lobjCntr.m_objPrntCntr)
      lobjCntr=lobjCntr.m_objPrntCntr;

 // On reset tous les conteneurs freres
 menu0_ResetHide(lobjCntr);

 // Reafficher selecteurs
 menu0_ShowCombo(true);

 // Plus de menu courant + Plus de donnees liees a l'evenement
 pmnu0_gobjCurMmbr = null;
 pmnu0_gobjEventData = null;
}


// -------------------------------------------------------------------------
//  Reinitialiser le conteneur
// -------------------------------------------------------------------------
//  Fonction recursive
// -------------------------------------------------------------------------
//  [IN] pobjCntr: Container
// -------------------------------------------------------------------------

function menu0_ResetHide(pobjCntr)
{
 var lobjMmbr; // Parcours members
 var ltobjPA=pobjCntr.m_tobjPA

 // Ne rien faire si menu arborescent
 if (pobjCntr.m_tobjPA[12]==2)
   { return; }

 // Cacher ce container (sauf si premiere ligne et premiere ligne tjrs visible)
 pobjCntr.style.visibility=!(ltobjPA[13]&&pobjCntr.m_intLvl==0)?'hidden':'visible';

 // Parcours de chaque member
 lobjMmbr=pobjCntr.m_objFrstMmbr;
 while (lobjMmbr!=null)
      {
       // Supprimer highlight
       if (lobjMmbr.m_blnHighlight)
         menu0_HighlightMenu(lobjMmbr, false);

       // Initialisation recursive
       if (lobjMmbr.m_objChldCntr)
         menu0_ResetHide(lobjMmbr.m_objChldCntr);

       // Membre suivant
       lobjMmbr=lobjMmbr.m_objNxtMmbr
      }
}


// -------------------------------------------------------------------------
//  Efface tous les enfants
// -------------------------------------------------------------------------
//  Fonction recursive
// -------------------------------------------------------------------------
//  [IN] pobjMmbr: Container
// -------------------------------------------------------------------------

function menu0_ClearAllChilds(pobjMmbr)
{
 // Parcourir les members
 while (pobjMmbr)
      {
       // Supprimer highlight member
       if (pobjMmbr.m_blnHighlight)
         {
          pobjMmbr.m_blnHighlight=false;

          // remettre couleurs normales
          menu0_SetColors(pobjMmbr, false);

          // Appel recursif pour conteneur enfant
          if (pobjMmbr.m_objChldCntr)
            {
             pobjMmbr.m_objChldCntr.style.visibility='hidden';
             menu0_ClearAllChilds(pobjMmbr.m_objChldCntr.m_objFrstMmbr)
            }

          break
         }

       // Membre suivant
       pobjMmbr=pobjMmbr.m_objNxtMmbr
      }
}


// -------------------------------------------------------------------------
//  Ouverture menu tree
// -------------------------------------------------------------------------
//  [IN] this: Image du menu
// -------------------------------------------------------------------------

function menu0_OnExpandTreeMenu(pobjEvent)
{
 // Empecher propagation de l'evenement
 if (pmnu0_gblnDomNav)
   { pobjEvent.stopPropagation(); }
 else
   { window.event.cancelBubble=true; }

 // Recuperer membre
 menu0_ExpandTreeMenu(this);
}


// -------------------------------------------------------------------------
//  Ouverture menu tree
// -------------------------------------------------------------------------
//  [IN] this: Image du menu
// -------------------------------------------------------------------------

function menu0_ExpandTreeMenu(pobjMmbr)
{
 var ltobjPA=pobjMmbr.m_objCntr.m_tobjPA;

 /* Creation dynamique du menu enfant */
 if (  (!pobjMmbr.m_objChldCntr)
     &&(pobjMmbr.m_intNSubs > 0) )
   {
    // Creation menu enfant
    pobjMmbr.m_objChldCntr = menu0_CreateMenuStructure(pobjMmbr.m_tobjPA,pobjMmbr.m_strMName,pobjMmbr.m_intNSubs,0,0,pobjMmbr.m_objCntr,pobjMmbr.m_objNxtMmbr,pobjMmbr.m_intLvl+1);
   }

 if (!pobjMmbr.m_objChldCntr)
   { return; }

 // Afficher/Cacher bloc et changer l'image
 if (pobjMmbr.m_objChldCntr.m_objTop.style.display == 'none')
   {
    pobjMmbr.m_objChldCntr.m_objTop.style.display='block';
    pobjMmbr.m_objImg.src=ltobjPA[20];
    pobjMmbr.m_objImg.style.width=ltobjPA[21]+pmnu0_gstrPx;
    pobjMmbr.m_objImg.style.height=ltobjPA[22]+pmnu0_gstrPx;
    pobjMmbr.m_objImg.style.marginLeft=Math.ceil((Math.max(ltobjPA[18],ltobjPA[21])-ltobjPA[21]+2)/2)+pmnu0_gstrPx;
    pobjMmbr.m_objImg.style.marginRight=Math.floor((Math.max(ltobjPA[18],ltobjPA[21])-ltobjPA[21]+2)/2)+pmnu0_gstrPx;

    pobjMmbr.m_blnHighlight=true;
   }
 else
   {
    pobjMmbr.m_objChldCntr.m_objTop.style.display='none';
    pobjMmbr.m_objImg.src=ltobjPA[17];
    pobjMmbr.m_objImg.style.width=ltobjPA[18]+pmnu0_gstrPx;
    pobjMmbr.m_objImg.style.height=ltobjPA[19]+pmnu0_gstrPx;
    pobjMmbr.m_objImg.style.marginLeft=Math.ceil((Math.max(ltobjPA[18],ltobjPA[21])-ltobjPA[18]+2)/2)+pmnu0_gstrPx;
    pobjMmbr.m_objImg.style.marginRight=Math.floor((Math.max(ltobjPA[18],ltobjPA[21])-ltobjPA[18]+2)/2)+pmnu0_gstrPx;

    pobjMmbr.m_blnHighlight=false;
   }

 return;
}


// -------------------------------------------------------------------------
//  Entree dans menu arborescent
// -------------------------------------------------------------------------
//  [IN] this: Membre
//  [IN] pobjEvent: Evenement
// -------------------------------------------------------------------------

function menu0_EnterTreeMenu(pobjEvent)
{
 menu0_SetColors(this, true);
}


// -------------------------------------------------------------------------
//  Sortie du menu arborescent
// -------------------------------------------------------------------------
//  [IN] this: Membre
//  [IN] pobjEvent: Evenement
// -------------------------------------------------------------------------

function menu0_ExitTreeMenu(pobjEvent)
{
 menu0_SetColors(this, false);
}


// -------------------------------------------------------------------------
//  Entree dans lien menu arborescent
// -------------------------------------------------------------------------
//  [IN] this: Membre
//  [IN] pobjEvent: Evenement
// -------------------------------------------------------------------------

function menu0_EnterTreeMenuLink(pobjEvent)
{
 this.style.textDecoration="underline";
}


// -------------------------------------------------------------------------
//  Sortie du lien menu arborescent
// -------------------------------------------------------------------------
//  [IN] this: Membre
//  [IN] pobjEvent: Evenement
// -------------------------------------------------------------------------

function menu0_ExitTreeMenuLink(pobjEvent)
{
 this.style.textDecoration="none";
}


// -------------------------------------------------------------------------
//  Sauvegarde etat du menu arborescent
// -------------------------------------------------------------------------
//  Fonction recursive
// -------------------------------------------------------------------------
//  [IN] pobjCntr: Container
//  [RETOUR] Chaine representant l'etat du container
// -------------------------------------------------------------------------

function menu0_SaveTreeMenuState(pobjCntr)
{
 var lstrState="";

 if (!pobjCntr)
   {
    // Fin d'arbre
    return lstrState;
   }
 else if (!pobjCntr.m_objPrntCntr)
   {
    // Racine de l'arbre, on precise la position du scrolling
    lstrState += parseInt(pobjCntr.scrollTop)+"; ";
    lstrState += menu0_SaveTreeMenuState(pobjCntr.m_objChldCntr);
   }
 else
   {
    // Parcours de chaque member
    var lobjMmbr=pobjCntr.m_objFrstMmbr;
    while (lobjMmbr)
         {
          if (lobjMmbr.m_blnHighlight)
            {
             lstrState += lobjMmbr.id+"; ";
            }

          lstrState += menu0_SaveTreeMenuState(lobjMmbr.m_objChldCntr);

          lobjMmbr=lobjMmbr.m_objNxtMmbr;
         }
   }

 return lstrState;
}


// -------------------------------------------------------------------------
//  Restauration etat du menu arborescent
// -------------------------------------------------------------------------
//  [IN] pobjCntr: Menu
//  [IN] lstrState: Etat du menu
// -------------------------------------------------------------------------

function menu0_RestoreTreeMenuState(pobjCntr,pstrState)
{
 var lintI=0;
 var lintIMax=0;

 if (!pstrState)
   {
    pobjCntr.style.visibility='visible';
    return;
   }

 // Splitter l'etat en sous-menus
 var lobjMenus = pstrState.split("; ");

 // Expand menus
 for (lintI=1,lintIMax=lobjMenus.length ; lintI<lintIMax ; lintI++)
    {
     var lobjMmbr=document.getElementById(lobjMenus[lintI]);

     if (lobjMmbr)
       { menu0_ExpandTreeMenu(lobjMmbr); }
    }

 // Restaurer scroll (A faire 2 fois ?? BUG ??)
 pobjCntr.scrollTop=parseInt(lobjMenus[0]);
 pobjCntr.scrollTop=parseInt(lobjMenus[0]);
 pobjCntr.style.visibility='visible';
}


// -------------------------------------------------------------------------
//  Suivre le lien en reponse a un evenement
// -------------------------------------------------------------------------
//  [IN] pobjEvent : Objet évenement
// -------------------------------------------------------------------------

function menu0_OnFollowLink(pobjEvent)
{
 // Empecher propagation de l'evenement
 if (pmnu0_gblnDomNav)
   { pobjEvent.stopPropagation(); }
 else
   { window.event.cancelBubble=true; }

 menu0_FollowLink(this);
}


// -------------------------------------------------------------------------
//  Suivre le lien en reponse a un evenement
// -------------------------------------------------------------------------
//  [IN] pobjEvent : Objet évenement
// -------------------------------------------------------------------------

function menu0_OnFollowLinkTreeMenu(pobjEvent)
{
 // Empecher propagation de l'evenement
 if (pmnu0_gblnDomNav)
   { pobjEvent.stopPropagation(); }
 else
   { window.event.cancelBubble=true; }

 menu0_FollowLink(this.parentNode.parentNode);
}


// -------------------------------------------------------------------------
//  Suivre le lien
// -------------------------------------------------------------------------
//  [IN] pobjMmbr: Member
// -------------------------------------------------------------------------

function menu0_FollowLink(pobjMmbr)
{
 // Suivre le lien
 if (pobjMmbr.m_strLinkTxt)
   {
    menu0_SetColors(pobjMmbr,false);
    pobjMmbr.m_strLinkTxt.indexOf('javascript:')!=-1?eval(pobjMmbr.m_strLinkTxt):pmnu0_gobjWin.location.href=pobjMmbr.m_strLinkTxt;
   }
}


// -------------------------------------------------------------------------
//  Ouvrir menu en reponse a un evenement
// -------------------------------------------------------------------------
//  [IN] this: Membre
//  [IN] pobjEvent: Evenement
// -------------------------------------------------------------------------

function menu0_OpenMenu(pobjEvent)
{
 if (pmnu0_gblnDomNav)
   { pobjEvent.stopPropagation(); }

 if (!pmnu0_gblnLdd||!pmnu0_gblnCrtd)
   return;

 if (this.m_tobjPA[12]==2)
   {
    menu0_HighlightMenu(this, true);
    return;
   }

 // Cacher selecteurs
 menu0_ShowCombo(false);

 /* Creation dynamique du menu enfant */
 if (  (this.m_objChldCntr == null)
     &&(this.m_intNSubs > 0) )
   {
    // Creation menu enfant
    this.m_objChldCntr = menu0_CreateMenuStructure(this.m_tobjPA,this.m_strMName,this.m_intNSubs,0,0,this.m_objCntr,null,this.m_intLvl+1);

    // Positionnement conteneur enfant
    menu0_PosChldCntr(this,this.m_intLvl);

    // Initialisation
    menu0_ResetHide(this.m_objChldCntr);
    menu0_ClearAllChilds(this.m_objCntr.m_objFrstMmbr);
   }

 // Selectionner menu
 menu0_SelectMenu(this);

 // Afficher conteneur enfant en tenant compte des bords de la fenetre
 var lobjChldCntr=this.m_objChldCntr
 if (lobjChldCntr!=null)
   {
    var ltobjPA=this.m_objCntr.m_tobjPA;
    var lintScrllLft=pmnu0_gblnIE?pmnu0_gblnCmplnt?pmnu0_gobjHtml.scrollLeft:pmnu0_gobjBody.scrollLeft:pmnu0_gobjWin.pageXOffset;
    var lintScrllTp=pmnu0_gblnIE?pmnu0_gblnCmplnt?pmnu0_gobjHtml.scrollTop:pmnu0_gobjBody.scrollTop:pmnu0_gobjWin.pageYOffset;
    var lintCntrTp=parseInt(this.m_objCntr.style.top)
    var lintCntrLft=parseInt(this.m_objCntr.style.left)
    var lintMmbrHgt=parseInt(this.style.height)
    var lintMmbrWdt=parseInt(this.style.width)
    var lintChldCntrWdt=parseInt(lobjChldCntr.style.width)
    var lintChldCntrHgt=parseInt(lobjChldCntr.style.height)
    var lintLft=lobjChldCntr.m_intOrgLft+lintCntrLft;
    var lintTp=lobjChldCntr.m_intOrgTp+lintCntrTp;
    var lintBW=ltobjPA[14];
    var lblnHori = lobjChldCntr.m_intLvl==0 && (ltobjPA[12]==1);

    // Trop a droite
    if (lintLft+lintChldCntrWdt>pmnu0_gintWinWdt+lintScrllLft)
      lintLft=(ltobjPA[12]==1)&&this.m_objCntr.m_intLvl==0?pmnu0_gintWinWdt+lintScrllLft-lintChldCntrWdt:lintLft-(lintChldCntrWdt+lintMmbrWdt)+(pmnu0_gblnOvrl&&!lblnHori?lintBW*2:0);

    // Trop a gauche
    if (lintLft<lintScrllLft)
      lintLft=lintScrllLft

    // Trop bas
    if (lintTp+lintChldCntrHgt>pmnu0_gintWinHgt+lintScrllTp)
      lintTp=lintTp-lintChldCntrHgt+2*lintBW+lintMmbrHgt;

    // Trop haut
    if (lintTp<lintScrllTp)
      lintTp=lintScrllTp;

    // Modifier position et visibilite du conteneur enfant
    lobjChldCntr.style.left=lintLft+pmnu0_gstrPx;
    lobjChldCntr.style.top=lintTp+pmnu0_gstrPx;
    lobjChldCntr.style.visibility='visible';
   }
}


// -------------------------------------------------------------------------
//  Selectionner nouvelle entree de menu, et deselectionner precedente
// -------------------------------------------------------------------------
//  [IN] pobjMmbr: Objet courant
// -------------------------------------------------------------------------

function menu0_SelectMenu(pobjMmbr)
{
 // Deselectionner ancienne selection
 if (pmnu0_gobjCurMmbr)
   {
    var lobjCntrX;
    var lobjCntrY;

    lobjCntrX=pmnu0_gobjCurMmbr.m_objCntr;
    while (lobjCntrX.m_objPrntCntr)
         lobjCntrX=lobjCntrX.m_objPrntCntr;

    lobjCntrY=pobjMmbr.m_objCntr;
    while (lobjCntrY.m_objPrntCntr)
         lobjCntrY=lobjCntrY.m_objPrntCntr;

    if (  (lobjCntrX!=lobjCntrY)
        &&(lobjCntrX) )
      {
       menu0_ResetHide(lobjCntrX);
      }
    else
      {
       menu0_ClearAllChilds(pobjMmbr.m_objCntr.m_objFrstMmbr);
      }
   }
 else
   {
    menu0_ClearAllChilds(pobjMmbr.m_objCntr.m_objFrstMmbr);
   }

 // Nouveau menu courant
 pmnu0_gobjCurMmbr=pobjMmbr;
 pmnu0_gblnInitialize=false;

 // Highlight
 menu0_HighlightMenu(pobjMmbr, true);
}


// -------------------------------------------------------------------------
//  Mettre/Enlever highlight de menu
// -------------------------------------------------------------------------
//  [IN] pobjMmbr: Objet courant
//  [IN] pblnHighlight: true pour mettre, false pour enlever
// -------------------------------------------------------------------------

function menu0_HighlightMenu(pobjMmbr, pblnHighlight)
{
 var ltobjPA=pobjMmbr.m_objCntr.m_tobjPA; // Proprietes

 if (pblnHighlight)
   {
    pobjMmbr.m_blnHighlight=true;
    menu0_SetColors(pobjMmbr, true);
   }
 else
   {
    pobjMmbr.m_blnHighlight=false;
    menu0_SetColors(pobjMmbr, false);
   }
}


// -------------------------------------------------------------------------
//  Afficher le menu selectionne ou non
// -------------------------------------------------------------------------
//  [IN] pobjMmbr: Objet courant
//  [IN] pblnSelected: true pour couleurs de selection, false pour normal
// -------------------------------------------------------------------------

function menu0_SetColors(pobjMmbr, pblnSelected)
{
 var ltobjPA=pobjMmbr.m_objCntr.m_tobjPA; // Proprietes

 // Element dont on doit changer la couleur
 var lobjElem;
 if (ltobjPA[12]==2)
   { lobjElem=pobjMmbr; }
 else
   { lobjElem=pobjMmbr.m_objIntl; }

 if (pblnSelected)
   {
    // Couleur de fond
    if (ltobjPA[6])
      {
       lobjElem.style.backgroundColor=ltobjPA[6];

       if (  (ltobjPA[6] != ltobjPA[4])
           &&(ltobjPA[26]!='') )
         { lobjElem.style.filter='progid:DXImageTransform.Microsoft.Gradient(enabled=false)'; }
      }

    // Couleur
    lobjElem.style.color=ltobjPA[5];
   }
 else
   {
    // Couleur de fond
    if (ltobjPA[4])
      {
       lobjElem.style.backgroundColor=ltobjPA[4];

       if (  (ltobjPA[6] != ltobjPA[4])
           &&(ltobjPA[26]!='') )
         { lobjElem.style.filter='progid:DXImageTransform.Microsoft.Gradient(enabled=true, GradientType='+ltobjPA[25]+', StartColorStr='+ltobjPA[26]+', EndColorStr='+ltobjPA[27]+')'; }
      }

    // Couleur
    lobjElem.style.color=ltobjPA[3];
   }
}


// -------------------------------------------------------------------------
//  Fermeture menu
// -------------------------------------------------------------------------
//  [IN] this: Membre
//  [IN] pobjEvent: Evenement
// -------------------------------------------------------------------------

function menu0_CloseMenu(pobjEvent)
{
 if (pmnu0_gblnDomNav)
   { pobjEvent.stopPropagation(); }

 menu0_Out();
}


// -------------------------------------------------------------------------
//  Initialisation conteneur
// -------------------------------------------------------------------------
//  [IN] ptobjPA: Proprietes generales
//  [IN] pstrMName: Nom menu (PopMenuX_)
//  [IN] pintNSubs: Nombre de sous-menus
//  [IN] pintLft: Position gauche
//  [IN] pintTp: Position haut
//  [IN] pobjPrntCntr: Container parent
//  [IN] pobjPrvCntr: Container precedent (null pour inserer en dernier)
//  [IN] pintLvl: Niveau de hierachie courant
// -------------------------------------------------------------------------

function menu0_CntrSetup(ptobjPA,pstrMName,pintNSubs,pintLft,pintTp,pobjPrntCntr,pobjPrvCntr,pintLvl)
{
 var ltobjPA=ptobjPA;
 var lobjCntr=null; // Nouveau container
 var lblnHori = pintLvl==0 && (ltobjPA[12]==1); // Affichage horizontal si premier niveau horizontal
 var lintBW = ltobjPA[14];

 // Creation container
 if (  (ltobjPA[12]==2)
     &&(pintLvl>0) )
   {
    var lobjTable=pmnu0_gobjDoc.createElement("table");
    lobjTable.style.borderCollapse="collapse";
    lobjTable.cellSpacing=0;
    lobjTable.cellPadding=0;

    var lobjRow=lobjTable.insertRow(0);
    lobjCntr=lobjRow.insertCell(0);

    lobjCntr.m_objTop=lobjTable;

    if (pmnu0_gblnNav)
      {
       lobjTable.style.width="160"-(pintLvl>1?2*lintBW:0)+pmnu0_gstrPx;
       lobjCntr.style.width="160"-(pintLvl>1?2*lintBW:0)+pmnu0_gstrPx;
      }
    else
      {
       lobjTable.style.width="100%";
      }
   }
 else
   {
    lobjCntr=pmnu0_gobjDoc.createElement("div");
    lobjCntr.m_objTop=lobjCntr;
    lobjCntr.style.visibility='hidden';
   }
 lobjCntr.id=pstrMName+'c';

 // Insertion container dans parent
 var lobjPrntCntr=(ltobjPA[12]==2)&&pobjPrntCntr?pobjPrntCntr:pmnu0_gobjBody;
 if (!pobjPrvCntr)
   { lobjPrntCntr.appendChild(lobjCntr.m_objTop); }
 else
   { lobjPrntCntr.insertBefore(lobjCntr.m_objTop,pobjPrvCntr); }

 if (  (pmnu0_gblnDbg)
     &&(pintLvl == 0) )
   {
    lobjPrntCntr.style.borderStyle='solid';
    lobjPrntCntr.style.borderWidth=1;
    lobjPrntCntr.style.borderColor='#FFFF00';
   }

 // Attributs objet
 lobjCntr.m_tobjPA=ptobjPA; // Proprietes
 lobjCntr.m_intNSubs = pintNSubs; // Nombre de sous-menus
 lobjCntr.m_objFrstMmbr=null; // Premier member de ce container
 lobjCntr.m_objPrvCntr=null; // Chainage des containers de niveau 0
 lobjCntr.m_objPrntCntr=pobjPrntCntr; // Chaine containers multi-niveaux
 lobjCntr.m_intStrtLft=lobjCntr.m_intOrgLft=pintLft;
 lobjCntr.m_intStrtTp=lobjCntr.m_intOrgTp=pintTp;
 lobjCntr.m_intLvl=pintLvl;

 // Visibilite
 if (ltobjPA[12]!=2)
   {
    lobjCntr.style.position='absolute';
   }
 else
   {
    lobjCntr.m_objTop.style.visibility='inherit';
    lobjCntr.m_objTop.style.display=pintLvl>1?'none':'block';
   }

 // Contour pour debuggage
 if (pmnu0_gblnDbg)
   {
    lobjCntr.style.borderStyle='solid';
    lobjCntr.style.borderWidth=1;
    lobjCntr.style.borderColor='#FF0000';
   }

 // Styles de base
 lobjCntr.style.fontFamily=ltobjPA[8];
 lobjCntr.style.fontWeight=ltobjPA[9]?'bold':'normal';
 lobjCntr.style.fontStyle=ltobjPA[10]?'italic':'normal';
 lobjCntr.style.fontSize=ltobjPA[11]+'px';
 lobjCntr.style.zIndex=pintLvl+pmnu0_gintZtp+1;

 // Position et taille
 if (ltobjPA[12]!=2)
   {
    lobjCntr.style.width=0+pmnu0_gstrPx;
    lobjCntr.style.height=0+pmnu0_gstrPx;
    lobjCntr.style.top=-1000+pmnu0_gstrPx;
    lobjCntr.style.left=-1000+pmnu0_gstrPx;
   }
 else if (pintLvl==1 && !pmnu0_gblnIE5)
   {
    lobjCntr.style.paddingLeft=lintBW+pmnu0_gstrPx;
    lobjCntr.style.paddingRight=lintBW+pmnu0_gstrPx;
    lobjCntr.style.marginTop=lintBW+pmnu0_gstrPx;
    lobjCntr.style.marginBottom=lintBW+pmnu0_gstrPx;
   }

 // Couleur
 if (!lblnHori)
   {
    // Couleur de fond container
    if (ltobjPA[7])
      { lobjCntr.style.backgroundColor=ltobjPA[7]; }

    // Gradient container
    if (ltobjPA[29]!='')
      { lobjCntr.style.filter='progid:DXImageTransform.Microsoft.Gradient(GradientType='+ltobjPA[28]+', StartColorStr='+ltobjPA[29]+', EndColorStr='+ltobjPA[30]+')'; }
   }

 return lobjCntr;
}


// -------------------------------------------------------------------------
//  Initialisation member
// -------------------------------------------------------------------------
//  [IN] ptobjPA: Proprietes generales
//  [IN] pstrMName: Nom menu
//  [IN] pintNSubs: Nombre de sous-menus
//  [IN] pobjMmbr: Membre
//  [IN] pobjCntr: Container
//  [IN] pobjPrvMmbr: Membre precedent
//  [IN] pintWdt: Largeur menu
//  [IN] pintHgt: Hauteur menu
//  [IN] pintLvl: Niveau de hierachie courant
// -------------------------------------------------------------------------

function menu0_MmbrSetup(ptobjPA,pstrMName,pintNSubs,pobjCntr,pobjPrvMmbr,pintWdt,pintHgt,pintLvl)
{	
 var ltobjPAM=eval(pstrMName);
 var ltobjPA=pobjCntr.m_tobjPA;
 var lobjIntl=null; // Internal member
 var lobjMmbr=null; // Member
 var lintBW=ltobjPA[14]; // Border-width
 var lblnHori = (pintLvl==0) && (ltobjPA[12]==1); // Affichage horizontal si premier niveau horizontal

 // Creation tag member
 lobjMmbr=pmnu0_gobjDoc.createElement("div");
 lobjMmbr.style.visibility='inherit';
 lobjMmbr.id=pstrMName;

 // Insertion member dans parent
 pobjCntr.appendChild(lobjMmbr);

 // Attributs member
 lobjMmbr.m_tobjPA = ptobjPA;
 lobjMmbr.m_strMName = pstrMName;
 lobjMmbr.m_intNSubs = pintNSubs;
 lobjMmbr.m_objCntr=pobjCntr;
 lobjMmbr.m_objChldCntr=null;
 lobjMmbr.m_strLinkTxt=ltobjPAM[1];
 lobjMmbr.m_intLvl=pintLvl;
 lobjMmbr.m_blnHighlight=false;
 lobjMmbr.m_objNxtMmbr=null;
 lobjMmbr.m_objImg=null;

 // Positionnement
 if (ltobjPA[12]!=2)
   {
    lobjMmbr.style.position='absolute';
   }

 // Curseur
 lobjMmbr.style.cursor=lobjMmbr.m_strLinkTxt?pmnu0_gblnIE?"hand":"pointer":"default";

 // Contour pour debuggage
 if (pmnu0_gblnDbg)
   {
    lobjMmbr.style.borderStyle='solid';
    lobjMmbr.style.borderWidth=1;
    lobjMmbr.style.borderColor='#00AA00';
   }

 if (lblnHori)
   {
    // Couleur de fond member
    if (ltobjPA[7])
      { lobjMmbr.style.backgroundColor=ltobjPA[7]; }

    // Gradient member
    if (ltobjPA[29]!='')
      { lobjMmbr.style.filter='progid:DXImageTransform.Microsoft.Gradient(GradientType='+ltobjPA[28]+', StartColorStr='+ltobjPA[29]+', EndColorStr='+ltobjPA[30]+')'; }

    // Taille member
    lobjMmbr.style.width=pintWdt+2*lintBW+pmnu0_gstrPx;
    lobjMmbr.style.height=pintHgt+2*lintBW+pmnu0_gstrPx;
   }
 else if (ltobjPA[12]!=2)
   {
    // Taille member
    lobjMmbr.style.width=pintWdt+pmnu0_gstrPx;
    lobjMmbr.style.height=pintHgt+pmnu0_gstrPx;
   }
 else
   {
    // Taille member
    lobjMmbr.style.height=pintHgt+pmnu0_gstrPx;

    // Gradient member
    if (ltobjPA[26]!='')
      { lobjMmbr.style.filter='progid:DXImageTransform.Microsoft.Gradient(GradientType='+ltobjPA[25]+', StartColorStr='+ltobjPA[26]+', EndColorStr='+ltobjPA[27]+')'; }
   }

 // Internal member
 var lobjSet;
 if (lblnHori)
   {
    // Creation tag div dissocie
    lobjIntl=pmnu0_gobjDoc.createElement("div");
    lobjIntl.style.position='absolute';
    lobjIntl.style.visibility='inherit';
    lobjIntl.id=pstrMName+'t';
    lobjMmbr.appendChild(lobjIntl);

    // Lien internal member
    lobjMmbr.m_objIntl=lobjIntl;
    lobjSet=lobjMmbr;

    // Position internal member
    lobjMmbr.m_objIntl.style.left=lintBW+pmnu0_gstrPx;
    lobjMmbr.m_objIntl.style.top=lintBW+pmnu0_gstrPx;
   }
 else if (ltobjPA[12]!=2)
   {
    // Internal member = member
    lobjMmbr.m_objIntl=lobjMmbr;
    lobjSet=lobjMmbr;

    // Position internal member
    lobjMmbr.m_objIntl.style.left=0+pmnu0_gstrPx;
    lobjMmbr.m_objIntl.style.top=0+pmnu0_gstrPx;
   }
 else
   {
    lobjSet=pmnu0_gobjDoc.createElement("nobr");
    lobjMmbr.appendChild(lobjSet);

    // Creation tag div dissocie
    lobjIntl=pmnu0_gobjDoc.createElement("div");
    lobjIntl.style.visibility='inherit';
    lobjIntl.style.display='inline';
    lobjIntl.id=pstrMName+'t';
    lobjSet.appendChild(lobjIntl);

    // Lien internal member
    lobjMmbr.m_objIntl=lobjIntl;
   }

 if (pmnu0_gblnDbg)
   {
    lobjMmbr.m_objIntl.style.borderStyle='solid';
    lobjMmbr.m_objIntl.style.borderWidth=1;
    lobjMmbr.m_objIntl.style.borderColor='#0000AA';
   }

 // Texte ou balise HTML du menu
 var lobjTxt;
 if (ltobjPAM[0].indexOf('<')==-1)
   {
    lobjTxt=pmnu0_gobjDoc.createTextNode(ltobjPAM[0]);
    lobjMmbr.m_objIntl.appendChild(lobjTxt)
   }
 else
   {
    lobjMmbr.m_objIntl.innerHTML=ltobjPAM[0];
    lobjTxt=lobjMmbr.m_objIntl.firstChild;
    if (ltobjPA[12]==2)
      {
       lobjTxt.style.width=0+pmnu0_gstrPx;
       lobjTxt.style.display='inline';
      }
   }

 // Offset gauche sauf trait horizontal
 if (ltobjPAM[0] != '<hr>')
   {lobjMmbr.m_objIntl.style.paddingLeft=ltobjPA[24]+pmnu0_gstrPx; }
 else
   { lobjMmbr.m_objIntl.style.paddingLeft=0; }

 // Gradient internal member
 if (  (ltobjPA[26]!='')
     &&(ltobjPA[12]!=2) )
   { lobjMmbr.m_objIntl.style.filter='progid:DXImageTransform.Microsoft.Gradient(GradientType='+ltobjPA[25]+', StartColorStr='+ltobjPA[26]+', EndColorStr='+ltobjPA[27]+')'; }

 // Style internal member
 lobjMmbr.m_objIntl.style.overflow='hidden'
 lobjMmbr.m_objIntl.style.paddingTop=ltobjPA[23]+pmnu0_gstrPx;
 lobjMmbr.m_objIntl.style.height=pintHgt-(pmnu0_gblnPd?parseInt(lobjMmbr.m_objIntl.style.paddingTop):0)+pmnu0_gstrPx;

 if (ltobjPA[12]!=2)
   { lobjMmbr.m_objIntl.style.width=pintWdt-(pmnu0_gblnPd?parseInt(lobjMmbr.m_objIntl.style.paddingLeft):0)+pmnu0_gstrPx; }

 // Couleurs
 menu0_SetColors(lobjMmbr, false);

 // Image si sous-menus
 if (ltobjPAM[3])
   {
    var lobjImg; // Objet image
    var lintTp; // Ordonnee haut div
    var lintLft; // Abscisse gauche div
    var lintWdt=ltobjPA[lblnHori?21:18]; // Largeur image
    var lintHgt=ltobjPA[lblnHori?22:19]; // Hauteur image
    var lstrSrc=ltobjPA[lblnHori?20:17]; // Source image

    // Creation image
    lobjImg=pmnu0_gobjDoc.createElement('img');

    // Source et taille image
    lobjImg.src=lstrSrc;
    lobjImg.style.width=lintWdt+pmnu0_gstrPx;
    lobjImg.style.height=lintHgt+pmnu0_gstrPx;

    // Style & Positionnement image
    if (ltobjPA[12]!=2)
      {
       lobjImg.style.left=pintWdt-lintWdt-2+pmnu0_gstrPx
       lobjImg.style.top=lblnHori?pintHgt-lintHgt-2:(pintHgt-lintHgt)/2+pmnu0_gstrPx;
       lobjImg.style.position='absolute';
       lobjMmbr.m_objIntl.appendChild(lobjImg);
      }
    else
      {
       lobjImg.style.display='inline';
       lobjImg.style.marginLeft=Math.ceil((Math.max(ltobjPA[18],ltobjPA[21])-lintWdt+2)/2)+pmnu0_gstrPx;
       lobjImg.style.marginRight=Math.floor((Math.max(ltobjPA[18],ltobjPA[21])-lintWdt+2)/2)+pmnu0_gstrPx;
       lobjSet.insertBefore(lobjImg,lobjSet.firstChild);
       lobjMmbr.m_objImg=lobjImg;
      }
   }

 // Decalage arborescence
 if (ltobjPA[12]==2)
   {
    lobjImg=pmnu0_gobjDoc.createElement('img');

    lobjImg.style.visibility='hidden';
    lobjImg.style.width=(pintLvl-1+(!ltobjPAM[3]?1:0))*(ltobjPA[18]+6)+pmnu0_gstrPx;
    lobjImg.style.height=1+pmnu0_gstrPx;

    lobjSet.insertBefore(lobjImg,lobjSet.firstChild);
   }

 // Association des gestionnaires d'evenements
 if (ltobjPA[12]!=2)
   {
    lobjMmbr.onmouseover=menu0_OpenMenu;
    lobjMmbr.onmouseout=menu0_CloseMenu;
    lobjMmbr.onclick=menu0_OnFollowLink;
   }
 else
   {
    lobjMmbr.onmouseover=menu0_EnterTreeMenu;
    lobjMmbr.onmouseout=menu0_ExitTreeMenu;
    lobjMmbr.onclick=menu0_OnExpandTreeMenu;
    lobjMmbr.m_objIntl.onmouseover=menu0_EnterTreeMenuLink;
    lobjMmbr.m_objIntl.onmouseout=menu0_ExitTreeMenuLink;
    lobjMmbr.m_objIntl.onclick=menu0_OnFollowLinkTreeMenu;
   }

 return lobjMmbr;
}


// -------------------------------------------------------------------------
//  Creation d'un niveau de structure de menu
// -------------------------------------------------------------------------
//  [IN] ptobjPA: Proprietes generales
//  [IN] pstrMName: Nom menu (PopMenuX_)
//  [IN] pintNSubs: Nombre de sous-menus
//  [IN] pintLft: Abscisse (gauche)
//  [IN] pintTp: Ordonnee (haut)
//  [IN] pobjPrntCntr: Container parent
//  [IN] pobjPrvCntr: Container precedent (null pour inserer en dernier)
//  [IN] pintLvl: Niveau de hierarchie courant
//  [RETOUR] Container
// -------------------------------------------------------------------------

function menu0_CreateMenuStructure(ptobjPA,pstrMName,pintNSubs,pintLft,pintTp,pobjPrntCntr,pobjPrvCntr,pintLvl)
{
 var lobjCntr; // Nouveau container
 var lobjPrvMmbr=null; // Membre precedent (pour chainage)
 var ltobjPA=ptobjPA; // Proprietes generales
 var lblnHori = pintLvl==0 && (ltobjPA[12]==1); // Affichage horizontal si premier niveau horizontal

 // Initialisation du tout premier container du menu arborescent
 if (  (ltobjPA[12]==2)
     &&(!pobjPrntCntr) )
   {
    lobjCntr = menu0_CntrSetup(ptobjPA,pstrMName+"b",pintNSubs,pintLft,pintTp,null,null,pintLvl);
    lobjCntr.style.position='absolute';
    lobjCntr.style.overflow=pmnu0_gblnIE5 ? "scroll" : "auto";
    lobjCntr.style.scrollbarBaseColor=ptobjPA[7];

    lobjCntr.m_objChldCntr = menu0_CreateMenuStructure(ptobjPA,pstrMName,pintNSubs,pintLft,pintTp,lobjCntr,null,pintLvl+1);

    return lobjCntr;
   }

 // Initialisation conteneur
 lobjCntr = menu0_CntrSetup(ptobjPA,pstrMName,pintNSubs,pintLft,pintTp,pobjPrntCntr,pobjPrvCntr,pintLvl);

 // Creation de chaque entree de menu
 var lintFrstMmbrWdt=0; // Largeur premiere entree de menu
 var lintFrstMmbrHgt=0; // Hauteur premiere entree de menu
 for (var lintI=1; lintI<pintNSubs+1; lintI++)
    {
     // Parametres menu
     var lstrMName=pstrMName+'_'+lintI;
     var ltobjPAM=eval(lstrMName);

     // Largeur et hauteur premiere entree de menu
     if (!lintFrstMmbrWdt)
       { lintFrstMmbrWdt=ltobjPAM[5]; }
     if (!lintFrstMmbrHgt)
       { lintFrstMmbrHgt=ltobjPAM[4]; }

     // Nombre de sous menus
     var lintNSubs=ltobjPAM[3];

     // Largeur et hauteur menu
     var lintWdt=lblnHori?ltobjPAM[5]?ltobjPAM[5]:lintFrstMmbrWdt:lintFrstMmbrWdt;
     var lintHgt=lblnHori?lintFrstMmbrHgt:ltobjPAM[4]?ltobjPAM[4]:lintFrstMmbrHgt;

     // Initialisation member
     var lobjMmbr = menu0_MmbrSetup(ptobjPA,lstrMName,lintNSubs,lobjCntr,lobjPrvMmbr,lintWdt,lintHgt,pintLvl);

     // Enregistrer premier member du container
     if (!lobjCntr.m_objFrstMmbr)
       {
        lobjCntr.m_objFrstMmbr = lobjMmbr;
       }

     // Enregistrer member suivant
     if (lobjPrvMmbr)
       {
        lobjPrvMmbr.m_objNxtMmbr = lobjMmbr;
       }

     // Creation des sous-menus par recursion
     if (!pmnu0_gblnDyn && lintNSubs)
       lobjMmbr.m_objChldCntr=menu0_CreateMenuStructure(ptobjPA,lstrMName,lintNSubs,0,0,lobjCntr,null,pintLvl+1);

     // Conserver objet precedent pour chainage
     lobjPrvMmbr=lobjMmbr
    }
    
 // Création d'une entrée vide pour masquer le fond en cas de nombre d'entrées impaires
 // et menu vertical affiché sur plus d'une colonne   
 if (  (pintNSubs > 0) 
     &&(ltobjPA[12]!=2) )
   {
    var lstrMName=pstrMName+'_Mask';   
    lobjCntr.m_objMaskMmbr = menu0_MaskSetup(lstrMName,lobjCntr,lintWdt,lintHgt);    
   }
 else
   { lobjCntr.m_objMaskMmbr = null; }

 return lobjCntr;
}

// -------------------------------------------------------------------------
//  Initialisation member
// -------------------------------------------------------------------------
//  [IN] pstrMName: Nom menu
//  [IN] pobjCntr: Container
//  [IN] pintWdt: Largeur menu
//  [IN] pintHgt: Hauteur menu
// -------------------------------------------------------------------------

function menu0_MaskSetup(pstrMName,pobjCntr,pintWdt,pintHgt)
{	
 var lobjMmbr=null; // Member
 var ltobjPA=pobjCntr.m_tobjPA;

 // Creation tag member
 lobjMmbr=pmnu0_gobjDoc.createElement("div");
 lobjMmbr.style.visibility='inherit';
 lobjMmbr.id=pstrMName;

 // Insertion member dans parent
 pobjCntr.appendChild(lobjMmbr);

 // Attributs member
 lobjMmbr.m_objCntr=pobjCntr;

 // Positionnement
 lobjMmbr.style.position='absolute';
 lobjMmbr.style.visibility='hidden';

 // Contour pour debuggage
 if (pmnu0_gblnDbg)
   {
    lobjMmbr.style.borderStyle='solid';
    lobjMmbr.style.borderWidth=1;
    lobjMmbr.style.borderColor='#00AA00';
   }

 // Taille member
 lobjMmbr.style.width=pintWdt+pmnu0_gstrPx;
 lobjMmbr.style.height=pintHgt+pmnu0_gstrPx;

 // Internal member = member
 lobjMmbr.m_objIntl=lobjMmbr;

 // Position internal member
 lobjMmbr.m_objIntl.style.left=0+pmnu0_gstrPx;
 lobjMmbr.m_objIntl.style.top=0+pmnu0_gstrPx;

 if (pmnu0_gblnDbg)
   {
    lobjMmbr.m_objIntl.style.borderStyle='solid';
    lobjMmbr.m_objIntl.style.borderWidth=1;
    lobjMmbr.m_objIntl.style.borderColor='#0000AA';
   }

 // Gradient internal member
 if (ltobjPA[26]!='')
   { lobjMmbr.m_objIntl.style.filter='progid:DXImageTransform.Microsoft.Gradient(GradientType='+ltobjPA[25]+', StartColorStr='+ltobjPA[26]+', EndColorStr='+ltobjPA[27]+')'; }

 // Couleurs
 menu0_SetColors(lobjMmbr, false);

 return lobjMmbr;
}


// -------------------------------------------------------------------------
//  Afficher/cacher combobox de formulaires
// -------------------------------------------------------------------------
//  Traitement effectue uniquement sous IE
// -------------------------------------------------------------------------
//  [IN] pblnShow: true pour afficher, false pour cacher
//  [RETOUR] objet correspondant
// -------------------------------------------------------------------------

function menu0_ShowCombo(pblnShow)
{
 var lintI=0;
 var lintIMax=0;
 var lintJ=0;
 var lintJMax=0;

 // Pas de masquage des combobox
 if (!tool0_gblnShowComboUse)
   { return; }

 // Uniquement pour les anciennes versions de IE
 if (  (!pmnu0_gblnIE5)
     &&(!pmnu0_gblnIE55)
     &&(!pmnu0_gblnIE6) )
   { return; }

 // Quitter si pas de changement d'etat
 if (pblnShow == pmnu0_gblnShowCombo)
   { return; }

 // Parcourir tous les elements de chaque formulaire
 for (lintI=0,lintIMax=pmnu0_gobjDoc.forms.length ; lintI<lintIMax ; lintI++)
    {
     var lobjForm = pmnu0_gobjDoc.forms[lintI];

     for (lintJ=0,lintJMax=lobjForm.elements.length ; lintJ<lintJMax ; lintJ++)
        {
         var lobjElem = lobjForm.elements[lintJ];

         if (  (lobjElem.type == "select-one")
             ||(lobjElem.type == "select-multiple") )
           {
            if (!pblnShow)
              {
               // Sauvegarder etat et cacher
               lobjElem.m_strPrevVisibility = lobjElem.style.visibility;
               lobjElem.style.visibility = 'hidden';
              }
            else
              {
               // Restaurer etat
               lobjElem.style.visibility = lobjElem.m_strPrevVisibility;
              }
           }
        }
    }

 // Sauvegarde etat
 pmnu0_gblnShowCombo = pblnShow;
}

