<!--

//**********************************************************************************
// Fonctions javascript de construction et de fonctionnemnt d'un menu déroulant
// (code générique commun à tous les menus déroulants)
// Origine du code : inconnue
// Modifications et commentaires : Emmanuel van Ruymbeke  - Février 2001
//**********************************************************************************

// Variables de configuration : (valeurs en pixels)
var ENTRY_HEIGHT = 20,          // Hauteur des entrées de menu
    INDENT_SIZE  = 10,          // Décalage d'un sous-menu par rapport au menu
    OFFSETY  = 100,              // Offset vertical par rapport au sommet de la frame
    TOFFSETX = 5,              // Offset horizontal par rapport au bord gauche de la frame
    TOFFSETY = 2,               // Offset vertical de chaque entrée par rapport à son background 
    indownt  = -ENTRY_HEIGHT;   // Décalage vers bas de la hauteur d'une entrée

var Bullet  = new Image(),      // Bullet survol de l'entrée, entrée non déroulante
    BulEmpt = new Image(),      // Bullet non survol de l'entrée
    BulUp   = new Image(),      // Bullet survol de l'entrée, entrée déjà déroulée
    BulDown = new Image();      // Bullet survol de l'entrée, entrée déroulante non déroulée

var bimg ="menu/images/bgmenu.gif";  // Image de background d'une entrée de menu

// Sources des bullets
    Bullet.src  = "menu/images/bulletright.gif";
    BulEmpt.src = "menu/images/bulletempty.gif";
    BulUp.src   = "menu/images/bulletup.gif";
    BulDown.src = "menu/images/bulletdown.gif";

// Autres variables
var IsNet4,                     // Vaut true si navigateur=Netscape Navigator
    IsIE4,                      // Vaut true si navigateur=Internet Explorer
    IsW3C;                      // Vaut true si conforme au DOM approuvé par le W3C
                                //   cad si Netscape 6 ou Explorer 5
var IsSun = false;              // Vaut true si plateforme=Sun

//**********************************************************************************
// Détermination du navigateur+version et de la plateforme utilisés
//**********************************************************************************
if ( navigator.appVersion.substring( 0, 1 ) >= 4 ) {

	if (document.getElementById) {
                IsW3C = true;
        }
        else if ( navigator.appName == "Netscape" ) {

                IsNet4 = true; 
		if ( navigator.appVersion.substring(29,34) =="sun4u" )  { IsSun = true; }  
        }
        else if ( navigator.appName == "Microsoft Internet Explorer" ) {
        
                IsIE4 = true;
        }
}

function SetLayerVis( lay, vis ) {

	if ( IsW3C ) {
                eval( "document.getElementById('" + lay + "').style.visibility = '" + vis + "';" );
        }
        else if ( IsIE4 ) {
                eval( "document.all." + lay + ".style.visibility = '" + vis + "';" );
        }
        else if ( IsNet4 ) {
                eval( "document." + lay + ".visibility = '" + vis + "';" );
        }
}

function SetLayerPos( lay, x, y ) {

	if ( IsW3C ) { 
                eval( "document.getElementById('" + lay + "').style.left = " + x + "+ \"px\";" );
                eval( "document.getElementById('" + lay + "').style.top = " + y + "+ \"px\";" );
        }
        else if ( IsIE4 ) {
                eval( lay + ".style.pixelLeft = " + x + ";" );
                eval( lay + ".style.pixelTop = " + y + ";" );
        }
        else if ( IsNet4 ) {
                eval( "document." + lay + ".left = " + x + ";" );
                eval( "document." + lay + ".top = " + y + ";" );
        }
}

function WinEntries() {

        this.link = new Array();
        this.linka = new Array();
        this.menu = new Array();
        this.label = new Array();
        this.div = new Array();
        this.ypos = new Array();
        this.vis = new Array();
}

function WinMenu( name ) {

        this.name = name;
        this.open = false;        
        this.entries = new WinEntries();
        this.xpos = 0;
        this.level = 0;
}

var SI = 0;
function SetIndents( menu ) {

      SI++;
      for ( var i = 0; i < menu.entries.menu.length; i++ ) {
     
          if ( menu.entries.menu[ i ] ) {

              menu.entries.menu[ i ].level = SI;
              menu.entries.menu[ i ].xpos = menu.entries.menu[ i ].level * INDENT_SIZE;
              SetIndents( menu.entries.menu[ i ] );
          }
      }
      SI--;
}

