<!--


//--- Init des variables



// ----
// - Il est possible de passer des variables dans les codes actions :
// -  @CODE@ : remplacer par ArbreBourgeon.Code
// ----
// ATTENTION !!!! Ces variable sont communes ? tous les arbres de la page
var bModeAction = 0; 		 // Type d'action associ? au lien (0 : <a href>, 1: boutton)
var sEIArbreNoeudOuvert = ''; 	 // Icone par defaut associer au noeud ouvert
var sEIArbreNoeudFermer = ''; 	 // Icone par defaut associer au noeud fermer
var sEIArbreFeuille = '';	 // Icone par defaut associer ? la feuille;
var sEIArbreCheminImages = "../EI_COMMUN/images/";
var sFonctionActionOuvreFerme = ''; // Nom d'une fonction JS a executer lors du click sur un noeud

var tbISIArbre_ListeIdentifiant = new Array();	// Liste des identifiants

var cpt = 0;
var sRetour = '';

// -----------------------------------------------------------

//------------------------------------------------------------------
//- Classe Contenant les informations sur le bourgeon
//-------------------------------------------------------------------


function ArbreMarque( nIdentifiant )
{	
	document.getElementById( 'IdArbreTd'+nIdentifiant ).className = "Style_Arbre_Feuille_On";
	
	for( i=0;i<tbISIArbre_ListeIdentifiant.length;i++)
	{
		if( tbISIArbre_ListeIdentifiant[i] != nIdentifiant )
		{
			document.getElementById( 'IdArbreTd'+tbISIArbre_ListeIdentifiant[i] ).className = "Style_Arbre_Feuille_Off";
		}
	}
}

function ArbreBourgeon( oPere, sLibelle, sIconeOuvert, sIconeFermer, sIconeFeuille, sAction, sCode) 
{ 
 
 this.Pere = oPere;			     // Objet pere ou vide si home
 this.Libelle = sLibelle;		// Libelle du bourgeons ? afficher
 this.Code = sCode         // Code du bourgeons ? afficher
 this.Identifiant = cpt;		 // Identifiant du bourgeons dans l'arbre
 this.IconeOuvert = sIconeOuvert;	// Icone si le bourgeon est un noeud ouvert
 this.IconeFermer = sIconeFermer;	// Icone si le bourgeon est un noeud ferm?
 this.IconeFeuille = sIconeFeuille;	// Icone si le bourgeon est une feuille
 this.Action = sAction;			// Action associ? au libelle
 this.Profondeur = 0;			  // Profondeur du bourgeon dans l'arbre
 
 this.Fils = new Array;			// Fils sdu bourgeons si il est un noeud vide si une feuille
 
 // --- Positionne objet suivant
 cpt++;  				
 
} 


//------------------------------------------------------------------
//- fct: ArbreDeplierTous()
//- but: D?plier tous les item en dessous de moi
//- port?e : public
//- param entr?e : 	Objet pere ou vide si home
//- param sortie : 
//-------------------------------------------------------------------
function ArbreDeplierTous( oPere )
{
 for(var i=0;i<oPere.Fils.length;i++)
 {       
  // --- Si je suis un noeud
  if (oPere.Fils[i].Fils.length > 0)
  {
   ArbreOuvreFermeFils( oPere.Fils[i].Identifiant, 1, oPere.Fils[i].IconeOuvert, oPere.Fils[i].IconeFermer, 'OUVRE' );
   ArbreDeplierTous( oPere.Fils[i] );
  }   
 } 
}

//------------------------------------------------------------------
//- fct: ArbreReplierTous()
//- but: R?plier tous les item en dessous de moi
//- port?e : public
//- param entr?e : 	Objet pere ou vide si home
//- param sortie : 
//-------------------------------------------------------------------
function ArbreReplierTous( oPere )
{
 for(var i=0;i<oPere.Fils.length;i++)
 {       
  // --- Si je suis un noeud
  if (oPere.Fils[i].Fils.length > 0)
  {
   ArbreOuvreFermeFils( oPere.Fils[i].Identifiant, 1, oPere.Fils[i].IconeOuvert, oPere.Fils[i].IconeFermer, 'FERME' );
   ArbreDeplierTous( oPere.Fils[i] );
  }   
 } 
}

