/************************************************
 * cross-platform create XMLHttpRequest & XMLDOM
 * version: 1.0
 * date: 2009-12-01
 ************************************************/

// ActiveX object signatures for XMLHttp
var SIGNATURES_XMLHTTP = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];

// ActiveX object signatures for XMLDOM
var SIGNATURES_XMLDOM = ["MSXML2.DOMDocument.5.0", 
		"MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", 
		"MSXML2.DOMDocument", "Microsoft.XMLDOM"];

// Create a common XMLHttp
function createXMLHttpRequest(){
	if(window.XMLHttpRequest){ // Mozilla
		return new XMLHttpRequest();
	}else if (window.ActiveXObject){ // IE
		var signatures = SIGNATURES_XMLHTTP;
		for(var i = signatures.length - 1; i >= 0; i --){
			try{
				var xmlHttp = new ActiveXObject(signatures[i]);
				return xmlHttp;
			}catch(e){
			}
		}
	}
	return null;
}

// short for createXMLHttpRequest
function createXHR(){
	return createXMLHttpRequest();
}

// Create a common XMLDOM
function createXMLDOM(){
	if(window.ActiveXObject){
		var signatures = SIGNATURES_XMLDOM;
		for(var i = signatures.length - 1; i >= 0 ; i --){
			try{
				var xmlDom = new ActiveXObject(signatures[i]);
				return xmlDom;
			}catch(e){
			}
		}
	}else{
		var xmlDom = document.implementation.createDocument("", "", null);
		return xmlDom;
	}
	return null;
}

// Get xmldom from xmlHttpRequest
function getXMLDOM(xml_Http){
	//alert("document.all:" + document.all + "---xml_Http.responseXML:" + xml_Http.responseXML);
	//alert(!xml_Http.responseXML)
	if( !document.all || !xml_Http.responseXML ){
		var xml_Dom = createXMLDOM();
		//loadXMLFromString(xml_Dom, xml_Http.responseText);
		return xml_Dom;
	}else{
		return xml_Http.responseXML;
	}
}

// Convert text to XML DOM
function textToXMLDOM(sXML){
	var _xmlDom = null;
	if(document.all){
		_xmlDom = createXMLDOM();
		_xmlDom.loadXML(sXML);
	}else{
		var parser = new DOMParser();
		_xmlDom = parser.parseFromString(sXML, "text/xml");
	}
	return _xmlDom;
}
