
function JXmlDom (xml,isFile) {
    this.load=load;
    this.loadXML=loadXML;
    this.selectNodes=selectNodes;
    this.text=text;
    this.selectSingleNode=selectSingleNode;
    this.documentElement=documentElement;
    this.transformNode=transformNode;
    if (isFile) {
        this.dom=this.load (xml);
       
    }else {
        this.dom=this.loadXML (xml);
        
    }
    
    function load (xml) {
        if (window.ActiveXObject) {
    		var dom=new ActiveXObject("Microsoft.XMLDOM");
        }
    	if (document.implementation && document.implementation.createDocument) {
    		var dom=document.implementation.createDocument("","",null);
    	}
    	dom.async=false;
    	dom.load (xml);
    	return dom;
    }
    
    function loadXML (xml) {
         if (window.ActiveXObject) {
    		var dom=new ActiveXObject("Microsoft.XMLDOm");
    		dom.async=false;
    	    dom.loadXML (xml);
        }
    	if (document.implementation && document.implementation.createDocument) {
    		var domParser=new DOMParser();
    		var dom=domParser.parseFromString (xml,"text/xml");
			//alert(dom.createNSResolver(dom.documentElement).lookupNamespaceURI("soap"));
			
    	}
    	return dom;
    }
    
    function selectNodes (xpath) {
        if (window.ActiveXObject) {
            var nodes=this.dom.selectNodes (xpath);
            var arr=new Array();
            for (var i=0;i<nodes.length;i++) {
                arr[i]=nodes[i];
           }
            return arr;
        }
       if (document.implementation && document.implementation.createDocument) {
           var result=this.dom.evaluate (xpath,this.dom,this.dom.createNSResolver(this.dom.documentElement),0,null);
		   var arr=new Array();
           var row;
          while ((row=result.iterateNext())) {
               arr[arr.length]=row;
           }
           return arr;
       }
    }
    
    function selectSingleNode (xpath) {
         if (window.ActiveXObject) {
            return this.dom.selectSingleNode (xpath);
        }
       if (document.implementation && document.implementation.createDocument) {
          var result=this.dom.evaluate (xpath,this.dom,this.dom.createNSResolver(this.dom.documentElement),9,null);
		  return result.singleNodeValue;
       }
    }
    function text (node) {
        if (node.childNodes[0]) {
            return node.childNodes[0].nodeValue;
        }else {
            return " ";
        }
    }
    
    function transformNode (xsl,id) {
        if (window.ActiveXObject) {
            return this.dom.transformNode (xsl.dom);
        }
        if (document.implementation && document.implementation.createDocument) {
            var xsltProcessor=new XSLTProcessor ();
            xsltProcessor.importStylesheet (xsl.dom);
            return xsltProcessor.transformToFragment(this.dom, document);
            
            
        }
    }
    
    function documentElement() {
        return this.dom.documentElement;
    }
    
}

function getXmlHttpObject() {
	 if (window.ActiveXObject) {
		 return new ActiveXObject("Microsoft.XMLHTTP");
	 }
	 if (document.implementation && document.implementation.createDocument) {
		 return new XMLHttpRequest();
	 }

}