
function checkForm(form) {
	var ok = true;
	setAllInputsValid(form);
	ok &= checkEmailFields(form);
	ok &= checkRequiredFields(form);
	return ok ? true : false;
}

function setAllInputsValid(form) {
	$(form).find("input").removeClass("invalid");
	$(form).find("label.invalidMessage").hide();
}

function checkRequiredFields(form) {
	var emptyFieldRegexp = /^\s*$/;
	return checkFields(
		form,
		"required",
		function(input) {
			return !input.value.toString().match(emptyFieldRegexp);
		}
	);
}

function checkEmailFields(form) {
	var emailRegexp = /^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?$/i;
	return checkFields(
		form,
		"email",
		function(input) {
			return input.value == "" || input.value.toString().match(emailRegexp);
		}
	);
}

function checkFields(form, className, validateFunction) {
	var ok = true;
	$(form).find("input." + className).each(function() {
		if (validateFunction(this))
			return;
		ok = false;
		$(this).addClass("invalid");
		$(form).find("label.invalidMessage[for=" + this.id + "]").show();
	});
	return ok;
}

