function addLoadEvent(func) {
	var previousonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			previousonload();
			func();
		}
	}
}

function getHTTPObject() {
	var xhr = false;
	if (window.XMLHttpRequest) {
		xhr = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				xhr = false;
			}
		}
	}
	return xhr;
}

function displaySending(element) {
	var image = document.createElement("img");
	image.setAttribute("src", "../wp-content/themes/hyperlative/graphics/sending.gif");
	image.setAttribute("alt", "sending ...");
	element.appendChild(image);
}

function insertResponse(request, formcontainerid) {
	if (request.readyState == 4) {
		if (request.status == 200 || request.status == 304) {
			var formcontainer = document.getElementById(formcontainerid);
			formcontainer.innerHTML = request.responseText;
			prepareForm();
		}
	}
}

function processForm(formdata, formlocation, formcontainerid) {
	var request = getHTTPObject();
	if (request) {
		displaySending(document.getElementById("button"));
		request.onreadystatechange = function() {
			insertResponse(request, formcontainerid);
		};

	// alert(formdata); display POST array contents for debugging

	request.open("POST", formlocation, true);
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.send(formdata);
	return true;
	} else {
	return false;
	}
}

function prepareForm() {
	var formid = "contactform";
	var formlocation = "../wp-content/themes/hyperlative/includes/contactform.inc.php";
	var formcontainerid = "form";
	
	if (!document.getElementById || !document.getElementById(formid)) {
	return;
	}

	document.getElementById(formid).onsubmit = function() {
		var formdata = "";
		for (var i=0; i<this.elements.length; i++) {
			formdata+= this.elements[i].name;
			formdata+= "=";
			formdata+= escape(this.elements[i].value);
			formdata+= "&";
		}

		return !processForm(formdata, formlocation, formcontainerid);
	};
}

addLoadEvent(prepareForm);