// JavaScript Document
var net = new Object();
net.READY_STATE_UNINITIALIZED = 0;
net.READY_STATE_LOADING = 1;
net.READY_STATE_LOADED = 2;
net.READY_STATE_INTERACTIVE = 3;
net.READY_STATE_COMPLETE = 4;
net.responseText = ""
net.responseXml = ""
net.debug = false
net.error = false
net.returnObject = null

net.XMLHTTPRequestWrapper = function(onload, onerror) {
	this.req = null;
	this.onload = (onload) ? onload : this.defaultLoad;
	this.onerror = (onerror) ? onerror : this.defaultError;
}

net.XMLHTTPRequestWrapper.prototype.loadData = function(url, method, params, retObj, contentType) {
	net.error = false
	net.returnObject = retObj
	net.returnObject.responseText = ""
	net.returnObject.responseXml = ""
	
	if (!method) {
		method="GET";
	}
	if (!contentType && method == "POST") {
		contentType = 'application/x-www-form-urlencoded';
	}
	if (window.XMLHttpRequest) {
		this.req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		this.req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (this.req) {
		try {
			var loader = this;
			this.req.onreadystatechange = function() {
				net.XMLHTTPRequestWrapper.onReadyState.call(loader);
			}
			this.req.open(method, url, true);
			if (contentType) {
				this.req.setRequestHeader('Content-Type', contentType);
				this.req.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
				this.req.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
				this.req.setRequestHeader("Pragma", "no-cache");
			}
			this.req.send(params);
		}
		catch (err) {
			this.onerror.call(this);
		}
	}
}

net.XMLHTTPRequestWrapper.onReadyState = function() {
	var req = this.req;
	if (req.readyState == net.READY_STATE_COMPLETE) {
		if (req.status == 200 || req.status == 0) {
			//net.responseText = this.req.responseText
			//net.responseXml = this.req.responseXML
			net.returnObject.responseText = this.req.responseText
			net.returnObject.responseXml = this.req.responseXML
			this.onload.call(this);
		}else {
			if(net.debug){
				this.onerror.call(this);
			}
			net.error = true
			net.returnObject.error = true
		}
	}
}

net.XMLHTTPRequestWrapper.prototype.defaultError = function() {
	alert("error fetching data!"
	+"\n\nreadyState:" + this.req.readyState
	+"\nstatus: " + this.req.status
	+"\nheaders: " + this.req.getAllResponseHeaders());
}

net.XMLHTTPRequestWrapper.prototype.defaultLoad = function() {
	alert("Server Procedure Correctly Executed!"
	+"\n\nresponseText:" + this.req.responseText
	+"\nresponseXML: " + this.req.responseXML);
}

function ExecuteCallback(page, variables, method, receivedData, returnObject) {
	if(method && method.toUpperCase() == "POST"){
		new net.XMLHTTPRequestWrapper(receivedData).loadData(page, "POST", variables, returnObject); 
	}else{
		if(variables!=""){
			if(page.indexOf("?")!=-1){
				page += "&" + variables
			}else{
				page += "?" + variables
			}
		}
		new net.XMLHTTPRequestWrapper(receivedData).loadData(page, "GET", null, returnObject); 
	}
}





