  var delete_row_color = "#BBBBBB"; //"#F4B9BF";
  
  /***************************************************************************************************
           Affiche une fenêtre popup sur l'écran à la position x, y et avec un scroll ou non 
  ***************************************************************************************************/
  function popup_scroll(file, win_w, win_h, scroll,  xOffset, yOffset)
  {
    if (scroll==true)
	  window.open(file,'', 'status=no,scrollbars=yes,toolbar=no,width='+win_w+',height='+win_h+',screenX='+xOffset+',screenY='+yOffset+',top='+yOffset+',left='+xOffset+'');
	else
      window.open(file,'', 'status=no,scrollbars=no,toolbar=no,width='+win_w+',height='+win_h+',screenX='+xOffset+',screenY='+yOffset+',top='+yOffset+',left='+xOffset+'');
  } //Fin popup_scroll
  
  /***************************************************************************************************
                           Affiche une fenêtre popup centrée sur l'écran
  ***************************************************************************************************/
  function popup(file,win_w,win_h)
  {
		//--> Résolution de l'écran
		if (screen)
	  	var xMax = screen.width, yMax = screen.height;
		else
	    var xMax = 640, yMax=480;		
			
		/**********************************************************************
					Ce bolc pose problème avec firefox
		/**********************************************************************		
		if (document.all)
		{
	  	var xMax = screen.width, yMax = screen.height;
		} else
		{
	  	if (document.layers)
	    	var xMax = window.outerWidth, yMax = window.outerHeight;
		  else
		    var xMax = 640, yMax=480;
		} //Fsi
		*/
		
    //---> Position par rapport à l'écran
    var xOffset = (xMax - win_w)/2, yOffset = (yMax - win_h)/2;
  
    //---> Ouverture de la fenêtre
		popup_scroll(file, win_w, win_h, false,  xOffset, yOffset);
  } //Fin popup
  
  /****************************************************************************************************
                      Rafraichier la fenêtre parent pour un popup
  ****************************************************************************************************/
  function rafraichir_parent()
  {
    if (self.opener != null)
    {
      //---> Si c'est une pagination il faut garder la page en cours
	  if (self.opener.document.pagination != null)
		self.opener.document.pagination.submit();
		else
	    if (self.opener.document.location.reload != null)
		  self.opener.document.location.reload();
		else
	      self.opener.document.location.href = self.opener.document.location.href;
    } //Fsi
  } //Fin rafraîchir_parent
  
  /****************************************************************************************************
                          Fermer la fenêtre popup et rafraichit le parent
  ****************************************************************************************************/
  function fermer_popup() {
    self.close();
	rafraichir_parent();
  } //Fin fermer_popup
  
  /****************************************************************************************************
                                 Définir le pointeur de souris
  ****************************************************************************************************/
  function changerCurseur (id, cursor)
  {
    //---> Vérifier la validité du paramètre cursor
		switch (cursor)
		{
			case "auto"      :
			case "crosshair" :
			case "default"   :
			case "hand"      :
			case "move"      :
			case "e-resize"  :
			case "ne-resize" :
			case "nw-resize" :
			case "n-resize"  :
			case "se-resize" :
			case "sw-resize" :
			case "s-resize"  :
			case "w-resize"  :
			case "text"      :
			case "wait"      :
			case "help"      : break ; //---> OK 
			default          : return;
		} //Fin switch
		
		if (document.getElementById)
		{
			var obj = document.getElementById(id);
			if (obj !=null)
			{
				obj.style.cursor = cursor;
			} //Fsi
		} //Fsi
  } //Fin changerCurseur
  
  /****************************************************************************************************
                                 Vérifie le nom du fichier à télécharger dans le site
  ****************************************************************************************************/
  function verif_upload_filename(input)
  {
    var filename = input.value;
		if (filename == "")
			return;
		var tab = filename.split("/");

    if (tab==null || tab.length == 0)
		{
			alert(1);
			return;
		} 
		filename = tab[tab.length-1];

    var tab = filename.split("\\");
    if (tab==null || tab.length == 0)
		{
			alert(2);
			return;
		} 
    filename = tab[tab.length-1];
    
	var expr = new RegExp('[^a-zA-Z0-9._]');
    var r    = filename.search(expr);
	if (r != -1)
	{
	  alert('Attention ! ' + filename +' comporte des caractères non alphanumériques\nVous devriez le renommez ou en choisir un autre.');
	} //Fsi
  } //Fin verif_upload_filename
  
  /****************************************************************************************************
       Change la couleur d'arrière plan d'une ligne si la case cocher supression n'est pas cochée
  ****************************************************************************************************/
  function hightlight_row(node)
  {
    var color = "#DDEEFF";
	
	if (document.getElementById==null)
	  return;  //---> Ne supporte pas DOM

    if (node==null) 
	  return;  //---> Paramètre invalide
	
	var id       = node.id;
	var checkbox = document.getElementById('supprimer' + id);
	
	if (checkbox == null)
	{ //---> La case à cocher n'exsite pas
	  node.style.background = color;
	  return;
	} //Fsi
	
    if (checkbox.tagName.toLowerCase() != "input")
	{ //---> Ce n'est pas une case à cocher
	  node.style.background = color;
	  return;
	} //Fsi
	
	if (checkbox.checked == false)
	{ //---> La case n'est pas cochée
	  node.style.background = color;
	  return;	  
	} //Fsi
	  
	node.style.background = delete_row_color;
  } //Fin hightlight_row
  
  /****************************************************************************************************
                                  Change la couleur d'arrière plan d'une ligne
  ****************************************************************************************************/
  function restore_row(node, color)
  {
    if (document.getElementById==null)
	  return;  //---> Ne supporte pas DOM

    if (node==null) 
	  return;  //---> Paramètre invalide
	
	var id       = node.id;
	var checkbox = document.getElementById('supprimer' + id);
	
	if (checkbox == null)
	{ //---> La case à cocher n'exsite pas
	  node.style.background = color;
	  return;
	} //Fsi
	
    if (checkbox.tagName.toLowerCase() != "input")
	{ //---> Ce n'est pas une case à cocher
	  node.style.background = color;
	  return;
	} //Fsi
	
	if (checkbox.checked == false)
	{ //---> La case n'est pas cochée
	  node.style.background = color;
	  return;	  
	} //Fsi
	  
	node.style.background = delete_row_color;    
  } //Fin restore_row
  
  function search_array(tab, v)
  {
	for (var i=0; i<tab.length; i++)
	{
	  if (v == tab[i])
	    return true;
	} //Ffor

    return false;
  } //Fin search_array
  /****************************************************************************************************
                                  						Trim
  ****************************************************************************************************/	
	function trim(str)
	{
		str += "";
		if(str.length < 1)
			return "";
		
		str = rTrim(str);
		str = lTrim(str);
		return str + "";
	} //Fin trim
  /****************************************************************************************************
                                  						Trim Right
  ****************************************************************************************************/
	function rTrim(str)
	{
		var w_space  = String.fromCharCode(32);
		var v_length = str.length;
		var strTemp  = "";
		if(v_length < 0)
			return "";
		
		var iTemp = v_length -1;
		while(iTemp > -1)
		{
			if(str.charAt(iTemp) != w_space)
			{
				strTemp = str.substring(0,iTemp +1);
				break;
			} //Fsi
			iTemp = iTemp-1;
		} //FTQ
		return strTemp + "";
	} //Fin rTrim
  /****************************************************************************************************
                                  						Trim Left
  ****************************************************************************************************/
	function lTrim(str)
	{
		var w_space  = String.fromCharCode(32);
		var v_length = str.length;
		var strTemp  = "";
		if(v_length < 0)
			return "";
		
		var iTemp = 0;
		while(iTemp > -1)
		{
			if(str.charAt(iTemp) != w_space)
			{
				strTemp = str.substring(iTemp,v_length);
				break;
			} //Fsi
			iTemp = iTemp+1;
		} //FTQ
		return strTemp + "";
	} //Fin lTrim
/**************************************************************************************************
                                                       verifie la form d1 mail
**************************************************************************************************/
function verifmail(Mail)
{
    sMail = document.getElementById(Mail).value;
	sMail = sMail.toLowerCase();
	var re=/^[a-z\d]+((\.|-|_)[a-z\d]+)*@((?![-\d])[a-z\d-]{0,62}[a-z\d]\.){1,4}[a-z]{2,6}$/gi; 
	return (sMail.match(re)==sMail)&&(sMail.substr(sMail.lastIndexOf("@")).length<=256); 

}
/****************************************************************************************************************************************
																				Vérifie que le Top Level Domain existe
	Passer le courriel en entier. Attention les, ".eu" sont notés ! La liste est à jour (jeudi 19 janvier 2006) et en avance pour les ".eu" 
****************************************************************************************************************************************/
function bDomainTLD(Mail) 
{   sMail = document.getElementById(Mail).value;
	sMail = sMail.toLowerCase();
	var re=/^(ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw|aero|arpa|biz|com|coop|edu|eu|gov|info|int|mil|museum|name|net|org|pro|jobs|travel)$/gi;
	return sMail.substr(sMail.lastIndexOf(".") + 1).match(re)!=null;
} //Fin bDomainTLD
