// JavaScript Document

function testAdrMail(adrMail) 
{
	// déclaration et initialisation des variables
	adrMailLength=adrMail.length; // longueur de la chaîne adrMail
	caractOk="_.-0123456789abcdefghijklmnopqrstuvwxyz"; // caratères corect d'une adresse mail
	var posArrobas=adrMail.indexOf('@',1); // position du premier Arrobas
	var posPoint=adrMail.lastIndexOf('.',adrMailLength); // position du dernier point
	var posCaractFaux=adrMail.indexOf('..',posArrobas+1); // position d'un caractère faux ('..' ou ' ')
	var caract=0; // caractère extrait de la chaîne adrMail (utilisée par les boucles while)
	var caractFaux=adrMail.charAt(0)+adrMail.charAt(posArrobas-1)+adrMail.charAt(posArrobas+1)+adrMail.charAt(posPoint-1);
	var posCaract=0; // position du caractère à extraire de la chaîne adrMail (utilisée par les boucles while)
	var posCaractOk=0; // position du caractère extrait de la chaîne adrMail (utilisée par les boucles while)
	var posCaractNon=-1;
	var retour=false; // l'adresse e-mail est considérée comme fausse au début

	// début du test
	// s'il n'existe pas de caractère '..' alors on teste s'il existe un espace dans la chaîne adrMail
	if (posCaractFaux!=-1 || adrMail.indexOf(' ',0)!=-1 || adrMail.indexOf('--',0)!=-1 || adrMail.indexOf('__',0)!=-1) 
	{
		posCaractFaux=0;
	}

	// Teste les points ou - ou _ au début de l'adrMail, autour de l'arrobas et autour du dernier point
	for (posCaract;posCaract<4;posCaract++) 
	{
		caract=caractFaux.charAt(posCaract);
		posCaractNon=caractOk.lastIndexOf(caract,2);
		if (posCaractNon!=-1)
		{
			posCaractFaux=0;
			break;
		}
	}
	// si l'adresse mail contient au moins 1 caractère et qu'elle comporte un arrobas
	// et qu'elle comporte un point et que l'arrobas est avant le dernier point
	// et qu'elle ne contient pas de '..' ou d'espace et que après le dernier point il y est 2,3 ou 4 caractères
	// et qu'il n'y est pas de point autour de l'arrobas et que l'adresse ne commence pas par un point
	// Alors
	if (adrMailLength>0 && posArrobas!=-1 && posPoint!=-1 && posArrobas<posPoint && posCaractFaux==-1 && adrMailLength-posPoint-1>=2 && adrMailLength-posPoint-1<=4)
	 {
		// extraction d'un caractère et teste s'il existe dans la chaîne "_.-0123456789abcdefghijklmnopqrstuvwxyz"
		// S'il n'existe pas alors posCaract=-1 donc au prochain 'tour' on passe aux autres boucles (qui ne s'effecturont pas)
		// Si il existe on continue la boucle jusqu'au caractère avant l'arrobas et on passe à la boucle while suivante

		adrMail=adrMail.toLowerCase();
		posCaract=0;

		while (posCaract<posArrobas && posCaractOk!=-1) 
		{
			caract=adrMail.charAt(posCaract);
			posCaractOk=caractOk.indexOf(caract,0);
			posCaract++;
		}
		posCaract++; // on passe l'arrobas

		// sur le même principe qu'au dessus mais pour la partie entre l'arrobas et le dernier point
		// le test ce fait sur les caractères ".-0123456789abcdefghijklmnopqrstuvwxyz"
		// caractOk.indexOf(caract,1) on ne teste plus l'underscore
		 while (posCaract<posPoint && posCaractOk!=-1)
		 {
			caract=adrMail.charAt(posCaract);
			posCaractOk=caractOk.indexOf(caract,1);
			posCaract++;
		 }
		posCaract++; // on passe le point

		// sur le même principe qu'au dessus mais pour la partie entre le dernier point et la fin
		// le test ce fait sur les caractères "abcdefghijklmnopqrstuvwxyz"
		// caractOk.indexOf(caract,13) on ne teste plus que des lettres
		while (posCaract<adrMailLength && posCaractOk!=-1)
		 {
			caract=adrMail.charAt(posCaract);
			posCaractOk=caractOk.indexOf(caract,13);
			posCaract++;
		} 
		// fin de la boucle while

		// durant le parcour de l'adresse mail si n'y avait pas de caractère interdit
		// posCaractOk a changer plusieurs fois de valeur mais na jamais eu la valeur -1
		// donc l'adresse est bonne
		if (posCaractOk!=-1) 
		{
			retour=true;
		}
	}
	return retour; 
	// renvoi le résultat (true ou false)
}
// fin de la fonction 


function verification()
{
	if(document.formcontact.nom.value == "") 
	{
		alert("Veuillez entrer votre nom");
 		document.formcontact.nom.focus();
  		return false;
	 }
  	else if(document.formcontact.prenom.value == "")
	{
		alert("Veuillez entrer votre prénom");
 		document.formcontact.prenom.focus();
  		return false;
	}
	else if(document.formcontact.email.value == "")
	{
		alert("Veuillez entrer votre adresse e-mail");
 		document.formcontact.email.focus();
  		return false;
	}
	else if(!testAdrMail(document.formcontact.email.value))
	{
		alert("L'adresse e-mail n'est pas valide!");
 		document.formcontact.email.focus();
  		return false;
	}
	else if(document.formcontact.sujet.value == "")
	{
		alert("Veuillez entrer un sujet");
 		document.formcontact.sujet.focus();
  		return false;
	}
	else if(document.formcontact.message.value == "")
	{
		alert("Votre message est vide...");
 		document.formcontact.message.focus();
  		return false;
	}
return true;
}
