if (BrowserDetect.browser == "Firefox")
{
    Element.prototype.selectSingleNode = function (sXPath) {
        var oEvaluator = new XPathEvaluator();
        var oResult = oEvaluator.evaluate(sXPath, this, null, 
	        XPathResult.FIRST_ORDERED_NODE_TYPE, null);
        if (oResult != null) {
            return oResult.singleNodeValue;
        } else {
            return null;
        }              
    }

    Element.prototype.selectNodes = function (sXPath) {
    var oEvaluator = new XPathEvaluator();
    var oResult = oEvaluator.evaluate(sXPath, this, null, 
      XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);    
	  
    var aNodes = new Array;
    
    if (oResult != null) {
       
        var oElement = oResult.iterateNext();
        while(oElement) {
            aNodes.push(oElement);
            oElement = oResult.iterateNext();
        }
    }
    
    return aNodes;};
}
    

function XmlMngr()
{
}

XmlMngr.prototype.CreateDocument = function(xmlText)
{
    var xmlDoc;
    if (BrowserDetect.browser == "Firefox")
    {
        var parser=new DOMParser();
        xmlDoc=parser.parseFromString(xmlText,"text/xml");
    }
    else if (BrowserDetect.browser == "Explorer")
    {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async="false";
        xmlDoc.loadXML(xmlText);
    }
    return xmlDoc;
}

XmlMngr.prototype.SelectNodes = function(xmlDocument, xmlPath)
{
    var items;
                
    if (BrowserDetect.browser == "Firefox")
        items = xmlDocument.documentElement.selectNodes(xmlPath);
    else if (BrowserDetect.browser == "Explorer")
        items = xmlDocument.selectNodes(xmlPath);
        
    return items;
}

XmlMngr.prototype.SelectSingleNode = function(xmlElement, nodeName)
{
    var val;
                
    if (BrowserDetect.browser == "Firefox")
        val = xmlElement.selectSingleNode(nodeName).textContent;
    else if (BrowserDetect.browser == "Explorer")
        val = xmlElement.selectSingleNode(nodeName).text;
        
    return val;
}

var moXml = new XmlMngr();