// Début de la partie non-spécifique à la page
// Fonction de blocage de la saisie si elle n'est pas conforme
function bloque(formulaire,champ){
	//alert('bloque ' + champ);
	var controle = eval('document.' + formulaire + '.' + champ); // Création d'un raccourci pour manipuler le champ
	//controle.focus();	// On se place sur le champ incriminé
	//controle.select();	// On sélectionne le contenu pour faciliter la reprise de la saisie
	
	var controle = document.getElementById( champ + '_valid' ); // Création d'un raccourci pour manipuler le champ
	controle.src = '/images/icons/exclamation.png';  //accept
}
function debloque(formulaire,champ){
	var controle = document.getElementById( champ + '_valid' ); // Création d'un raccourci pour manipuler le champ
	controle.src = '/images/icons/accept.png';  //accept
}
// Fonction de contrôle des champs vides
// Début du message qui sera affiché en cas d'un ou plusieurs champ(s) vide(s)
var mess = "Les champs suivants sont necessaires pour la validation du formulaire :\n";
// Copie pour réinitialisation
var mess_init = "Les champs suivants sont necessaires au traitement de votre demande :\n";
// Variable marquant l'erreur (0 : tout va bien, 1 : blocage demandé)
var necessaire = 0;
function vide(formulaire,champ,alerte) {
	var controle = eval('document.' + formulaire.name + '.' + champ);	// Création d'un raccourci pour manipuler le champ à tester
	if ( controle.type == 'text' ) {	// Si c'est un champ 'text'
		// Et que la valeur du champ comporte moins de 1 caractère (vide)
		if ( controle.value.length < 1 ) {
		// On ajoute l'intitulé du champ dans le message d'erreur
		mess += alerte;
		mess += "\n";
		necessaire = 1;// On marque qu'il ne faut pas valider le formulaire
		}
	}
// 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 élément qui est sélectionnée (élément vide à indiquer dans le HTML)
		if ( controle.options[0].selected ) {
			mess += alerte;
			mess += "\n";
			necessaire = 1;
		}
	}
	// Si c'est une case à cocher
	if ( controle.type == 'checkbox' ) {
		// Quand elle est cochée, l'état est 'true', ici on cherche l'inverse (false)
		if (!controle.status) {
			mess += alerte;
			mess += "\n";
			necessaire = 1;
		}
	}
	
	
}
// Fonction pour le test des boutons radio
function vide_radio(formulaire,champ,alerte) {
	// Création d'un raccourci pour manipuler le champ à tester
	var controle = eval('document.' + formulaire + '.' + champ);
	// On déclare par défaut que les champs ne sont pas cochés,
	var non = "hs";
	for ( i = 0; i < controle.length; i++ ) {
		// Si on trouve un bouton coché, on le marque
		if (controle[i].status) {
			non = "ok";
		}
	}
	// Si on n'a pas marqué un champ comme 'coche' (ok)
	if ( non != "ok" ) {
		mess += alerte;
		mess += "\n";
		necessaire = 1;
	}
}
// Fonction de validation du formulaire
function resultat(formulaire) {
	//alert( probleme );
	// Si on a marqué qu'au moins un champ était vide
	if ( necessaire == 1 || probleme == 1 ) {
		// Affichage du message d'erreur avec tous les champs en erreur
		necessaire == 1;
		alert(mess);
	}

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

	// Si aucun champ n'est vide
	if ( necessaire == 0 ) {
		//var formu = eval('document.' + formulaire);
		// Validation du formulaire
		//formulaire.submit();
		return true;
	}
	else
	{
		necessaire = 0;
		return false;
	}
}
// Fonction de contrôle de validité de la saisie
// Création d'une variable pour marquer s'il y a incohérence de saisie ou pas
var probleme = 0;
var probleme_msg = new Object();

