//
// AJAX/XML FUNKTIONER
//

function parseXml(xml) {
    dom = createXmlDom();
    if (window.ActiveXObject){
      dom.loadXML(xml);
    }else if ((typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined')){
      var parser = new DOMParser();
      dom = parser.parseFromString(xml, "text/xml");
      delete parser;
    }else{
      alert("XMLDom ikke understøttet.");
    }
    return dom;
}

function createXmlDom() {
    var dom = null;
    if (window.ActiveXObject){
      dom = new ActiveXObject("Microsoft.XMLDOM");
      dom.setProperty("SelectionLanguage", "XPath");
      dom.async = false;
    }else if ((typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined')){
      implementFirefoxSelect();
      dom = document.implementation.createDocument("", "doc", null);
      dom.async = false;
    }else{
      alert("XMLDom ikke understøttet.");
    }
    return dom;
}  

function implementFirefoxSelect() {
    if( document.implementation.hasFeature("XPath", "3.0") ){
      XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
      {
      if( !xNode ) { xNode = this; } 
      var oNSResolver = this.createNSResolver(this.documentElement)
      var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
      var aResult = [];
      for( var i = 0; i < aItems.snapshotLength; i++)
      {
        aResult[i] =  aItems.snapshotItem(i);
      }
      return aResult;
    }
    XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode)
    {
      if( !xNode ) { xNode = this; } 
      var xItems = this.selectNodes(cXPathString, xNode);
      if( xItems.length > 0 )
      {
        return xItems[0];
      }
      else
      {
        return null;
      }
    }
    Element.prototype.selectNodes = function(cXPathString)
    {
      if(this.ownerDocument.selectNodes)
      {
        return this.ownerDocument.selectNodes(cXPathString, this);
      }
      else{throw "For XML Elements Only";}
    }
    Element.prototype.selectSingleNode = function(cXPathString)
    {	
      if(this.ownerDocument.selectSingleNode)
      {
        return this.ownerDocument.selectSingleNode(cXPathString, this);
      }
      else{throw "For XML Elements Only";}
    }
    Node.prototype.transformNode = function (oXslDom) {
        var oProcessor = new XSLTProcessor();
        oProcessor.importStylesheet(oXslDom);
        var oResultDom = oProcessor.transformToDocument(this);
        var sResult = serializeDom(oResultDom);
        if (sResult.indexOf("<transformiix:result") > -1) {
            sResult = sResult.substring(sResult.indexOf(">") + 1, 
                                        sResult.lastIndexOf("<"));
        }
        return sResult;                
      }
    }
}

function getTagVal(i_dom, i_tag) {
  try {
    var x=i_dom.getElementsByTagName(i_tag);
    return x[0].childNodes[0].nodeValue;
  } catch(err) {
    return "";
  }
}

function getTagVal2(loader, i_tag) {
	var result = loader.doXPath(i_tag);
	for(var i=0;i<result.length;i++){
		return(result[i].childNodes[0].nodeValue)
	}
}
