$(function(){ countCar(); });

function MM_findObj(n,d){var p,i,x;if(!d)d=document;if((p=n.indexOf("?"))>0&&parent.frames.length){d=parent.frames[n.substring(p+1)].document;n=n.substring(0,p);}if(!(x=d[n])&&d.all)x=d.all[n];for(i=0;!x&&i<d.forms.length;i++)x=d.forms[i][n];for(i=0;!x&&d.layers&&i<d.layers.length;i++)x=MM_findObj(n,d.layers[i].document);if(!x&&d.getElementById)x=d.getElementById(n);return x;}

// if (Est.email(v))
var Est = {
	sM : "[a-z0-9_]+((-[a-z0-9_]+)|([.][a-z0-9_]+)|(_[a-z0-9_]+))*@[a-z0-9]+(([.]|-)[a-z0-9]+)*[.][a-z]{2,}",
	sF : "(^[/(/)a-z0-9_-]+[.])",

	colorHexa: 	function(v) { return new RegExp(/^#+[\dA-F]{6}$|^$/i).test(v); },
	folder : 	function(v) { return new RegExp(/^[a-z\d_-]*$/i).test(v); },
	suppr :	 	function(v) { return new RegExp(/^(oui)$/i).test(v); },
	fileImg : 	function(v) { return new RegExp(eval("/" + this.sF + "(gif|jpg|jpeg|png)$/i")).test(v); },
	fileJPG : 	function(v) { return new RegExp(eval("/" + this.sF + "(jpg|jpeg)$/i")).test(v); },
	fileAll : 	function(v) { return new RegExp(eval("/" + this.sF + "[a-z\d]{3,4}$/i")).test(v); },
	heure : 	function(v) { return new RegExp(/^(([0-1]\d)|(2[0-3]))(:[0-5]\d){2}$/).test(v); },
	decimal : 	function(v) { return new RegExp(/^\d+[,.]?\d*$/i).test(v); },
	entier : 	function(v) { return new RegExp(/^\d+$/).test(v); },
	mailing :	function(v) { return new RegExp(eval("/^((" + this.sM + ");?){1,}$/i")).test(v); },
	email : 	function(v) { return new RegExp(eval("/^" + this.sM + "$/i")).test(v); },
	vide :		function(v) { return (v == "" || typeof(v) == "null"); },
	sms : 		function(v) { return (v.replace(/[^\d]/gi,'').length == 10); },
	date :		function(v) {
					var err = '';
					if(!new RegExp(/^\d{2}\/\d{2}\/\d{4}$/).test(v))
						err = 'format non valide';
					else {
						var oD = vf_split_date(v);
						var aMois = [31, vf_nb_jour_fevrier(oD.an), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

						if (oD.mois>12 || oD.mois<1)
							err = 'mois non valide';
						else if (oD.jour>31 || oD.jour<1)
							err = 'jour non valide';
						else {
							if ((oD.an * 10000 + oD.mois * 100 + oD.jour) < 15821220) // date < au lundi 20 decembre 1582
								err = 'periode non valide';
							else if (aMois[--oD.mois] < oD.jour)
								err = 'date non valide';
						}
					}
					return err;
				},
	compare : 	function(v, v2, m) {
					switch (m) {
						case "<":
							return ( v < v2 );
							break;
						case ">":
							return ( v > v2 );
							break;
					}
					return false;
				},
	comprisEntre : function(v, min, max) {	return (v >= min && v <= max); }
};

function vf_mid(v, dtag, ftag) {
	var d = v.indexOf(dtag) + dtag.length;
	return ftag ? v.substring(d, v.indexOf(ftag)) : v.substring(d);
}
function vf_url2fichier(v) {
	var a = v.split(/\\|\//);
	return a[a.length-1];
}
function vf_split_date(d) {
	return {
		jour: parseInt(d.substring(0,2).replace(/(0)(\d)/gi,"$2")),
		mois: parseInt(d.substring(3,5).replace(/(0)(\d)/gi,"$2")),
		an: parseInt(d.substring(6,10))
	};
}
function vf_nb_jour_fevrier(an) { return ((an % 100 != 0 && an % 4 == 0) || (an % 400 == 0)) ? 29 : 28; }

function MM_validateForm() { // 4 arguments
	function Cond(c, v) {
		return (v.indexOf(c)!=-1);
	}

	var groupe, bCheck, j, i, err='', min, max;
	var args = MM_validateForm.arguments;
	for(i=0; i<(args.length-3); i+=4) {
		var v = (MM_validateForm.form) ? MM_validateForm.form.elements[args[i]] : MM_findObj(args[i]); // valeur
		var c = args[i+2]; 	 // condition
		var lbl = args[i+3]; // label

		if (v) {
			v = v.value;
			if (Cond('Trim', c)) v = $.trim(v);

			if (!Est.vide(v) || v == "null") {
				if (Cond('isColorHexa', c)) if (!Est.colorHexa(v)) err += langue("isColorHexa", [["%1",lbl]]) + "<br />";
				if (Cond('isFolder', c)) if (!Est.folder(v)) err += langue("isFolder", [["%1",lbl]]) + "<br />";
				if (Cond('isSuppr', c)) if (!Est.suppr(v)) err += langue("isSuppr", [["%1",lbl]]) + "<br />";
				if (Cond('isEmail', c)) if (!Est.email(v)) err += langue("isEmail", [["%1",lbl]]) + "<br />";
				if (Cond('isMailing', c)) if (!Est.mailing(v)) err += langue("isMailing", [["%1",lbl]]) + "<br />";
				if (Cond('isSelect', c)) if (v == "null" && c.charAt(0) == 'R') err += langue("isSelect", [["%1",lbl]]) + "<br />";
				if (Cond('isSMS', c)) if (!Est.sms(v)) err += langue("isSMS", [["%1",lbl]]) + "<br />";

				if (Cond('isHeure', c)) if (!Est.heure(v)) err += langue("isHeure", [["%1",lbl]]) + "<br />";
				if (Cond('isDate', c) || Cond('isADate', c)) {
					if ( !(Cond('isADate', c) && v == "Toujours visible") ) {
						var sDate = Est.date(v);
						switch (sDate) {
							case 'format non valide':
								err += langue("isDate", [["%1",lbl]]) + "<br />";
								break;
							case 'mois non valide':
								err += langue("isDateMois", [["%1",lbl]]) + "<br />";
								break;
							case 'jour non valide':
								err += langue("isDateJour", [["%1",lbl]]) + "<br />";
								break;
							case 'periode non valide':
								err += langue("isDatePeriode", [["%1",lbl]]) + "<br />";
								break;
							case 'date non valide':
								var oD = vf_split_date(v); oD.mois--;
								var aMois = [ [langue("jan"), 31], [langue("fev"), vf_nb_jour_fevrier(oD.an)], [langue("mar"), 31], [langue("avr"), 30], [langue("mai"), 31], [langue("juin"), 30], [langue("jui"), 31], [langue("aou"), 31], [langue("sep"), 30], [langue("oct"), 31], [langue("nov"), 30], [langue("dec"), 31] ];
								err += langue("isDateNbJour", [["%1",oD.jour], ["%2",aMois[oD.mois][0]], ["%3",oD.an], ["%4",aMois[oD.mois][1]]]) + "<br />";
						}
					}
				}

				if (Cond('isEntier', c)) if (!Est.entier(v)) err += langue("isEntier", [["%1",lbl]]) + "<br />";
				if (Cond('isEntierRange', c)) {
					min = parseInt(vf_mid(c, ':', 'to'));
					max = parseInt(vf_mid(c, 'to'));
					if(!Est.comprisEntre(v, min, max)) err += langue("isEntierRange", [["%1",lbl], ["%2",min], ["%3",max]]) + "<br />";
				}
				if (Cond('isDecimal', c)) if (!Est.decimal(v)) err += langue("isDecimal", [["%1",lbl]]) + "<br />";
				if (Cond('isDecimalRange', c)) {
					min = parseFloat(vf_mid(c, ':', 'to'));
					max = parseFloat(vf_mid(c, 'to'));
					if(!Est.comprisEntre(v, min, max)) err += langue("isDecimalRange", [["%1",lbl], ["%2",min], ["%3",max]]) + "<br />";
				}
				if (Cond('isMin', c)) {
					min = parseInt(vf_mid(c, '<', ':'));
					if (Est.compare(v.length, min, "<")) err += langue("isMin", [["%1",lbl], ["%2",min]]) + "<br />";
				}
				if (Cond('isNombreMax', c)) if (Est.compare(v, parseFloat(vf_mid(c,'>',':')), ">")) err += langue("isNombreMax", [["%1",lbl]]) + "<br />";

				if (Cond('isFileImg', c)) if (!Est.fileImg( vf_url2fichier(v) )) err += langue("isFileImg", [["%1",lbl], ["%2",v]]) + "<br />";
				if (Cond('isFileJPG', c)) if (!Est.fileJPG( vf_url2fichier(v) )) err += langue("isFileJPG", [["%1",lbl]]) + "<br />";
				if (Cond('isFileAll', c)) {
					v = vf_url2fichier(v);
					var ext = v.substr(v.lastIndexOf(".") + 1).toLowerCase();
					if (!Est.fileAll(v) || ext=="exe" || ext=="com" || ext=="bat") err += langue("isFileAll", [["%1",lbl], ["%2",v]]) + "<br />";
				}

				if (Cond('isCheckboxGForm', c)) { // spec gÃ©nÃ© de form
					bCheck = false;
					var oFgp = document.forms['ff_' + $id(args[i]).value];
					for(j=0;j<oFgp.length;j++) {
						groupe = oFgp.elements[j];
						if (groupe.type != null) {
							if (groupe.type.toLowerCase() == "checkbox" && groupe.name.indexOf(args[i] + "_") != -1)
								if(groupe.checked) bCheck = true;
						}
					}
					if (!bCheck) err += langue("isObligatoire", [["%1",lbl]]) + "<br />";
				}
				else {
					if (Cond('isRadio', c) || Cond('isCheckbox', c)) {
						groupe = document.getElementsByName(args[i]);
						bCheck = false;
						for(j=0;j<groupe.length;j++) {
							if(groupe[j].checked) {
								if( Cond('isRadioChecked', c) || Cond('isCheckboxChecked', c) )
									bCheck = !groupe[j].disabled;
								else
									bCheck = true;
							}
							if (bCheck) break;
						}
						if (!bCheck) err += langue("isObligatoire", [["%1",lbl]]) + "<br />";
					}
				}
			} else if (c.charAt(0) == 'R') err += langue("isObligatoire", [["%1",lbl]]) + "<br />";
		}
	}

	MM_validateForm.form = null;
	if (err){
		$('#infobox').html(langue("error") + "<br />" + err);
		$('#infobox').dialog({
			buttons: {
				Fermer : function() { $(this).dialog('close'); }
			},
			resizable: true,
			height: 250,
			width: 500,
			modal: true,
			overlay: {
				opacity: 0.5,
				background: 'black'
			}
		});
	}
	document.MM_returnValue = (err == '');
}


function alertForm( sMod ) {
	switch (sMod) {
		case "rechercher" :
			alert(langue("alertRechercher"));
			break;
		default :
			alert(langue("alertDefaut"));
	}
}

function countCar() {
	var matches, countHolder;
	$('.maxlength').each(function() {
		matches = this.className.match(/max_(\d+)/);
		this.maxVal = RegExp.$1;
		this.holder = $id(this.id + 'Count');
		if (this.holder) {
			this.onkeyup = function() { chkCountCar(this); };
			//count.onfocus = function() { chkCountCar(this); };
			//count.onblur = function() { chkCountCar(this); };
			chkCountCar(this);
		}
	});
}
function chkCountCar(obj) {
	var len = obj.value.length;
	var s = obj.value.replace(/\r\n/g,'--').replace(/\n/g,'--'); // Cause BUG FF
	t = s.length - len;
	if ((len + t) > obj.maxVal) obj.value = obj.value.substring(0, obj.maxVal - t);
	var iLng = obj.maxVal - obj.value.length - t;
	obj.holder.innerHTML = langue("caractMaxi", [["%1",iLng],["%2",((iLng > 1) ? "(s)" : "")]]);
}

function disableForm() {
	var oEl, i, ii, aForm = document.forms;

	for (ii=0;ii<aForm.length;ii++) { // tous les formulaires de la page
		for (i=0;i<aForm[ii].length;i++) {
			oEl = aForm[ii].elements[i];
			if (oEl.type != null)
				switch (oEl.type.toLowerCase()) {
					case "submit":case "button":case "reset":case "image":
						oEl.disabled = true;
				}
		}
	}
}

/***** nOuveauté ****/

// test 2 dates
function DateToNumber(oFormName, oDebName, oFinName, oNbdebName, oNbfinName) {
	var oForm = document.forms[oFormName];
	var aElem = [[oNbdebName, oDebName],[oNbfinName, oFinName]];
	for(var i = 0;i<aElem.length;i++)
		oForm.elements[aElem[i][0]].value = oForm.elements[aElem[i][1]].value.replace(/(\d{2})\/(\d{2})\/(\d{4})/gi,"$3$2$1");
}

var disableForm = {
	settings : {
		titre: _lg("Formulaire en cours d'envoi"),
		text: _lg("Les donnÃ©es sont en cours d'envoi, veuillez patientez..."),
		fermer: false
	},
	show : function(options) {
		s = this.settings;
		if(options) {
			$.extend(s, options);
		}

		$('#dialog_disableForm').remove();
		$('body').append('<div id="dialog_disableForm" title="' + s.titre + '"><div class="ajaxloading_disableForm">' + s.text + '</div></div>');
		$('#dialog_disableForm').data('fermer', s.fermer).dialog({
			resizable: false,
			closeOnEscape: s.fermer,
			draggable: false,
			height: $('#dialog_disableForm').width(500).height(),
			width: 500,
			modal: true,
			open: function(){
				if( ! $(this).data('fermer')) {
					$(this).parents('.ui-dialog:first').find('.ui-dialog-titlebar-close').remove();
				}
			}
		});
	},
	hide : function() {
		$('#dialog_disableForm').dialog('close');
	}
};

function mod_formulaire(sForm, sMod) {
	if (sMod.substring(0, 3) == 'eff') {
		$(sForm + ' :text').attr('readonly', 'readonly');
	}
}

// filtre
$.validator.addMethod('t', function(value, element, param) {
	return this.optional(element) || $.trim(value);
});
$.validator.addMethod('s', function(value, element, param) {
	return this.optional(element) || value.replace(/\s+/g, '');
});

// test
$.validator.addMethod('emailing', function(value, element, param) {
	var bValide = true,
		aMails = value.replace(/\s+/g,'').split(';');
	for (i = 0; i < aMails.length; i++) {
		if( ! /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([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])))\.?$/i.test(aMails[i]) ) {
			bValide = false;
			break;
		}
	}
	return this.optional(element) || bValide;
}, $.validator.messages.email);
// same as url, but TLD is optional
$.validator.addMethod("url2", function(value, element, param) {
	return this.optional(element) || /^(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})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
}, $.validator.messages.url);

$.validator.addMethod('entier', function(value, element, param) {
	return this.optional(element) || /^-?\d+$/.test(value);
}, _lg('Nombre entier non valide'));

$.validator.addMethod('ape', function(value, element, param) {
	return this.optional(element) || /^\d{3}[a-z]$/i.test(value);
}, _lg('Code ape non valide'));
$.validator.addMethod('tel', function(value, element, param) {
	return this.optional(element) || /^((\d).?){10}$/.test(value);
}, _lg('TÃ©lÃ©phone non valide'));
$.validator.addMethod('cp', function(value, element, param) {
	return this.optional(element) || /^(\d{1,2}|2[AB])\s*\d{3}$/i.test(value);
}, _lg('Code postal non valide'));

// date
$.validator.addMethod('date2', function(value, element, param) {
	var sValide;
	if ($.datepicker.regional[LANGUE_META_SITE]) {
		var sFormat = $.datepicker.regional[LANGUE_META_SITE].dateFormat,
			re = new RegExp('^' + sFormat.replace(/[dm]/gi, '\\d').replace(/(yy)/gi, '\\d{4}') + '$','g');
		sValide = re.test(value);
	} else {
		sValide = !/Invalid|NaN/.test(new Date(value));
	}
	return this.optional(element) || sValide;
}, $.validator.messages.date);
$.validator.addMethod('daterange', function(value, element, param) {
	if ($.datepicker.regional[LANGUE_META_SITE]) {
		var sFormat = $.datepicker.regional[LANGUE_META_SITE].dateFormat;
		return date2timestamp( sFormat, value) >= date2timestamp( sFormat, param[0]) && ate2timestamp( sFormat, value) <= date2timestamp( sFormat, param[1]);
	} else {
		return this.optional(element);
	}
}, $.format( _lg('Saisissez une date comprise entre Â« {0} Â» et Â« {1} Â» inclus') ));
$.validator.addMethod('datemin', function(value, element, param) {
	if ($.datepicker.regional[LANGUE_META_SITE]) {
		var sFormat = $.datepicker.regional[LANGUE_META_SITE].dateFormat;
		return date2timestamp( sFormat, value) <= date2timestamp( sFormat, param);
	} else {
		return this.optional(element);
	}
}, $.format( _lg('Saisissez une date infÃ©rieur ou Ã©gale Ã  Â« {0} Â»') ));
$.validator.addMethod('datemax', function(value, element, param) {
	if ($.datepicker.regional[LANGUE_META_SITE]) {
		var sFormat = $.datepicker.regional[LANGUE_META_SITE].dateFormat;
		return date2timestamp( sFormat, value) >= date2timestamp( sFormat, param);
	} else {
		return this.optional(element);
	}
}, $.format( _lg('Saisissez une date supÃ©rieure ou Ã©gale Ã  Â« {0} Â»') ));

// comparaison entre 2 champs ou valeur si param n'est pas un array
$.validator.addMethod('verifEgal', function(value, element, param) {
	return this.optional(element) || value == ( param.length > 1 ? $(param[1]).val() : param[0]);
}, $.format( _lg('Saisissez une valeur Ã©gale Ã  Â« {0} Â»') ));
$.validator.addMethod('verifSupEgal', function(value, element, param) {
	return this.optional(element) || value >= ( param.length > 1 ? $(param[1]).val() : param[0]);
}, $.format( _lg('Saisissez une valeur supÃ©rieure ou Ã©gal Ã  Â« {0} Â»') ));
$.validator.addMethod('verifInfEgal', function(value, element, param) {
	return this.optional(element) || value <= ( param.length > 1 ? $(param[1]).val() : param[0]);
}, $.format( _lg('Saisissez une valeur infÃ©rieure ou Ã©gal Ã  Â« {0} Â»') ));
$.validator.addMethod('verifSup', function(value, element, param) {
	return this.optional(element) || value > ( param.length > 1 ? $(param[1]).val() : param[0]);
}, $.format( _lg('Saisissez une valeur supÃ©rieure Ã  Â« {0} Â»') ));
$.validator.addMethod('verifInf', function(value, element, param) {
	return this.optional(element) || value < ( param.length > 1 ? $(param[1]).val() : param[0]);
}, $.format( _lg('Saisissez une valeur infÃ©rieure Ã  Â« {0} Â»') ));
$.validator.addMethod('verifDiff', function(value, element, param) {
	return this.optional(element) || value != ( param.length > 1 ? $(param[1]).val() : param[0]);
}, $.format( _lg('Saisissez une valeur diffÃ©rente de Â« {0} Â»') ));
$.validator.addMethod('verifDateSup', function(value, element, param) {
	if ($.datepicker.regional[LANGUE_META_SITE]) {
		var sFormat = $.datepicker.regional[LANGUE_META_SITE].dateFormat;
		var sValide = date2timestamp( sFormat, value) > date2timestamp( sFormat, param.length > 1 ? $(param[1]).val() : param[0]);
	} else {
		var sValide = !/Invalid|NaN/.test(new Date(value));
	}
	return this.optional(element) || sValide
}, $.format( _lg('Saisissez une date supÃ©rieure Ã  Â« {0} Â»') ));
$.validator.addMethod('verifDateSupEgal', function(value, element, param) {
	if ($.datepicker.regional[LANGUE_META_SITE]) {
		var sFormat = $.datepicker.regional[LANGUE_META_SITE].dateFormat;
		var sValide = date2timestamp( sFormat, value) >= date2timestamp( sFormat, param.length > 1 ? $(param[1]).val() : param[0]);
	} else {
		var sValide = !/Invalid|NaN/.test(new Date(value));
	}
	return this.optional(element) || sValide;
}, $.format( _lg('Saisissez une date supÃ©rieure ou Ã©gal Ã  Â« {0} Â»') ));
