/*
** File        : isFilled.
** Description : Fonction de vérification des saisies de formulaires.
** Version     : 1.1
** Creation    : 11/07/2001
** Autheur     : Vincent Louvet .
** Email       : vincent@internet-solutions.fr
**
** Copyright (c) 2001 INTERNET SOLUTIONS. All rights reserved.
*/


/*
** Fonction    : isLettre
** Input       : String sField
** Output      : Boolean
** Description : Retourne TRUE si la chaine en argument n'est composée que de lettres.
*/
function isLettre(sField)
{//alert("type : lettre");
	var i       = 0;
	var temp	= "";
	//liste des caractères autorisés comme lettre.
	var lettres = "abcdefghiïîjklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ,.-'@éèîêûùàâôç/+()";
	for(i=0; i<sField.length; i++){
		temp = ""+sField.substring(i, i+1);
		if (lettres.indexOf(temp)==-1) return false;
	}
	return true;
}

/*
** Fonction    : isChiffre
** Input       : String sField
** Output      : Boolean
** Description : Retourne TRUE si la chaine en argument n'est composée que de chiffres.
*/
function isChiffre(sField)
{//alert("type : chiffre");
	var i        = 0;
	var	temp     = "";
	//liste des caractères autorisés comme chiffre.
	var chiffres = "0123456789 +-/*.,()";
	for(i=0; i<sField.length; i++) {
		temp = ""+sField.substring(i, i+1);
		if (chiffres.indexOf(temp)==-1) return false;
	}
	
	return true;
}

/*
** Fonction    : isAlpha
** Input       : String sField
** Output      : Boolean
** Description : Retourne TRUE si la chaine en argument est alphanumérique.
*/
function isAlpha(sField)
{//alert("type : alpha");
	var i     = 0;
	var temp  = "";
	//liste des caractères autorisés comme alphanumérique.
//	alert(sField);
	var tab_ascii = new Array(256);
	var i_ascii = 0;
	
	for (i_ascii=0; i_ascii<255; i_ascii++)
	{
		tab_ascii[i_ascii] = false;
	}
	
	tab_ascii[9] = true;
	tab_ascii[10] = true;
	tab_ascii[13] = true;
	for (i_ascii=32;i_ascii<256;i_ascii++)
	{
		tab_ascii[i_ascii] = true;
	}
	
	var alpha = "0123456789+* abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,.-'/@\"éèàîùêçô\n";
	for(i=0; i<sField.length; i++){
//		temp = ""+sField.substring(i, i+1);
//		if (alpha.indexOf(temp)==-1) return false;
		if( !tab_ascii[sField.charCodeAt(i)])   
		    {
//		       return false;
		    }		
	}
	return true;
}
/*
** Fonction    : isEmail
** Input       : String sField
** Output      : Boolean
** Description : Retourne TRUE si la chaine en argument est un email.
*/
function isEmail(sField)
{//alert("type : email");
	var i     = 0;
	var temp  = "";
	//liste des caractères autorisés comme email.
	var mail = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.@\n";
	for(i=0; i<sField.length; i++){
		temp = ""+sField.substring(i, i+1);
		if (mail.indexOf(temp)==-1) return false;
	}
	
	return true;
}

function isSelect(sField)
{
	if (sField=="") return false;
	
	return true;
}
/*
** Fonction    : isFilled
** Input       : Nom du formulaire, liste des couples champ/type de champ devant être vérifiés + null autorisé .
** Output      : Boolean
*/
function isFilled()
{
  var args    = isFilled.arguments;
  var erreurs = "";
  
  for (cpt=1; cpt<=args.length; cpt+=3)
  {

	switch(args[cpt+1])
	{
	  case "lettre" : if(!isLettre(eval("document."+args[0]+"."+args[cpt]+".value"))||(args[cpt+2]=='false'&&eval("document."+args[0]+"."+args[cpt]+".value")=="")) erreurs += eval("document."+args[0]+"."+args[cpt]+".desc")+".\n";
	                  break;
					  
	  case "chiffre": if(!isChiffre(eval("document."+args[0]+"."+args[cpt]+".value"))||(args[cpt+2]=='false'&&eval("document."+args[0]+"."+args[cpt]+".value")=="")) erreurs += eval("document."+args[0]+"."+args[cpt]+".desc")+".\n";
	                  break;
					  
	  case "alpha"  : if(!isAlpha(eval("document."+args[0]+"."+args[cpt]+".value"))||(args[cpt+2]=='false'&&eval("document."+args[0]+"."+args[cpt]+".value")=="")) erreurs += eval("document."+args[0]+"."+args[cpt]+".desc")+".\n";
	                  break;

	  case "select"  : if(!isSelect(eval("document."+args[0]+"."+args[cpt]+".options[document."+args[0]+"."+args[cpt]+".selectedIndex].value"))) erreurs += eval("document."+args[0]+"."+args[cpt]+".desc")+".\n";
	                  break;
					  
	  case "email"  : var last_at_pos  = eval("document."+args[0]+"."+args[cpt]+".value").indexOf('@');
  					  var last_dot_pos = eval("document."+args[0]+"."+args[cpt]+".value").lastIndexOf('.');
	  				 if ((!isEmail(eval("document."+args[0]+"."+args[cpt]+".value")))||(last_at_pos==-1)||(last_dot_pos==-1)||(args[cpt+2]=='false'&&eval("document."+args[0]+"."+args[cpt]+".value")=="")||(last_at_pos<1)||(last_dot_pos<last_at_pos)||(last_dot_pos>eval("document."+args[0]+"."+args[cpt]+".value.length"-3)||(last_dot_pos<eval("document."+args[0]+"."+args[cpt]+".value.length"-4)))) erreurs += eval("document."+args[0]+"."+args[cpt]+".desc")+".\n";
					 break;
					
	}
  }
  
  if (erreurs!="")
  {
    alert("Veuillez saisir le(s) champ(s) :\n"+erreurs);
	return false;
  }
  else
  {
	return true;
  }
}