//variable to store XMLHttpRequest object instance
var xml_http = create_xml_http_request_object();

/**
 * Function to create best available XMLHttpRequest object instance.
 */
function create_xml_http_request_object()
{
  var xml_http;

  try {
    //try to create object for no 'IE6 or older' browsers
    xml_http = new XMLHttpRequest();
  } catch(e) {
    //browser is IE6 or older
    var xml_http_versions = new Array('MSXML2.XMLHTTP.6.0',
                                      'MSXML2.XMLHTTP.5.0',
                                      'MSXML2.XMLHTTP.4.0',
                                      'MSXML2.XMLHTTP.3.0',
                                      'MSXML2.XMLHTTP',
                                      'Microsoft.XMLHTTP');

    //try all versions until success
    for (var i = 0; (i < xml_http_versions.length) && (!xml_http); i++) {
      try {
        xml_http = new ActiveXObject(xml_http_versions[i]);
      } catch(e) {
        //do nothing, try next version
      }
    }
  }

  if (!xml_http) {
    alert('Error creating XMLHttpRequest object.');
  } else {
    return xml_http;
  }
}

