// fonctions de validation 01/03/01

//DECLARATION DES CONSTANTES
var caracteres_chaine_lettre = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var caracteres_chaine_alphabetique = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzàáâãäçèéêëìíîïñòóôõöøùúûü- \t\r\n\f'";
var caracteres_chaine_numerique = "0123456789";
var caracteres_chaine_date = "0123456789/";
var caracteres_chaine_telephone = "0123456789() -.";
var caracteres_chaine_passe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"  ;  

/*
Recapitulatif des fonctions :

facultatif peut être "" ( on est pas obligé de remplir, mais si on le fait, on vérifie qu'on le fait bien )
facultatif peut être n'importe quoi d'autre ("o" de préférence ): dans ce cas, le champs doit être rempli
libelle peut contenir juste le nom du champ, si on ne met rien, la fonction met un terme générique
message peut contenir un message entier, dans ce cas, cela annule le libellé

valider_adresse(obj)
valider_ville(obj)
valider_nom(obj)
valider_prenom(obj)
valider_email(obj, facultatif, libelle, message)
valider_code_postal(obj, facultatif, libelle, message)
valider_telephone(obj, facultatif, libelle, message)
valider_fax(obj, facultatif, libelle, message)
valider_nombre(obj, facultatif, libelle, message)
valider_chaine(obj, facultatif, libelle, message)
valider_jours(obj, facultatif, libelle, message)
valider_annees(obj, facultatif, libelle, message)
*/

//*******************************
function valider_adresse(obj)
{
if ( !valider_chaine(obj, "adresse") )
    return (false);
return true	;	
}

//***********************************
function valider_ville(obj)
{
if ( !valider_chaine(obj, "ville") )
    return (false);
return true	;	
}

//***********************************
function valider_nom(obj)
{
if ( !valider_chaine(obj, "nom") )
    return (false);
return true	;	
}

//************************************
function valider_prenom(obj)
{
if ( !valider_chaine(obj, "prénom") )
    return (false);
return true	;	
}


//***********************************
function valider_email(obj, facultatif, libelle, message)
{
if ( facultatif != null & facultatif !="" ) 
	{
	if ( obj.value.replace(/ /g,'') == '' ) 
		return(true); 	
	}
var msg = "Entrer un email valide \nExemple : prenom.nom@societe.fr" ;
if ( libelle  != null & libelle !="")
	msg = 'Le champ "' + libelle + '" doit être valide !' ;
if ( message  != null & message !="")
	msg = message ;
	
chaine = obj.value;
if ((chaine.length <=5) || (chaine.search("@")<0))
	{
	alert(msg);
	obj.focus();
	obj.select();
    return (false);
	}
return true	;	
}

//************************************
function valider_code_postal(obj, facultatif, libelle, message)
{
if ( facultatif != null & facultatif !="" ) 
	{
	if ( obj.value.replace(/ /g,'') == '' ) 
		return(true); 	
	}
var msg = "Le code postal doit être un nombre à 5 chiffres." ;
if ( libelle  != null & libelle !="")
	msg = 'Le champ "' + libelle + '" doit comporter 5 chiffres !' ;
if ( message  != null & message !="")
	msg = message ;
		
	if ((obj.value.length != 5) || (!valider_numerique(obj.value)))
	{
		alert(msg);
	  	obj.select();
	  	obj.focus();	
		return false;	
	}
	return true;	
}

//************************************
function valider_passe(obj, facultatif, libelle, message)
{
var chaine = obj.value ;

if ( facultatif != null & facultatif !="" ) 
	{
	if ( chaine.replace(/ /g,'') == '' ) 
		return(true); 	
	}
var msg = "Le code postal doit être un nombre à 5 chiffres." ;
if ( libelle  != null & libelle !="")
	msg = 'Le champ "' + libelle + '" doit comporter 5 chiffres !' ;
if ( message  != null & message !="")
	msg = message ;

var msg_1 = 'Un mot de passe est composé d\'au moins 4 caractères et d\'au plus 8 caractères.' ;
var msg_2 = 'Seuls les caractères alphanumériques non accentués sont autorisés dans le champ "Mot de passe".' ;

if ( libelle != null & libelle !="")
	{
	msg_1 = 'Le "' + libelle + '" doit être composé d\'au moins 4 caractères et d\'au plus 8 caractères.' ;
	msg_2 = 'Seuls les caractères alphanumériques non accentués sont autorisés dans le champ "' + libelle + '".' ;
	}
if ( message  != null & message !="")
	{
	msg_1 = message ;
	msg_2 = message ;
	}

if (valider_longueur_chaine(chaine, 4, 8) != 0)
  {
    alert(msg_1);
    return (false);
  }

if (valider_caracteres_chaine(chaine, caracteres_chaine_passe) == false)
	{
    alert(msg_2);
    return (false);
	}
return true	;		
}

