var Validators = {
	required: function( el ) {
		return el.value && !el.value.match(/^\s*$/);
	},

	username: function( el ) {
		return el.value && el.value.match(/^[a-zA-Z_][a-zA-Z0-9_]{2,}$/);
	},

	email: function( el, required ) {
		if ( !required && !el.value) return true;
		return el.value.match(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i);
	},

	zip: function( el, required ) {
		if ( !required && !el.value) return true;
		return el.value.match(/^\d{5}$|^\d{5}-\d{4}$/);
	},

	same_as: function( el, required ) {
		var other_value = $("#" + ($(el).attr('rel'))).attr('value');
		return el.value == other_value;
	},

	positive_number: function( el, required ) {
		if ( !required && !el.value) return true;
		return el.value.match(/^([1-9.]|[0-9]\.\d)(\d+)?(\.\d+)?$/) && !el.value.match(/^(0*)?\.0*$/);
	},

	positive_integer: function( el, required ) {
		if ( !required && !el.value) return true;
		return el.value.match(/^[1-9][0-9]*$/);
	},

	phone: function( el, required ) {
	  if ( !required && !el.value) return true;
	  var numbers = el.value.replace(/[^\d]/g, '');
	  return numbers.match(/^.{10}$/);
	}
}