// Set defaults.
$.validator.setDefaults({
	errorElement: 'em'
});

// Danish error messages.
$.extend($.validator.messages, {
	required: "Dette felt er p&aring;kr&aelig;vet.",
	maxlength: jQuery.format("Indtast h&oslash;jst {0} tegn."),
	minlength: jQuery.format("Indtast mindst {0} tegn."),
	rangelength: jQuery.format("Indtast mindst {0} og h&oslash;jst {1} tegn."),
	email: "Indtast en gyldig email-adresse.",
	url: "Indtast en gyldig URL.",
	date: "Indtast en gyldig dato.",
	dateDE: "Indtast en gyldig dato.",
	number: "Indtast et tal.",
	numberDE: "Indtast et tal.",
	digits: "Indtast kun cifre.",
	equalTo: "Indtast den samme v&aelig;rdi igen.",
	range: jQuery.format("Angiv en v&aelig;rdi mellem {0} og {1}."),
	max: jQuery.format("Angiv en v&aelig;rdi der h&oslash;jst er {0}."),
	min: jQuery.format("Angiv en v&aelig;rdi der mindst er {0}."),
	creditcard: "Indtast et gyldigt kreditkortnummer.",
	accept: "Det angivne billede skal v&aelig;re i enten gif, jpg eller png format"
});

// Additional validation methods.
$.validator.addMethod("dateDK", function(value, element) { 
	return this.optional(element) || /^(?:0?[1-9]|[12]\d|3[01])-(?:0?[1-9]|1[0-2])-\d\d(\d\d)?$/.test(value); 
}, "Indtast en gyldig dato.");
$.validator.addMethod("numberDK", function(value, element) { 
	return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
}, "Indtast et tal.");
$.validator.addMethod("integer", function(value, element) { 
	return this.optional(element) || /^-?\d+$/.test(value);
}, "Indtast et heltal.");
$.validator.addMethod("phone", function(value, element) { 
	return this.optional(element) || /^\+?[\d ]+$/.test(value);
}, "Indtast et gyldigt telefonnummer.");

// Create some global settings (sets).
var chkReqString  = { required: true };
var chkReqString2 = { required: true, minlength: 2 };
var chkReqString3 = { required: true, minlength: 3 };
var chkReqString4 = { required: true, minlength: 4 };
var chkReqString5 = { required: true, minlength: 5 };
var chkReqNumber  = { required: true, numberDK: true };
var chkReqInteger = { required: true, integer: true };
var chkReqDate    = { required: true, dateDK: true };
var chkReqPhone   = { required: true, phone: true };
var chkReqEmail   = { required: true, email: true };

var chkString2 = { minlength: 2 };
var chkString3 = { minlength: 3 };
var chkString4 = { minlength: 4 };
var chkString5 = { minlength: 5 };
var chkNumber  = { numberDK: true };
var chkInteger = { integer: true };
var chkDate    = { dateDK: true };
var chkPhone   = { phone: true };
var chkEmail   = { email: true };
var chkMimePicture   = { accept: 'gif|jpg|png' };
