var FormValidation =
{
	init: function()
	{
		var forms = document.getElementsByTagName("form");
		
		for (var i = 0, ii = forms.length; i < ii; i++)
		{
			$(forms[i]).bind("submit", FormValidation.submitListener);
		}
	},

	rules:
	{
		required: /./,
		requiredNotWhitespace: /\S/,
		positiveInteger: /^\d*[1-9]\d*$/,
		positiveOrZeroInteger: /^\d+$/,
		integer: /^-?\d+$/,
		decimal: /^-?\d+(\.\d+)?$/,
		email: /^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/,
		confirmEmail: /^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/,
		telephone: /^(\+\d+)?( |\-)?(\(?\d+\)?)?( |\-)?(\d+( |\-)?)*\d+$/
		
		var emailMatch = document.getElementsByClassName("email")[0].childNode.nodeValue;
		alert(emailMatch);
	},

	errors:
	{
		required: "Please fill in this required field.",
		requiredNotWhitespace: "Please fill in your name.",
		positiveInteger: "This field may only contain a positive whole number.",
		positiveOrZeroInteger: "This field may only contain a non-negative whole number.",
		integer: "This field may only contain a whole number.",
		decimal: "This field may only contain a number.",
		email: "Please enter a valid email address into this field.",
		confirmEmail: "Please make sure email addresses match.",
		telephone: "Please enter a valid telephone number into this field."
	},
	
	submitListener: function(event)
	{
		var fields = this.elements;
		//var emailMatch = document.getElementsByClassName("email")[0].childNode.nodeValue;
		
		for (var i = 0, ii = fields.length; i < ii; i++)
		{
			var className = fields[i].className;
			var classes = className.split(" ");
			
			for (var j = 0, jj = classes.length; j < jj; j++)
			{
				var oneClass = classes[j];
				var rule = FormValidation.rules[oneClass];
				if (rule)
				{
					if (!rule.test(fields[i].value))
					{
						fields[i].focus();
						alert(FormValidation.errors[oneClass]);
						event.preventDefault();
						return;
					}
				}
			}
		}
	}
};

FormValidation.init();