//***********************************
function valider_telephone(obj, facultatif, libelle, message)
{
var chaine = obj.value ;

if ( facultatif != null & facultatif !="" ) 
	{
	if ( obj.value.replace(/ /g,'') == '' ) 
		return(true); 	
	}

var msg_1 = 'Un numéro de téléphone est composé d\'au moins 10 chiffres et d\'au plus 20 caractères.' ;
var msg_2 = 'Seuls les chiffres sont autorisés dans le champ "téléphone".' ;
var msg_3 = 'Le "téléphone" doit comporter au moins 10 chiffres !' ;

if ( libelle != null & libelle !="")
	{
	msg_1 = 'Le "' + libelle + '" doit être composé d\'au moins 10 chiffres et d\'au plus 20 caractères.' ;
	msg_2 = 'Seuls les chiffres sont autorisés dans le champ "' + libelle + '".' ;
	msg_3 = 'Le "' + libelle + '" doit comporter au moins 10 chiffres !"' ;
	}
if ( message  != null & message !="")
	{
	msg_1 = message ;
	msg_2 = message ;
	msg_3 = message ;
	}

if (valider_longueur_chaine(chaine, 10, 20) != 0)
  {
    alert(msg_1);
    return (false);
  }

if (valider_caracteres_chaine(chaine, caracteres_chaine_telephone) == false)
	{
    alert(msg_2);
    return (false);
	}

nb_chiffres=0;
for (i = 0;  i < chaine.length;  i++)
	{
    ch = chaine.charAt(i);
    for (j = 0;  j < caracteres_chaine_numerique.length;  j++)
		{
		if (ch == caracteres_chaine_numerique.charAt(j))
			nb_chiffres++;
		}			
 	}
 	
if(nb_chiffres <10)
	{
    alert(msg_3);
    return (false);
	}
return true	;	
}

//*****************************
function valider_fax(obj, facultatif, libelle, message)
{
var msg = "fax" ;
if ( libelle  == null || libelle =="")
	libelle = msg ;

if (! valider_telephone(obj, facultatif, libelle, message) )
    return (false);

return true	;
}



//*****************************
function valider_nombre(obj, facultatif, libelle, message)
{
if ( facultatif != null & facultatif !="" ) 
	{
	if ( obj.value.replace(/ /g,'') == '' ) 
		return(true); 	
	}

var msg = "Le champ où se trouve le curseur n'accepte que des chiffres";
if ( libelle  != null & libelle !="")
	msg = 'Le champ "' + libelle + '" doit comporter une valeur numérique !' ;
if ( message  != null & message !="")
	msg = message ;
	
var chaine = obj.value;
if (!valider_numerique(chaine) || chaine == '' )
  {
    alert(msg);
    obj.focus();
	obj.select();
    return (false);
  }  
return (true)	;	
}

//*********************************
function valider_chaine(obj, facultatif, libelle, message)
{
if ( facultatif != null & facultatif !="" ) 
	{
	if ( obj.value.replace(/ /g,'') == '' ) 
		return(true); 	
	}
var msg = "Saisissez le champ où se trouve le curseur" ;
if ( libelle  != null & libelle !="")
	msg = "Saisissez le champ '" + libelle + "'" ; 
if ( message  != null & message !="")
	msg = message ;
	
var chaine = obj.value;
if (chaine == "")
  {
    alert(msg);
    obj.focus();
	obj.select();
    return (false);
  }  
return (true)	;	
}