//------------------------------------------------------------------
//- fct: ArbreAjouter()
//- but: Ajoute un bourgeon dans l'arbre
//- port?e : public
//- param entr?e : 	Objet pere ou vide si home
//			Libelle du bourgeon
//			Icone si ouvert
//			Icone si fermer
//			Icone Feuille
//			Action
//- param sortie : 
//-------------------------------------------------------------------
function ArbreAjouter( oPere, sLibelle, sIconeOuvert, sIconeFermer, sIconeFeuille, sAction, sCode )
{  
 // --- Si valeur par defaut
 if (sIconeOuvert == '') sIconeOuvert = sEIArbreNoeudOuvert;
 if (sIconeFermer == '') sIconeFermer = sEIArbreNoeudFermer;
 if (sIconeFeuille == '') sIconeFeuille = sEIArbreFeuille;
 
 // --- Si racine de l'arbre
 if (oPere == '')
 {   
  var oArbre = new ArbreBourgeon( '',sLibelle, sIconeOuvert, sIconeFermer, sIconeFeuille, sAction, sCode );    
  oArbre.Profondeur = 0;
  return oArbre; 
 }
 // --- Ajoute un fils
 else
 {    
  if (typeof(oPere.Fils) == 'undefined' ) val = 0;
  else
  {val = oPere.Fils.length;  
   oPere.Fils[val] = new ArbreBourgeon( oPere,sLibelle, sIconeOuvert, sIconeFermer, sIconeFeuille, sAction, sCode ); 
   oPere.Fils[val].Profondeur = oPere.Profondeur+1;
   return oPere.Fils[val];
  }
 }
} 

//------------------------------------------------------------------
//- fct: ArbreAffiche()
//- but: Retourne la chaine HTML de l'arbre
//- port?e : public
//- param entr?e : 	Objet racine
//-			Objet racine de depliement
//- param sortie : 
//-------------------------------------------------------------------
function ArbreAffiche( oRacine )
{
 var sRetour = ''; 
 sRetour = "<table border=0 cellspacing=0 cellpadding=0><tr><td>"+ArbreGenere( oRacine )+"</td></tr></table>"; 
 //alert( sRetour );
 return sRetour;
}

//------------------------------------------------------------------
//- fct: ArbreAfficheNoeud()
//- but: Retourne la chaine HTML de l'arbre
//- port?e : public
//- param entr?e : 	Objet racine
//-			Objet racine de depliement
//- param sortie : 
//-------------------------------------------------------------------
function ArbreAfficheNoeud( oRacine, nColor )
{   
 var oRacineTemp = oRacine;
 
 while( oRacineTemp.Pere != '')
 {
  // --- Position du noeud dans la branche
  if (oRacineTemp.Pere.Fils[oRacineTemp.Pere.Fils.length-1].Identifiant == oRacineTemp.Identifiant) nTypeNoeud = 1;
  else nTypeNoeud = 0;
    
  // --- Ouvre le noeud si j'ai un enfant
  if (oRacineTemp.Fils.length > 0) ArbreOuvreFermeFils( oRacineTemp.Identifiant, nTypeNoeud, oRacineTemp.IconeOuvert, oRacineTemp.IconeFermer, 'AUTO' );
  
  oRacineTemp = oRacineTemp.Pere;
 } 
  
 document.getElementById( 'IdArbreTd'+ oRacine.Identifiant ).style.background= nColor;
}

