// Fonction qui renvoie la valeur courante de la propriété d'un style, 
// qu'il soit définit "in-line" ou dans la feuille de style
function PFW_getStyle(el,styleProp)
{
 
 var ret =" ";     
 //Pour IE     
 if (el.currentStyle)
 {
  ret = el.currentStyle[styleProp];
  if (styleProp!='clip')
  {
   while (styleProp.indexOf('-') != -1)
    {// clear '-' and  UpperCase  first next letters : background-color => backgroundColor
    var letter = styleProp.charAt(styleProp.indexOf('-')+1);
    styleProp = styleProp.replace(/-\S{1}/,letter.toUpperCase());
   }
   ret = eval('el.currentStyle.' + styleProp);
  }
  else
  {// Return clip style  in mozilla format : rect(top,right,bottom,left)
   ctop=el.currentStyle.clipTop;
   cright=el.currentStyle.clipRight;
   cbottom=el.currentStyle.clipBottom;
   cleft=el.currentStyle.clipLeft;
   ret='rect('+ctop+','+cright+','+cbottom+','+cleft+')';
  }
 }     
 //Pour le DOM     
 else if (document.defaultView && document.defaultView.getComputedStyle) 
 {         
  //Safari Mac ne peut pas acceder aux objets qui sont en display:none.        
  //On considere donc que si c'est ce qui est demande et qu'il n'y a pas de réponse, c'est que c'est du "none"         
  if (!document.defaultView.getComputedStyle(el, "") && styleProp=="display") 
   ret = "none";         
  //Sinon on prends le résultat         
  else 
   ret = document.defaultView.getComputedStyle(el, "")[styleProp];     
 }     
 //Safari Mac retourne les couleurs en rgba et rgba(0,0,0,0) => transparent     
 if (styleProp=="backgroundColor" && ret=="rgba(0, 0, 0, 0)") 
  ret = "transparent";          
 
 return ret;        
 }

// Fonction qui affiche ou cache un élément passé en paramètre grace a la propriété display de son style
// id : l'id de l'element qui doit s'afficher ou s'effacer
// mod : un entier codant pour le switch l'etat de la propriété display des éléments à cacher
// exemple d'un élément : <tr id="menu1">
// appel de la fonction : <a href="javascript:showHide('menu1' , 1)">phase 1</a>
function showHide(id , mod) 
{
 	var el = document.getElementById(id);
 	// Recherche de la valeur de la propriété display grâce à PFW_getStyle
	if (PFW_getStyle(el,"display") == "none")
	{ 
		// Si display = none, affichage de l'element
		show(id,mod);
	} 
	else 
	{
		// sinon on le masque
		hide(id,mod);
	}
}


// Fonction qui affiche ou cache plusieurs éléments grace a la propriété display de son style
// nom 			: le nom (attribut name) commun à tous les elements qui doivent s'afficher ou se cacher
// 			 			ne fonctionne qu'avec les objet HTML de type : input, img, frame, iframe, form, map, param, meta, object, A, select, applet, textarea, or button
// mod 			: un entier codant pour le switch l'etat de la propriété display des éléments ? cacher
// tagname	:	le type de balise commun a tous les éléments qu'il faut cacher. Si cette m?thode est utilis?e
// exemple d'un élément : <tr name="menu1">
// appel de la fonction : <a href="javascript:showHideMultiple('menu1',3,'')">phase 1</a>
function showHideMultiple(nom, mod, tagname)
{
	// navigateur ?
	isIE = (document.all);
	isNN6 = (!isIE) && (document.getElementById);
	
	//on sélectionne la propriété display a utiliser pour reafficher les éléments
	switch(mod)
	{
	  case 1:
	  	var display = 'block';
	  break;
	   
	  case 2:
	  	var display = 'inline';
	  break;
	  
	  case 3:
	  	var display = "table-row";
	  	if(isIE)
	  	{
	  		display = "";
	  	}	
	  break;
	  
	  case 4:
	  	var display = 'table-cell';
	  	if(isIE)
	  	{
	  		display = "";
	  	}
	  break;
	  
	  case 5:
	  	var display = 'table-row-group';
	  	if(isIE)
	  	{
	  		display = "";
	  	}
	  break;
	  
	  case 6:
	  	var display = 'table-header-group';
	  break;
	  
	  case 7:
	  	var display = 'table-footer-group';
	  break;
	}
  //--------------------------------------------------
  
  //--------------------------------------------------
  //On recupere la liste des elements a cacher en se basant sur la propriété name
  if (tagname=='')
  {
	  var tab_elements = new Array;
	  tab_elements = document.getElementsByName(nom);
	    
	  for (var i=0; i<tab_elements.length; i++)
	  {
	  	obj = tab_elements[i];
	  	
	  	if (PFW_getStyle(obj, "display") == "none")
		  {
		    obj.style.display = display;
		  } 
		  else 
		  {
		    obj.style.display = "none";
		  }
		}
	}
	//--------------------------------------------------
	
	//--------------------------------------------------
	//On recupere la liste des elements a cacher en se basant sur leur type de balise
	else
	{
	  //--------------------------------------------------
	  //si un nom a bien été donné pour filtrer les éléments a afficher/cacher
	  if (nom!='')
	  {
		  var tab_elements = new Array;
		  tab_elements = document.getElementsByTagName(tagname);
		  
		  for (var i=0; i<tab_elements.length; i++)
		  {
		  	obj = tab_elements[i];
		  	
		  	if (tab_elements[i].getAttribute("name")!=null && tab_elements[i].getAttribute("name").indexOf(nom,0)!=-1)
			  {
			  	if (PFW_getStyle(obj, "display") == "none")
				  {
				   	obj.style.display = display;
				  } 
				  else 
				  {
				    obj.style.display = "none";
				  }
				}
			}
		}  	
		//--------------------------------------------------  	
	  	
	  //--------------------------------------------------
		//sinon on doit afficher/cacher tous les éléments dont la balise est du type spécifié
		else
		{	
	  	var tab_elements = new Array;
		  tab_elements = document.getElementsByTagName(tagname);
		  
		  for (var i=0; i<tab_elements.length; i++)
		  {
		  	obj = tab_elements[i];
	  	
			if (PFW_getStyle(obj, "display") == "none")
			  {
			   	obj.style.display = display;
			  } 
			  else 
			  {
			    obj.style.display = "none";
			  }
			}
		}
	}
	//--------------------------------------------------
}



