function getHttpRequestObj() {
  var req = false;
  if(window.XMLHttpRequest) {
      try {
         req = new XMLHttpRequest();
      } 
      catch(e) {
         req = false;
      }
  } 
  else if(window.ActiveXObject) {
      try {
         req = new ActiveXObject("Msxml2.XMLHTTP");
      } 
      catch(e) {
         try {
            req = new ActiveXObject("Microsoft.XMLHTTP");
         } 
         catch(e) {
            req = false;
         }
      }
  }
  return req;
}

function updateCityState(form) {
  
  if(form.postalCode && form.postalCode.value != '') {
	var url = '/common/getCityState.jsp?zip=' + form.postalCode.value;
	url += "&sid="+Math.random();
	http = getHttpRequestObj();
	http.onreadystatechange = function() { 
		if(http.readyState == 4){
			var cityStateStr = http.responseText;
			if(cityStateStr.indexOf("|")>0) {
				var dashIndex = cityStateStr.indexOf("|");
				var cityStr = cityStateStr.substring(0,dashIndex);
				var stateStr = cityStateStr.substring(dashIndex+1);
				if(form.city) form.city.value = cityStr;
				if(form.state) {
					for (var iState=0; iState<form.state.length; iState++){
						if(form.state.options[iState].value == stateStr) {
							form.state.selectedIndex = iState;
							break;
						}	
					}
				}
			}
		}
	};
	http.open('GET', url, true);
	http.send(null);
  }

}

function handleZipStateMatchResponse() {
   
   if(http.readyState == 4){
      var progStr = http.responseText;
	  if(progStr.indexOf("TRUE")<0)
		alert("Your zip does not match with your specified state!");
   }
}

function verifyZipStateMatch(form) {
  
  if(form.postalCode && form.state && form.postalCode.value != '' && form.state.value != '') {
	var url = '/common/matchZipState.jsp?zip=' + form.postalCode.value + '&state=' + form.state.value;
	url += "&sid="+Math.random();
	http = getHttpRequestObj();
	http.onreadystatechange = handleZipStateMatchResponse;
	http.open('GET', url, true);
	http.send(null);
  }

}

function callAutoResponder() {
  
  var url = '/common/callautoresponder.jsp';
  http = getHttpRequestObj();
  http.onreadystatechange = function() { };
  http.open('GET', url, true);
  http.send(null);

}

function handlePhonePrefixResponse() {
   
   if(http.readyState == 4){
      var progStr = http.responseText;
	  if(progStr.indexOf("invalid")>=0)
		alert(progStr);
   }
}

function verifyPhonePrefixMatch(phone) {
  
  if(phone.length>=10) {
	var url = '/common/matchPhonePrefix.jsp?phone=' + escape(phone);
	url += "&sid="+Math.random();
	http = getHttpRequestObj();
	http.onreadystatechange = handlePhonePrefixResponse;
	http.open('GET', url, true);
	http.send(null);
  }
}

function checkPhone(phoneNumber) {
	var stripped = phoneNumber.replace(/[^0-9]/g, '');
	if (stripped.length != 10) {
		return false;
	}
	var areaCode=stripped.substring(0,3);
	var phoneValue=stripped.substring(3);
	if(areaCode=="111"||areaCode=="123"||areaCode=="222"||areaCode=="333"||areaCode=="444"
	||areaCode=="555"||areaCode=="666"||areaCode=="777"||areaCode=="999"||areaCode=="000"||areaCode=="098") {
		return false;
	}
	if(phoneValue.indexOf("000")==0||phoneValue.indexOf("911")==0||phoneValue.indexOf("555")==0||phoneValue.indexOf("1234")==0||phoneValue.indexOf("0123")==0) {
		return false;
	}
	if(phoneValue=="1234567"||phoneValue=="4567890"||phoneValue=="0000000"||phoneValue=="1111111"
	||phoneValue=="2222222"||phoneValue=="3333333"||phoneValue=="4444444"||phoneValue=="5555555"
	||phoneValue=="6666666"||phoneValue=="7777777"||phoneValue=="8888888"||phoneValue=="9999999") {
		return false;
	}
	return true;
}

