function makeHttpObjRequest (config)
{
  if(!config||!config.url)
  {
    return(false);
  }
  var httpObj=getHTTPObject();
  if(!httpObj)
  {
    return(false);
  }
  var method=(config.method&&(typeof(config.method)=="string")) ? 
      config.method : "GET";
  httpObj.open(method, config.url, true);
  if(method=="POST")
  {
    try
    {
      httpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
    } catch (e) {}
  }
  httpObj.onreadystatechange= config.onreadystatechange ?
	config.onreadystatechange : 
	function(event) {httpObjJSONReceive(event,httpObj,config);};
  httpObj.send(config.body ? config.body : null);
  return(httpObj);
}

function httpObjJSONReceive(event,httpObj,config)
{
  if (httpObj.readyState == 4) 
  {
    var resultObj={};
    var status=-1;
    try
    {
      if(httpObj.status)
      {
	status=httpObj.status;
	resultObj.status=httpObj.status;
      }   
      if(httpObj.statusText)
      {
	resultObj.statusText=httpObj.statusText;
      }
    }
    catch(e) {};
    try
    {
      resultObj.responseObj=eval(httpObj.responseText);
    }
    catch(e)
    {
      status=-2;
    }
    if((status>=200)&&(status<300))
    {
      if(config.onsuccess)
      {
	config.onsuccess(event,resultObj,httpObj,config);
      }
    }
    else if(config.onerror)
    {
	config.onerror(event,resultObj,httpObj,config);
    }
    // destroy httpObj FINISH
    delete httpObj.onreadystatechange;
  }
}

function getHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}

if(compat&&(compat.level>=2)&&(getHTTPObject()))
{
  compat.XMLHttpRequest=true;
  if(compat.level==2) compat.level=3;
}
