
function ajaxCreateMsxml2DOMDocumentObject() {

  var msxml2DOM = null;

  // MSXML versions that can be used for our grid
  var msxml2DOMDocumentVersions = new Array("MSXML2.DOMDocument.6.0",
                                            "MSXML2.DOMDocument.5.0",
                                            "MSXML2.DOMDocument.4.0");

  // try to find a good MSXML object
  for (var i = 0; i < msxml2DOMDocumentVersions.length && !msxml2DOM; i++) {
    try {
      msxml2DOM = new ActiveXObject(msxml2DOMDocumentVersions[i]);
    } catch (e) {
      // Do Nothing
    }
  }

  if (msxml2DOM != null) {
    return msxml2DOM;
  } else {
    alert("Please upgrade your MSXML version from \n" +
          "http://msdn.microsoft.com/XML/XMLDownloads/default.aspx");
  }
  return null;
}

// creates an XMLHttpRequest instance
function ajaxCreateXmlHttpRequestObject() {

  var ajaxXMLhttp = null;

  try {
    ajaxXMLhttp = 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 && !ajaxXMLhttp; i++) {
      try {
        ajaxXMLhttp = new ActiveXObject(XmlHttpVersions[i]);
      } catch (e) {
        // Do Nothing
      }
    }
  }

  if (ajaxXMLhttp != null) {
    return ajaxXMLhttp;
  } else {
    alert("Error creating the XMLHttpRequest object.");
  }
  return null;
}

