﻿XmlHelperClass = function(){
    this.getDocument = function(xmlText){
        var doc = null;
        if (typeof (ActiveXObject) != 'undefined') {
            try {
                doc = new ActiveXObject("MSXML2.DOMDocument");
            }
            catch (err) {
                doc = new ActiveXObject("Microsoft.XMLDOM");
            }
            doc.loadXML('<?xml version="1.0"?>' + xmlText);
        }
        else if (document.implementation) {
            var parser = new DOMParser();
            doc = parser.parseFromString('<?xml version="1.0"?>' + xmlText, "text/xml");
        }

        return doc;
    };
    
    this.selectNodes = function(xmlDoc, patternString){
        if (xmlDoc == null) return null;

        if (typeof (xmlDoc.selectNodes) != 'undefined') {
            var iterator = xmlDoc.selectNodes(patternString);
            var arr = new Array();
            var thisNode = iterator.nextNode();

            while (thisNode) {
                arr.push(thisNode);
                thisNode = iterator.nextNode();
            }

            return arr;
        }
        else {
            var iterator = xmlDoc.evaluate(patternString, xmlDoc, null,
                XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);

            try {
                var thisNode = iterator.iterateNext();
                var arr = new Array();

                while (thisNode) {
                    arr.push(thisNode);
                    thisNode = iterator.iterateNext();
                }

                return arr;
            }
            catch (e) {
                alert('Error: Document tree modified during iteration ' + e);
                return null;
            }
        }
    }
}

XmlHelper = new XmlHelperClass();
