/* Validation des champs du formulaire */

/* Code HTML requis :
- un appel <script type="text/javascript" src="scripts/validation.js"></script> dans le document
- un attribut onsubmit="return validation(this)" sur le formulaire
- un élément <p class="avertissement">&nbsp;</p> pour les alertes
- un element <span class="error"> Titre du chanmp </span> pour coloration rouge
- des classes mail, prix, nonVide.... sur les inputs
*/

/* Dépend de getElementByClass et de innerDOM */

function avertir(texte) {
			avertissement = getElementsByClass('avertissement');
			if (avertissement)[0]
				innerDOM(avertissement[0], texte);
			if (avertissement)[1]
				innerDOM(avertissement[1], texte);
}

function valide(cible,reg,alerte) {
	var objet = getElementsByClass(cible);
	var descobjet = getElementsByClass('error');
	var taille = objet.length;
	for (i=0; i<taille; i++) {
		if (reg.test(objet[i].value))
			objet[i].style.border = 'solid 1px green';
		else {
			errorsfound = true;
			avertir(alerte);
			objet[i].style.border = 'solid 2px red';
			if (descobjet[i]) {
				descobjet[i].style.color = 'red';
				descobjet[i].style.fontWeight = 'bold';
			}
		}
	}
}

function validePasswd () {
	var objet = getElementsByClass('newPasswd');
	/* Taille et Alphanumérique */
	valide('newPasswd',new RegExp("^[a-zA-Z0-9]{4,}",""),"Le mot de passe doit contenir au moins 4 charactères alphanumériques");
	/* Conformité du mot de passe et de sa confirmation */
	if (objet[0] && objet[1]) {
		if (objet[0].value == objet[1].value) { }
		else {
			errorsfound = true;
			avertir('Votre mot de passe ne correspond pas à sa confirmation');
			for (var i=0; i<objet.length; i++)
				objet[i].style.border = 'solid 2px red';
		}
	}
}
function valideMail () {
	var objet = getElementsByClass('mail');
	/* Taille et Alphanumérique */
	valide('mail',new RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\.\-])+\.)+([a-zA-Z0-9]{2,4})+$",""),"Votre adresse mail est invalide.");
	/* Conformité du mot de passe et de sa confirmation */
	if (objet[0] && objet[1]) {
		if (objet[0].value == objet[1].value) { }
		else {
			errorsfound = true;
			avertir('Votre adresse mail ne correspond pas à sa confirmation');
			for (var i=0; i<objet.length; i++)
				objet[i].style.border = 'solid 2px red';
		}
	}
}
function valideMail2 () {
	var objet = getElementsByClass('mail2');
	/* Taille et Alphanumérique */
	valide('mail2',new RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\.\-])+\.)+([a-zA-Z0-9]{2,4})+$",""),"Votre adresse mail est invalide.");
	/* Conformité du mot de passe et de sa confirmation */
	if (objet[0] && objet[1]) {
		if (objet[0].value == objet[1].value) { }
		else {
			errorsfound = true;
			avertir('Votre adresse mail ne correspond pas à sa confirmation');
			for (var i=0; i<objet.length; i++)
				objet[i].style.border = 'solid 2px red';
		}
	}
}
function valideCheckbox() {
	var objet = getElementsByClass('minimum');
	var compteur = 0;
	if (objet[0]) {
		for (var i=0; i<objet.length; i++) {
			objet[i].style.border = 'none';
			if (objet[i].checked) compteur++;
		}
		if (compteur==0) {
			errorsfound = true;
			avertir('Au moins une des cases doit être cochée');
			for (var i=0; i<objet.length; i++)
				objet[i].style.border = 'solid 2px red';
		}
	}
}

function valideCgvbox() {
	var objet = getElementsByClass('cgvbox');
	var msg = getElementsByClass('error');
	if (objet[0]) {
		if (objet[0].checked) {
		}
		else {
			errorsfound = true;
			avertir('Vous devez prendre connaissance et accepter les conditions de ventes');
			if (msg[0]) {
				msg[0].style.border = 'solid 1px red';
				msg[0].style.background = '#ffc7c7';
				msg[0].style.padding = '5px';
			}
		}
	}
}

