// JavaScript Document

// Gestionnaire d'initialisation
// Définition de la fonction appellée a l'initialisation de la page
// (apres le chargement complet de la page sur le poste client)
window.onload=monInitialisation;

function monInitialisation() {
	// Soumission du formulaire de contact : identifié par son nom de balise "form".
	// "forms" renvoit un tableau. Il n'y a qu'un unique formulaire dans la page, on le cible avec forms[0], c'est le premier élément du tableau "forms".
	if (document.forms[0]) {
		document.forms[0].onsubmit=verifieFormContact;
	}
	
	// Lors d'un clique sur un label ou un champ input on déclenche la fonction removeClass
	if (document.getElementsByTagName("label")) {		
		for(i=0;i<document.getElementsByTagName("label").length;i++){
			document.getElementsByTagName("label")[i].onclick=removeClass;
			if(i==document.getElementsByTagName("label").length-1){
				// Lors d'un clique sur le champs texte Message on déclenche la fonction removeClass
				document.getElementById("message").onfocus=removeClass;
			}
			else{
				document.getElementsByTagName("input")[i].onfocus=removeClass;
			}
		}
	}
}

// Vérification des champs du formulaire de contact
function verifieFormContact() {	
	// Initialisations
	var formulaireValide=true;
	var erreur = new Array;
	
	// Récupération du contenu des champs obligatoires
	// this fait référence au formulaire qui est validé par l'internaute
	var monNom = this.nom.value;
	var monPrenom = this.prenom.value;
	var monEmail = this.email.value;
	var monSujet = this.sujet.value;
	var monMessage = this.message.value;
	
	// Div où se trouve le formulaire
	var divRightcontent=document.getElementById("rightcontent");
	
	var isValidEmail = isNotMatch(monEmail, regExpEmailAdress);
	
	
	// Vérification des données saisies
	if (monNom=='') {
		erreur[erreur.length]="Vous n'avez pas saisi votre Nom.";
		formulaireValide = false;
		
		// Affectation de la class labelerror au label
		addClass("label", "errorlabel", 3);
		
		// Affectation de la class inputerror au champs input
		addClass("nom", "errorinput");
	}
	
	if (monPrenom=='') {
		erreur[erreur.length]="Vous n'avez pas saisi votre Prénom.";
		formulaireValide = false;
		
		// Affectation de la class labelerror au label
		addClass("label", "errorlabel", 4);
		
		// Affectation de la class inputerror au champs input
		addClass("prenom", "errorinput");
	}
	
	// Vérification de l'Email
	if(monEmail=='') {
		erreur[erreur.length]= "Vous n'avez pas saisi votre E-mail.";
		formulaireValide = false;
		
		// Affectation de la class labelerror au label
		addClass("label", "errorlabel", 5);
		
		// Affectation de la class inputerror au champs input
		addClass("email", "errorinput");
	}
	else if(!isValidEmail) {
		erreur[erreur.length]= "L'E-mail saisi est incorrect.";
		formulaireValide = false;
		
		// Affectation de la class labelerror au label
		addClass("label", "errorlabel", 5);
		
		// Affectation de la class inputerror au champs input
		addClass("email", "errorinput");
	}
	
	if (monSujet=='') {
		erreur[erreur.length]="Vous n'avez pas saisi le sujet de votre Message.";
		formulaireValide = false;
		
		// Affectation de la class labelerror au label
		addClass("label", "errorlabel", 12);
		
		// Affectation de la class inputerror au champs input
		addClass("sujet", "errorinput");
	}
	
	if (monMessage=='') {
		erreur[erreur.length]="Vous n'avez pas saisi votre Message.";
		formulaireValide = false;
		
		// Affectation de la class labelerror au label
		addClass("label", "errorlabel", 13);
		
		// Affectation de la class inputerror au champs input
		addClass("message", "errorinput");
	}
	
	if(erreur!=''){		
		if(document.getElementById("titrerror")){
			divRightcontent.removeChild(document.getElementById("error"));
			divRightcontent.removeChild(document.getElementById("titrerror"));
		}
		
		var nouveauH4=document.createElement("h4");
		var idTitrerror=document.createAttribute("id");
		idTitrerror.nodeValue="titrerror";
		nouveauH4.setAttributeNode(idTitrerror);
		
		if(erreur.length>1){
			nouveauH4.innerHTML="Quelques erreurs... Veuillez les corriger, merci !";
		}
		else{
			nouveauH4.innerHTML="Une erreur... Veuillez la corriger, merci !";
		}
		
		divRightcontent.insertBefore(nouveauH4,this);
		
		var nouveauUl=document.createElement("ul");
		var idListerror=document.createAttribute("id");
		idListerror.nodeValue="error";
		nouveauUl.setAttributeNode(idListerror);
		divRightcontent.insertBefore(nouveauUl,this);
		
		for(i=0;i<erreur.length;i++){
			var nouveauLi=document.createElement("li");
			nouveauLi.innerHTML=erreur[i];
			nouveauUl.appendChild(nouveauLi);
		}
	}

	return formulaireValide;
}

// Fonction vérifiant la syntaxe de l'Email via une expression réguliere
function isNotMatch(valeur, regExpReguliere) {
	var resultat = valeur.match(regExpReguliere);
	if(resultat!=null && resultat.length==1) return true;
	else return false;
}

// Expression réguliere qui vérifie la syntaxe de l'E-mail :
// "/^[A-Za-z0-9]{2,}(([_\.\-]?[a-zA-Z0-9]+)*)" vérifie ce qu'il y a avant l'@ (pas de caracteres accentués, espaces et autorise seulement les caracteres minuscules+majuscules) et vérifie également qu'il y a au moins 2 caracteres saisis ("{2,}")
// "[A-Za-z0-9]{2,}(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,5})$/g;" vérifie ce qu'il y a apres l'@ (idem que la 1re partie).
var regExpEmailAdress=/^[A-Za-z0-9]{2,}(([_\.\-]?[a-zA-Z0-9]+)*)@[A-Za-z0-9]{2,}(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,5})$/g;


// Fonction d'ajout de class sur les labels et les inputs
function addClass(element, nomClasse, id){
	if(id){
		element=document.getElementsByTagName(element)[id];
	}
	else{
		element=document.getElementById(element);
	}
	elementAttributClass=document.createAttribute("class");
	elementAttributClass.nodeValue=nomClasse;
	element.setAttributeNode(elementAttributClass);
}

// Fonction qui permet d'enlever les class erreurs sur le label et ou l'input sélectionné
function removeClass(){
	var element = this;
	var attribut=element.getAttribute("class");
	var nom=element.getAttribute("for");
	var name=element.getAttribute("name");
	var labels=document.getElementsByTagName("label");
	
	if(attribut!=null){
		this.removeAttribute("class");
		if(nom!=null){
			document.getElementById(nom).removeAttribute("class");
		}
		else{
			for(i=0;i<labels.length;i++){
				if(labels[i].getAttribute("class")=="errorlabel" && labels[i].getAttribute("for")==name){
					labels[i].removeAttribute("class");
				}
			}
		}
	}
}
