var digits = "0123456789";
var phoneNumberDelimiters = "()- ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
var minDigitsInIPhoneNumber = 10;

function validateAndSubmit( f ) {
	if ( f.firstname.value == "" ) {
		alert("Please enter your first name.");
		f.firstname.focus();
	} else if ( f.lastname.value == "" ) {
		alert("Please enter your last name.");
		f.lastname.focus();
	} else if ( f.address1.value == "" ) {
		alert("Please enter an address.");
		f.address1.focus();
	} else if ( f.city.value == "" ) {
		alert("Please enter a city.");
		f.city.focus();
	} else if ( f.zip.value == "" || !checkZipCode( f.zip.value ) ) {
		alert("Please enter a valid zip code.");
		f.zip.focus();
	} else if ( f.state.value == "NONE" ) {
		alert("Please select a state.");
		f.zip.focus();
	} else if ( f.phone.value == "" || !checkPhone( f.phone.value ) ) {
		alert("Please enter a valid phone number.");
		f.phone.focus();
	} else if ( f.email.value != "" && !checkEmail( f.email.value ) ) {
		alert("Please enter a valid email address.");
		f.email.focus();
	} else if ( f.day.value == "NONE" ) {
		alert("Please select a preferred day.");
		f.day.focus();
	} else if ( f.time.value == "NONE" ) {
		alert("Please select a preferred time.");
		f.time.focus();
	} else {
		return (true);
	}
	return (false);
}
function checkEmail( address ) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(address)) return (true);
	return (false);
}
function checkPhone( number ) {
	s = stripCharsInBag( number, validWorldPhoneChars );
	return ( isInteger(s) && s.length >= minDigitsInIPhoneNumber );
}
function checkZipCode( zip ) {
	return ( isInteger(zip) && zip.length == 5 );
}
function isInteger(s)
{   var i;
	for (i = 0; i < s.length; i++)
	{
		// Check that current character is number.
		var c = s.charAt(i);
		if (((c < "0") || (c > "9"))) return false;
	}
	// All characters are numbers.
	return true;
}

function stripCharsInBag(s, bag)
{   var i;
	var returnString = "";
	for (i = 0; i < s.length; i++)
	{
		// Check that current character is not whitespace.
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}