function valideSelect() {
	var objet = getElementsByClass('selectObligatoire');
	if (objet) {
		for (var i=0; i<objet.length; i++) {
			if (objet[i].value == "") {
				errorsfound = true;
				objet[i].style.border = 'solid 2px red';
				avertir("Veuillez faire vos choix dans les listes déroulantes");
			}
			else {
				objet[i].style.border = 'solid 1px green';
			}
		}
	}
}
// controle du mail à l'inscription
/* Requete AJAX */

function getXhr(){
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
	   xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){ // Internet Explorer 
	   try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
	}
	else { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	   xhr = false; 
	} 
	return xhr;
}

function valideMailbdd() {
	var requete = getXhr();
     var mail = document.getElementById("mail").value;
     var url = "Ajax.php?mail=" + escape(mail);
     requete.open("GET", url, true);
	 requete.onreadystatechange = function(){
	   if (requete.readyState == 4 && requete.status == 200) {
         /* Obtenir la réponse du serveur */
         var Statut = requete.responseText;

         /* Mettre à jour le formulaire */
		 if (Statut=='1'){
         document.getElementById("statut").innerHTML = 'Votre mail existe d&eacute;j&agrave; dans notre base de donn&eacute;es !' ;
		 document.getElementById("boutonaffiche").innerHTML = '<span class="avertissement">Votre mail existe d&eacute;j&agrave; <br />dans notre base de donn&eacute;es !</span>' ;
		 errorsfound = true;
		 var objet = getElementsByClass('mail');
			 for (var i=0; i<objet.length; i++) {
			 objet[i].style.border = 'solid 2px red';
			 }
		 }
		 if (Statut=='0'){
		 document.getElementById("statut").innerHTML = '';
		 document.getElementById("boutonaffiche").innerHTML = '<input type="image" alt="J\'ai relu mes coordonnées et je les valide" src="http://www.arthur-com.net/images/vers-etape-4.png" id="bouton"/>' ;
		 }
		}
	 }   
     requete.send(null);
}
function validationContact(formulaire) {
	errorsfound = false;
	valide('nonVideContact',new RegExp("^[a-zA-Z0-9]+",""),"Merci de remplir tous les champs obligatoires.");
	//valide('mail',new RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\.\-])+\.)+([a-zA-Z0-9]{2,4})+$",""),"Votre adresse mail est invalide.");
	//if (errorsfound) {
		return false;
	/*} else {
		document.getElementById("envoi").innerHTML = '<img src="http://www.arthur-com.net/images/loading.gif" alt=""/>Envoi en cours, merci de patienter...' ;
		return true;
	}*/
}
/*
function valideCgv3fois() {
	errorsfound = false;
	var objet = getElementsByClass('cgvbox3fois');
	var msg = getElementsByClass('error');
	alert(objet[0].checked);
	if (objet[0]) {
		if (objet[0].checked == false) {
			avertir('Vous devez prendre connaissance et accepter les conditions de ventes');
			errorsfound = false;
			if (msg[0]) {
				msg[0].style.border = 'solid 1px red';
				msg[0].style.background = '#ffc7c7';
				msg[0].style.padding = '5px';
			}
		}
		else {
			errorsfound = true;
		}
	}
	return errorsfound;
}
*/

function validationCGV(formulaire) {
	errorsfound = false;
	valideCgvbox();
	if (errorsfound) return false; 
		else return true;
}
function validation(formulaire) {
	errorsfound = false;
	valide('codePostal',new RegExp("^[0-9]{5}$",""),"Votre code postal doit contenir 5 chiffres et pas d'espace.");
	valide('prix',new RegExp("(^([0-9\s])+([\.,]){1}([0-9]){2}$)|(^([0-9\s])+$)",""),"Le montant est incorrect.");
	valide('nonVide',new RegExp("^[a-zA-Z0-9]+",""),"Veuillez remplir tous les champs obligatoires, s'il vous plaît.");
	valide('entier',new RegExp("^[0-9]+",""),"Un champ est incorrect");
	validePasswd();
	valideCheckbox();
	valideCgvbox();
	valideSelect();
	valideMail();
	valideMail2();
	if (errorsfound) {
		return false;
	} else {
		document.getElementById("envoi").innerHTML = '<img src="images/loading.gif" alt=""/>Envoi en cours, merci de patienter...' ;
		return true;
	}
}