var validationErrorMessage = new Object();
validationErrorMessage['obligatoire'] = 'Veuillez renseigner ce champ';
validationErrorMessage['coobligatoire'] = 'Veuillez renseigner ce champ';
validationErrorMessage['numeric'] = 'Veuillez ne saisir que des nombres sans virgule (0 si besoin)';
validationErrorMessage['conumeric'] = 'Veuillez ne saisir que des nombres sans virgule (0 si besoin)';
validationErrorMessage['codepostal'] = 'Veuillez saisir un code postal correct. Si vous êtes résidant des DOM TOM, nous ne pouvons étudier votre dossier. Merci de votre compréhension.';
validationErrorMessage['cocodepostal'] = 'Veuillez saisir un code postal correct. Si vous êtes résidant des DOM TOM, nous ne pouvons étudier votre dossier. Merci de votre compréhension.';
validationErrorMessage['email'] = 'Veuillez saisir une adresse mail correcte (ex: nom@domain.com)';
validationErrorMessage['date'] = 'Veuillez saisir une date sous la forme : jj/mm/aaaa';
validationErrorMessage['telephone'] = 'Veuillez saisir un numéro de téléphone composé de 10 chiffres sans espace ni ponctuation';
validationErrorMessage['nom'] = 'Veuillez saisir votre nom. Il ne doit pas contenir de chiffre et faire 2 caractères minimum';
validationErrorMessage['prenom'] = 'Veuillez saisir votre prénom. Il ne doit pas contenir de chiffre et faire 2 caractères minimum';
validationErrorMessage['conom'] = 'Veuillez saisir le nom du co-emprunteur. Il ne doit pas contenir de chiffre et faire 2 caractères minimum';
validationErrorMessage['coprenom'] = 'Veuillez saisir le prénom du co-emprunteur. Il ne doit pas contenir de chiffre et faire 2 caractères minimum';
validationErrorMessage['pattern'] = 'Pattern incorrect';
validationErrorMessage['jfobligatoire'] = 'Veuillez saisir votre nom de jeune fille. Il ne doit pas contenir de chiffre et faire 2 caractères minimum';
validationErrorMessage['jfcoobligatoire'] = 'Veuillez saisir votre nom de jeune fille. Il ne doit pas contenir de chiffre et faire 2 caractères minimum';
validationErrorMessage['montant'] = 'Veuillez saisir le montant que vous souhaiteriez emprunter';



var validationFunctions = new Object();
validationFunctions["obligatoire"] = isRequired;
validationFunctions["pattern"] = isPattern;
validationFunctions["codepostal"] = isPostCode;
validationFunctions["numeric"] = isnumeric;
validationFunctions["montant"] = isnumeric;
validationFunctions["email"] = isEmail;
validationFunctions["date"] = isDate;
validationFunctions["telephone"] = isTelephone;
validationFunctions["nom"] = isNom;
validationFunctions["prenom"] = isNom;
validationFunctions["coobligatoire"] = isRequired;
validationFunctions["cocodepostal"] = isPostCode;
validationFunctions["conumeric"] = isnumeric;
validationFunctions["conom"] = isNom;
validationFunctions["coprenom"] = isNom;






function isRequired(formField) {
	switch (formField.type) {
		case 'text':
		case 'textarea':
		case 'select-one':
			if (formField.value)
				return true;
			return false;
		case 'radio':
			var radios = formField.form[formField.name];
			for (var i=0;i<radios.length;i++) {
				if (radios[i].checked) return true;
			}
			return false;
		case 'checkbox':
			return formField.checked;
	}	
}

function isPattern(formField,pattern) {
	var pattern = pattern || formField.getAttribute('pattern');
	var regExp = new RegExp("^"+pattern+"$","");
	var correct = regExp.test(formField.value);
	if (!correct && formField.getAttribute('patternDesc'))
		correct = formField.getAttribute('patternDesc');
	return correct;
}

function isPostCode(formField) {
	return isPattern(formField,"[0-9]{5}") && !isPattern(formField,"97(.*)");
}

