/* ------------------------------------------------------------------
Une valeur a-t-elle été saisie ?
exemple : valid(formulaire.dpt, "département")
------------------------------------------------------------------ */
function valid(champ,nomchamp)
{
   str=champ.value;
   if (str == "")
   {
      alert("Merci de saisir une valeur pour le champ \""+ nomchamp +"\"");
      champ.focus();
      return(false);
   }
   return true;
}


/* ------------------------------------------------------------------------
La valeur saisie est-elle un nombre ?
exemple : isNombre(formulaire.dpt,"département")
------------------------------------------------------------------------- */
function isNombre(champnb,nomchamp)
{
   nb=champnb.value;
   if (!(isNaN(nb))) 
   return true;
   else
   {        
        alert("Vous devez saisir un nombre pour le champ \""+ nomchamp +"\"");
        champnb.focus();
        return(false);
   }
   return true;
}


/* -------------------------------------------------------------------------------------
Le nombre de caractères saisis est-il correct ?
exemple : isNbCarCorrect(formulaire.dpt,"département",2)
------------------------------------------------------------------------------------- */
function isNbCarCorrect(champ,nomchamp,nbcar)
{
   str=champ.value;
   if (str.length != nbcar)
   {
        alert("Le champ \""+ nomchamp +"\" doit comporter " + nbcar + " caractères");
        champ.focus();
        return(false);        
   }
   return true;
}


/* -------------------------------------------------------------------------------------
La valeur saisie est-elle un email valide ?
exemple : validemail(formulaire.email)
------------------------------------------------------------------------------------- */
function validEmail(champ)
{
   str=champ.value;
   var format_email=new RegExp("^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$","g");
   if ( !format_email.test(str) )
   {
      alert("Adresse email invalide."); 
      champ.focus();
      return(false);       
   }
   return true;
}


/* ----------------------------------------------------------------------------------------------
La valeur saisie est-elle un numéro de telephone ou de fax valide ?
telephone ou fax = serie de 10 chiffres
exemple : isTelFaxValide(formulaire.tel,"telephone")
---------------------------------------------------------------------------------------------- */
function isTelFaxValide(champ,nomchamp)
{
   str=champ.value;
   if (str != "")
   {
      var format_tel_fax=new RegExp("^[0-9]{10}$","g");
      if ( !format_tel_fax.test(str) )
      {
         alert("Le champ \""+ nomchamp +"\" ne représente pas un numéro de téléphone ou de fax valide."); 
         champ.focus();
         return(false);       
      }
   }
   return true;
}


/* -------------------------------------------------------------------------------------
La valeur saisie est-elle un code postal valide ?
code postal = série de 5 chiffres
exemple : isCodePostal(formulaire.cp,"cp")
------------------------------------------------------------------------------------- */
function isCodePostal(champ,nomchamp)
{
   str=champ.value;
   if (str != "")
   {
	   var format_code_postal=new RegExp("^[0-9]{5}$","g");
	   if ( !format_code_postal.test(str) )
	   {
	      alert("Le champ \""+ nomchamp +"\" ne représente pas un code postal valide."); 
	      champ.focus();
	      return(false);       
	   }
   }
	return true;
}



/* --------------------------------------------------------------------------
La valeur saisie est-elle une date valide ?
date valide = jj/mm/aaaa
exemple : isDate(formulaire.date,"Date d'entrée")
--------------------------------------------------------------------------- */
function only_nb(chaine)
{
      for (var i=0; i<chaine.length; i++) 
      {
         for (var j=0; j<10; j++) 
         {
             if (chaine.charAt(i) == j.toString())
	     break;
         }
         if (j == 10)
               return false;
      }
      return true;
}

