$().ready(function() {
	// parametre par defaut du frmk de validation de formulaire
	jQuery.validator.setDefaults({
		errorLabelContainer: "#erreurs",
		wrapper: "li",
		ignoreTitle: true
	});
})

$.extend($.validator.prototype, {
	focusInvalid: function() {
		$("#ancre").focus();
	}
});

$.datepicker.setDefaults($.extend({}, 
		$.datepicker.regional["fr"], { 
		duration: "",
		dateFormat: "dd/mm/yy", 
		showOn: "button", // "both", 
		buttonImage: "/imgs/jquery-ui/calendar.gif", 
		buttonImageOnly: true,
		yearRange: '-20:+2'
	}));

function confirmer(texte, url){
	var reponse = confirm(texte);
	if (reponse) {
		window.location.href = url;
	}
}

jQuery.validator.addMethod("numberFR", function(value, element) {
	element.value = element.value.replace(/,/, '.');
	return this.optional(element) || /^-?(?:\d+)(?:[\.]\d+)?$/.test(value);
}, "Un nombre valide doit être renseigné");

jQuery.validator.addMethod("inferieurSomme", function(value, element, params) {
	$("#montant_aides").val(value.replace(/,/, '.'));
	var somme = 0;
    jQuery.each(params, function() {
    	$(""+this).val($(""+this).val().replace(/,/, '.'));
    	somme += Number($(""+this).val());
    });
	return this.optional(element) || somme >= value.replace(/,/, '.');
}, "Somme supérieure à la valeur");

jQuery.validator.addMethod("maxWords", function(value, element, params) {
	return this.optional(element) || value.match(/\b\w+\b/g).length < params;
}, "Please enter {0} words or less.");

jQuery.validator.addMethod("minWords", function(value, element, params) {
	return this.optional(element) || value.match(/\b\w+\b/g).length >= params;
}, "Please enter at least {0} words.");

jQuery.validator.addMethod("rangeWords", function(value, element, params) {
    return this.optional(element) || value.match(/\b\w+\b/g).length >= params[0] && value.match(/bw+b/g).length < params[1];
}, "Please enter between {0} and {1} words.");

jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
	return this.optional(element) || /^[a-z-.,()'\"\s]+$/i.test(value);
}, "Letters or punctuation only please");

jQuery.validator.addMethod("alphanumeric", function(value, element) {
	return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");

jQuery.validator.addMethod("lettersonly", function(value, element) {
	return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Letters only please");

jQuery.validator.addMethod("nowhitespace", function(value, element) {
	return this.optional(element) || /^\S+$/i.test(value);
}, "No white space please");

/**
 * 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="{dateFR:true}" />
 * @desc Declares an optional input element whose value must be a valid date.
 * 
 * @name jQuery.validator.methods.dateFR
 * @type Boolean
 * @cat Plugins/Validate/Methods
 */
jQuery.validator.addMethod("dateFR", function(value, element) {
	if (value == '00/00/0000') return true;
	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;
}, "Entrez une date correcte");

jQuery.fn.zoom = function(maxWidth) {
	width = jQuery(this).width();
	height = jQuery(this).height();

	var rapport = 1;
	if (width>maxWidth) {
		rapport = maxWidth/width;
	}
	width = width * rapport;
	height = height * rapport;
  
	jQuery(this).css({ display: "inline", height: height+"px", width: width+"px" });
};

