var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadedobjects=""
var rootdomain="http://"+window.location.hostname
var pagekey=1 //set a POST pagekey for pages requiring loading in main site

function makeGETRequest(url, containerid, callback){
	url = unescape(url);
	if(!containerid){containerid='document';}
	var page_request = false;
	if (window.XMLHttpRequest) {// if Mozilla, Safari etc
		page_request = new XMLHttpRequest();
	} else if (window.ActiveXObject){ // if IE
		try { page_request = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (e){
			try{ page_request = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch (e){}
		}
	} else {
		return false;
	}
	page_request.onreadystatechange=function(){
		loadpage(page_request, containerid, callback);
	}
	if (bustcachevar) //if bust caching of external page
		var bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
	try {
	page_request.open('GET', url+bustcacheparameter, true);
	page_request.send(null);
	} catch (e) {
	}
}

function makePOSTRequest(url, containerid, parameters, callback) {
	if (pagekey){
		parameters = "pkey=1&" + parameters;
	}else{
		if(!parameters) makeGETRequest(url, containerid);
		return;
	}
	url = unescape(url);
	var page_request = false;
	if (window.XMLHttpRequest) { // if Mozilla, Safari etc
		page_request = new XMLHttpRequest();
		if (page_request.overrideMimeType) {
			page_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // if IE
		try { page_request = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (e) {
			try { page_request = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch (e) {}
		}
	} else {
		return false;
	}
	if(containerid || callback){
		page_request.onreadystatechange=function(){
			loadpage(page_request, containerid, callback);
		}
	}
	if (bustcachevar) //if bust caching of external page
		var bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
	//alert( url+bustcacheparameter );
	page_request.open('POST', url+bustcacheparameter, true);
	page_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	page_request.setRequestHeader("Content-length", parameters.length);
	page_request.setRequestHeader("Connection", "close");
	page_request.send(parameters);
}

function loadpage(page_request, containerid, callback){
	if(containerid)
		var x=findObj(containerid)
		if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){

			if(callback){
				eval(callback + "('" + escape(page_request.responseText) + "','" + containerid + "')" );
			}else{
				if(containerid){
					x.innerHTML=page_request.responseText;
				}
			}
		}else if (page_request.readyState == 4 && (page_request.status==404 || window.location.href.indexOf("http")==-1)){
			if(callback){
				alert("Page Not Found");
			}else{
				if(containerid){
					x.innerHTML="Page Not Found";
				}
			}
		}
}

function postconstruct(u,c,f,e) {
	if(f){
		var i;
		var postvar = "";
		var theForm = document.forms[f];
		var felements = theForm.elements.length;
		for(i=0; i<felements; i++){
			if(theForm.elements[i].type == "hidden" || theForm.elements[i].type == "text"|| theForm.elements[i].type == "textarea" || theForm.elements[i].type == "submit"){
				postvar += theForm.elements[i].name + "=" + postencode(theForm.elements[i].value,e);
				if(i!=(felements-1)) postvar += "&";
			}
			else if(theForm.elements[i].type == "radio"){
				if(theForm.elements[i].checked == true){
					postvar += theForm.elements[i].name + "=" + postencode(theForm.elements[i].value,e);
					if(i!=(felements-1)) postvar += "&";
				}
			}
			else if(theForm.elements[i].type == "select-one"){
				postvar += theForm.elements[i].name + "=" + postencode(theForm.elements[i].value,e);
					if(i!=(felements-1)) postvar += "&";
			}
		}
	}else{
		postvar = "query=true";
	}
	makePOSTRequest(u,c,postvar);
}

function postencode(string,e){
	if(e)
		string=escape(string);
	string=encodeURI(string);
	return string;
}
function loadobjs(){
for (i=0; i<arguments.length; i++){
var file=arguments[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a css file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
}

function findObj(n, d) {
	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}