﻿function CriarDocumentoXML(p_strXML) {
    var docXML = null;
    if (window.ActiveXObject) {
        docXML = new ActiveXObject("Microsoft.XMLDOM");
        docXML.async = "false";
        docXML.loadXML(p_strXML);
    }
    if (document.implementation.createDocument) {
        docXML = (new DOMParser()).parseFromString(p_strXML, "text/xml");
    }
    
    return docXML;
}

function RetornarNode(p_docXML, p_blnContexto, p_strNodeName, p_strAttributeName, p_strAttributeValue) {
    if (window.ActiveXObject) {
        if (p_strAttributeName == null || p_strAttributeName == "") {
            return p_docXML.selectSingleNode((p_blnContexto ? "" : "//") + p_strNodeName);
        } else {
            return p_docXML.selectSingleNode((p_blnContexto ? "" : "//") + p_strNodeName + "[@" +
                p_strAttributeName + "='" + p_strAttributeValue + "']");
        }        
    } else {
        var arrNodes = null;
        
        if (p_blnContexto) {
            arrNodes = new Array();
            
            for (var i = 0; i < p_docXML.childNodes.length; i++) {
                if (p_docXML.childNodes[i].nodeName == p_strNodeName) {
                    arrNodes.push(p_docXML.childNodes[i]);
                }
            }
        } else {
            arrNodes = p_docXML.getElementsByTagName(p_strNodeName);
        }
        
        if (p_strAttributeName == null || p_strAttributeName == "") {
            return (arrNodes.length > 0 ? arrNodes[0] : null);
        }

        for (var i = 0; i < arrNodes.length; i++) {
            if (arrNodes[i].getAttribute(p_strAttributeName) == p_strAttributeValue) {
                return arrNodes[i];
            }
        }

        return null;
    }
}

function ProcurarNodes(p_docXML, p_blnContexto, p_strNodeName, p_strAttributeName, p_strAttributeValue) {
    if (window.ActiveXObject) {
        if (p_strAttributeName == null || p_strAttributeName == "") {
            return p_docXML.selectNodes((p_blnContexto ? "" : "//") + p_strNodeName);
        } else {
            return p_docXML.selectNodes((p_blnContexto ? "" : "//") + p_strNodeName + "[@" +
                p_strAttributeName + "='" + p_strAttributeValue + "']");
        }        
    } else {
        var arrNodes = null;
        
        if (p_blnContexto) {
            arrNodes = new Array();
            
            for (var i = 0; i < p_docXML.childNodes.length; i++) {
                if (p_docXML.childNodes[i].nodeName == p_strNodeName) {
                    arrNodes.push(p_docXML.childNodes[i]);
                }
            }
        } else {
            arrNodes = p_docXML.getElementsByTagName(p_strNodeName);
        }

        var arrRetorno = new Array();
        
        if (p_strAttributeName == null || p_strAttributeName == "") {
            return (arrNodes.length > 0 ? arrNodes : null);
        }

        for (var i = 0; i < arrNodes.length; i++) {
            if (arrNodes[i].getAttribute(p_strAttributeName) == p_strAttributeValue) {
                arrRetorno.push(arrNodes[i]);
            }
        }

        return (arrRetorno.length > 0 ? arrRetorno : null);
    }
}

function RecuperarTextoNode(p_objNode) {
    if (window.ActiveXObject) {
        return p_objNode.text;
    } else {
        return p_objNode.textContent;
    }
}