// JavaScript Document



// Vérification de validité des formulaires de mails



function checkFormMail(){

	if(document.getElementById('sujet').value==''||document.getElementById('message').value==''||document.getElementById('expediteur').value==''){

		//alert("sujet"+document.getElementById('sujet').value+"\nexp : "+document.getElementById('expediteur').value+"\nmessage : "+document.getElementById('message').value);
		alertForm();

	}else{

		if(testAdrMail(document.getElementById('expediteur').value)){

			document.getElementById('formMail').submit();

	  }else{

		  alertMail();

	  }

	}

}



function checkFormMailpost(){

	checkFormMail();

}



function checkFormMailoption(){

	if(document.getElementById('formMail').sujet.value==''||document.getElementById('formMail').message.value==''||document.getElementById('formMail').telephone.value==''||document.getElementById('formMail').expediteur.value==''){

		alertForm();

	}else{

		if(testAdrMail(document.getElementById('formMail').expediteur.value)){

			document.getElementById('formMail').submit();

	  }else{

		  alertMail();

	  }

	}

}



// Fonction d'affichage d'un avertissement



function alertForm(){

	alert("Les champs précédés d'une * sont obligatoires");

}



function alertMail(){

	alert("Le champs E-MAIL doit comporter une adresse électronique.");

}



// Vérification de la validité d'un mail



// Début de fonction : testAdrMail

// Entrée : adrMail - (String) - Email à analysé.

// Renvoyé : true ou false - (Boolean) - Vrai si l'email est correct sinon Faux

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 teste

// 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