function isnumeric(formField) {
	return isPattern(formField,"\\d+");
}

function isEmail(formField) {
	//return isPattern(formField,"[a-z\d]+((\.|-|_)[a-z\d]+)*@((?![-\d])[a-z\d-]{0,62}[a-z\d]\.){1,4}[a-z]{2,6}")
	var reg = /^[\w.-]+@[\w.-]+\.\w{1,4}$/
        var reg2 = /[.@]{2,}/
        var result = ((reg.exec(formField.value)!=null) && (reg2.exec(formField.value)==null))
        //alert(result);
        return result;
}

function emptyFunction() {
	return true;
}


function isDate(formField) {
	return isPattern(formField,"[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})");
}

function isTelephone(formField) {
	return isPattern(formField,"[0-9]{10}");
}

function isNom(formField) {
	if(formField.value.length<2) return false;
	var code = /[0-9]/
        var result = ((code.exec(formField.value)==null))
        return(result);
}



/*********************************/

var W3CDOM = document.createElement && document.getElementsByTagName;

function validateForms() {
	if (!W3CDOM) return;
	var forms = document.forms;
	for (var i=0;i<forms.length;i++) {
		forms[i].onsubmit = validate;
	}
}

//addEventSimple(window,'load',validateForms);

function validate(formulaire) {
//alert('validation');
	var els = formulaire;
	var validForm = true;
	var firstError = null;
	for (var i=0;i<els.length;i++) {
		if (els[i].removeError)
			els[i].removeError();
		var req = els[i].getAttribute('validation');
		if (!req) continue;
		var reqs = req.split(' ');
		if (els[i].getAttribute('pattern'))
			reqs[reqs.length] = 'pattern';
		for (var j=0;j<reqs.length;j++) {
			if (!validationFunctions[reqs[j]])
				validationFunctions[reqs[j]] = emptyFunction;
			var OK = validationFunctions[reqs[j]](els[i]);
			if (OK != true) {
				var errorMessage = OK || validationErrorMessage[reqs[j]];
				writeError(els[i],errorMessage)
				validForm = false;
				if (!firstError)
					firstError = els[i];
				break;
			}
		}
	}
	//alert('erreur : '+validForm);
	if (!validForm) {
		
		document.getElementById('div_message_erreur').innerHTML = "<p>Certains champs obligatoires n'ont pas &eacute;t&eacute; compl&eacute;t&eacute;s ou comportent des erreurs.</p>";
		document.getElementById('div_message_erreur').style.display = 'block'; 
		//location.hash = '#div_message_erreur';
	}
	return validForm;

	
}

function writeError(obj,message) {
	//alert('obj');
	obj.className += ' errorMessage';
	obj.onfocus = removeError;
	if (obj.errorMessage || obj.parentNode.errorMessage) return;
	var errorMessage = document.createElement('label');
	errorMessage.className = 'errorMessage';
	errorMessage.setAttribute('for',obj.id);
	errorMessage.setAttribute('htmlFor',obj.id);
	errorMessage.appendChild(document.createTextNode(message));
	obj.parentNode.appendChild(errorMessage);
	obj.errorMessage = errorMessage;
	obj.parentNode.errorMessage = errorMessage;
}

function removeError() {
	this.className = this.className.replace(/errorMessage/,'');
	if (this.errorMessage) {
		this.parentNode.removeChild(this.errorMessage);
		this.errorMessage = null;
		this.parentNode.errorMessage = null;
	}
	this.onfocus = null;
}

function check_famille()
{
	situation = document.getElementById('situation').value;
	
	if ((situation == "PACSE") || (situation == "MARIE") || (situation == "CONCUBINAGE"))
	{
		aff_coemprunteur(1);
		document.getElementById('coemprunteur_on').checked = true;
	}
	else
	{
		aff_coemprunteur(0);
		document.getElementById('coemprunteur_off').checked = true;
	}
}