//**********************************************************************************
// Fonction de construction d'une nouvelle entrée dans le menu
// PRE : winmenu : un identificateur unique
//       link    : facultatif : le lien auquel mène cette entrée du menu
//       label   : le texte de l'entrée
//       menu    : facultatif : l'identificateur du sous-menu de cette entrée
//                 cet identificateur doit déjà exister (implique de construire
//                 d'abord le sous-menu)
// POST: une nouvelle entrée dans le menu a été créée, d'identificateur 'winmenu'
//       Le texte de l'entréé est 'label'
//       Le sous-menu éventuel est celui dont l'identificateur est 'menu'
//**********************************************************************************
function AWE( winmenu, link, linka, label, menu ) {

        if ( menu ) {

                winmenu.entries.menu[ winmenu.entries.menu.length ] = menu;
        }
        else
                winmenu.entries.menu[ winmenu.entries.menu.length ] = null;
                
        winmenu.entries.link[ winmenu.entries.link.length ] = link;
        winmenu.entries.linka[ winmenu.entries.linka.length ] = linka;
        winmenu.entries.label[ winmenu.entries.label.length ] = label;

        winmenu.entries.div[ winmenu.entries.div.length ] = winmenu.name 
                + winmenu.entries.div.length.toString();
}

//**********************************************************************************
// Fonction d'ouverture ou de fermeture d'un menu
//**********************************************************************************
function SwitchMenu( menu ) {

      menu.open = !menu.open;
      if ( !menu.open )
          Hide( menu );
}

function Hide( menu ) {

        for ( var i = 0; i < menu.entries.link.length; i++ ) {

                SetLayerVis( menu.entries.div[ i ], 'hidden' );
                if ( menu.entries.menu[ i ] )
                         Hide( menu.entries.menu[ i ] );
        }
}

function Reposition( menu ) {

        for ( var i = 0; i < menu.entries.link.length; i++ ) {

                indownt += ENTRY_HEIGHT;

                SetLayerPos( menu.entries.div[ i ], menu.xpos + TOFFSETX, indownt + TOFFSETY + OFFSETY );
                SetLayerVis( menu.entries.div[ i ], 'visible' );  

                if ( menu.level == 0 ) {

                    SetLayerPos( "B" + menu.entries.div[ i ], menu.xpos, indownt + OFFSETY );
                    SetLayerVis( "B" + menu.entries.div[ i ], 'visible' );
                }

                if ( menu.entries.menu[ i ] ) {
                
                        if ( menu.entries.menu[ i ].open )
                                Reposition( menu.entries.menu[ i ] );
                }
        }               
} 

//**********************************************************************************
// Implémentation de l'effet 'onMouseOver' des entrées du menu
// PRE : lay   : l'identificateur du layer (=id du menu + 0 ou 1 ou 2... selon la
//               position du menu)
//       ismen : true ou false 
//               indique s'il s'agit d'une entrée qu'on peut développer (menu déroulant)
// POST: la bullet précédent l'entrée a été changée en conséquence
//**********************************************************************************
function BulletOver( lay, ismen ) {

    if ( IsW3C ) {
        if ( ismen ) {

            if ( ismen.open )
                eval("document.Bul" + lay + ".src = BulUp.src;" );
            else
                eval("document.Bul" + lay + ".src = BulDown.src;" );
        }   
        else
            eval("document.Bul" + lay + ".src = Bullet.src;" );
    }
    else if ( IsNet4 ) {

        if ( ismen ) {

            if ( ismen.open )
                eval( "document." + lay + ".document.images[ 0 ].src = BulUp.src;" );
            else
                eval( "document." + lay + ".document.images[ 0 ].src = BulDown.src;" );
        }   
        else
            eval( "document." + lay + ".document.images[ 0 ].src = Bullet.src;" );
    }
    else {

        if ( ismen ) {

            if ( ismen.open )
                eval( "document.images[ 'Bul" + lay + "' ].src = BulUp.src;" );
            else
                eval( "document.images[ 'Bul" + lay + "' ].src = BulDown.src;" );
        }
        else
            eval( "document.images[ 'Bul" + lay + "' ].src = Bullet.src;" );
    }
}

