﻿//
// Common Xml Library v3
//
// v3
// - Fixed 4096 character limit in Firefox/Mozilla
//
// v2
// - Fixed index in SelectNodes for IE 
//
// v1
// + Implementation of cXmlDOM
//

function cXmlDOM()
{
    var progIDs = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.3.0"];
    var xmlDOM = null;

    this.Type = 0;
    
    if (document.implementation && document.implementation.createDocument)
    {
        xmlDOM = document.implementation.createDocument("", "", null);
        this.Type = 1;
    }
    else if (window.ActiveXObject)
    {
        for (var i = 0; i < progIDs.length; i++)
        {
            try
            {
                xmlDOM = new ActiveXObject(progIDs[i]);
            }
            catch (e) { }
        }

        xmlDOM.setProperty("SelectionLanguage", "XPath");
        this.Type = 2;
    }

    this.Load = function(url)
    {
        xmlDOM.async = false;
        xmlDOM.load(url);
        xmlDOM.documentElement.normalize();
    }
    
    this.SelectNodes = function(expression)
    {
        var ret = null;
        
        if (this.Type == 1)
        {
            var eval = xmlDOM.evaluate(expression, xmlDOM, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
            var iter = eval.iterateNext();
            
            ret = new Array();
            
            while (iter != null)
            {
                ret.push(iter);
                iter = eval.iterateNext();
            }
        }
        else if (this.Type == 2)
        {
            ret = xmlDOM.selectNodes(expression);
        }
        
        return ret;
    }
}