function ValidateForm(form)
{	
	if (!CheckRequired(form.first, 'Please enter a First Name.'))
		return false;
	if (!CheckRequired(form.last, 'Please enter a Last Name.'))
		return false;
	if (!CheckRequired(form.address1, 'Please enter a Address.'))
		return false;
	if (!CheckRequired(form.city, 'Please enter a City.'))
		return false;
	if (!CheckSelect(form.state, 'Please select a State.'))
		return false;
	if (!CheckRequired(form.zipcode, 'Please enter a Zip Code.'))
		return false;
	if (!CheckNumeric(form.zipcode, 'Please enter a valid Zip Code.'))
		return false;
			if (!CheckRequired(form.phone, 'Please enter a daytime phone number.'))
		return false;
	if (!CheckEmail(form.email, 'Please enter a valid Email Address.'))
		return false;
	if (form.natureOfrequest && !CheckSelect(form.natureOfrequest, 'Please select the nature of your request.'))
		return false;
	if (!CheckRequired(form.question, 'Please enter a Question or Comment.'))
		return false;
	if (!CheckMessageLength(form.question))
	return false;
	
						
	return true;
}
function CheckMessageLength(field, message){
	if (field.value.length > 255)
	 {
		alert('Please limit your message to 255 characters. Your message is currently ' + field.value.length + ' characters long.');
		field.focus();
		return false;
		 }

	return true;
}
function CheckRequired(field, message) {
	if (field.value.length == 0)
	 {
		alert(message);
		field.focus();
		return false;
	 }

	return true;
}
function CheckRadio(field,message)
{
	// first option [0] is invalid
	for (i=0; i < field.length; i++){
		if (field[i].checked)
		return true;
	}
	alert(message);
	return false;
}
function CheckSelect(field, message) {
	// first option [0] is invalid
	for (i=1; i < field.length; i++){
		if (field.options[i].selected)
		return true;
	}
	alert(message);
	field.focus();
	return false;	
}
function CheckEmail(field, message) {
  if (!isEmail(field.value)){
		alert(message);
		field.focus();
		return false;
	}
	return true;
}
function CheckNumeric(field, message){
	if (!isNumeric(field.value)){
		alert(message);
		field.focus();
		return false;
	}
	return true;
}
function CheckDate(fieldMonth, fieldDay, fieldYear, message){
	if (!isDate(fieldMonth.value,fieldDay.value,fieldYear.value)){
		//alert(message);
		fieldMonth.focus();
		return false;
	}
	return true;
}
function isNumeric(num){
	var charset = "0123456789";
	for (var i=0;i<num.length;i++)
		if (charset.indexOf(num.substr(i,1))<0){
			return false;
		}
	return true;
}
function isDate(strMonth,strDay,strYear){
  var var_date = new Date(strYear,strMonth-1,strDay);
	if (var_date.getDate() != strDay)
  {
    alert("The month you have selected has no " + strDay +"th day");
    return false;
  } 
 return true;
}
function isEmail(str) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported){
		if ((str.indexOf(".") == 0) || (str.indexOf("@") == 0)){
			return false;
		} else {
			return true;
		}
	}
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  if (!r1.test(str) && r2.test(str)){
		return true;
	} else {
		return false;
	}
}

var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
	// onKeyUp="return autoTab(this, 3, event);"
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length >= len && !containsElement(filter,keyCode)) {
		input.value = input.value.slice(0, len);
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}
	function containsElement(arr, ele) {
		var found = false, index = 0;
		while(!found && index < arr.length)
		if(arr[index] == ele)
		found = true;
		else
		index++;
		return found;
	}
	function getIndex(input) {
		var index = -1, i = 0, found = false;
		while (i < input.form.length && index == -1)
		if (input.form[i] == input)index = i;
		else i++;
		return index;
	}
	return true;
}
