$(document).ready(function()
{
	$('.validatable').submit(function(e)
	{
		var fields = $(this).find(':input').removeClass('invalid').filter(':not(:disabled)');
		
		var invalid = Array();
		
		// Required.
		var invalidRequired = $(fields).filter('.required').filter(function()
		{
			return $(this).val().length == 0;
		});
		invalid = $.merge(invalid, invalidRequired);
		
		// Email validation.
		var invalidEmail = $(fields).filter('.email').filter(function()
		{
			var regex = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,5}$/;
			return !regex.test($(this).val()) && $(this).val() != '';
		});
		invalid = $.merge(invalid, invalidEmail);
		
		// Integer validation.
		var invalidInteger = $(fields).filter('.integer').filter(function()
		{
			var regex = /^[+-]?\d+$/;;
			return !regex.test($(this).val()) && $(this).val() != '';
		});
		invalid = $.merge(invalid, invalidInteger);
		
		if($(invalid).size() > 0)
		{
			e.preventDefault();
			
			$(invalid).addClass('invalid');
			
			alert('Please complete all fields correctly.');
		}
	});
});