$.validator.addMethod("numeric", function(value, element, params)
{ 
	return $.validator.methods.digits.call(this, value, element, params); 
}, '');

$.validator.addMethod("year", function(value, element, params)
{ 
	return this.optional(element) || /^[0-9]{4}$/i.test(value); 
}, '');

$.validator.addMethod("postalcode", function(value, element, params)
{ 
	return this.optional(element) || /^[0-9]{4} ?[a-z]{2}$/i.test(value); 
}, '');

$.validator.addMethod("phonenumber", function(value, element, params)
{ 
	return this.optional(element) || /^(\+[0-9]{2}|\+[0-9]{2}[ ]?\(0\)|\(\+[0-9]{2}\)[ ]?\(0\)|00[0-9]{2}|0)([0-9]{9}|[-0-9 ]{10})$/i.test(value);
}, '');

$.validator.addMethod("image", function(value, element, params)
{ 
	return this.optional(element) || $.validator.methods.accept.call(this, value, element, params.toString().replace(/,/, '|')); 
}, '');

$.validator.addMethod("requiredWithTip", function(value, element, params)
{ 
	return $.validator.methods.required.call(this, value, element, params) && (
		typeof element.title == 'undefined' || element.title == '' || element.title != value
	) ; 
}, '');


$.validator.addMethod("datum", function(value, element, params)
{
	return this.optional(element) || /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/i.test(value);  
}, '');

$.validator.setDefaults({
	errorPlacement: function(error, element)
	{
		$('#' + element.attr('id').replace(/\[/i, '').replace(/\]/i, '') + '_error').html(error);
	}
});