// define some error codes
var cw_FieldNoError		= 0;
var cw_FieldEmptyError 		= 1;
var cw_FieldIntError 		= 2;
var cw_FieldLenError		= 3;
var cw_FieldEmailFormatError	= 4;
var cw_FieldConfirmEmailError	= 5;
var cw_OptionNotSelectedError	= 6;
var cw_FieldAlphaError		= 7;

// Here are the variables that will be set to one of the above error codes.

var cw_firstNameError;
var cw_lastNameError;
var cw_emailFormatError;
var cw_confirmEmailError;
var cw_commentsError;

function cw_InitErrors() {
	// Set Optimistic

	cw_firstNameError 	= cw_FieldNoError;
	cw_lastNameError 	= cw_FieldNoError;
	cw_emailFormatError 	= cw_FieldNoError;
	cw_confirmEmailError 	= cw_FieldNoError;
	cw_commentsError 	= cw_FieldNoError;
}
// We want the error codes set to NoError when the file loads.
cw_InitErrors();

function cw_Checkform(form) {

	cw_InitErrors();

	// -------------------------------------
	// Set an error code for the name fields
	// -------------------------------------
	cw_firstNameError = cw_ValidateAlpha(form.firstName.value);
	cw_lastNameError = cw_ValidateAlpha(form.lastName.value);

	// -------------------------------------
	// Set an error code for the email address fields
	// -------------------------------------
	cw_emailFormatError = cw_ValidateEmail(form.email.value);
	if (form.confirmEmail.value != form.email.value)
		cw_confirmEmailError = cw_FieldConfirmEmailError;
	if (cw_IsEmpty(form.confirmEmail.value) == true)
		cw_confirmEmailError = cw_FieldEmptyError;

	// -------------------------------------
	// Set an error code for the comments field
	// -------------------------------------
	if (cw_IsEmpty(form.comments.value) == true) 
		cw_commentsError = cw_FieldEmptyError;

	if ( cw_firstNameError 		!= cw_FieldNoError ||
	     cw_lastNameError 		!= cw_FieldNoError ||
	     cw_emailFormatError	!= cw_FieldNoError ||
	     cw_confirmEmailError	!= cw_FieldNoError ||
	     cw_commentsError 		!= cw_FieldNoError ) {
		
		cw_HandleErrorAlert();
		cw_HandleErrorLabels(form);
		return false;
	}
	else {
		// We made it. All is well.
	}
	return true;
}


function cw_HandleErrorAlert() {
	var errorstring = "";
	errorstring += "Oops... Please check your entries below and resubmit.\n";

	// Check for empty text inputs
	if ( cw_firstNameError 		== cw_FieldEmptyError) 
		errorstring += "Please enter a First name.\n";
	if ( cw_lastNameError 		== cw_FieldEmptyError)
		errorstring += "Please enter a Last name.\n";
	if ( cw_emailFormatError 	== cw_FieldEmptyError)
		errorstring += "Please enter your email.\n";
	if ( cw_confirmEmailError 	== cw_FieldEmptyError)
		errorstring += "Please confirm your email.\n";

	// check for invalid input
	if (cw_emailFormatError == cw_FieldEmailFormatError)
		errorstring += "Please enter a valid email.\n";
	if (cw_confirmEmailError == cw_FieldConfirmEmailError)
		errorstring += "Please re-enter your email or Confirm email.\n They do not match.\n";

	if ( cw_commentsError 		== cw_FieldEmptyError) 
		errorstring += "Please enter your comments.\n";

	alert(errorstring);
}
function cw_HandleErrorLabels(form) {
    if (document.getElementById) {
	// reset the color in case this is their second error.
	// Check for empty text inputs
	//document.getElementById("requiredLabel").style.color 		= "#f00";
	//document.getElementById("requiredLabel").style.fontStyle 	= "italic";
	if ( cw_firstNameError 		!= cw_FieldNoError) {
		document.getElementById("firstNameLabel").style.color 	= "#f00";
		document.getElementById("firstNameLabel").style.fontStyle 	= "italic";
	}
	else {
		document.getElementById("firstNameLabel").style.color 		= "#666666";
		document.getElementById("firstNameLabel").style.fontStyle 	= "normal";
	}
	if ( cw_lastNameError 		!= cw_FieldNoError) {
		document.getElementById("lastNameLabel").style.color 		= "#f00";
		document.getElementById("lastNameLabel").style.fontStyle	= "italic";
	}
	else {
		document.getElementById("lastNameLabel").style.color 		= "#666666";
		document.getElementById("lastNameLabel").style.fontStyle 	= "normal";
	}
	if ( cw_emailFormatError 	!= cw_FieldNoError) {
		document.getElementById("emailLabel").style.color 		= "#f00";
		document.getElementById("emailLabel").style.fontStyle 		= "italic";
	}
	else {
		document.getElementById("emailLabel").style.color 		= "#666666";
		document.getElementById("emailLabel").style.fontStyle 		= "normal";
	}
	if ( cw_confirmEmailError 	== cw_FieldEmptyError || cw_confirmEmailError == cw_FieldConfirmEmailError) {
		document.getElementById("confirmEmailLabel").style.color 	= "#f00";
		document.getElementById("confirmEmailLabel").style.fontStyle 	= "italic";
	}
	else {
		document.getElementById("confirmEmailLabel").style.color 	= "#666666";
		document.getElementById("confirmEmailLabel").style.fontStyle 	= "normal";
	}
	if ( cw_commentsError 		!= cw_FieldNoError)  {
		document.getElementById("commentsLabel").style.color 		= "#f00";
		document.getElementById("commentsLabel").style.fontStyle 		= "italic";
	}
	else {
		document.getElementById("commentsLabel").style.color 		= "#666666";
		document.getElementById("commentsLabel").style.fontStyle 		= "normal";
	}
    }
}