//**********************************************************************************
// Implémentation de l'effet 'onMouseOut' des entrées du menu
// PRE : lay   : l'identificateur du layer (=id du menu + 0 ou 1 ou 2... selon la
//               position du menu)
// POST: la bullet précédent l'entrée a été remplacée
//**********************************************************************************
function BulletOut( lay ) {

    if ( IsNet4 )
        eval( "document." + lay + ".document.images[ 0 ].src = BulEmpt.src;" );
    else
        eval( "document.images[ 'Bul" + lay + "' ].src = BulEmpt.src;" );
}

var indent = 0,
    BulIm = 0;

function WriteMenu( menu, menutop ) {

        var thelink;
        var thelinka;

        indent++;

        if ( indent == 1 ) {

            document.writeln( "\n<style type=\"text/css\">\n<!--" );
            for ( var i = 0; i < menu.entries.div.length; i++ ) {

                document.writeln( "#B" + menu.entries.div[ i ] 
                + " { position: absolute; visibility: visible; left: 0px; top: " 
                + ( (i * ENTRY_HEIGHT) + OFFSETY ).toString() + "px; z-index: 1; } \n" );
                document.writeln( "#" + menu.entries.div[ i ] 
                + " { position: absolute; visibility: visible; left: " + TOFFSETX.toString() + "px; top: " 
                + ( (i * ENTRY_HEIGHT) + OFFSETY + TOFFSETY ).toString() + "px; z-index: 2; font-family: Arial, sans-serif; font-size: " );

		    if (IsSun) {
			document.writeln( "16px; } \n" ); 
		    } else {
			document.writeln( "12px; } \n" ); 
		    }

            }
            document.writeln( "--></style>\n" );
        }

        for ( var i = 0; i < menu.entries.link.length; i++ ) {

                var indspc = '', 
                        oncl = '',
                        onb = '',
                        onbe = '',
                        tclass = '', bulimy = '';
        
                if ( menu.entries.link[ i ] )
{                        thelink = menu.entries.link[ i ];
                         thelinka = menu.entries.linka[ i ];		}
                else
{                        thelink = 'JavaScript:;';                
                         thelinka = 'JavaScript:;';     			}           
                        
                oncl = "BulletOut( " + '"' + menu.entries.div[ i ] + '"' + " ); ";
                if ( menu.entries.menu[ i ] ) {
                
                        oncl += " SwitchMenu( " + menu.entries.menu[ i ].name + " ); "
                                   + "indownt = -ENTRY_HEIGHT; Reposition( " + menutop.name + " );'";
                        bulimy = ", " + menu.entries.menu[ i ].name;
                }
                onb = "<b>";
                onbe = "</b>";

                if ( menu.level == 0 ) {

                    onb += "<font color=#000040>"; onbe += "</font>";
                    document.writeln( "<div id='B" + menu.entries.div[ i ]
                        + "'><a href='" + thelink + "' onClick='top.tete.location="+ thelinka +" ; "
                        + oncl + "' onMouseOver='BulletOver( "
                        + '"' + menu.entries.div[ i ] + '"' + bulimy + " )' "
                        + "onMouseOut='BulletOut( "
                        + '"' + menu.entries.div[ i ] + '"' + " )'>"
                        + "<img src='" + bimg + "' border=0></a></div>" );
                    tclass = '';
                }
                else tclass = "class='Abso' ";
                
                document.writeln("<div " + tclass + "id='" + menu.entries.div[ i ] 
                        + "'><img src='" + BulEmpt.src +  "' name='Bul" + menu.entries.div[ i ] 
                        + "' onClick='" + oncl + "' border=0><a href='" + thelink + "' onClick='top.tete.location="+ thelinka +" ; "
                        + oncl + "' onMouseOver='BulletOver( "
                        + '"' + menu.entries.div[ i ] + '"' + bulimy + " )'"
                        + " onMouseOut='BulletOut( "
                        + '"' + menu.entries.div[ i ] + '"' + " )'><nobr>" 
                        + onb
                        + "&nbsp;" + menu.entries.label[ i ] + onbe + "</a></nobr></div>" );

                BulIm++;
                if ( menu.entries.menu[ i ] )
                        WriteMenu( menu.entries.menu[ i ], menutop );
        }
        indent--;
}

//-->
