﻿function GetXmlDocument(data) {
    var xmlDoc;
    if (window.DOMParser) {
        parser = new DOMParser();
        xmlDoc = parser.parseFromString(data, "text/xml");
    }
    else // IE
    {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(data);
    }
    return xmlDoc;
}

function SelectSingleNode(xmlDoc, elementPath) {
    if (window.ActiveXObject) {
        return xmlDoc.selectSingleNode(elementPath);
    }
    else {
        var xpe = new XPathEvaluator();
        var nsResolver = xpe.createNSResolver(xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
        var results = xpe.evaluate(elementPath, xmlDoc, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
        return results.singleNodeValue;
    }
}

function SelectNodes(xmlDoc, elementPath) {
    if (window.ActiveXObject) {
        return xmlDoc.selectNodes(elementPath);
    }
    else {
        return xmlDoc.getElementsByTagName(elementPath);
    }
}

function GetNodeValue(xmlNode) {
    if (xmlNode) {
        if (window.DOMParser) {
            return (xmlNode.childNodes[0].nodeValue);
        }
        else {
            return xmlNode.text;
        }
    }
    return null;
}

function GetAttributeValue(xmlNode, name) {
    if (xmlNode) {
        if (window.DOMParser) {
            return (xmlNode.attributes[name].value);
        }
        else {
            return xmlNode.getAttribute(name);
        }
    }
    return null;
}

function select_innerHTML(objeto, innerHTML) {
    /******
    * select_innerHTML - corrige o bug do InnerHTML em selects no IE
    * Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228
    * Versão: 2.1 - 04/09/2007
    * Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br
    * @objeto(tipo HTMLobject): o select a ser alterado
    * @innerHTML(tipo string): o novo valor do innerHTML
    *******/
    objeto.innerHTML = ""
    var selTemp = document.createElement("micoxselect")
    var opt;
    selTemp.id = "micoxselect1"
    document.body.appendChild(selTemp)
    selTemp = document.getElementById("micoxselect1")
    selTemp.style.display = "none"
    if (innerHTML.toLowerCase().indexOf("<option") < 0) {//se não é option eu converto
        innerHTML = "<option>" + innerHTML + "</option>"
    }
    innerHTML = innerHTML.replace(/<option/g, "<span").replace(/<\/option/g, "</span")
    selTemp.innerHTML = innerHTML;


    for (var i = 0; i < selTemp.childNodes.length; i++) {
        var spantemp = selTemp.childNodes[i];

        if (spantemp.tagName) {
            opt = document.createElement("OPTION")

            if (document.all) { //IE
                objeto.add(opt)
            } else {
                objeto.appendChild(opt)
            }

            //getting attributes
            for (var j = 0; j < spantemp.attributes.length; j++) {
                var attrName = unescape(spantemp.attributes[j].nodeName);
                var attrVal = unescape(spantemp.attributes[j].nodeValue);
                if (attrVal) {
                    try {
                        opt.setAttribute(attrName, attrVal);
                        opt.setAttributeNode(spantemp.attributes[j].cloneNode(true));
                    } catch (e) { }
                }
            }
            //getting styles
            if (spantemp.style) {
                for (var y in spantemp.style) {
                    try { opt.style[y] = spantemp.style[y]; } catch (e) { }
                }
            }
            //value and text
            opt.value = spantemp.getAttribute("value")
            opt.text = spantemp.innerHTML
            //IE
            opt.selected = spantemp.getAttribute('selected');
            opt.className = spantemp.className;
        }
    }
    document.body.removeChild(selTemp)
    selTemp = null
}    
