// form validation function //
function formValidator(form) {

	var numericExpression = /^[0-9]+$/;
	var alphaExp = /^[a-zA-Z]+$/;
	var alphanumExp = /^[0-9a-zA-Z]+$/;
	var nameExp = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
	var emailExp1 = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
	var emailExp2 = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	var messageExp = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  
	// Search
	if (form.name == "searchform") {
		if (form.elements["s"].value.length == 0 && form.elements["search-date"].value.length == 0) {
			alertMessage(form.elements["s"],"You must enter value into any one of the 'Search Event' and 'By Date'");
			return false;
		}
	}
	//
	
	// Comments
	if (form.name == "commentform") {
		if (form.elements["author"].value.length == 0) {
			alertMessage(form.elements["author"],"You must enter your name.");
			return false;
		}
		if (!form.elements["author"].value.match(nameExp)) {
			alertMessage(form.elements["author"],"You have entered an invalid name.");
			return false;
		}
		if (form.elements["email"].value.length == 0) {
			alertMessage(form.elements["email"],"You must enter your email.");
			return false;
		}
		if (!form.elements["email"].value.match(emailExp1)) {
			alertMessage(form.elements["email"],"You have entered an invalid email.");
			return false;
		}
		if (form.elements["comment"].value.length == 0) {
			alertMessage(form.elements["comment"],"You must enter a review.");
			return false;
		}
		if (form.elements["comment"].value.match(messageExp)) {
			alertMessage(form.elements["comment"],"You have entered an invalid review.");
			return false;
		}
	}
	//
	
	// Subscribe
	if (form.name == "alo_easymail_widget_form") {
		if (form.elements["alo_em_opt_name"].value.length == 0) {
			alertMessage(form.elements["alo_em_opt_name"],"You must enter your name.");
			return false;
		}
		if (!form.elements["alo_em_opt_name"].value.match(nameExp)) {
			alertMessage(form.elements["alo_em_opt_name"],"You have entered an invalid name.");
			return false;
		}
		if (form.elements["alo_em_opt_email"].value.length == 0) {
			alertMessage(form.elements["alo_em_opt_email"],"You must enter your email.");
			return false;
		}
		if (!form.elements["alo_em_opt_email"].value.match(emailExp1)) {
			alertMessage(form.elements["alo_em_opt_email"],"You have entered an invalid email.");
			return false;
		}
	}
	//
	
	return true;
}


function alertMessage(elem, helperMsg) {
	alert(helperMsg);
	elem.focus();
}