// Fonction qui affiche un élément passé en paramètre grace a la propriété display de son style
// id : l'id de l'element qui doit s'afficher ou s'effacer
// mod : un entier codant pour le switch l'etat de la propriété display des éléments à cacher
// exemple d'un élément : <tr id="menu1">
// appel de la fonction : <a href="javascript:showHide('menu1' , 1)">phase 1</a>
function show(id , mod) 
{
	// navigateur ?
	isIE = (document.all);
	isNN6 = (!isIE) && (document.getElementById);
 
  switch(mod)
	{
	  case 1:
	  	var display = 'block';
	  break;
	   
	  case 2:
	  	var display = 'inline';
	  break;
	  
	  case 3:
	  	var display = 'table-row';
	  	if(isIE)
	  	{
	  		display = "";
	  	}
	  break;
	  
	  case 4:
	  	var display = 'table-cell';
	  	if(isIE)
	  	{
	  		display = "";
	  	}
	  break;
	  
	  case 5:
	  	var display = 'table-row-group';
	  	if(isIE)
	  	{
	  		display = "";
	  	}
	  break;
	  
	  case 6:
	  	var display = 'table-header-group';
	  break;
	  
	  case 7:
	  	var display = 'table-footer-group';
	  break;
	}
  
  //--------------------------------------------------
	//On affiche l'element
	obj = document.getElementById(id);
	obj.style.display = display;
	//--------------------------------------------------
}


// Fonction qui cache un élément passé en paramètre grace a la propriété display de son style
// id : l'id de l'element qui doit s'afficher ou s'effacer
// mod : un entier codant pour le switch l'etat de la propriété display des éléments à cacher
// exemple d'un élément : <tr id="menu1">
// appel de la fonction : <a href="javascript:showHide('menu1' , 1)">phase 1</a>
function hide(id , mod) 
{
	//On cache l'element
	obj = document.getElementById(id);
	obj.style.display = "none";
}


