(function($) {
$.extend(true, React, {
	Form : {
		init : function()
		{
			if (jQuery.validator)
			{
				React.Form.bindValidators();
				React.Form.configValidator();
			}

			if (jQuery.fn.datepicker)
			{
				React.Form.bindDatePickers();
			}
		},

		configValidator : function()
		{
			jQuery.validator.addMethod('regex', function(value, element, params){
				return eval(params).test(value);
			}, "Value does not match regular expression.");

			$.validator.messages =	{
				required: "Dit veld is verplicht.",
				remote: "Deze waarde is niet toegestaan, corrigeer de waarde.",
				email: "Vult u alstublieft een geldig e-mailadres in.",
				url: "Vul een geldige url in, begin met http://.",
				date: "Please enter a valid date.",
				dateISO: "Vul een geldige datum in (jjjj-mm-dd)",
				dateDE: "Bitte geben Sie ein g�ltiges Datum ein.",
				number: "Vul een getal in.",
				numberDE: "Bitte geben Sie eine Nummer ein.",
				digits: "Alleen cijfers zijn toegestaan.",
				creditcard: "Vul een geldig creditcard nummer in.",
				equalTo: "Vul dezelfde waarde opnieuw in.",
				accept: "Please enter a value with a valid extension.",
				maxlength: $.validator.format("Niet meer dan {0} tekens toegestaan."),
				minlength: $.validator.format("Vul ten minste {0} tekens in."),
				rangelength: $.validator.format("Deze waarde moet tussen de {0} en {1} tekens lang zijn."),
				range: $.validator.format("Vul een waarde in tussen {0} en {1}."),
				max: $.validator.format("Vul een waarde in kleiner of gelijk aan {0}."),
				min: $.validator.format("Vul een waarde in groter of gelijk aan {0}."),
				regex: "Dit formaat is niet toegestaan of er zijn ongeldige tekens gebruikt"
			};
		},

		bindValidators : function()
		{
			$('form input[name=_jsvalidate]').each(React.Form._bindValidator).remove();
		},

		_bindValidator : function(k, jsvalidate)
		{
			var options = jQuery.parseJSON(jsvalidate.value);

			if (options.messages)
			{
				jQuery.each(options.messages, function(property, messages)
				{
					jQuery.each(messages, function(k, v){
						options.messages[property][k] = jQuery.format(v);
					});
				});
			}

			$(jsvalidate.form).validate(options);
		},

		bindDatePickers : function()
		{
			$('input.dateIso').datepicker({dateFormat: 'yy-mm-dd'});
			$('input.dateTimeIso').datepicker();
		}
	}
});
})(jQuery);

