﻿var XmlTool = 
{

ELEMENT_NODE: 1,

getSingleChildElem: function(elem, childElemTag, ignoreCase)
{
    var res = null;
    var tag2 = childElemTag;
    if (ignoreCase)
    {
        tag2 = childElemTag.toLowerCase();
    }
    
    do
    {
        var chlds = elem.childNodes;
        if (!chlds) break;
        
        for (var i = 0; i < chlds.length; ++i)
        {
            var ch = chlds[i];
            
            if (ch.nodeType != 1) continue;
            
            var nameEq = ignoreCase ? (ch.tagName.toLowerCase() == tag2) : (ch.tagName == childElemTag);
            
            if (nameEq)
            {
                res = ch;
                break;
            }
        }
    }
    while(0);
    
    return res;
},

getChildElems: function(elem, childElemTag, ignoreCase)
{
    var res = [];
    var tag2 = childElemTag;
    if (ignoreCase)
    {
        tag2 = childElemTag.toLowerCase();
    }
    
    do
    {
        var chlds = elem.childNodes;
        
        if (!chlds) break;

        for (var i = 0; i < chlds.length; ++i)
        {
            var ch = chlds[i];            
            if (ch.nodeType != 1) continue;
            
            var nameEq = ignoreCase ? (ch.tagName.toLowerCase() == tag2) : (ch.tagName == childElemTag);
            
            if (nameEq)
            {
                res.push(ch);
            }
        }
    }
    while(0);
    
    return res;
},

createDocument: function()
{
    var doc = null;
    
    if (document.implementation && document.implementation.createDocument)
    {
        doc = document.implementation.createDocument("", "", null);
    }
    else if (typeof ActiveXObject != "undefined")
    {
        var msXmlDoc = null;
        try
        {
            msXmlDoc = new ActiveXObject("Msxml2.DOMDocument");
        }
        catch(e)
        {
            msXmlDoc = new ActiveXObject("Msxml.DOMDocument");
        }
        
        doc = msXmlDoc;
    }

    return doc;
},

addObjAttrs: function(el, obj)
{
    for (var k in obj) el.setAttribute(k, obj[k]);
},

attrsAsObj: function(el)
{
    var res = {};
    
    var attrs = el.attributes;
    
    for (var i = 0; i < attrs.length; ++i)
    {
        var a = attrs[i];
        res[a.nodeName] = a.nodeValue;
    }
    
    return res;
}

};
