function XMLDoc(xmlURL, xslURL) {
   this.setXML = XMLDocSetXML;
   this.loadXML = XMLDocLoadXML;
   this.loadXSL = XMLDocLoadXSL;
   this.transform = XMLDocTransform;
   this.getDoc = XMLDocGetDoc;
   this.getXML = XMLDocGetXML;
   if (xmlURL) {
      this.loadXML(xmlURL);
   }
   if (xslURL) {
      this.loadXSL(xslURL);
   }
}

function XMLDocSetXML(xml) {
   if (!this.doc) {
      this.doc = new ActiveXObject("MSXML.DOMDocument");
   }
   this.doc.async = false;
   this.doc.loadXML(xml);
   if (this.doc.parseError.errorCode != 0) {
      alert(this.doc.parseError.reason + ': ' + this.doc.parseError.line);
   }
}

function XMLDocLoadXML(url) {
   this.xmlURL = url;
   if (!this.doc) {
      this.doc = new ActiveXObject("MSXML.DOMDocument");
   }
   this.doc.async = false;
   this.doc.load(url);
   if (this.doc.parseError.errorCode != 0) {
      alert(this.doc.parseError.reason + ': ' + this.doc.parseError.line);
   }
}

function XMLDocLoadXSL(url) {
   this.xslURL = url;
   if (!this.xsl) {
      this.xsl = new ActiveXObject("MSXML.DOMDocument");
   }
   this.xsl.async = false;
   this.xsl.load(url);
}

function XMLDocTransform(id) {
   if (this.xsl && this.doc) {
      var obj = document.getElementById(id);
      obj.innerHTML = this.doc.transformNode(this.xsl);
   }
}

function XMLDocGetDoc() {
   return(this.doc);
}

function XMLDocGetXML() {
   if (this.doc) {
      return(this.doc.xml);
   }
}
