function getDomDocumentPrefix(){
	if(getDomDocumentPrefix.prefix)return 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 getDomDocumentPrefix.prefix=prefixes[i];
		}catch(ex){};
	}
	throw new Error("Could not find an installed XML parser");
}
function getXmlHttpPrefix() {
	if (getXmlHttpPrefix.prefix)return getXmlHttpPrefix.prefix;
	var prefixes=["MSXML2", "Microsoft", "MSXML", "MSXML3"];
	var o;
	for(var i=0;i<prefixes.length;i++){
		try {
			o=new ActiveXObject(prefixes[i] + ".XmlHttp");
			return getXmlHttpPrefix.prefix=prefixes[i];
		}catch(ex){};
	}
	throw new Error("Could not find an installed XML parser");
}
//////////////////////////
// XmlHttp factory
function XmlHttp() {}

XmlHttp.create=function(){
	try{
			return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");
	}catch(ex){}
	throw new Error("Your browser does not support XmlHttp objects");
};
////////////////////////
// XmlDocument factory
function XmlDocument(){}
XmlDocument.create=function(){
	try {
		return new ActiveXObject(getDomDocumentPrefix() + ".DomDocument");
	}catch(ex){}
	throw new Error("Your browser does not support XmlDocument objects");
};
//get Xml Document from a XML Data Island
//or Load it directly
function getXmlDocument(o){
	if(typeof(o.XMLDocument) == "undefind"){
		var xml=XmlDocument.create();
		xml.async=false;
		xml.load(o.src);
		return xml;
	}else return o.XMLDocument;
}
//get Xml Document from a XML String
function getXmlDocumentFromString(_xmlstr1){
	if(_xmlstr1!=null){
		var xml=XmlDocument.create();
		xml.async=false;
		xml.loadXML(_xmlstr1);
		return xml;
	}else return null;
}
function getNodeValue(_node1,_xpath1,_defaultvalue){
	if(_node1!=null||_node1!=""){
		if(_xpath1!=null||_xpath1!=""){
			var tmp=_node1.selectSingleNode(_xpath1);
			if(tmp!=null)return tmp.text;
			else return _defaultvalue;
		}else return _node1.text;
	}else return _defaultvalue;
}
function getNodeAttribute(_node1,_xpath1,_defaultvalue){
	if(_node1!=null||_node1!=""){
		if(_xpath1!=null||_xpath1!=""){
			var tmp=_node1.selectSingleNode(_xpath1);
			if(tmp!=null)return tmp.text;
			else return _defaultvalue;
		}else return _node1.text;
	}else return _defaultvalue;
}

 