/**************************************************************************************/
/* Fonctions javascript utiles à la verification des saisies lors de l'inscription    */
/**************************************************************************************/



/** Fonction de blocage de la saisie si elle n'est pas conforme */
function bloque(formulaire,champ) {
	// Creation d'un raccourci pour manipuler le champ
	var controle = eval('document.' + formulaire + '.' + champ);
	// On se place sur le champ incrimine
	controle.focus();
	// On selectionne le contenu pour faciliter la reprise de la saisie
	controle.select();
}





/** Fonction de controle des champs vides */

// Debut du message qui sera affiche en cas d'un ou plusieurs champ(s) vide(s)
var mess = "Les champs suivants sont necessaires au traitement de votre demande :\n";
// Copie pour reinitialisation
var mess_init = "Les champs suivants sont necessaires au traitement de votre demande :\n";
// Variable marquant l'erreur (0 : tout va bien, 1 : blocage demande)
var necessaire = 0;

function vide(formulaire,champ,alerte) {

	// Creation d'un raccourci pour manipuler le champ a tester
	var controle = eval('document.' + formulaire + '.' + champ);
	
	// Si c'est un champ 'text'
	if ( controle.type == 'text' ) {
		// Et que la valeur du champ comporte moins de 1 caractere (vide)
		if ( controle.value.length < 1 ) {
			// On ajoute l'intitule du champ dans le message d'erreur
			mess += alerte;
			mess += "\n";
			// On marque qu'il ne faut pas valider le formulaire
			necessaire = 1;
		}
	}

	// Si c'est un champ de type mot de passe
	if ( controle.type == 'password' ) {
		if ( controle.value.length < 1 ) {
			mess += alerte;
			mess += "\n";
			necessaire = 1;
		}
	}

	// Si c'est un champ de type texte multilignes
	if ( controle.type == 'textarea' ) {
		if ( controle.value.length < 1 ) {
			mess += alerte;
			mess += "\n";
			necessaire = 1;
		}
	}

	// Si c'est une liste
	if ( controle.type == 'select-one' ) {

		// Si c'est le premier element qui est selectionne (element vide a indiquer dans le HTML)
		if ( controle.options[0].selected ) {
			mess += alerte;
			mess += "\n";
			necessaire = 1;
		}
	}

	// Si c'est une case a cocher
	if ( controle.type == 'checkbox' ) {

		// Quand elle est cochee, l'etat est 'true', ici on cherche l'inverse (false)
		if (!controle.checked) {
			mess += alerte;
			mess += "\n";
			necessaire = 1;
		}
	}
	
}





/** Fonction pour le test des boutons radio */
function vide_radio(formulaire,champ,alerte) {

	// Creation d'un raccourci pour manipuler le champ a tester
	var controle = eval('document.' + formulaire + '.' + champ);

	// On declare par defaut que les champs ne sont pas coches,
	var non = "hs";
	for ( i = 0; i < controle.length; i++ ) {

	// Si on trouve un bouton coche, on le marque
		if (controle[i].status) {
			non = "ok";
			}
		}

	// Si on n'a pas marque un champ comme 'coche' (ok)
	if ( non != "ok" ) {
		mess += alerte;
		mess += "\n";
		necessaire = 1;
	}

}





/** Fonction de validation du formulaire */
function resultat(formulaire) {

	// Si on a marque qu'au moins un champ etait vide
	if ( necessaire == 1 ) {
		// Affichage du message d'erreur avec tous les champs en erreur
		alert(mess);
		mess = mess_init;
		necessaire = 0;
		return false;
	}

	// Si aucun champ n'est vide
	if ( necessaire == 0 ) {
		var formu = eval('document.' + formulaire);
		// Validation du formulaire
		//formu.submit();
		mess = mess_init;
		necessaire = 0;
		return true;
	}

	// Quoi qu'il arrive, on re-initialise le message d'erreur pour permettre un autre passage des tests
	//mess = mess_init;
	//necessaire = 0;
	
}





/** Retourne la chaîne val sans ses espaces */ 
function trim(val) { 
	var retour = "" 
	for(i=0;i < val.length;i++) 
		if(val.charAt(i) != " ") { 
			retour += val.charAt(i) 
		} 
	return retour
}





/** Fonction de controle de validite de la saisie */

// Creation d'une variable pour marquer s'il y a incoherence de saisie ou pas
var probleme = 0;

