var xmlHttp;
var errorImage = "<img src=images/exclamation.png>";

function createXMLHttpRequest() {				
	try {			
		xmlHttp = new XMLHttpRequest();
	}
	catch (e) {			
		try {			
			xmlHttp = new ActiveXObject( "Msxml2.XMLHTTP" );
		}
		catch (e) {
			try {
				xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" );
			}
			catch (e) {
				alert( "Your browser does not support AJAX!" );
				return false;
			}
		}
	}
}

function createQueryString() {
	var name = document.getElementById("name").value;
	var organization = document.getElementById("organization").value;
	var emailAddress = document.getElementById("emailAddress").value;
	var telephone = document.getElementById("telephone").value;
	var address = document.getElementById("address").value;		
	var typeOfPlan = document.getElementById("typeOfPlan").value;
	var totalAssets = document.getElementById("totalAssets").value;
	var totalMembershipActive = document.getElementById("totalMembershipActive").value;
	var retired = document.getElementById("retired").value;
	var other = document.getElementById("other").value;
	var numberOfPensionStaff = document.getElementById("numberOfPensionStaff").value;
	var comments = document.getElementById("comments").value;

	var queryString = "name=" + name 
		+ "&organization=" + organization 
		+ "&emailAddress=" + emailAddress 
		+ "&telephone=" + telephone
		+ "&address=" + address
		+ "&typeOfPlan=" + typeOfPlan 
		+ "&totalAssets=" + totalAssets 
		+ "&totalMembershipActive=" + totalMembershipActive 
		+ "&retired=" + retired
		+ "&other=" + other
		+ "&numberOfPensionStaff=" + numberOfPensionStaff
		+ "&comments=" + comments;

	return queryString;
}

function isValid() {
	var isValid = true;
	resetForm();

	if (document.getElementById("name").value == "") {		
		document.getElementById("name").className = "validationError";
		document.getElementById("errorName").innerHTML = errorImage + "  Please enter your name.";
		document.getElementById("errorName").style.display = "block";
		document.getElementById("errorName").style.color = "#d70000";		 	 
		isValid = false;
	}
		
	if (document.getElementById("organization").value == "") {		
		document.getElementById("organization").className = "validationError";
		document.getElementById("errorOrg").innerHTML = errorImage + "  Please enter the name of your organization.";
		document.getElementById("errorOrg").style.display = "block";
		document.getElementById("errorOrg").style.color = "#d70000";
		isValid = false;
	}		
	
	if (document.getElementById("emailAddress").value == "" || !checkValidEmailAddress()) {		
		document.getElementById("emailAddress").className = "validationError";
		document.getElementById("errorEmail").innerHTML = errorImage + "  The email address entered is invalid.";
		document.getElementById("errorEmail").style.display = "block";
		document.getElementById("errorEmail").style.color = "#d70000";
		isValid = false;
	}		

	if (document.getElementById("telephone").value == "") {
		document.getElementById("telephone").className = "validationError";
		document.getElementById("errorTelephone").innerHTML = errorImage + "  The telephone number entered is invalid.";
		document.getElementById("errorTelephone").style.display = "block";
		document.getElementById("errorTelephone").style.color = "#d70000";

		isValid = false;
	}

	if (isValid) {
		doPostRequest();
	}
}

function resetForm() {
	document.getElementById("name").className = "formTextField";
	document.getElementById("errorName").style.display = "none";
	document.getElementById("organization").className = "formTextField";
	document.getElementById("errorOrg").style.display = "none";
	document.getElementById("emailAddress").className = "formTextField";
	document.getElementById("errorEmail").style.display = "none";
	document.getElementById("telephone").className = "formTextField";
	document.getElementById("errorTelephone").style.display = "none";
}

function doPostRequest() {		
	createXMLHttpRequest();
	var url = "processForm.php";
	var queryString = createQueryString();		
	xmlHttp.open("POST", url, true);
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(queryString);
}

function handleStateChange() {		
	if ( xmlHttp.readyState == 4 ) {				
		if ( xmlHttp.status == 200 ) {										
			parseResults();				
		}
	}
}

function parseResults() {
	var elmId = "confirmMessage";
	var elm = document.getElementById(elmId);
	if (elm) {
		elm.style.display = "block";	
		document.getElementById("middleContent").style.display = "none";
	}
}

function checkValidEmailAddress() {	
	var valueToValidate = document.getElementById("emailAddress").value;
	var theRegExp = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;

	if (theRegExp.test(valueToValidate)) {
		return true;
	}

	return false;
}