function Ajax()
{

  this.createXMLHttp = function()
  {
    var oXMLHttp;

    try
    {
      oXMLHttp = new XMLHttpRequest();
    }
    catch(e)
    {
      var XmlHttpVersions = new Array
                                (
                                  "MSXML2.XMLHttp.6.0",
                                  "MSXML2.XMLHttp.5.0",
                                  "MSXML2.XMLHttp.4.0",
                                  "MSXML2.XMLHttp.3.0",
                                  "MSXML2.XMLHttp",
                                  "Microsoft.XMLHttp"
                                );

      for(var i = 0; i < XmlHttpVersions.length && !oXMLHttp; i++)
      {
        try
        {
          oXMLHttp = new ActiveXObject(XmlHttpVersions[i]);
        }
        catch(e) {}
      }
    }

    if(!oXMLHttp)
      throw("Can not create XMLHttpRequest object");
    else
      return oXMLHttp;
  }

  this.get = function(sUrl, oRequest)
  {
    var oXMLHttp = this.createXMLHttp();

    oXMLHttp.open("get", sUrl, true);

    oXMLHttp.onreadystatechange = function()
    {
      if(oRequest.onLoading && oXMLHttp.readyState == 1)
      {
        oRequest.onLoading();
      }

      if(oRequest.onLoaded && oXMLHttp.readyState == 4)
      {
        if(oXMLHttp.status == 200)
        {
          oRequest.onLoaded(oXMLHttp);
        }
        else if(oRequest.onError)
        {
          oRequest.onError(oXMLHttp);
        }
      }
    }

    oXMLHttp.send(null);
  }
}

String.prototype.trim = function()
{
  return this.replace(/^\s+|\s+$/g,"");
}