// -= Variables globales =- 
//========================== 
var Interval = 50; 
var SumInt = 0; 
var imgOButton = "images/OButton.jpg"; 
var imgFButton = "images/FButton.jpg"; 

var PosXStart = 0; 
var PosYStart = 0; 
var intSepar = 10; 
var bFader = false; 

var strFader = "filter: alpha(opacity=0);"; 

var arrListMenu = new Array(); 


// -= Fonctions =- 
//================= 
function DoNothing() {} 

/* ----------------  PERMET D'AFFICHER L'ARBORESCENCE COMPLETE DES l'OUVERTURE --------------------
function StartMenu(){ 
   for( var i = 0; i < arrListMenu.length; i++ )  { 
   fctWrite(i); 
   fctAnim(i); }          
}
*/

// ----------------  AFFICHE L'ARBORESCENCE FERMEE --------------------
function StartMenu(){ 
   for( var i = 0; i < arrListMenu.length; i++ )  fctWrite(i); 

}

function InitMenu( StartX, StartY, Separ, Fader ){ 
   PosXStart = StartX; 
   PosYStart = StartY; 
   intSepar = Separ; 
   bFader = Fader; 
} 

function getObject( id ){ 
   for( var Cpt = 0; Cpt < arrListMenu.length; Cpt++ ){ 
       if( id == arrListMenu[Cpt].Name ) return arrListMenu[Cpt]; 
      for( var Cpt2 = 0; Cpt2 < arrListMenu[Cpt].Option.length; Cpt2++ ){ 
          if( id == arrListMenu[Cpt].Option[Cpt2].Name ) return arrListMenu[Cpt].Option[Cpt2]; 
      } 
   } 
} 

function fctMove( strObj, intTo, intVitesse ){ 
   // But:      Bouger le menu de sa position 'Y' actuelle vers la position 'Y' "intTo". 
   // Event:   / 
   // Param.:   - Index = Numéro du menu. 
   //         - intTo = Position 'Y' finale du menu ou de l'option. 
   //         - intVitesse = Vitesse de mouvement. 
    
   var Obj = getObject( strObj ); 
    
   if( parseInt(intTo) != Obj.PosY ){ 
      if( parseInt(intTo) < Obj.PosY ){ 
         Obj.PosY -= 5 * intVitesse; 
         if( Obj.PosY <= parseInt(intTo) ) Obj.PosY = parseInt(intTo); 
      } 
      else { 
         Obj.PosY += 5 * intVitesse; 
         if( Obj.PosY >= parseInt(intTo) ) Obj.PosY = parseInt(intTo); 
      } 
      document.getElementById( Obj.Name ).style.top = Obj.PosY; 
      setTimeout("fctMove('" + Obj.Name + "', " + intTo + ", " + intVitesse + ")", Interval); 
   } 
} 

function fctAnim( Index ){ 
   // But:      Animation du menu 
   // Event:   Qd on clique sur l'en-tête du menu. 
   // Param.:   - Index = Numéro du menu. 
    
   var Menu = arrListMenu[Index]; 
    
   var To = 0; 
   var intCpt = 0; 
    
   if( !Menu.isShowed ){ 
      document.getElementById( Menu.ImageName ).src = "images/FButton.jpg"; 
      if( bFader ) fctSetOpacity(Index, "+"); 
      else document.getElementById( Menu.OptionName ).style.display = ""; 
      for( intCpt = 0; intCpt < Menu.Option.length; intCpt++){ 
         fctMove(Menu.Option[intCpt].Name, 0, intCpt); 
         To += 0; 
      } 
      for( intCpt = Menu.Index + 1; intCpt < arrListMenu.length; intCpt++ ){ 
         fctMove(arrListMenu[intCpt].Name, To + arrListMenu[intCpt].PosY, Menu.Option.length + 1 ); 
      } 
      Menu.isShowed = true; 
   } 
   else { 
      document.getElementById( Menu.ImageName ).src = "images/OButton.jpg"; 
      if( bFader ) fctSetOpacity(Index, "-"); 
      for( intCpt = 0; intCpt < Menu.Option.length; intCpt++){ 
         fctMove(Menu.Option[intCpt].Name,-30*(intCpt), intCpt + 1); 
         To += 0; 
         SumInt += Interval/2; 
      } 
      for( intCpt = Index + 1; intCpt < arrListMenu.length; intCpt++ ){ 
         fctMove(arrListMenu[intCpt].Name, arrListMenu[intCpt].PosY - To, Menu.Option.length + 1 ); 
         SumInt += Interval/2; 
      } 
      Menu.isShowed = false; 
      if( !bFader ) setTimeout("document.getElementById('" + Menu.OptionName + "').style.display = 'none'", SumInt); 
      SumInt = 0; 
   } 
} 

function fctSetOpacity( Index, strOp ){ 
   // But:      Initialisé l'opacité du menu. 
   // Event:   / 
   // Param.:   - Index = Numéro du menu. 
   //         - strOp = Opération à effectuer sur l'opcaté du menu 
    
   var Menu = arrListMenu[Index]; 
    
   if( Menu.Opac <= 101 && Menu.Opac >= -1 ){ 
      if( strOp == "+" ){ 
         Menu.Opac = Menu.Opac + 20;    
      } 
      else { 
         Menu.Opac = Menu.Opac - 20; 
      } 
      for( var i = 0; i < Menu.Option.length; i++ ) document.getElementById( Menu.Option[i].Name).filters.alpha.opacity = Menu.Opac; 
      document.getElementById( Menu.OptionName).style.display = ""; 
      setTimeout("fctSetOpacity(" + Index + ", '" + strOp + "')", Interval); 
   } 
   else { 
      if( strOp == "+" ){ 
         Menu.Opac = 100;    
      } 
      else { 
         Menu.Opac = 0; 
         document.getElementById( Menu.OptionName).style.display = "none"; 
      } 
      for( var i = 0; i < Menu.Option.length; i++ ) document.getElementById( Menu.Option[i].Name ).filters.alpha.opacity = Menu.Opac; 
   } 
} 

