// constructor function for an XML request object;

function XMLDoc(id) {
	
	var me = this;
	var req = null;
	this.id = id;
	
	// alert("xmldoc: "+id);
	
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = null;
		}
		// branch for IE/Windows ActiveX versions
	} else if (window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = null;
			}
		}
	} else {
		alert("This website requires a browser with XML support, such as IE5+/Windows, Mozilla, Safari 1.2, or Opera 8.");
	}
	
	// preserve reference to request object for later
	this.request = req;
	
	// "public" method to be invoked whenever
	this.loadXMLDoc = function(url, loadHandler) {
		if (this.request) {
			this.request.open("GET", url, true);
			this.request.onreadystatechange = function () {loadHandler(me)};
			this.request.setRequestHeader("Content-Type", "text/xml");
			this.request.send("");
		}
	};
	
	
	this.loadXMLDocViaPost = function(url, loadHandler, parameters) { 
		if (this.request) {
			this.request.open('POST', url, true);
			this.request.onreadystatechange = function () {loadHandler(me)};
			this.request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			this.request.setRequestHeader("Content-length", parameters.length);
			// this.request.setRequestHeader("Connection", "close");
			this.request.send(parameters);
		}
	};
	
}

function randomString() { // fort fooling ie7 into ajax refresh
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}

function packageFormValues(formID, action)
{
	var str = "action=" + encodeURI(action);
	var elem = document.getElementById(formID).elements;
	for(var i = 0; i < elem.length; i++) {
		if (elem[i].name != "action") {
			str += "&" + elem[i].name + "=" + encodeURI(((elem[i].type == "checkbox") ? elem[i].checked : elem[i].value));
		}
	}
	return str;
}

function postContact(formID, action) {
	var contactRequest = new XMLDoc();
	var parameters = packageFormValues(formID, action);
	contactRequest.loadXMLDocViaPost("/contact.php?" + randomString() , showContactResult, parameters);
}

function showContactResult(req) {
	req = req.request;
    if ((req.readyState== 4 && req.status == 200) || (req.readyState== "complete")) { 
        document.getElementById("contactForm").innerHTML = req.responseText;
    } 
} 

