if (BrowserDetect.browser == "Firefox")
{

    Element.prototype.selectSingleXmlNode = function (sXPath) {
       var oEvaluator = new XPathEvaluator();
        var oResult = oEvaluator.evaluate(sXPath, this, null, 
	        XPathResult.ANY_TYPE, null);
        if (oResult != null) {
        alert(oResult.singleNodeValue);
        
            return oResult.singleNodeValue;
        } else {
            return null;
        }              
    }
    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.GetDocumentText = function(xmlDocument)
{
    if (BrowserDetect.browser == "Firefox")
        return xmlDocument.documentElement.childNodes[0].textContent;
    else if (BrowserDetect.browser == "Explorer")
        return xmlDocument.text;
}

XmlMngr.prototype.CreateDocument = function(xmlText)
{
    var xmlDoc;
    if (BrowserDetect.browser == "Firefox")
    {
        xmlText = xmlText.replace("xmlns", "xxmlns"); // Bug fix to investigate
                
        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")
    {
        if (xmlDocument.documentElement)
            items = xmlDocument.documentElement.selectNodes(xmlPath);
        else
        {
            if (xmlDocument.selectNodes)
                items = xmlDocument.selectNodes(xmlPath);
            else
                items = new Array();
        }
    }
    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;
}

XmlMngr.prototype.SelectSingleXmlNode = function(xmlElement, nodeName)
{
 var val;
                
    if (BrowserDetect.browser == "Firefox")
    {
        val = xmlElement.selectSingleXmlNode(nodeName);
        alert(val);
    }
    else if (BrowserDetect.browser == "Explorer")
    {
        val = xmlElement.selectSingleNode(nodeName).xml;
        }
        
    return val;
}

var moXml = new XmlMngr();



function loadXMLDoc(fname)
{
var xmlDoc;
// code for IE
if (window.ActiveXObject)
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation 
&& document.implementation.createDocument)
  {
  xmlDoc=document.implementation.createDocument("","",null);
  }
else
  {
  alert('Your browser cannot handle this script');
  }
xmlDoc.async=false;
xmlDoc.load(fname);
return(xmlDoc);
}
