var READY_STATE_UNINITIALIZED=0;
var READY_STATE_LOADING=1;
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3;
var READY_STATE_COMPLETE=4;

function AjaxRequest(url){
	
	var xmlHttp=__getXMLHTTPRequest();
	var requestURL=url;
	var queryString="";
	var method="GET";;
	var postRequest;
	var debug=false;
	var returnType="xml";
	var async=true;
	
	this.setReturnType=function(type){
		returnType=type;
	}
	
	this.setQueryString=function(query){
		queryString=query;
	}
	
	this.setRequestURL=function(url){
		requestURL=url;	
	}	
	
    this.setPostRequest = function(func) {
        postRequest = func;
    }
    this.setUsePOST = function() {
        method = "POST";
    }
    this.setUseGET = function() {
        method = "GET";
    }
    this.setDebug=function(){
    	debug=true;
    }
    this.setAsync=function(as){
    	async=as;
    }    
	
    this.sendRequest = function() {    	

        if(requestURL.indexOf("?") > 0) {
            requestURL = requestURL + "&ts=" + new Date().getTime();
        }
        else {
            requestURL = requestURL + "?ts=" + new Date().getTime();
        }

        if(method == "GET") {
            if(queryString.length > 0) {
                requestURL = requestURL + "&" + queryString;
            }
            xmlHttp.open(method, requestURL, async);
            xmlHttp.send(null);
        }
        else {
            xmlHttp.open(method, requestURL, async);
            if (xmlHttp.overrideMimeType) {
                xmlHttp.setRequestHeader("Connection", "close");
            }			
            xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
            xmlHttp.send(queryString);
        }
        xmlHttp.onreadystatechange=onReadyState;
    }

    function onReadyState() {
    	var ready=xmlHttp.readyState;
    	if(ready!=READY_STATE_COMPLETE){
    		return;
    	}
    	if(xmlHttp.status==200){
    		if(debug){
    			alert("The responseText value is: \n"+xmlHttp.responseText);	
    		}
    		var doc=null;
    		if(returnType=="xml"){
				doc = xmlHttp.responseXML.documentElement;							
    		}else if(returnType="text"){
				doc = xmlHttp.responseText;
    		}
			if(postRequest!=null){				
				postRequest(doc);
			}
    	}
    }    
}

function __getXMLHTTPRequest() {
	var xRequest=null;
	if (window.XMLHttpRequest) {
		xRequest=new XMLHttpRequest();
	}else if (typeof ActiveXObject != "undefined"){
		xRequest=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xRequest;
}