function validate(formulaire,champ,format,mini,maxi) {

	// Initialisation de la variable
	probleme = 0;

	// Les differents tests possibles dont on pourra avoir besoin pour notre forum :
	// On affecte a la variable 'RE' le test d'expression reguliere souhaite
	
	//PSEUDO OBIBLIO
	if ( format == "PO" ) { RE = /^([A-Za-z0-9_-]*)+$/;}
		
	//Prénom
	if ( format == "PR" ) { RE = /^([A-Za-zàâäéèêëîïôùûç -]*)+$/;} 
		
	//	A	: alphabetique
	if ( format == "A" ) { RE = /^([A-Za-z]+[ ]*[-]*[A-Za-z]*)+$/;} //RE = /^([A-Za-z]+[ ]*[-]*[A-Za-z]*)+$/;

	//	AN	: alphanumerique
	if ( format == "AN" ) { RE = /^[A-Za-zàâäéèêëîïôùûç\s,'0-9\-]+$/;}

	//	N	: numerique
	if ( format == "N" ) { RE = /^\d+$/;}

	//	CP	: code postal francais (5 chiffres)
	if ( format == "CP" ) { RE = /^\d{5}$/;}

	//	D	: Date (xx/xx/xx ou xx/xx/xxxx ou xx-xx-xx ou xx-xx-xxxx)
	if ( format == "D" ) { RE = /^\d{2}([\/]|[\-])+\d{2}([\/]|[\-])+\d{2}(\d{2})*$/;}

	//	EMAIL	: email
	if ( format == "EMAIL" ) { RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][A-Za-z][A-Za-z][A-Za-z]?$/;}

	// Creation d'un raccourci pour manipuler le champ a tester
	var controle = eval('document.' + formulaire + '.' + champ);

	// On ne fera les tests que si le champ est rempli d'au moins un caractere (pas vide)
	if (controle.value.length > 0) {

		// Si on ne trouve pas dans le champ l'expression reguliere recherchee
		if (!RE.test(trim(controle.value))) {
			// Envoi d'une alerte
			alert('Votre saisie est incorrecte.');
			// On marque que la saisie n'est pas coherente
			probleme = 1;
		}
		else {
		
			// Tests de longueur du champ (nombre de caracteres saisis)
			// Si il a ete specifie '0', le test n'est pas effectue
			if ( mini != 0 ) {
				// Si la longueur de la saisie est inferieure au minimum demande
				if ( controle.value.length < mini ) {
					// Envoi d'une alerte
					alert('Vous devez saisir au moins ' + mini + ' caracteres.');
					probleme = 1;
				}
			}

			// Si la longueur de la saisie est superieure au maximum demande
			if ( maxi != 0 ) {
				if ( controle.value.length > maxi ) {
					alert('Vous ne devez pas saisir plus de ' + maxi + ' caracteres.');
					probleme = 1;
				}
			}
		
		}
			
		// Si on a marque qu'il y avait un probleme
		if ( probleme == 1 ) {
			// On active le blocage du champ
			//bloque(formulaire,champ);
			controle.value='';
		}
		
	}
		
}






/** Fonction de verification d'une plage de nombres (entre X et Y) */
function check_num(formulaire,champ,plancher,plafond) {

	// Creation d'un raccourci pour manipuler le champ a tester
	var controle = eval('document.' + formulaire + '.' + champ);

	// Si la valeur de la saisie est inferieure au plancher demande
	if ( controle.value < plancher ) {
		// Envoi d'une alerte
		alert('Votre saisie ne doit pas etre inferieure a ' + plancher + '.');
		// On active le blocage du champ
		//bloque(formulaire,champ);
		controle.value='';
	}

	// Si la valeur de la saisie est superieure au plafond demande
	if ( controle.value > plafond ) {
		alert('Votre saisie ne doit pas etre superieure a ' + plafond + '.');
		//bloque(formulaire,champ);
		controle.value='';
	}
}





/** Fonction pour verifier la coherence de deux saisies de mot de passe
*   Cette fonction se declenche a partir du second champ uniquement  */
function check_confirmation(formulaire,champ1,champ2) {
	
	// Creation de deux raccourcis pour manipuler les champ a comparer
	var prems = eval('document.' + formulaire + '.' + champ1);
	var deuze = eval('document.' + formulaire + '.' + champ2);

	// Si le premier champ n'est pas rempli
	if (!prems.value) {
		// Envoi d'une alerte
		alert('Saisissez le premier champs dans un premier temps.');
		//on reinitialise
		deuze.value='';
		// On active le blocage du champ
		//bloque(formulaire,champ1);
	}

	// Si le premier champ est rempli
	else {
		// Si la saisie des deux champ est differente
		if ( prems.value != deuze.value ) {
			// Envoi d'une alerte
			alert('La confirmation n\'est pas valide.');
			// Reinitialisation des deux champs
			deuze.value='';
			prems.value='';
			// On active le blocage du champ
			//bloque(formulaire,champ1);
		}
	}
	
}
