/**
  * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
  *
  * @example jQuery.validator.methods.date("01/01/1900")
  * @result true
  *
  * @example jQuery.validator.methods.date("01/13/1990")
  * @result false
  *
  * @example jQuery.validator.methods.date("01.01.1900")
  * @result false
  *
  * @example <input name="pippo" class="{dateITA:true}" />
  * @desc Declares an optional input element whose value must be a valid date.
  *
  * @name jQuery.validator.methods.dateITA
  * @type Boolean
  * @cat Plugins/Validate/Methods
  */
jQuery.validator.addMethod(
	"dateITA",
	function(value, element) {
		var check = false;
		var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
		if( re.test(value)){
			var adata = value.split('/');
			var gg = parseInt(adata[0],10);
			var mm = parseInt(adata[1],10);
			var aaaa = parseInt(adata[2],10);
			var xdata = new Date(aaaa,mm-1,gg);
			if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
				check = true;
			else
				check = false;
		} else
			check = false;
		return this.optional(element) || check;
	}, 
	"Saisissez une date valide de la forme jj/mm/aaaa;"
);
jQuery.validator.addMethod("password", function( value, element ) {

		var result = this.optional(element) || value.length >= 6 && /\d/.test(value) && /[a-z]/i.test(value);

		if (!result) {

			element.value = "";

			var validator = this;

			setTimeout(function() {

				validator.blockFocusCleanup = true;

				element.focus();

				validator.blockFocusCleanup = false;

			}, 1);

		}

		return result;

	}, "Le mot de passe doit contenir au moins 6 caract&egrave;s et un chiffre.");


jQuery.validator.addMethod("standardName", function(value, element) {
	return this.optional(element) || /^[a-z-\s]+$/i.test(value);
	}, 
	"Saisissez un nom valide ne contenant que des lettres, tirets ou espaces");
jQuery.validator.addMethod("minimalPhone", function(value, element) {
	return this.optional(element) || /^\d[\d-.\s]+$/i.test(value);
	}, 
	"Saisissez un num. de T&eacute;l&eacute;phone valide");
jQuery.validator.addMethod("codepostal", function(value, element) {
	return this.optional(element) || /^\d{5}$/.test(value);
	}, 
	"Saisissez un code postal valide");
jQuery.validator.addMethod("passwordConfirm", function(value, element) {
	return this.optional(element) || value==$('#client_mdp').val();
	}, 
	"Les deux mots de passe saisis ne correspondent pas");
	
	
jQuery.extend(jQuery.validator.messages, {
        required: "Ce champ est requis.",
        remote: "L'adresse mail existe.",
        email: "Veuillez entrer une adresse email valide.",
        url: "Veuillez entrer une URL valide.",
        date: "Veuillez entrer une date valide.",
        dateISO: "Veuillez entrer une date valide (ISO).",
        number: "Veuillez entrer un nombre valide.",
        digits: "Veuillez entrer (seulement) une valeur num&eacute;rique.",
        creditcard: "Veuillez entrer un num&eacute;ro de carte de cr&eacute;dit valide.",
        equalTo: "Veuillez entrer une nouvelle fois la même valeur.",
        accept: "Veuillez entrer une valeur avec une extension valide.",
        maxlength: jQuery.format("Veuillez ne pas entrer plus de {0} caract&egrave;res."),
        minlength: jQuery.format("Veuillez entrer au moins {0} caract&egrave;res."),
        rangelength: jQuery.format("Veuillez entrer entre {0} et {1} caract&egrave;res."),
        range: jQuery.format("Veuillez entrer une valeur entre {0} et {1}."),
        max: jQuery.format("Veuillez entrer une valeur inf&eacute;rieure ou &eacute;gale Ã  {0}."),
        min: jQuery.format("Veuillez entrer une valeur sup&eacute;rieure ou &eacute;gale Ã  {0}.")
});
jQuery.validator.addClassRules("inputRequired", {required: true});
 jQuery.validator.addClassRules("validDate", {dateITA: true});
 jQuery.validator.addClassRules("validEmail", {email: true});
  //jQuery.validator.addClassRules("uniqueEmail", {email: true});
 jQuery.validator.addClassRules("validName", {standardName: true});
 /*jQuery.validator.addClassRules("validPhone", {minimalPhone:true});*/
 jQuery.validator.addClassRules("validCodePostal", {codepostal: true});
 jQuery.validator.addClassRules("validConfirmPwd", {passwordConfirm: true});
 jQuery.validator.addClassRules("validNumber", {digits:true});
  jQuery.validator.addClassRules("validMdp", {password:true});
  jQuery.validator.addClassRules("uniqueEmail", {remote:{
  												        url:"ajaxServer.php",
  												        type:"post",
  												        data:{
  												        	client_email:function(){
  												        		return $('#client_email').val();
  												        	},
  												        	method:'isExistingEmail'
  												        }
  												        
  }});
 
 $(function(){
 $('label.required').append('<span class="required">*</span>');
 });
