$(function(){
	
	/*Modification messages par défaut*/
	jQuery.validator.messages.digits="Merci d'entrer un nombre entier.";
	jQuery.validator.messages.required="Ce champ est obligatoire.";
	/*Formulaire creation de compte*/
	jQuery.validator.addMethod("dateNaissance", function(value, element) {
		if ($("#isLocataireParam").val()==0)
			return true;
		if(isDateValid(value))
			return true;
		else
			return false;
	}, "La date n'est pas valide");	

	jQuery.validator.addMethod("dateCustom", function(value, element) {
		return isDateValid(value);
	}, "La date n'est pas valide");	


	jQuery.validator.addMethod("millier", function(value, element) {
		 // Suppression des espaces
		element.value = element.value.replace(" ", "");	    
		if (/^\d+$/.test(element.value) && element.value !='') {			
		 element.value = formatMillier(element.value, 0, " ");
		 return true;
		}
		else return true;
		return false;
	}, "Merci d'entrer un nombre entier");	

	
	function formatMillier(valeur,decimal,separateur) {
		// formate un chiffre avec 'decimal' chiffres après la virgule et un separateur
			var deci=Math.round( Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ; 
			var val=Math.floor(Math.abs(valeur));
			if ((decimal==0)||(deci==Math.pow(10,decimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
			var val_format=val+"";
			var nb=val_format.length;
			for (var i=1;i<4;i++) {
				if (val>=Math.pow(10,(3*i))) {
					val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
				}
			}
			if (decimal>0) {
				var decim=""; 
				for (var j=0;j<(decimal-deci.toString().length);j++) {decim+="0";}
				deci=decim+deci.toString();
				val_format=val_format+"."+deci;
			}
			if (parseFloat(valeur)<0) {val_format="-"+val_format;}
			return val_format;
		}



	/*Formulaire creation de compte*/
	jQuery.validator.addMethod("numTel", function(value, element) {
		return isTelValid(value,element);
	}, "Le numéro de téléphone n'est pas valide.");
	
	/*Formulaire creation de compte*/
	jQuery.validator.addMethod("http", function(value, element) {
	var exp2= /^(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/;
	if (element.value !='') {
		if (exp2.test(element.value) ) {
			element.value="http://" + element.value;
		}		
		var exp=/^(https?|ftp):\/\//;
		if (exp.test(element.value)) {
			exp3 =/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/;
			return(exp3.test(element.value));				
		}		
	}
	else
	return true;
	}, "Merci d'entrer une adresse de site internet valide.");

	/*Formulaire creation de compte*/
	jQuery.validator.addMethod("codePostal", function(value, element) {
		var exp=/^(\d{5})?$/;
		return  exp.test(value);
	}, "Le code postal doit comporter 5 chiffres.");	
	
	jQuery.validator.addMethod("lessThanTo", function(value, element,param) {
		return this.optional(element) || $(param).val() == "" || (parseInt(value)!="NaN" &&  parseInt($(param).val())!="NaN" && parseInt(value) < parseInt($(param).val()));
	}, "Doit &ecirc;tre inf&eacute;rieur");	

});
function isDateValid(chaineDate) {
	if(""==chaineDate) return true;
	var exp=/^\d{2}\/\d{2}\/\d{4}$/;
	if(!exp.test(chaineDate)) return false;
	var ladate = (chaineDate).split("/");
	if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2]))){ 
		return false;
	}else{
		var unedate = new Date(eval(ladate[2]),eval(ladate[1])-1,eval(ladate[0]));

		var annee = unedate.getYear();
		if ((Math.abs(annee)+"").length < 4) annee = annee + 1900;
		
		return ((unedate.getDate() == eval(ladate[0])) && (unedate.getMonth() == eval(ladate[1])-1) && (annee == eval(ladate[2])));
	}
}



function isTelValid(chaineTel,element){
	if("" == chaineTel) return true;
	var exp=/^\d{10}$/;
	if(exp.test(chaineTel)){
		element.value=chaineTel.substring(0,2)+' '+chaineTel.substring(2,4)+' '+chaineTel.substring(4,6)+' '+chaineTel.substring(6,8)+' '+chaineTel.substring(8,10);
		return true;
	}
	var exp=/^(\d{2}\s{1}){4}\d{2}$/;
	return  exp.test(chaineTel);
}