function cw_IsEmpty(str) {
	// Doesn't catch white space
	if (str == null || str == "") {
		return true;
	}
	return false;
}
function cw_IsPosInteger(val) {
	str = val.toString();
	for (var i = 0; i < str.length; i++) {
		var thisChar = str.charAt(i);
		if (thisChar < "0" || thisChar > "9") {
			return false;
		}
	}
	return true;
}
function cw_IsAlpha(str) {
	// This allows 'a-z' 'A-Z' '.' '-' and backspace
	var isalpha = false;
	//if (charCode == 8) {
	//	return true;
	//}
	for (var i = 0; i < str.length; i++) {
		var thisChar = str.charAt(i);
		if ((thisChar >= "a" && thisChar <= "z") || 
		    (thisChar >= "A" && thisChar <= "Z") || 
		     thisChar == "." || thisChar == '-' || thisChar == " " || thisChar == "'") {
			 isalpha = true;
		}
		else {
			return false;
		}
	}
	return true;
}
function cw_ValidatePosIntLen(str,len) {
	if (cw_IsEmpty(str) == true) {
		return cw_FieldEmptyError;
	}
	else if (str.length != len) {
		return cw_FieldLenError;
	}
	else if (cw_IsPosInteger(str) == true) {
		// It's not empty, it's the right lenght, and it contains only numbers.
		return cw_FieldNoError;
	}
	else return cw_FieldIntError;
}

function cw_ValidateAlpha(str,len) {
	if (cw_IsEmpty(str) == true) {
		return cw_FieldEmptyError;
	}
	else if (cw_IsAlpha(str) == true) {
		// It's not empty, and it only contains what we are considering letters.
		return cw_FieldNoError;
	}
	else return cw_FieldAlphaError;
}
function cw_ValidateEmail(str) {
	// Must a have one and only one '@' not as the first or last character.
	// The '@' must be followed by a '.'.
	// Must have at least one '.' not the first or last character.
	// Cannot have a ' '.

	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (cw_IsEmpty(str) == true) {
		return cw_FieldEmptyError;
	}
	if (str.indexOf(at)==-1) {
		return cw_FieldEmailFormatError;
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) {
		return cw_FieldEmailFormatError;
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) {
		return cw_FieldEmailFormatError;
	}
	if (str.indexOf(at,(lat+1))!=-1) {
		return cw_FieldEmailFormatError;
	}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) {
		return cw_FieldEmailFormatError;
	}
	if (str.indexOf(dot,(lat+2))==-1) {
		return cw_FieldEmailFormatError;
	}
	if (str.indexOf(" ")!=-1) {
		return cw_FieldEmailFormatError;
	}
	return cw_FieldNoError;					
}
function cw_ValidateZIP(str) {
	if (cw_IsEmpty(str) == true) {
		return cw_FieldEmptyError;
	}
	if (str.length == 5) {
		return cw_ValidatePosIntLen(str,5);
	}
	return cw_FieldLenError;
}
function cw_CheckEnter(e) {
	var charCode = (navigator.appName == "Netscape") ? e.which : e.keyCode;
	status = charCode;
	if (charCode == 13) {
		return false;
	}
	return true;
}
function cw_CheckEnterInt(e) {
	var charCode = (navigator.appName == "Netscape") ? e.which : e.keyCode;
	status = charCode;
	if (charCode == 13) {
		return false;
	}
	if (charCode == 8 || charCode == 9) {
		return true;
	}
	if (charCode == 0) { // this is what gets sent for a tab
		return true;
	}
	if (charCode < 48 || charCode > 57) {
		return false;
	}
	return true;
}
function KeyPress(what,e,max,action) {
    if (document.layers) {
        if (e.target.value.length >= max)
            eval(action);
    }
    else if (document.all) {
        if (what.value.length > (max-1))
            eval(action);
    }
}
