//holds an instance of XMLHttpRequestObject
//XMRO = XMLHttpRequestObject
var xmlHttp = createXmlHttpRequestObject();
var file = "feedback.php";
var dirOfFile = "./";
var specifiedPath = dirOfFile + file;

//creates xmlhttprequest instance
function createXmlHttpRequestObject() {
	//store reference to xmlhttprequest (XHRO)
	var xmlHttp;
	//for all browsers except IE6 and older
	try {
		//try to create XMRO
		xmlHttp = new XMLHttpRequest();
	}
	catch (e) {
		//if older, let's try
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
										"MSXML2.XMLHTTP.5.0",
										"MSXML2.XMLHTTP.4.0",
										"MSXML2.XMLHTTP.3.0",
										"MSXML2.XMLHTTP",
										"Microsoft.XMLHTTP");
		//now loop through and try each one until we get an object
		for (var i=0; i < XmlHttpVersions.length && !xmlHttp; i++) {
			try {
				//try to create XMRO
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch (e) {
				//code
			}
		}
	}	
	//return created object or display error message
	if (!xmlHttp) {
		alert("Error creating XMLHttpRequest object.");
	} 
	else {
		return xmlHttp;
	}
}

//read file from server
function connectToServer(params) {
	//if xmlHttp is valid, continue
	if (xmlHttp) {
		//connect?
		try {
			//try to connect to server to read file
			xmlHttp.open("POST", specifiedPath, true);
			xmlHttp.onreadystatechange = handleRequestStateChange;
			xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xmlHttp.setRequestHeader("Content-length", params.length);
			xmlHttp.setRequestHeader("Connection", "close");
			xmlHttp.send(params);
		}
		//error?
		catch (e) {
			alert("Can't connect to server: \n" + e.toString());
		}
	}
}

//handleRequestStateChange
//function that will be called via a timer to keep checking the status of our XRMO
function handleRequestStateChange() {
	//when state is 4, ready to get responser
	if (xmlHttp.readyState == 4) {
		//is status ok?
		if (xmlHttp.status == 200) {
			try {
				handleServerResponse();
			}
			catch(e) {
				alert("Error reading response from server: " + e.toString());
			}
		}
		else {
			//display status message
			alert("There was a problem retrieving the data:\n" + xmlHttp.statusText);
		}
	}
}

//handleServerResponse
//grabs output from server, formats and displays it 
function handleServerResponse() {
	//read message from server
	var xmlResponse = xmlHttp.responseXML;
	//catch any potential errors with IE/Opera
	if (!xmlResponse || !xmlResponse.documentElement) {
		throw("Invalid XML Structure IE/Opera:\n" + xmlHttp.responseText);
	}
	
	//catch errors with FF
	var rootNodeName = xmlResponse.documentElement.nodeName;
	if (rootNodeName == "parsererror") { throw("FF: Invalid XML Structure"); }
	
	//obtain XML's document element
	xmlRoot = xmlResponse.documentElement;
	messageArray = xmlRoot.getElementsByTagName("message");
	resultArray = xmlRoot.getElementsByTagName("result");
	
	//generate HTML output
	for (var i=0; i < messageArray.length; i++) {
		result_message = messageArray.item(i).firstChild.data;
		result_number = resultArray.item(i).firstChild.data;
	}
	
	responseElement = document.getElementById("formMessage");
	responseElement.innerHTML = result_message;
	//the class is now added into the html document
	//responseElement.className += " highlight"; //automatically assign highlight tag, remove it only if successful
	
	
	if (result_number == 1) {
		//responseElement.className = "";
		document.getElementById("contactForm").style.display = "none";
	}
}

//submit()
//grab email from input and send it to connectToServer
function submit() {
	if (document.getElementById("inputEmail").value != "" & document.getElementById("inputMessage").value != "") {
		var params = "email="+encodeURI(document.getElementById("inputEmail").value);
		params += "&message="+encodeURI(document.getElementById("inputMessage").value);

		connectToServer(params);
	}
	else {
		alert("Please fill out all the fields.");
	}
}