var defaultHttpRequest = null;
function sendHttpRequest(requestUrl, callbackFunc, useDefault,isAsynch){
	var httpRequest = null;
   	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		httpRequest = new XMLHttpRequest();
       	if (httpRequest.overrideMimeType) {
         	httpRequest.overrideMimeType("text/xml");
       	}
    } 
    else if (window.ActiveXObject) { // IE
        try {
          	httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) {
	        try 
	        {
	            httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	        } catch (e) {}
        }
    }
    if (!httpRequest) {
        alert("Cannot create an XMLHTTP instance.");
        return;
    }
    
    if(useDefault==null||useDefault==true)
    	defaultHttpRequest = httpRequest;
    if(callbackFunc!=null)
    	httpRequest.onreadystatechange = function(){callbackFunc(httpRequest)};
    if(isAsynch==null)
    	isAsynch=true;
	httpRequest.open("GET", appendQueryString(requestUrl, "time="+new Date()), isAsynch);
	httpRequest.send(null);
	
	return httpRequest;
}
function isHttpRequestReady(httpRequest){
	if(httpRequest==null)
		httpRequest = defaultHttpRequest;

	if (httpRequest.readyState == 4) {
       	if (httpRequest.status == 200) {
       		return true;
       } 
   }
   return false;
}

var moAjaxRequest = new AjaxRequest();
function AjaxRequest(){
	this.CallBackFunc = null;
	this.HttpRequest = null;
	this.ReceiveAnswer = ARReceiveAnswer;
	this.CreateRequest = ARCreateRequest;
	this.SendRequest = ARSendRequest;
}

function ARCreateRequest() {
   	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		this.HttpRequest = new XMLHttpRequest();
       	if (this.HttpRequest.overrideMimeType) {
         	this.HttpRequest.overrideMimeType("text/xml");
       	}
    } 
    else if (window.ActiveXObject) { // IE
        try {
          	this.HttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) {
	        try 
	        {
	            this.HttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	        } catch (e) {}
        }
    }
    if (!this.HttpRequest) {
        alert("Cannot create an XMLHTTP instance.");
        return;
    }
}

function ARSendRequest(tsRequestUrl){
  	this.HttpRequest = null;
	this.CreateRequest();
	this.HttpRequest.onreadystatechange = this.ReceiveAnswer;
	this.HttpRequest.open("GET", appendQueryString(tsRequestUrl, "time="+new Date()), true);
	this.HttpRequest.send(null);
}
function ARReceiveAnswer(httpRequest) {
	if (moAjaxRequest.HttpRequest.readyState == 4) {
       	if (moAjaxRequest.HttpRequest.status == 200) {
       		if(moAjaxRequest.CallBackFunc!=null)
       			moAjaxRequest.CallBackFunc(moAjaxRequest.HttpRequest);
       } else {
         	
         	return;
       }
   }
}	    	

function postHttpRequest(requestUrl, callbackFunc, sendParam,useDefault,isAsynch){
	var httpRequest = null;
   	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		httpRequest = new XMLHttpRequest();
       	if (httpRequest.overrideMimeType) {
         	httpRequest.overrideMimeType("text/xml");
       	}
    } 
    else if (window.ActiveXObject) { // IE
        try {
          	httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) {
	        try 
	        {
	            httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	        } catch (e) {}
        }
    }
    if (!httpRequest) {
        alert("Cannot create an XMLHTTP instance.");
        return;
    }
    
    if(useDefault==null||useDefault==true)
    	defaultHttpRequest = httpRequest;
    if(callbackFunc!=null)
    	httpRequest.onreadystatechange = function(){callbackFunc(httpRequest)};
    if(isAsynch==null)
    	isAsynch=true;
	httpRequest.open("POST", appendQueryString(requestUrl, "time="+new Date()), isAsynch);
    httpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	httpRequest.send(sendParam);
	
	return httpRequest;
}
