// JavaScript Document

/* How to use
	var url = "scripts/actions.asp"
	var params = "dataType=searchUsers&searchText=SearchME"
	ajObj = new ajaxObj(url, params, myCallBack);
	ajObj.request();	
}

function myCallBack(returnString) {
	if(returnString.length != 0){
		alert(returnString)
	} 
}
*/


function ajaxObj(url, params, callBack, method, passObjs) {
	this.url = url;
	this.params = params;
	this.callBack = callBack;
	this.passObjs = passObjs;
	if (method != "") {this.method = method;}
}

ajaxObj.prototype.url = "";
ajaxObj.prototype.params = "";
ajaxObj.prototype.callBack = "";
ajaxObj.prototype.loadElement = "";
ajaxObj.prototype.loadingText = "";
ajaxObj.prototype.returnText = "";
ajaxObj.prototype.method = "get";
ajaxObj.prototype.passObjs = false;
ajaxObj.prototype.ajaxReq = new Object();

ajaxObj.prototype.abort = function() {
	if (this.ajaxReq) {
		this.ajaxReq.abort();	
	}
}

ajaxObj.prototype.request = function() {

	var randItem =  '&sid=' + new Date().getTime(); 	//Randomize the url to prevent caching
	this.params += randItem
	if (document.getElementById(this.loadingElement)!= undefined) {
		document.getElementById(this.loadingElement).innerHTML = this.loadingText;
	}

	var ajObj = this;
	this.returnFunction = this.callBack;
	this.ajaxReq = this.objAjax();
	this.ajaxReq.onreadystatechange=function() {ajObj.loadpage()};
	if (this.method == "post") {
		this.ajaxReq.open("POST", this.url, true);
		this.ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		//this.ajaxReq.setRequestHeader("Content-length", this.params.length);
		//this.ajaxReq.setRequestHeader("Connection", "close");
		this.ajaxReq.send(this.params);
	} else {
		this.ajaxReq.open('GET', this.url + "?" + this.params, true)
		this.ajaxReq.send(null)
	}
}


ajaxObj.prototype.loadpage = function() {
	if (this.ajaxReq.readyState == 4  || window.location.href.indexOf("http")==-1){
		if (this.ajaxReq.status==200){
			if(this.ajaxReq.responseText.length != 0){
				this.returnText = this.ajaxReq.responseText;
			} else {
				this.returnText = "No Data Available"
			}
		} else {
			this.returnText = "No Data Available"
		}
		if (this.passObjs) {
			this.returnFunction(this.returnText, this.passObjs);
		} else {
			this.returnFunction(this.returnText);
		}
	}
}

ajaxObj.prototype.objAjax = function() {
	var ajaxReqXXXX = false

	if (window.XMLHttpRequest){ // if Mozilla, Safari etc
		ajaxReqXXXX = new XMLHttpRequest()
	}else if (window.ActiveXObject){ // if IE
		try {
			ajaxReqXXXX = new ActiveXObject("Msxml2.XMLHTTP")
		} 
		catch (e){
			try{
				ajaxReqXXXX = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch (e){
				alert("You are running a unsupported browser");
			}
		}
	}else{
		return false
	}
	return ajaxReqXXXX
}
