function CreateRequester()
  {
  var xmlHttp;
  try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      try
        {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
      catch (e)
        {
        alert("Your browser does not support AJAX!");
        return false;
        }
      }
    }
    return xmlHttp;
  }



//Create an XML-Dom object from xml string
function CreateDom(xml){
  var doc = Sarissa.getDomDocument();
  doc.async="false";
  doc = (new DOMParser()).parseFromString(xml, "text/xml");
  doc.setProperty("SelectionNamespaces", "");
  doc.setProperty("SelectionLanguage", "XPath");
  return doc;
}

//Create an XML-Dom object from xml string
function CreateDom_old(xml){
// code for IE
if (window.ActiveXObject)
  {
  var doc=new ActiveXObject("Microsoft.XMLDOM");
  doc.async="false";
  doc.loadXML(xml);
  }
// code for Mozilla, Firefox, Opera, etc.
else
  {
  var parser=new DOMParser();
  var doc=parser.parseFromString(xml,"text/xml");
  }

return doc;
}

function xPath(domNode,xPath){

        var objNodeList;
        var objNodeList = domNode.selectNodes(xPath);
        for(i=0;i<objNodeList.length;i++){
          //alert(new XMLSerializer().serializeToString(objNodeList[i]));
          //alert("testing selectSingleNode("+sXpath+") on a "+domNode);
          var oElem = domNode.selectSingleNode(xPath);
          //alert(oElem+"\n"+new XMLSerializer().serializeToString(oElem));
        };
        return objNodeList;

}





//**************************************
// Name: javascript cross browser xpath function
// Description:For use with AJAX web applications, allows xpath expressions on XML data objects.
// By: Charles Toepfer
//
//
// Inputs:XML DOM element, xPath string
//
// Returns:resulting XML DOM
//
//Assumes:Here are some sample xpath statements:
//Select nodes where the attribute name is Bob Mickles: //*[@name='Bob Mickles']
//Select nodes that contain bob in the text: //nodes/node/*[contains(.,'Bob')];
//or .. //nodes/node/node[contains(.,'Bob')];
//Simple path select: //nodes/node
//Select nodes that contain bob, retrieve child 'node': //nodes/node[node='bob']/node
//Select nodes that nodes that contain bob in nodeA and mickles in nodeB: //nodes/node[nodeA='bob' and nodeB='mickles']
//Select nodes where the name node is unique: //nodes/node[not(name = preceding-sibling::node/name)]
//
//Side Effects:None
//This code is copyrighted and has limited warranties.
//Please see http://www.Planet-Source-Code.com/xq/ASP/txtCodeId.5314/lngWId.2/qx/vb/scripts/ShowCode.htm
//for details.
//**************************************

function xPath_old(oNodes, sXPath)


    {
    /*
    xPath function by Charles Toepfer: toepfer_c@hotmail.com 
    use: 'resulting xml dom' = xPath('xml dom object', 'xpath string');
    */
    if(oNodes)


        {
        if(window.XMLHttpRequest)


            { 
            try 


                {
                var oXpe = new XPathEvaluator();
                var oNsResolver = oXpe.createNSResolver(oNodes.ownerDocument == null ? oNodes.documentElement : oNodes.ownerDocument.documentElement);
                var oResult = oXpe.evaluate(sXPath, oNodes, oNsResolver, 0, null);
                var aFound = [];
                var oRes;
                while (oRes = oResult.iterateNext())


                    {
                    aFound.push(oRes);
                }
                return aFound;
            }
            catch (e) 


                {
                alert(e.description);
            }
        }
        else


            {
            try


                {
                oNodes.setProperty ("SelectionLanguage", "XPath")
                var oSelectedNode = oNodes.documentElement.selectNodes(sXPath);
                return oSelectedNode;
            }
            catch (e) 


                {
                alert(e.description);
            }
        }
    }
}
