// constructor function for an XML request object;

function randomString() { // for 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 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);
		}
	};
		
}


// this function called onload(); initiates all ajax functionality

function initPage () {
	// alert ("init login");

		//alert ("finding ad space...");

	if (document.getElementById("rightColumnContentSpace")) {
		// var rightAdColumnRequest = new XMLDoc();
		// rightAdColumnRequest.loadXMLDoc("/rc3.php?" + randomString(), showRightColumnContent);
		//alert ("Ad space!");
		
	} else {
		//alert ("No ad space!");
	}

	if (document.getElementById("leftColumnContentSpace")) {
		var rightAdColumnRequest = new XMLDoc();
		rightAdColumnRequest.loadXMLDoc("/leftcol.php?" + randomString(), showLeftColumnContent);
		//alert ("Ad space!");
	} else {
		//alert ("No ad space!");
	}

	if (document.getElementById("contact")) {
		var contactRequest = new XMLDoc();
		contactRequest.loadXMLDoc("/contact.php?" + randomString(), showContactContent);
		//alert ("Ad space!");
		
	} else {
		//alert ("No ad space!");
	}

	
}


// httprequest utility functions

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;
}


// ad functions

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

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

// contact functions

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

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("contact").innerHTML = req.responseText;
    } 
} 
