/*
 * Localized default methods for the jQuery validation plugin.
 * Locale: DE
 */
jQuery.extend(jQuery.validator.methods, {
	date: function(value, element) {
		return this.optional(element) || isValidDate(value);
	},
	number: function(value, element) {
		return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
	}
});

/*
 * Translated default messages for the jQuery validation plugin.
 * Locale: DE
 */
jQuery.extend(jQuery.validator.messages, {
	required: "Dieses Feld darf nicht leer sein.",
	maxlength: jQuery.validator.format("Bitte geben Sie maximal {0} Zeichen ein."),
	minlength: jQuery.validator.format("Bitte geben Sie mindestens {0} Zeichen ein."),
	rangelength: jQuery.validator.format("Bitte geben Sie mindestens {0} und maximal {1} Zeichen ein."),
	email: "Bitte geben Sie eine g&#252;ltige E-Mail Adresse ein.",
	url: "Bitte geben Sie eine g&#252;ltige URL ein.",
	date: "Bitte geben Sie ein g&#252;ltiges Datum ein.",
	number: "Bitte geben Sie eine Nummer ein.",
	digits: "Bitte geben Sie nur Ziffern ein.",
	equalTo: "Bitte wiederholen Sie denselben Wert.",
	range: jQuery.validator.format("Bitte geben Sie einen Wert zwischen {0} und {1}."),
	max: jQuery.validator.format("Bitte geben Sie einen Wert kleiner oder gleich {0} ein."),
	min: jQuery.validator.format("Bitte geben Sie einen Wert gr&#246;er oder gleich {0} ein."),
	creditcard: "Bitte geben Sie eine g&#252;ltige Kreditkartennummer ein.",
	time: "Bitte geben Sie eine g&#252;ltige Zeit ein."
});

function isValidDate(value) {
	if (value == "__.__.____") return true;
	if (/^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value) == false) return false;
	var parts = value.split(".");
	var dd = parts[0];
	var mm = parts[1];
	var yy = parts[2];
	if (parseFloat(yy) <= 50) { 
		yy = (parseFloat(yy) + 2000).toString(); 
	}
	if (parseFloat(yy) <= 99) { 
		yy = (parseFloat(yy) + 1900).toString(); 
	}
	var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
	if (parseFloat(dd) != dt.getDate()) { return false; }
	if (parseFloat(mm)-1 != dt.getMonth()) { return false; }	
	return true;
}