//------------------------------------------------------------------
//- fct: ArbreGenere()
//- port?e : priv?e
//- but: Generation de l'arbre ? partir de la racine
//- param entr?e : 	Objet racine
//-			Objet racine de depliement
//- param sortie : 
//_ ATTENTION !!!! Cette fonction est recurcive
//-------------------------------------------------------------------
function ArbreGenere( oRacine  )
{ 
 
 var sRetour = '';
 var NbFils;
 var sChaine = '';
 NbFils = oRacine.Fils.length;  
 
 // --- Je m'affiche 
 if (oRacine.Profondeur == 0)
 {
  // Si une action sur le lien
  if (oRacine.Action != '')
  {   
   var val = oRacine.Action;   
   val = val.replace(/CODE/,oRacine.Code);
   
   var Temp = "<a href='#' onCLick=\""+val+"\">";
   var Temp2= "</a>";
  }
  else
  {
   var Temp = "";
   var Temp2= "";  
  }
  sRetour += "<table  style='position:block; margin-top: 1px; margin-bottom: 1px;' cellspacing=0 cellpadding=0 border=0><tr><td><img src='"+oRacine.IconeOuvert+"'></td><td valign=center class='Style_Arbre_Home'>&nbsp;"+Temp+oRacine.Libelle +Temp2+"</td></tr></table><div id='Id"+ oRacine.Identifiant+"' style='display: block; margin-top: 1px; margin-bottom: 1px;' >";
 }
 else
 {   
  var oMonPere = oRacine;
  // --- Image de mon arbre
  for(var ki=0;ki<((oRacine.Profondeur)-1);ki++)
  {   
   oMaRacine = oMonPere;
   oMonPere = oMonPere.Pere;         
   if (oMaRacine.Profondeur > 1) oMonGrandPere = oMonPere.Pere;   
   
   if (oMonPere.Fils.length > 0)
   {    
    if (oMaRacine.Profondeur > 1)
    {     
     if (oMonGrandPere.Fils[((oMonGrandPere.Fils.length)-1)].Identifiant == oMonPere.Identifiant ) sChaine = "<td><img src='"+sEIArbreCheminImages+"ftv2blank.gif'></td>"+sChaine;           
     else 
     {
     	sChaine = "<td><img src='"+sEIArbreCheminImages+"ftv2vertline.gif'></td>"+sChaine;           
     }
    }    
    else sChaine = "<td><img src='"+sEIArbreCheminImages+"ftv2vertline.gif'></td>" + sChaine;    
   }
   else sChaine += "<td><img src='"+sEIArbreCheminImages+"ftv2lastnode.gif' ></td>";   
  }  
  
 
  
  // --- Mon image de la branche
  if (oRacine.Pere.Fils[oRacine.Pere.Fils.length-1].Identifiant == oRacine.Identifiant)
  {
   if (oRacine.Fils.length == 0 ) sChaine += "<td><img src='"+sEIArbreCheminImages+"ftv2lastnode.gif'></td>";    
   else  sChaine += "<td><a class='style_arbre_a' href=\"JavaScript: ArbreOuvreFermeFils( "+ oRacine.Identifiant +",1,'"+oRacine.IconeOuvert+"','"+oRacine.IconeFermer+"','AUTO' );\" ><div style=\"background:url('"+sEIArbreCheminImages+"ftv2plastnode.gif'); cursor: pointer; width: 16px; height: 16px;\"' Id='IdImage"+oRacine.Identifiant+"'></div></a></td>";    
  }
  else
  {
   if (oRacine.Fils.length == 0 ) sChaine += "<td><img src='"+sEIArbreCheminImages+"ftv2node.gif' ></td>";    
   else sChaine += "<td><a class='style_arbre_a'  href=\"JavaScript:  ArbreOuvreFermeFils( "+ oRacine.Identifiant +",0,'"+oRacine.IconeOuvert+"','"+oRacine.IconeFermer+"','AUTO' );\"><div style=\"background:url('"+sEIArbreCheminImages+"ftv2pnode.gif'); cursor: pointer; width: 16px; height: 22px;\" Id='IdImage"+oRacine.Identifiant+"'></div></a></td>";    
  }       
  
  // Si une action sur le lien
  if (oRacine.Action != '')
  {
		var val = oRacine.Action;   
		val = val.replace(/@CODE@/,oRacine.Code);

		tbISIArbre_ListeIdentifiant[ tbISIArbre_ListeIdentifiant.length ]  = oRacine.Identifiant;   
		var Temp = "<span style=\"text-decoration: underline; cursor: pointer;\">";
		var Temp2= "</span>";
  }
  else
  {
   var Temp = "";
   var Temp2= "";  
  }
  
  
  sChaine = "<table cellspacing=0 cellpadding=0><tr>"+sChaine+"</tr></table>";
  // Si je suis une feuille  
  if (oRacine.Fils.length == 0 )
  {
  	if(oRacine.Action != '')
  	{
  		sRetour += "<table  style='position:block; margin-top: 0px; margin-bottom: 0px;' cellspacing=0 cellpadding=0 border=0 ><tr><td valign=top >"+sChaine + "</td><td><table cellspacing=0 cellpadding=0><tr><td><img src='"+oRacine.IconeFeuille+"' ></td><td valign=center><a id='IdArbreTd"+oRacine.Identifiant+"' href=\"JavaScript: "+val+" ArbreMarque("+oRacine.Identifiant+"); \" style='padding-left: 5px;' class='Style_Arbre_Feuille_Off'>"+Temp+oRacine.Libelle+Temp2+"</a></td></tr></table></td></tr></table><div id='IdDivBourgeon"+oRacine.Identifiant+"' style='display: none; margin-top: 0px; margin-bottom: 0px;'>";
  
	}
	else
  	{
   		  sRetour += "<table style='position:block; margin-top: 0px; margin-bottom: 0px;' cellspacing=0 cellpadding=0 border=0 ><tr><td valign=top >"+sChaine + "</td><td><table cellspacing=0 cellpadding=0><tr><td><img src='"+oRacine.IconeFeuille+"'></td><td valign=center id='IdArbreTd"+oRacine.Identifiant+"' style='padding-left: 5px;' class='Style_Arbre_Feuille_Off'>"+Temp+oRacine.Libelle+Temp2+"</td></tr></table></td></tr></table><div id='IdDivBourgeon"+oRacine.Identifiant+"' style='display: none; margin-top: 0px; margin-bottom: 0px;'>";
   	}
  }
  // Si je suis un noeud
  else
  {
  	if(oRacine.Action != '')
  	{
  		sRetour += "<table  style='position:block; margin-top: 0px; margin-bottom: 0px;' cellspacing=0 cellpadding=0 border=0 ><tr><td valign=top>"+ sChaine + "</td><td><table cellspacing=0 cellpadding=0><tr><td><img src='"+oRacine.IconeFermer+"' Id='IdIcone"+oRacine.Identifiant+"' ></td><td valign=center><a id='IdArbreTd"+oRacine.Identifiant+"'  href=\"JavaScript: "+val+" ArbreMarque("+oRacine.Identifiant+"); \" style='padding-left: 5px;' class='Style_Arbre_Noeud_Off'>"+Temp+oRacine.Libelle+Temp2+"</a></td></tr></table></td></tr></table><div id='IdDivBourgeon"+ oRacine.Identifiant+"' style='display: none; margin-top: 0px; margin-bottom: 0px;'>";
  	}
  	else
  	{
   		sRetour += "<table style='position:block; margin-top: 0px; margin-bottom: 0px;' cellspacing=0 cellpadding=0 border=0 ><tr><td valign=top>"+ sChaine + "</td><td><table cellspacing=0 cellpadding=0><tr><td><img src='"+oRacine.IconeFermer+"' Id='IdIcone"+oRacine.Identifiant+"'></td><td valign=center id='IdArbreTd"+oRacine.Identifiant+"' style='padding-left: 5px;' class='Style_Arbre_Noeud_Off'>"+Temp+oRacine.Libelle+Temp2+"</td></tr></table></td></tr></table><div id='IdDivBourgeon"+ oRacine.Identifiant+"' style='display: none; margin-top: 0px; margin-bottom: 0px;'>";
  	}
  }
}

 // --- J'affiche mes fils 
 for(var i=0;i<NbFils;i++)
 {       
  sRetour += ArbreGenere( oRacine.Fils[i] );          
 }
 
 // --- Fin de mon affichage
 sRetour += "</div>";
  
  
 return sRetour;
}