function fctWrite( Index ){ 
   // But:      Ecriture du menu dans le browser. 
   // Event:   / 
   var strRBorder = "solid"; 
   var strLBorder = "solid"; 
   var strBBorder = "none"; 
   var strReturn = ""; 
    
   var Menu = arrListMenu[Index]; 
    
strReturn += "<table border='0' width = '167' summary='' cellpadding = '0' cellspacing = '0' style='Position:relative;top:" + Menu.PosY + ";left:" + Menu.PosX + ";' id = '" + Menu.Name + "'>" 
strReturn += "<tr style='z-index:1'><td><table border='0' summary='' cellpadding = '0' cellspacing = '0' style=''><tr onClick = \"fctAnim(" + Index + ")\" style='cursor:hand;'>"; 
strReturn += "<td height = '30' width = '8'><img src='images/LBorder.jpg' border='0' width='8' height='30' alt=''></td>"; 

//strReturn += "<td><img src='" + Menu.Image + "' border='0' width='52' height='52' align='right'></td>"; 
strReturn += "<td height = '30' width = '138' background='images/bgHeader.jpg' style='color: #3399FF;font: bold  Tahoma;'>" + Menu.Caption + "</td>"; 
strReturn += "<td><img id='" + Menu.ImageName + "' src='images/OButton.jpg' border='0' width='17' height='30' alt=''></td>"; 
strReturn += "<td height = '30' width = '4'><img src='images/RBorder.jpg' border='0' width='4' height='30' alt=''></td>"; 
strReturn += "</tr></table></td></tr><tr style=''><td>"; 
strReturn += "<table border='0' width='100%' cellpadding='0' cellspacing='0'  id='" + Menu.OptionName + "' style=';z-index:0;display: none'>"; 


for( var intCpt = 0; intCpt < Menu.Option.length; intCpt++ ){ 
   if( Menu.Option.length-1 == intCpt ){ 
      strBBorder = "solid"; 
   } 

   strReturn += "<tr id='" + Menu.Option[intCpt].Name + "' style='position: relative; top:" + Menu.Option[intCpt].PosY + "; left:" + Menu.Option[intCpt].PosX + ";z-index: 0;" + ((bFader)? strFader : "")  + "'>"; 
   strReturn += "<td height = '25' width = '1%' style = 'border-style: none none " + strBBorder + " " + strLBorder + "; border-color: #E6F6F2; border-width: 0; color: #E6F6F2; /*background: #D6DFF7;*/'>&nbsp;</td>"; 
   strReturn += "<td height = '15' width = '1%' style = 'border-style: none none " + strBBorder + " none; border-color: #E6F6F2; border-width: 0; color: #E6F6F2; /*background: #D6DFF7;*/'><img src='" + Menu.Option[intCpt].Image + "' border='0' width='16' height='16' align='left'></td>"; 
   strReturn += "<td height = '15' style = 'border-style: none none " + strBBorder + " none; border-color: #E6F6F2; border-width: 0; color: #E6F6F2; /*background: #D6DFF7;*/'><a href = '" + Menu.Option[intCpt].Links + Menu.Option[intCpt].Param + "' Target = '" + Menu.Option[intCpt].Target + "' style='color:#E6F6F2'>&nbsp;" + Menu.Option[intCpt].Caption + "&nbsp;</a></td>"; 
   strReturn += "<td height = '15' width = '1%' style = 'border-style: none " + strRBorder + " " + strBBorder + " none; border-color: #E6F6F2; border-width: 0; color: #E6F6F2; /*background: #D6DFF7;*/'>&nbsp;</td>"; 

    
} 
strReturn += "</tr></Table></td></tr></table>"; 
document.write( strReturn ); 
} 

function fctCreateOption( strName, strTitre, strHref, strParam, strTarget, strImage){ 
   this.Option[this.Option.length] = new OptionObject(strName, strTitre, strHref, strParam, strTarget, strImage, 0, -30*(this.Option.length)); 
} 


// -= Objet "Menu" =- 
//==================== 
function MenuObject( strMenuName, strImage, strImageName, strTitre, intPosX, intPosY ){ 
   this.Name = strMenuName; 
   this.Image = strImage; 
   this.ImageName = strImageName; 
   this.Caption = "<span style='font: bold 8pt Tahoma; color: #333333'>" + strTitre + "</span>"; 
   this.PosX = PosXStart; 
   this.PosY = PosYStart + arrListMenu.length * (3 + intSepar); 
   this.OptionName = strMenuName + "Option"; 
   this.isShowed = false; 
    
   this.Opac = 0; 
   this.Index = arrListMenu.length; 
   arrListMenu[arrListMenu.length] = this; 
   this.Option = new Array(); 
    
   this.CreateOption = fctCreateOption; 
} 


// -= Objet "Option " =- 
//====================== 
function OptionObject( strName, strTitre, strHref, strParam, strTarget, strImage, intPosX, intPosY){ 
   this.PosX = intPosX; 
   this.PosY = intPosY; 
   this.Name = strName; 
   this.Image = strImage; 
   this.Caption = "<span style='font:12px Tahoma; color: #000099'>" + strTitre + "</span>"; 
   this.Param = strParam; 
   this.Target = strTarget; 
   this.Links = strHref; 
}
