var emailRe = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/;
var phoneRe = /^((\+\d{1,3}(-| |\.)?\(?\d\)?(-| |\.)?\d{1,5})|(\(?\d{2,6}\)?))(-| |\.)?(\d{3,4})(-| |\.)?(\d{4})(( x| ext)\d{1,5}){0,1}$/;
var alphaNumRe = /^[0-9a-zA-Z]+$/;
var alphaRe = /^[a-zA-Z]+$/;
var numericRe = /^[0-9]+$/;

function valueProvided(val) {
	if (val == null || val == "") {
		return false;
	} else {
		return true;
	}
}

function verifyEmail(email) {
	if (!emailRe.test(email)) {
		return false;
	} else {
		return true;
	}
}

function verifyPhone(phone) {
	if (!phoneRe.test(phone)) {
		return false;
	} else {
		return true;
	}
}

function verifyAlphaNumeric(val) {
	if (!alphaNumRe.test(val)) {
		return false;
	} else {
		return true;
	}
}

function verifyAlpha(val) {
	if (!alphaRe.test(val)) {
		return false;
	} else {
		return true;
	}
}

function verifyNumeric(val) {
	if (!numericRe.test(val)) {
		return false;
	} else {
		return true;
	}
}

function checkRequiredField(form, field, label) {
	if (!valueProvided(field.value)) {
		field.style.borderColor = "red";
		return "<li>" + label + "</li>";
	} else {
		field.style.borderColor = "inherit";
		return "";
	}
}

function validate() {
	var form = document.getElementById("scooterForm");
	var message = "";
	message = message + checkRequiredField(form, form.firstname, "First Name");
	message = message + checkRequiredField(form, form.lastname, "Last Name");
	message = message + checkRequiredField(form, form.mailingaddress, "Mailing Address");
	message = message + checkRequiredField(form, form.city, "City");
	if (!valueProvided(form.state_picked.value)) {
		message = message + "<li>State</li>";
	}
	message = message + checkRequiredField(form, form.zip, "Zip");
	emailCheck = checkRequiredField(form, form.email, "Email");
	message = message + emailCheck;
	if (emailCheck == "") {
		if (!verifyEmail(form.email.value)) {
			form.email.style.borderColor = "red";
			message = message + "<li>Email - invalid value</li>";
		} else {
			form.email.style.borderColor = "inherit";
		}
	}

	if (valueProvided(form.phone.value) && !verifyPhone(form.phone.value)) {
		form.phone.style.borderColor = "red";
		message = message + "<li>Phone Number - invalid value</li>";
	} else {
		form.phone.style.borderColor = "inherit";
	}
	
	if (message != "") {
		message = "Please provide the required fields: <ul>" + message + "</ul>";
		var statusMsg = document.getElementById("statusMessage");
		statusMsg.innerHTML = message;
		statusMsg.style.color = "red";
		return false;
	} else {
		document.getElementById("statusMessage").style.color = "inherit";
		return true;
	}
}
