function getControlPrefix() 
{
   if (getControlPrefix.prefix)
      return getControlPrefix.prefix;
   
   var prefixes = ["MSXML3","MSXML2", "Microsoft", "MSXML"];
   var o, o2;
   for (var i = 0; i < prefixes.length && !getControlPrefix.prefix; i++)
   {
      try
      {
         // try to create the objects
         o = new ActiveXObject(prefixes[i] + ".XMLHTTP");
         o2 = new ActiveXObject(prefixes[i] + ".XMLDOM");
         return getControlPrefix.prefix = prefixes[i];
      }
      catch (ex) {};
   }
   throw new Error("Could not find an installed XML parser");
}

xmlHttprequesterElement.prototype.initXmlDoc = function()
{
	this.xmldoc = new ActiveXObject(getControlPrefix() + ".XMLHTTP");
	this.xmldoc.onreadystatechange = this.onLoadFct;
}

xmlHttprequesterElement.prototype.getResponse = function()
{
	if(this.xmldoc.readyState == 4 && this.busy)
	{
		this.busy=false;
		var txt = this.xmldoc.responseText;
		var dom = this.xmldoc.responseXML;
		var docElm = dom.documentElement;
		
		if(txt.length>0 && (dom == null || docElm == null))
		{
			var dom = new ActiveXObject(getControlPrefix() + ".XMLDOM");
			var idx = txt.indexOf("?>");
			if(idx>0) txt = txt.substring(idx+2);
			dom.loadXML(txt);
		}
		this.checkResponse(dom);
	}
}