// Fonction qui affiche plusieurs éléments grace a la propriété display de son style
// nom 			: le nom (attribut name) commun ? tous les elements qui doivent s'afficher ou se cacher
// 			 			ne fonctionne qu'avec les objet HTML de type : input, img, frame, iframe, form, map, param, meta, object, A, select, applet, textarea, or button
// mod 			: un entier codant pour le switch l'etat de la propriété display des éléments ? cacher
// tagname	:	le type de balise commun a tous les éléments qu'il faut cacher. Si cette m?thode est utilis?e
// exemple d'un élément : <tr name="menu1">
// appel de la fonction : <a href="javascript:showHideMultiple('menu1',3,'')">phase 1</a>
function showMultiple(nom, mod, tagname)
{
	// navigateur ?
	isIE = (document.all);
	isNN6 = (!isIE) && (document.getElementById);
	
	//--------------------------------------------------
	//on sélectionne la propriété display a utiliser pour reafficher les éléments
	switch(mod)
	{
	  case 1:
	  	var display = 'block';
	  break;
	   
	  case 2:
	  	var display = 'inline';
	  break;
	  
	  case 3:
	  	var display = 'table-row';
	  	if(isIE)
	  	{
	  		display = "";
	  	}
	  break;
	  
	  case 4:
	  	var display = 'table-cell';
	  	if(isIE)
	  	{
	  		display = "";
	  	}
	  break;
	  
	  case 5:
	  	var display = 'table-row-group';
	  	if(isIE)
	  	{
	  		display = "";
	  	}
	  break;
	  
	  case 6:
	  	var display = 'table-header-group';
	  break;
	  
	  case 7:
	  	var display = 'table-footer-group';
	  break;
	}
  //--------------------------------------------------
  
  //--------------------------------------------------
  //On recupere la liste des elements a afficher en se basant sur la propriété name
  if (tagname=='')
  {
	  var tab_elements = new Array;
	  tab_elements = document.getElementsByName(nom);
	    
	  for (var i=0; i<tab_elements.length; i++)
	  {
	  	obj = tab_elements[i];
	  	obj.style.display = display;
		}
	}
	//--------------------------------------------------
	
	//--------------------------------------------------
	//On recupere la liste des elements a cacher en se basant sur leur type de balise
	else
	{
	  //--------------------------------------------------
	  //si un nom a bien été donné pour filtrer les éléments a afficher/cacher
	  if (nom!='')
	  {
		  var tab_elements = new Array;
		  tab_elements = document.getElementsByTagName(tagname);
		  
		  for (var i=0; i<tab_elements.length; i++)
		  {
		  	//Detection du Navigateur
		  	obj = tab_elements[i];
		  	
		  	if (tab_elements[i].getAttribute("name")!=null && tab_elements[i].getAttribute("name").indexOf(nom,0)!=-1)
				{
					obj.style.display = display;
				}
			}
		}  	
		//--------------------------------------------------  	
	  	
	  //--------------------------------------------------
		//sinon on doit afficher/cacher tous les éléments dont la balise est du type spécifié
		else
		{	
	  	var tab_elements = new Array;
		  tab_elements = document.getElementsByTagName(tagname);
		  
		  for (var i=0; i<tab_elements.length; i++)
		  {
		  	obj = tab_elements[i];
	  	
				obj.style.display = display;
			}
		}
	}
	//--------------------------------------------------
}


// Fonction qui affiche plusieurs éléments grace a la propriété display de son style
// nom 			: le nom (attribut name) commun à tous les elements qui doivent s'afficher ou se cacher
// 			 			ne fonctionne qu'avec les objet HTML de type : input, img, frame, iframe, form, map, param, meta, object, A, select, applet, textarea, or button
// mod 			: un entier codant pour le switch l'etat de la propriété display des éléments à cacher
// tagname	:	le type de balise commun a tous les éléments qu'il faut cacher. Si cette méthode est utilisée
// exemple d'un élément : <tr name="menu1">
// appel de la fonction : <a href="javascript:showHideMultiple('menu1',3,'')">phase 1</a>
function hideMultiple(nom, mod, tagname)
{

  //--------------------------------------------------
  //On recupere la liste des elements a cacher en se basant sur la propriété name
  if (tagname=='')
  {
	  var tab_elements = new Array;
	  tab_elements = document.getElementsByName(nom);
	    
	  for (var i=0; i<tab_elements.length; i++)
	  {
	  	obj = tab_elements[i];
	  	
			obj.style.display = "none";
		}
	}
	//--------------------------------------------------
	
	//--------------------------------------------------
	//On recupere la liste des elements a cacher en se basant sur leur type de balise
	else
	{
	  //--------------------------------------------------
	  //si un nom a bien été donné pour filtrer les éléments a afficher/cacher
	  if (nom!='')
	  {
		  var tab_elements = new Array;
		  tab_elements = document.getElementsByTagName(tagname);
		  
		  for (var i=0; i<tab_elements.length; i++)
		  {
		  	obj = tab_elements[i];
		  	
		  	if (tab_elements[i].getAttribute("name")!=null && tab_elements[i].getAttribute("name").indexOf(nom,0)!=-1)
				{
					obj.style.display = "none";
				}
			}
		}  	
		//--------------------------------------------------  	
	  	
	  //--------------------------------------------------
		//sinon on doit afficher/cacher tous les éléments dont la balise est du type spécifié
		else
		{	
	  	var tab_elements = new Array;
		  tab_elements = document.getElementsByTagName(tagname);
		  
		  for (var i=0; i<tab_elements.length; i++)
		  {
		  	obj = tab_elements[i];
	  
				obj.style.display = "none";
			}
		}
	}
	//--------------------------------------------------
}