//*******************************
function valider_jours(obj, facultatif, libelle, message)
{
	if (!valider_numerique(obj.value))
	{
		alert("Seuls des chiffres sont acceptés pour le '" + libelle + "' ");
	  	obj.select();
	  	obj.focus();	
		return false;		
	}
	if (obj.value < 1 || obj.value > 31)
	{
		alert("Le '" + libelle + "' doit être un nombre de 1 à 31");
	  	obj.select();
	  	obj.focus();	
		return false;		
	}	
	return true;
}

//*********************************
function valider_mois(obj, facultatif, libelle, message)
{
	if (!valider_numerique(obj.value))
	{
		alert("Seuls des chiffres sont acceptés pour le '" + libelle + "' ");
	  	obj.select();
	  	obj.focus();	
		return false;		
	}
	if (obj.value < 1 || obj.value > 12)
	{
		alert("Le '" + libelle + "' doit être un nombre de 1 à 12");
	  	obj.select();
	  	obj.focus();	
		return false;		
	}	
	return true;
}

//***********************************
function valider_annees(obj, facultatif, libelle, message)
{
	if (!valider_numerique(obj.value))
	{
		alert("Seuls des chiffres sont acceptés pour l'" + libelle + " ");
	  	obj.select();
	  	obj.focus();	
		return false;		
	}
	if (obj.value < 1850 || obj.value > 2010)
	{
		alert("L' " + libelle + " doit être composée de 4 chiffres !");
	  	obj.select();
	  	obj.focus();	
		return false;		
	}	
	return true;
}

//***********************************
function valider_combo(combo,message,null_ou_zero)
{
if (!message)
	{message = "Faites une sélection dans la liste de choix";}
else
	{message = "Faites une sélection dans la liste de choix '" + message + "'"}
if (verifier_combo(combo,null_ou_zero)==false)
	{
	alert(message) ;
	return (false);
	}
return (true)	;		
}

//***********************************
function verifier_combo(combo,null_ou_zero)
{
var index = combo.selectedIndex ;
if (index > -1)
{
	var chaine = combo.options[combo.selectedIndex].value;

	if (chaine == "")
	    return (false);
	if (!null_ou_zero)
		{
		if (chaine == "0")
	    return (false);
		}
}	
else
{
	return (false) ;
}
return (true)	;	
} 

//***********************************
function isDate(val) 
{
	ok = true;
	if (val.length == 6) 
	{
		j = val.substring(0,2);
		m = val.substring(2,4);	
		a = val.substring(4,6);
		bi = ((parseInt(a) % 4) == 0);

		if (  ( (m == "01") || (m == "03") || (m == "05") || (m == "07") || (m == "08") || (m == "10") || (m == "12") ) & ( (Math.round(j) >= 1) & (Math.round(j) <= 31) ) ) 
		{
			ok = true;
		} else {
			if (  ( (m == "04") || (m == "06") || (m == "09") || (m == "11") ) & ( (Math.round(j) >= 1) & (Math.round(j) <= 30) ) ) 
			{
				ok = true;
			} else {
				if (bi)  
				{
					ok = (  ( (Math.round(j) >= 1) & (Math.round(j) <= 29) ) & (m == "02") );
				} else {
					ok = ( ( (Math.round(j) >= 1) & (Math.round(j) <= 28) ) & (m == "02")  );
				}
			}
		}
	} else {
		ok = false;
	}
	return ok;
}

//**********************************
function valider_numerique(val) 
{
	NumChars = "0123456789";
	var ok = true;
	var c;
	for (var x = 0; x < val.length; x++)
		if (ok) 
		{
			c = val.charAt(x);
			ok = ( NumChars.indexOf(c) != -1 );
		}
	return ok;
}

//*********************************
function valider_caracteres_chaine(chaine, caracteres_autorises)
{

if( !chaine || chaine == "")
	return(true);
	
for (i = 0;  i < chaine.length;  i++)
  {
    ch = chaine.charAt(i);
    for (j = 0;  j < caracteres_autorises.length;  j++)
		{
		if (ch == caracteres_autorises.charAt(j))
			break;
		}			
    if (j == caracteres_autorises.length)
		return(false);

  }
return(true);
}

//***********************************
function valider_longueur_chaine(chaine, min, max)
{
longueur = chaine.length;

if(longueur < min)
	return(-1);

if(longueur > max)
	return(1);

return(0);
}

