///////////////////////////////////////////////////////
// bib de gestion des controles des formulaires  //////
///////////////////////////////////////////////////////

function checkPassword(champ1)
{
	//recherche du champ password1
	if(!champ.value.length>0)
	{
		return false;
	}
	for (i=0;i<document.Form.elements.length;i++)
	{
		champ = document.Form.elements[i];
      if (champ.id.indexOf("#")!=-1){
		 t=champ.id.split("#");
	     for(var k=1;k<t.length;k++)
		 {
		 switch(t[k])
		  {
		  case "PASSWORD1": 
		  password1 = champ.value;
		  //alert(password1);
		  //alert(champ1.value);
		  if(password1 == champ1.value)
		  {
			return true;
		  }
		  else
		  {
			return false;
		  }
		  break;
		  default: break;
		  }
		 }
	 	}
	}
}

function checkMail(champ)
{
if (champ.value.length>0){
	myRegExp = "[-._a-z0-9(]+@[-.a-z0-9]+\.[a-z]";
	var re = new RegExp(myRegExp);
	if(re.test(champ.value)) return true;
	else return false;
}
else return true;
}

function checkDateFR(champ)
{
if (champ.value.length>0){
	myRegExp = "[0-9]{2}/[0-9]{2}/[0-9]{4}";
	var re = new RegExp(myRegExp);
	if(re.test(champ.value)) return true;
	else return false;
	}
else return true;
}
// controle les champs avec les id commencant par # , aprés le # arrive le type de controle à effectuerascr
// color en colorFalse les champs non valides
function controle( Form, colorInit, colorFalse, msg )
{
  //if( msg == undefined)   msg = "Les champs encadrés en rouge sont incorrectes";
  //if( msg == 'undefined') msg = "Les champs encadrés en rouge sont incorrectes";

  /* MODIF DAS 27/07/2004 */
  /* Je n'ai pas trouvé le moyen d'encadrer en rouge une liste déroulante.      */
  /* J'ai donc légèrement changé le message d'erreur, plus générique maintenant */
  msg      = "Les champs encadrés en rouge sont incorrectes";
  retour   = true;
  DateOk   = 1;
  
  /* FIN MODIF DAS 27/07/2004 */

  var i,j = 0;
  var tab,t,tabErreur = new Array();
  //init des couleurs d'origines
  
	for( i = 0 ; i < document.Form.elements.length ; i++ )
	{
      champ = document.Form.elements[i];
	  //init des couleurs d'origines
	  champ.style.borderColor = colorInit;
	  if( champ.id.indexOf( "#" ) != -1 )
	  {
		 t = champ.id.split( "#" );
	     for( var k = 1 ; k < t.length ; k++ )
		 {
           switch( t[k] )
		   {
		     case "EMAIL":     if( !checkMail( champ )     ) { tabErreur[j] = champ; j++; }; break;
		     case "DATEFR":    if( !checkDateFR( champ )   ) { tabErreur[j] = champ; j++; DateOk = 0; }; break;
		     case "NOTNULL":   if( champ.value.length < 1  ) { tabErreur[j] = champ; j++; }; break;
		     case "PASSWORD1": if( champ.value.length < 1  ) { tabErreur[j] = champ; j++; }; break;
		     case "PASSWORD2": if( !checkPassword( champ ) ) { tabErreur[j] = champ; j++; }; break;
             /* MODIF DAS 27/07/2004 */
             /* Je n'ai pas trouvé le moyen d'encadrer en rouge une liste déroulante */
		     case "CodeFamPere" : if( champ.options[0].selected )
                                  {
                                      champ.style.color = colorFalse;
                                      retour            = false;
                                  }
                                  else
                                      champ.style.color = colorInit;
                                  break;
             case "VALIDATEFR":  if( DateOk == 1 && !ValidDateFR( champ.value ) )
                                 {
                                   tabErreur[j] = champ;
                                   j++;
                                 }
                                 break;
             /* FIN MODIF DAS 27/07/2004 */
		     default:          break;
		   }
		 }
	  }
	}
 /* MODIF DAS 02/08/2004 */
 if( retour ==  false || tabErreur.length > 0 )
 { 
 
	for( i = 0 ; i < tabErreur.length ; i++ )
	{
		 tabErreur[i].style.borderColor = colorFalse;
	}
	alert( msg );
	return false;
 }

 else return true;
}

/* MODIF DAS */
/*                                                              */
/* Vérification que la date soit valide, calendairement parlant */
/*                                                              */
function ValidDateFR( DateFr )
{
   /* Tableau de nombre de jours par mois */
   var TabJours = new Array( 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );

   Jours = parseInt0( DateFr.substr( 0, 2 ) );
   Mois  = parseInt0( DateFr.substr( 3, 2 ) );
   Annee = parseInt0( DateFr.substr( 6, 4 ) );

   if( Annee == 0 )
       return( 0 );

   /* Cas particulier de l'année bissextile */
   if( Mois == 2 )
       if( ( Annee%4 == 0 && Annee%100 != 0 ) || Annee%400 == 0 )
           return( Jours >= 1 && Jours <= TabJours[Mois]+1 );

   /* Cas année non bissextile */
   return( ( Jours >= 1 && Jours <= TabJours[Mois] ) );
}

/*********************************************/
/* PARSEINT0                                 */
/*                                           */
/* Retourne l'entier représenté par str_int. */
/* Les 0 à gauche sont supprimés.            */
/*                                           */
/*********************************************/	   
function parseInt0( str_int )
{
    i = 0;
	while( str_int.charAt(i) == '0' )
	       i++;
	return( parseInt( str_int.substr( i ) ) );
}

/* MODIF DAS */
/************************************************************/
/* obj_checkbox : objet de type checkbox                    */
/* obj_nbsite   : objet contenant le nb de site selectionne */
/************************************************************/
function ctrl_site_selection( obj_checkbox, obj_nbsite )
{
   nbsite = obj_nbsite.value;
   if( obj_checkbox.checked == true )
        nbsite++;
   else nbsite--;
   obj_nbsite.value = nbsite;
   return( nbsite );
}
/* FIN MODIF DAS */