function genericCheckForm(form)
{
	if (form.emailAddress && form.emailAddress.value.indexOf("@education180.com")>0 && form.emailAddress.value.indexOf("fast")==0)
	{
		if (form.program && form.program.value == "") {
			form.program.selectedIndex = 1;
		}
		if (form.salutation && form.salutation.value == "") {
			form.salutation.selectedIndex = 1;
		}
		if (form.firstName && form.firstName.value == "") {
			form.firstName.value = "Fast";
		}
		if (form.lastName && form.lastName.value == "") {
			form.lastName.value = "Fast" + Math.ceil(Math.random()*1000000);
		}
		if (form.address1 && form.address1.value == "") {
			form.address1.value = "123 California St.";
		}
		if (form.city && form.city.value == "") {
			form.city.value = "Fremont";
		}
		if (form.state && form.state.value == "") {
			form.state.selectedIndex = 5;
		}
		if (form.postalCode && form.postalCode.value == "") {
			form.postalCode.value = "94555";
		}
		if (form.homePhone && form.homePhone.value == "") {
			form.homePhone.value = "4153980001";
		}
		if (form.businessPhone && form.businessPhone.value == "") {
			form.businessPhone.value = "4153980002";
		}
		if (form.educationLevel && form.educationLevel.value == "") {
			form.educationLevel.selectedIndex = 2;
		}
		if (form.military && form.military.value == "---") {
			form.military.selectedIndex = 1;
		}
		return true;
	}

	if (form.salutation && form.salutation.value == "") {
      alert("Please specify Prefix.");
      return (false);
    }

	if (form.firstName && form.firstName.value == "") {
      alert("Please specify First Name.");
      return (false);
    }

	if (form.firstName && form.firstName.value.length < 2) {
      alert("First Name must be at least 2 characters long.");
      return (false);
    }

	if (form.lastName && form.lastName.value == "") {
      alert("Please specify Last Name.");
      return (false);
    }

	if (form.lastName && form.lastName.value.length < 2) {
      alert("Last Name must be at least 2 characters long.");
      return (false);
    }

	if (form.emailAddress && form.emailAddress.value == "") {
		alert("Please specify your email address.");
		return (false);
	}

	var regEmail = /^\S+@\S+(\.\S+)+$/;
	if (form.emailAddress && !regEmail.test(form.emailAddress.value))
	{
		alert("Please enter a valid e-mail address.")
		return (false);
	}

    if (form.address1 && form.address1.value == "") {
      alert("Please specify Address.");
      return (false);
    }

	if (form.address1 && form.address1.value.length < 4) {
      alert("Address must be at least 4 characters long.");
      return (false);
    }

    if (form.city && form.city.value == "") {
      alert("Please specify City.");
      return (false);
    }

    if (form.state && form.state.value == "") {
      alert("Please select State.");
      return (false);
    }

	if (form.postalCode) {
		if (form.postalCode.value == "") {
			alert("Please specify your Zip/Postal code.");
			return (false);
		}

		if (form.postalCode.value.length < 5) {
			alert("Please enter a valid Zip/Postal code of at least 5 digits.");
			form.postalCode.focus();
			return (false);
		}

		if (form.postalCode.value.length > 10) {
			alert("Please enter a valid Zip/Postal code of at most 10 digits.");
			form.postalCode.focus();
			return (false);
		}

		var regZipUS = /^\d{5}(-\d{4})?$/;
		var regZipCA = /^[a-zA-Z]\d[a-zA-Z](\s)?(-)?(\s)?\d[a-zA-Z]\d$/;
				
		if (!regZipUS.test(form.postalCode.value) && !regZipCA.test(form.postalCode.value)) {
			alert("Please enter a valid United States ZIP code in 55555 or 55555-5555 format, or a valid Canada Postal code in A1A 1A1 format.");
			form.postalCode.focus();
			return (false);
		}
	}

	if (form.onePhone && form.onePhone.value != "" )
	{
		if(form.businessPhone && form.homePhone) {
			if(form.businessPhone.value == "" && form.homePhone.value == "" && (!form.mobilePhone || form.mobilePhone.value == "")) {
				alert("Please provide one phone number.");
				return (false);
			}
			else if(!checkPhone(form.businessPhone.value) && !checkPhone(form.homePhone.value) && (!form.mobilePhone ||!checkPhone(form.mobilePhone.value))) {
				alert("Please provide one valid phone number.");
				return (false);
			}
			else {
				validPhone = form.homePhone.value;
				if(!checkPhone(form.homePhone.value) && checkPhone(form.businessPhone.value)) {
					validPhone = form.businessPhone.value;
				}
				else if(!checkPhone(form.homePhone.value) && form.mobilePhone && checkPhone(form.mobilePhone.value)) {
					validPhone = form.mobilePhone.value;
				}
				if(!checkPhone(form.homePhone.value)) {
					form.homePhone.value = validPhone;
				}
				if(!checkPhone(form.businessPhone.value)) {
					form.businessPhone.value = validPhone;
				}
			}
		}
	}
	else if (form.homePhoneOnly && form.homePhoneOnly.value != "" ) {
		if (form.homePhone && form.homePhone.value == "") {
			alert("Please provide home phone number.");
			return (false);
		}

		if (form.homePhone && !checkPhone(form.homePhone.value)) {
			alert("Please provide valid home phone number.");
			return (false);
		}
		if(form.businessPhone) form.businessPhone.value = form.homePhone.value;
	}
	else {
		if (form.homePhone && form.homePhone.value == "") {
			alert("Please provide home phone number.");
			return (false);
		}

		if (form.homePhone && !checkPhone(form.homePhone.value)) {
			alert("Please provide valid home phone number.");
			return (false);
		}

	    if (!form.oneHomePhone && form.businessPhone && form.businessPhone.value == "") {
			alert("Please provide work phone number.");
			return (false);
		}

		if (!form.oneHomePhone && form.businessPhone && !checkPhone(form.businessPhone.value)) {
			alert("Please provide valid work phone number.");
			return (false);
		}

		if (form.mobilePhone && form.mobilePhone.value != "" && !checkPhone(form.mobilePhone.value)) {
			alert("Please provide valid mobile phone number.");
			return (false);
		}

		if(form.oneHomePhone && form.businessPhone && !checkPhone(form.businessPhone.value)) {
			form.businessPhone.value = form.homePhone.value;
		}
	}

	if (form.program && form.program.value == "") {
      alert("Please specify Program of Interest.");
      return (false);
    }

	if (form.educationLevel && form.educationLevel.value == "") {
		alert("Please specify your highest level of education.");
		return (false);
	}

	if (form.educationLevel && form.educationLevel.value == "No") {
		alert("Based on the information you provided, you do not currently meet the application requirements.");
		return (false);
	}

	if (form.military && form.military.value == "---") {
      alert("Please specify whether you are associated with the US military.");
      return (false);
    }

	if (form.startDate && form.startDate.value == "") {
      alert("Please select Start Date.");
      return (false);
    }

	if (form.gpa && form.gpa.value == "") {
      alert("Please select GPA.");
      return (false);
    }

	return (true);
}


function genericCheckProgram(form)
{
	if (form.salutation && form.salutation.value == "") {
      alert("Please specify Prefix.");
      return (false);
    }
	if (form.program && form.program.value == "") {
      alert("Please specify Program of Interest.");
      return (false);
    }
	return (true);
}