function validite(formulaire,champ,format,mini,maxi) {
	probleme = 0;	// Initialisation de la variable
	errmsg	=	'';
	// Les différents tests possibles :
	// On affecte à la variable 'RE' le test d'expression régulière souhaité
	
	if ( format == "A" ) { RE = /^([A-Za-z]+[ ]*[-]*[A-Za-z]*)+$/;}											// A : alphabétique
	if ( format == "AN" ) { RE = /^[A-Za-zàâäéèêëîïôùûç\s,'0-9\-]+$/;}										// AN : alphanumérique
	if ( format == "ANS" ) { RE = /^[A-Za-zàâäéèêëîïôùûç\S,'0-9\-]+$/;}										// AN : alphanumérique sans espace
	if ( format == "N" ) { RE = /^\d+$/;}																	// N : numérique
	if ( format == "CP" ) { RE = /^\d{5}$/;}																// CP : code postal français (5 chiffres)
	if ( format == "D" ) { RE = /^\d{2}([\/]|[\-])+\d{2}([\/]|[\-])+\d{2}(\d{2})*$/;}						// D : Date (xx/xx/xx ou xx/xx/xxxx ou xx-xx-xx ou xx-xx-xxxx)
	if ( format == "EMAIL" ) { RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][A-Za-z][A-Za-z][A-Za-z]?$/;}	// EMAIL : email
	
	var controle = eval('document.' + formulaire + '.' + champ);	// Création d'un raccourci pour manipuler le champ à tester
	// On ne fera les tests que si le champ est rempli d'au moins un caractère (pas vide)
	if (controle.value.length > 0) {
		// Si on ne trouve pas dans le champ l'expression régulière recherchée
		if (!RE.test(controle.value)) {
			// Envoi d'une alerte
			//alert('Votre saisie est incorrecte.');
			errmsg = 'Votre saisie est incorrecte.';
			// On marque que la saisie n'est pas cohérente
			probleme = 1;
		}

		// Tests de longueur du champ (nombre de caractères saisis)
		// Si il a été spécifié '0', le test n'est pas effectué
		if ( mini != 0 ) {
			// Si la longueur de la saisie est inférieure au minimum demandé
			if ( controle.value.length < mini ) {
				// Envoi d'une alerte
//				alert('Vous devez saisir au moins ' + mini + ' caracteres.');
				errmsg = 'Vous devez saisir au moins ' + mini + ' caracteres.';
				probleme = 1;
			}
		}

		// Si la longueur de la saisie est supérieure au maximum demandé
		if ( maxi != 0 ) {
			if ( controle.value.length > maxi ) {
//				alert('Vous ne devez pas saisir plus de ' + maxi + ' caracteres.');
				errmsg = 'Vous ne devez pas saisir plus de ' + maxi + ' caracteres.';
				probleme = 1;
			}
		}

		// Si on a marqué qu'il y avait un problème
		if ( probleme == 1 ) {
			// On active le blocage du champ
			//eval('probleme_msg["' + champ + '"] = "' + errmsg + '";');
			
			//probleme_msg[champ] = errmsg;
			bloque(formulaire,champ);
			//alert('add ' + probleme_msg.length);
			necessaire = 1;
		}
		else
		{
			//delete probleme_msg[champ];
			debloque(formulaire,champ);
			//alert('debloque ' + probleme_msg.length);
			necessaire = 0;
		}
	}
}

function validiteOnSubmit(form,champ,format,mini,maxi,alerte) {
	probleme = 0;	// Initialisation de la variable
	formulaire = form.name;
	errmsg	=	'';
	// Les différents tests possibles :
	// On affecte à la variable 'RE' le test d'expression régulière souhaité
	
	if ( format == "A" ) { RE = /^([A-Za-z]+[ ]*[-]*[A-Za-z]*)+$/;}											// A : alphabétique
	if ( format == "AN" ) { RE = /^[A-Za-zàâäéèêëîïôùûç\s,'0-9\-]+$/;}										// AN : alphanumérique
	if ( format == "ANS" ) { RE = /^[A-Za-zàâäéèêëîïôùûç\S,'0-9\-]+$/;}										// AN : alphanumérique sans espace
	if ( format == "N" ) { RE = /^\d+$/;}																	// N : numérique
	if ( format == "CP" ) { RE = /^\d{5}$/;}																// CP : code postal français (5 chiffres)
	if ( format == "D" ) { RE = /^\d{2}([\/]|[\-])+\d{2}([\/]|[\-])+\d{2}(\d{2})*$/;}						// D : Date (xx/xx/xx ou xx/xx/xxxx ou xx-xx-xx ou xx-xx-xxxx)
	if ( format == "EMAIL" ) { RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][A-Za-z][A-Za-z][A-Za-z]?$/;}	// EMAIL : email
	
	var controle = eval('document.' + formulaire + '.' + champ);	// Création d'un raccourci pour manipuler le champ à tester
	// On ne fera les tests que si le champ est rempli d'au moins un caractère (pas vide)
	if (controle.value.length > 0) {
		// Si on ne trouve pas dans le champ l'expression régulière recherchée
		if (!RE.test(controle.value)) {
			// Envoi d'une alerte
			mess += alerte;
			mess += ' : votre saisie est incorrecte.';
			mess += "\n";
			// On marque que la saisie n'est pas cohérente
			probleme = 1;
		}

		// Tests de longueur du champ (nombre de caractères saisis)
		// Si il a été spécifié '0', le test n'est pas effectué
		if ( mini != 0 ) {
			// Si la longueur de la saisie est inférieure au minimum demandé
			if ( controle.value.length < mini ) {
				// Envoi d'une alerte
//				alert('Vous devez saisir au moins ' + mini + ' caracteres.');
				mess += alerte;
				mess += ' : vous devez saisir au moins ' + mini + ' caracteres.';
				mess += "\n";
				probleme = 1;
			}
		}

		// Si la longueur de la saisie est supérieure au maximum demandé
		if ( maxi != 0 ) {
			if ( controle.value.length > maxi ) {
//				alert('Vous ne devez pas saisir plus de ' + maxi + ' caracteres.');
				mess += alerte;
				mess += ' : vous ne devez pas saisir plus de ' + maxi + ' caracteres.';
				mess += "\n";
				probleme = 1;
			}
		}

		// Si on a marqué qu'il y avait un problème
		if ( probleme == 1 ) {
			// On active le blocage du champ
			//eval('probleme_msg["' + champ + '"] = "' + errmsg + '";');
			
			//probleme_msg[champ] = errmsg;
			bloque(formulaire,champ);
			//alert('add ' + probleme_msg.length);
			necessaire = 1;
		}
		else
		{
			//delete probleme_msg[champ];
			debloque(formulaire,champ);
			//alert('debloque ' + probleme_msg.length);
		}
	}
}

// Fonction de vérification d'une plage de nombres (entre X et Y)
function check_num(formulaire,champ,plancher,plafond) {
	probleme = 0;	// Initialisation de la variable
	// Création d'un raccourci pour manipuler le champ à tester
	var controle = eval('document.' + formulaire + '.' + champ);
	
	// Si la valeur de la saisie est inférieure au plancher demandé
	if ( controle.value < plancher ) {
		// Envoi d'une alerte
//		alert('Votre saisie ne doit pas etre inferieure a ' + plancher + '.');
		// On active le blocage du champ
		probleme = 1;
		probleme_msg[champ] = 'Votre saisie ne doit pas etre inferieure a ' + plancher + '.';
	}
	
// Si la valeur de la saisie est supérieure au plafond demandé
	if ( controle.value > plafond ) {
//		alert('Votre saisie ne doit pas etre superieure a ' + plafond + '.');
		probleme = 1;
		probleme_msg[champ] = 'Votre saisie ne doit pas etre superieure a ' + plafond + '.';
	}

	// Si on a marqué qu'il y avait un problème
	if ( probleme == 1 ) {
		// On active le blocage du champ
		bloque(formulaire,champ);
	}
	else
	{
		delete probleme_msg[champ];
		debloque(formulaire,champ);
	}
}

// Fonction pour vérifier la cohérence de deux saisies de mot de passe
// Cette fonction se déclenche à partir du second champ uniquement
function check_pw(formulaire,champ1,champ2) {
	probleme = 0;	// Initialisation de la variable
	// Création de deux raccourcis pour manipuler les champ à 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('Vous n\'avez pas saisi votre mot de passe');
		// On active le blocage du champ
		bloque(formulaire,champ1);
	}
	else
	{
	// Si la saisie des deux champ est différente
		if ( prems.value != deuze.value ) {
			// Envoi d'une alerte
			//alert('La confirmation de votre mot de passe n\'est pas exacte.');
			// Ré-initialisation des deux champs
			//deuze.value = "";
			//prems.value = "";
			// On active le blocage du champ
			bloque(formulaire,champ2);
		}
		else
		{
			debloque(formulaire,champ2);
		}
	}
}

function check_pwOnSubmit(form,champ1,champ2) {
	formulaire = form.name;
	probleme = 0;	// Initialisation de la variable
	// Création de deux raccourcis pour manipuler les champ à 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('Vous n\'avez pas saisi votre mot de passe');
		// On active le blocage du champ
		bloque(formulaire,champ1);
//		mess += alerte;
		mess += ' Vous n\'avez pas saisi votre mot de passe';
		mess += "\n";
		necessaire = 1;
	}
	else
	{
	// Si la saisie des deux champ est différente
		if ( prems.value != deuze.value ) {
			// Envoi d'une alerte
			//alert('La confirmation de votre mot de passe n\'est pas exacte.');
			// Ré-initialisation des deux champs
			//deuze.value = "";
			//prems.value = "";
			// On active le blocage du champ
			bloque(formulaire,champ2);
	//		mess += alerte;
			mess += 'La confirmation de votre mot de passe n\'est pas exacte.';
			mess += "\n";
			necessaire = 1;
		}
		else
		{
			debloque(formulaire,champ2);
		}
	}
}
// Fin de la partie non-spécifique à la page
// Début de la partie spécifique à la page
// Fonction pour tester les champs vides (une ligne par champ)
// Pour autoriser un champ vide, ne pas le référencer dans la liste
function check_vide() {
/*
vide_radio('formulaire','civilite','- Civilite');
vide('formulaire','nom','- Nom');
vide('formulaire','prenom','- Prenom');
vide('formulaire','codepostal','- Code postal');
vide('formulaire','mail','- Adresse e-mail');
vide('formulaire','password','- Votre mot de passe');
vide('formulaire','password2','- Confirmation du mot de passe');
vide('formulaire','etudes','- Votre niveau d\'etudes');
vide('formulaire','jour','- Jour de naissance');
vide('formulaire','mois','- Mois de naissance');
vide('formulaire','annee','- Annee de naissance');
vide('formulaire','avis','- Votre avis sur le formulaire est incorrect ;-)');
*/
// Validation (sous conditions) du formulaire
resultat('formulaire');
}

