/*
Author:  Peter Schart, modified (slightly) by David Coleman

Purpose: Validates form data and uses AJAX to return a confirmation message

Notes:  I wouldn't pay $1 for this smelly script.
*/


var xmlHttp = false;
var inc_url = location.href;
var cgiPath = '/cgi-bin/info_request.pl?'
var counselorType = "";
var states = 'AL,AK,AZ,AR,CA,CO,CT,DE,DC,FL,GA,HI,ID,IL,IN,IA,KS,KY,LA,ME,MD,MA,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VT,VA,WA,WV,WI,WY';

try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    xmlHttp = false;
  }
}

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); }

function submitForm() {
	var errors = "";
	
	var fname       = trimString(document.getElementById("firstName").value, " ");
	var lname       = trimString(document.getElementById("lastName").value, " ");
	var email       = trimString(document.getElementById("email").value, " ");
	var phone       = trimString(document.getElementById("phone").value, " ");
	var fax			= trimString(document.getElementById("fax").value, " ");
	/*var schoolname  = trimString(document.getElementById("schoolName").value, " ");*/
	var address1    = escape(document.getElementById("address1").value);
	var address2    = escape(document.getElementById("address2").value);
	
	var city        = trimString(document.getElementById("city").value, " ");
	var st			= document.getElementById("state").value.toUpperCase();
	var zip			= document.getElementById("zipcode").value;
	var comments = trimString(document.getElementById("comments").value, " "); 
	var selectedOption = null;
	var classification = document.getElementsByName("classification");
	for (var i = 0; i < classification.length; i++) {
		if (classification[i].checked) {
			selectedOption = classification[i].value;
		}
	}	
	/*var numstudents	= document.getElementById("numStudents").value;
	var numseniors	= document.getElementById("numSeniors").value;
	var whereHeard	= "*unspecified*", whereOther = "";*/
	
	if (fname == "" || fname == null) errors += "First name is missing<br>";
	if (lname == "" || lname == null) errors += "Last name is missing<br>";
	if (email == "" || email == null) { errors += "Email address is missing<br>"; }
	else if (!(email.match(/^(((\w+\-*\w+)|\w+)+\.??)+\@(((\w+\-*\w+)|(\w+))\.)+\w+$/))) { errors += "The email address you entered is invalid<br>"; }
	if (phone == "" || phone == null) { errors += "Phone number is missing<br>"; }
	else if (!(phone.match(/^[1]*\D*\d{3}\D*\d{3}\D*\d{4}.*/))) { errors += "Invalid Phone number format, see examples<br>"; }
	/*if (schoolname == "" || schoolname == null) errors += "School name is missing<br>";*/
	if (address1 == "" || address1 == null) errors += "Address is missing<br>";
	if (city == "" || city == null) errors += "City is missing<br>";
	if (st == "" || st == null) errors += "State (abbreviated) is missing<br>";
	if (st.length != 2) errors += "Invalid state abbreviation.<br>";
	else if (states.indexOf(st) < 0) errors += "'" + st + "' is not a valid state abbreviation<br>";
	if (zip == "" || zip == null) errors += "Zip code is missing<br>";
	if (selectedOption == "" || selectedOption == null) errors += "Please select an option<br />";
	/*if (document.getElementById("choiceCounselor").checked) {
		counselorType = 1;
		if (numstudents == "" || numstudents == null) errors += "Number of students is missing<br>";
		if (numseniors == "" || numseniors == null) errors += "Number of seniors is missing<br>";
	} else {
		counselorType = 2;
		numstudents = "";
		numseniors = "";
	}*/
	
	/*if (document.getElementById("choiceMailing").checked) {
		whereHeard = "Mailing";
	} else if (document.getElementById("choiceStudent").checked) {
		whereHeard = "Student";
	} else if (document.getElementById("choiceOther").checked) {
		whereHeard = "Other:";
		whereOther = escape(document.getElementById("otherField").value);
	}*/
	
	if (errors != "") {
		var errordiv = document.getElementById("errordiv");
		errors = "<p style=\"color: white; background-color: #CC3333; padding: 3px;\">Some of the required information is missing or invalid. Please correct the following errors then click 'Submit' again:</p><p>" + errors + "</p>";
		errordiv.innerHTML = errors;
		errordiv.style.display = "block";
	} else {
		var url = cgiPath;
		document.getElementById("errordiv").style.display = "none";
		url += "fname=" + escape(fname) + "&lname=" + escape(lname) + "&email=" + escape(email) + "&phone=" + escape(phone) + "&fax=" + escape(fax) + "&sname=" + /*escape(schoolname) +*/ "&address=" + address1 + "&address2=" + address2 + "&city=" + escape(city) + "&st=" + st + "&zip=" + escape(zip) + "&comments=" + escape(comments) + "&option=" + selectedOption; /*+ "&whereheard=" + whereHeard + "&whereother=" + whereOther;*/
		/*if (counselorType == 1) {
			url += "&numstudents=" + escape(numstudents);
			url += "&numseniors=" + escape(numseniors);
		}*/
		
		// Open a connection to the server
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = updatePage;
		xmlHttp.send(null);
		document.getElementById("liveContent").style.display='block';
		self.scrollTo(0,0);
		document.getElementById("liveContent").innerHTML = "<br>Your request is being processed. Please wait..<br><br> &nbsp; <img src=\"_images/loading.gif\" alt=\"Loading...\">";
	}
}

function showHidePopulation(vis) {
	if (vis == 1) { 	document.getElementById("population").style.display = "block"; } // High School guidance counselor
	else { document.getElementById("population").style.display = "none"; } // College Advisor
}

function updatePage() {
  if (xmlHttp.readyState == 4) {
    var response = xmlHttp.responseText;
    document.getElementById("liveContent").innerHTML = response;
  }
}

function showHideOtherField() {
	var isChecked = document.getElementById("choiceOther").checked;
	if (isChecked) {
		document.getElementById("otherdiv").style.display = "block";
	} else {
		document.getElementById("otherdiv").style.display = "none";
	}
}

function trimString(str, unwanted) {
	var start = 0, end = str.length-1;
	while (str.charAt(start) == unwanted) start++;
	while (str.charAt(end) == unwanted) end--;
	if (start > end) return "";
	else return (str.substring(start, end+1));
}