function isDate(champdate,nomchamp)
{
	str=champdate.value;
	d=champdate;
	ok=0;
	/* Test si champ vide ou non */
	if (str=="")
		return true;
	/* Test si le champs contient bien 10 caractères */
	if (d.value.length != 10)
		ok=0;
	else 
	{
		/* Test si les barres de séparation sont au bon endroit */
		if ( d.value.charAt(2)!= "/" || d.value.charAt(5)!= "/" ) 
			ok=0;
		else
		{
			annee = d.value.substring(6,10);
			mois = d.value.substring(3,5);
			jour = d.value.substring(0,2);
			/* Test si l'année, le mois et le jour sont bien des nombres ( via la fonction only_nb ) */
			if ((!only_nb(annee)) || (!only_nb(mois)) || (!only_nb(jour)))
				ok=0;
			else 
			{
				annee = eval(annee);
				mois = eval(mois);
				jour = eval(jour);
				/* Test le nombre de jour du mois de Février selon l'année = gestion des annes bissextiles */
				if ((annee % 4 == 0) && (annee % 100 != 0) || (annee % 400 == 0)) 
					tab_mois = new Array (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
				else
					tab_mois = new Array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
				/* Test si le numéro du mois existe */
				if ((mois < 1) || (mois > 12))
					ok=0;
					/* Test le jour est compris entre 1 et le maximum du mois */
					else if ((jour < 1) || (jour > tab_mois[mois-1]))
						ok=0;
					else 
						ok=1;
			}
		}
	}
	if (ok==0)
	{
	         alert("Le champ \""+ nomchamp +"\" n'est pas une date valide."); 
	         champdate.focus();
	         return(false);       
	}
	else return true;	
}


/* ----------------------------------------------------------------------------------------------------------------------------
Un choix a t-il été effectué dans la liste déroulante ?
exemple : isChoixFait(formulaire.listeproprietaire,"valeur choix non fait","Proprietaire")
---------------------------------------------------------------------------------------------------------------------------- */
function isChoixFait(champliste,valeurSansChoix,nomliste)
{
	if (champliste.value==valeurSansChoix)
	{
	         alert("Vous devez faire un choix dans la liste \""+ nomliste +"\""); 
	         champliste.focus();
	         return(false);       
	}
	else return true;	
}


/* -------------------------------------------------------------------------------------
La valeur saisie est-elle une chaine de caractères ? (que des lettres)
exemple : isChaine(formulaire.chaine,"chaine")
------------------------------------------------------------------------------------- */
function isChaine(champ,nomchamp)
{
   str=champ.value;
   var format_chaine=new RegExp("^[a-zA-Z]+$","g");
   if ( !format_chaine.test(str) )
   {
      alert("Le champ \""+ nomchamp +"\" n'est pas composé que de lettres."); 
      champ.focus();
      return(false);       
   }
   return true;
}


/* ---------------------------------------------------------------------------------------------------------------
Vérifie un couple case à cocher - zone de texte.
Si la case est cochée, la zone de texte doit contenir une valeur
exemple : verifCaseZone(formulaire.case,nomcase,formulaire.zone,nomzone)
--------------------------------------------------------------------------------------------------------------- */
function verifCaseZone(champcase,nomcase,champzone,nomzone)
{
	/* 1er cas : case cochée, zone vide */
	if (champcase.checked && champzone.value=="")
	{
	         alert("Vous devez saisir une valeur pour le champ \""+ nomzone +"\""); 
	         champzone.focus();
	         return(false);       
	}
	/* 2e cas : case décochée, zone remplie */
	if (!champcase.checked && champzone.value!="")
	{
	         alert("Vous devez cocher la case \""+ nomcase +"\" pour prendre en compte la valeur de la zone \""+ nomzone +"\""); 
	         champcase.focus();
	         return(false);       
	}
	return true;	
}


/* ---------------------------------------------------------------------------------------------------------------
Vérifie un couple liste déroulante - zone de texte.
Si une sélection a été faite dans la liste, la zone de texte doit contenir une valeur
exemple : verifListeZone(formulaire.liste,nomliste,formulaire.zone,nomzone)
--------------------------------------------------------------------------------------------------------------- */
function verifListeZone(champliste,nomliste,valeurSansChoix,champzone,nomzone)
{
	/* 1er cas : choix fait, zone vide */
	if (champliste.value!=valeurSansChoix && champzone.value=="")
	{
	         alert("Vous devez saisir une valeur pour le champ \""+ nomzone +"\""); 
	         champzone.focus();
	         return(false);       
	}
	/* 2e cas : choix non fait, zone remplie */
	if (champliste.value==valeurSansChoix && champzone.value!="")
	{
	         alert("Vous devez faire un choix dans la liste \""+ nomliste +"\" pour prendre en compte la valeur de la zone \""+ nomzone +"\""); 
	         champliste.focus();
	         return(false);       
	}
	return true;	
}

