var interdits = "@()<>[],;:\\\" \n\t\r "
var errno;

function isCarMail(car) {
	errno = interdits.indexOf(car);
	return -errno;
}

// verifie la validite d un email recu en parametre
// retourne 1 si OK, valeur negative sinon
function isValidMail(mail) {
var index = 0;
var etat = 0;
etatFinal = 5;
etatPoubelle = -1;
if (mail.length == 0) {
	errno = -1;
	return -1;
}
while ( (index < mail.length) && (etat != etatPoubelle) )
{
switch (etat)
{
case 0 : if (isCarMail(mail.charAt(index)) > 0) etat = 1;
		 else etat = etatPoubelle;
		 break;
case 1 : if (mail.charAt(index) == '@') etat = 2;
		 else if (isCarMail(mail.charAt(index)) <= 0) etat = etatPoubelle;
		 break;		// sinon on reste dans l'etat 2
case 2 : if (mail.charAt(index) == '.') {
			 etat = etatPoubelle; // cas '.' tout de suite apres '@'
			 errno = -2;
		 }
		 else if (isCarMail(mail.charAt(index)) > 0) etat = 3;
		 else etat = etatPoubelle;
		 break;
case 3 : if (mail.charAt(index) == '.') etat = 4;
		 else if (isCarMail(mail.charAt(index)) <= 0) etat = etatPoubelle;
		 break;		// sinon on reste dans l'etat 3
case 4 : if ( isCarMail(mail.charAt(index)) > 0) etat = 5;
		 else etat = etatPoubelle;
		 break;
case 5 : if ( isCarMail(mail.charAt(index)) <= 0) etat = etatPoubelle;
		 break;		// sinon on reste dans l'etat 5
}
index++;
}
if (etat == etatFinal)
	return 1;
if (etat >=0 )
	errno = -3;
return -1;
}

function verifMailAndSubmit(nomForm, nomChamp) {
	if (isValidMail(document[nomForm][nomChamp].value) > 0){
		//alert("email OK");
		document[nomForm].submit();
	}
	else {
		switch (errno)
		{
		case -1:
			alert("Attention, le champ Email est vide !");			
			break;
		case -2 :
			alert("Le caractère . ne doit pas etre tout de suite après @");
			break;
		case -3 :
			alert("Adresse Email Incomplète.");
			break;
		default:
			alert("Le caractère "+interdits.charAt(errno)+ " n'est pas permis.");
		}
	}
}