//------------------------------------------------------------------
//- fct: ArbreOuvreFermeFils()
//- port?e : priv?e
//- but: Ouvre / Ferme un noeud
//- param entr?e :  Id du bourgeon ? ouvrir ou fermer
//-		    Type du bourgeon (1 : dernier de la branche, 0: dans la branche)
//-		    Icone ouvert
//-		    Icone Fermer
//- param sortie : 
//-------------------------------------------------------------------
function ArbreOuvreFermeFils( oIdBourgeon, nTypeNoeud, sIconeOuvert, sIconeFermer, sAction )
{
 
 switch(sAction)
 {
  case 'AUTO':
  	if (document.getElementById( 'IdDivBourgeon'+oIdBourgeon ).style.display == 'none')
  	{  
   	 document.getElementById( 'IdDivBourgeon'+oIdBourgeon ).style.display = 'block';    
   	 document.getElementById( 'IdIcone'+oIdBourgeon ).src = sIconeOuvert;
   	 if ( nTypeNoeud == 0) document.getElementById( 'IdImage'+oIdBourgeon ).style.background = "url('"+sEIArbreCheminImages+"ftv2mnode.gif')";   	 
   	 else document.getElementById( 'IdImage'+oIdBourgeon ).style.background = "url('"+sEIArbreCheminImages+"ftv2mlastnode.gif')";   	 	   	 
  	}
  	else
  	{
   	 document.getElementById( 'IdDivBourgeon'+oIdBourgeon ).style.display = 'none';  
   	 document.getElementById( 'IdIcone'+oIdBourgeon ).src = sIconeFermer;
   	 if ( nTypeNoeud == 0) document.getElementById( 'IdImage'+oIdBourgeon ).style.background = "url('"+sEIArbreCheminImages+"ftv2pnode.gif')";
   	 else document.getElementById( 'IdImage'+oIdBourgeon ).style.background = "url('"+sEIArbreCheminImages+"ftv2plastnode.gif')";
  	}

  	if (sFonctionActionOuvreFerme != '')
  	{
   	eval( sFonctionActionOuvreFerme );
  	}
  break;
  
  case 'OUVRE':
  	 document.getElementById( 'IdDivBourgeon'+oIdBourgeon ).style.display = 'block';    
   	 document.getElementById( 'IdIcone'+oIdBourgeon ).src = sIconeOuvert;
   	 if ( nTypeNoeud == 0) 
   	 {
   	 	//document.getElementById( 'IdImage'+oIdBourgeon ).src = sEIArbreCheminImages+'ftv2mnode.gif';
   	 	document.getElementById( 'IdImage'+oIdBourgeon ).style.background = "url('"+sEIArbreCheminImages+"ftv2mnode.gif')";
   	 }
   	 else
   	 {
   	   //document.getElementById( 'IdImage'+oIdBourgeon ).src = sEIArbreCheminImages+'ftv2mlastnode.gif';    
   	 	document.getElementById( 'IdImage'+oIdBourgeon ).style.background = "url('"+sEIArbreCheminImages+"ftv2mlastnode.gif')";   	 	
   	 }
  break;
  
  case 'FERME':
   	 document.getElementById( 'IdDivBourgeon'+oIdBourgeon ).style.display = 'none';  
   	 document.getElementById( 'IdIcone'+oIdBourgeon ).src = sIconeFermer;
   	 if ( nTypeNoeud == 0) document.getElementById( 'IdImage'+oIdBourgeon ).style.background = "url('"+sEIArbreCheminImages+"ftv2pnode.gif')";
   	 else document.getElementById( 'IdImage'+oIdBourgeon ).style.background = "url('"+sEIArbreCheminImages+"ftv2plastnode.gif')";
  break;
 }   
}



//-->