function check_jf(etat) 
{     
	if (etat == "0")
	{
		validationFunctions["jfobligatoire"] = "";
	}
	else if(etat == "1")
	{
		validationFunctions["jfobligatoire"] = isNom;
	}
	else if(etat == "2")
	{
		validationFunctions["jfcoobligatoire"] = "";
	}
	else if(etat == "3")
	{
		validationFunctions["jfcoobligatoire"] = isNom;
	}
	else
	{
		validationFunctions["jfcoobligatoire"] = "";
		validationFunctions["jfobligatoire"] = "";
	}
}

function aff_coemprunteur(etat) 
{     
	situation = document.getElementById('situation').value;
	
	if ((situation == "PACSE") || (situation == "MARIE"))
	{
		etat=1;
		document.getElementById('coemprunteur_on').checked = true;
	}

	if(etat == "0")
	{
		validationFunctions["coobligatoire"] = "";
		validationFunctions["conumeric"] = "";
		validationFunctions["cocodepostal"] = "";
		validationFunctions["coprenom"] = "";
		validationFunctions["conom"] = "";
		validationFunctions["jfcoobligatoire"] = "";
		document.getElementById('coemprunteur_1').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_2').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_3').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_4').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_5').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_6').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_7').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_8').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_9').style.visibility = 'hidden'; 
 
	}
	else if(etat == "1")
	{
		validationFunctions["coobligatoire"] = isRequired;
		validationFunctions["conumeric"] = isnumeric;
		validationFunctions["coprenom"] = isNom;
		validationFunctions["conom"] = isNom;
		validationFunctions["cocodepostal"] = isPostCode;
		document.getElementById('coemprunteur_1').style.visibility = 'visible'; 
		document.getElementById('coemprunteur_2').style.visibility = 'visible'; 
		document.getElementById('coemprunteur_3').style.visibility = 'visible'; 
		document.getElementById('coemprunteur_4').style.visibility = 'visible'; 
		document.getElementById('coemprunteur_5').style.visibility = 'visible'; 
		document.getElementById('coemprunteur_6').style.visibility = 'visible'; 
		document.getElementById('coemprunteur_7').style.visibility = 'visible'; 
		document.getElementById('coemprunteur_8').style.visibility = 'visible'; 
		document.getElementById('coemprunteur_9').style.visibility = 'visible'; 

	}
	else
	{
		validationFunctions["coobligatoire"] = "";
		validationFunctions["conumeric"] = "";
		validationFunctions["coprenom"] = "";
		validationFunctions["conom"] = "";
		validationFunctions["jfcoobligatoire"] = "";
		validationFunctions["cocodepostal"] = "";
		document.getElementById('coemprunteur_1').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_2').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_3').style.visibility = 'hidden';
		document.getElementById('coemprunteur_4').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_5').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_6').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_7').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_8').style.visibility = 'hidden'; 
		document.getElementById('coemprunteur_9').style.visibility = 'hidden'; 

	}
}


// Mise à jour des listes via XMLHttpRequest
function codepostal(f,q,t,nom_chp_texte,nom_select) 
{
	//var l1 = document.contact.code_postal.value;
	var l1    = f.elements[nom_chp_texte].value;
	//alert(l1);
	
	
	//for(i=q;i<=t;i++) f.elements["list"+i].options.length = 0;
	
	if(l1 != "") 
	{
		var xhr_object = null;
		
		if(window.XMLHttpRequest) // Firefox
			xhr_object = new XMLHttpRequest();
		else if(window.ActiveXObject) // Internet Explorer
			xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
		else 
		{ 
			// XMLHttpRequest non supporté par le navigateur
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
			return;
		}
		
		xhr_object.open("POST", "villes.php?q="+q, true);
		
		xhr_object.onreadystatechange = function() 
		{
			if(xhr_object.readyState == 4)
				eval(xhr_object.responseText);
		}
		
		xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		var data = "champ="+escape(l1)
		+"&form="+f.name+"&select="+nom_select;
		
		xhr_object.send(data);

	}
}

