var XMLDocument = {
	create : function (sXML) {
		return this.xmlDocument(sXML);
	},
	getDomDocumentPrefix : function(){
		if(this.getDomDocumentPrefix.prefix)
			return this.getDomDocumentPrefix.prefix;
		var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
		var o;
		for(var i = 0; i < prefixes.length; i++){
			try{
				o = new ActiveXObject(prefixes[i] + ".DomDocument");
				return this.getDomDocumentPrefix.prefix = prefixes[i];
			}
			catch (ex){	};
		}	
		throw new Error("No XML parser");
	},
	xmlDocument : function(sXML){
		try{		
			if(document.implementation && document.implementation.createDocument) {
				var oParser = new DOMParser();
				oDoc = oParser.parseFromString(sXML, "text/xml");
				return oDoc;
			}
			if(window.ActiveXObject) {
				var oDoc = new ActiveXObject(this.getDomDocumentPrefix() + ".DOMDocument");
				if(oDoc){
					oDoc.async = false;
					oDoc.loadXML(sXML);		
					return oDoc;
				}
			}
		} catch(e) { 
			alert("Error: " + e.description);
		};
		return false;
	},
	getText : function(oNode) {
		if(document.implementation && document.implementation.createDocument) {	
			return oNode.nodeValue;
		};
		if(window.ActiveXObject) {		
			return oNode.text;
		};
	},
	removeChildren : function(oParent) {
		for(var i = 0; i < oParent.childNodes.length; i++) {
			XMLDocument.removeChildren(oParent.childNodes[i]);
			oParent.removeChild(oParent.childNodes[i]);
		};
	}
};
