// mozXPath [http://km0ti0n.blunted.co.uk/mozxpath/] km0ti0n@gmail.com
// Code licensed under Creative Commons Attribution-ShareAlike License 
// http://creativecommons.org/licenses/by-sa/2.5/

if( document.implementation.hasFeature("XPath", "3.0") ){
    if( typeof XMLDocument == "undefined" ){ XMLDocument = Document; }
      XMLDocument.prototype.selectNodes = function(cXPathString, xNode){
            if( !xNode ) { xNode = this; } 
                var oNSResolver = this.createNSResolver(this.documentElement)
                      var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
                          var aResult = [];
                    for( var i = 0; i < aItems.snapshotLength; i++){aResult[i] =  aItems.snapshotItem(i); }
                        return aResult;
                          }
        XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode){
              if( !xNode ) { xNode = this; } 
                  var xItems = this.selectNodes(cXPathString, xNode);
                      if( xItems.length > 0 ){return xItems[0]; }
                          else{return null; }
                            }
          Element.prototype.selectNodes = function(cXPathString){
                if(this.ownerDocument.selectNodes){ return this.ownerDocument.selectNodes(cXPathString, this);}
                    else{throw "For XML Elements Only";}
                      }
            Element.prototype.selectSingleNode = function(cXPathString){  
                  if(this.ownerDocument.selectSingleNode){return this.ownerDocument.selectSingleNode(cXPathString, this); }
                      else{throw "For XML Elements Only";}
                        }
          Element.prototype.toXml = function(){ var oS = new XMLSerializer();  return oS.serializeToString(this);  }
}


/** XHConn - Simple XMLHTTP Interface - brad@xkr.us - 2005-01-24             **
 ** Code licensed under Creative Commons Attribution-ShareAlike License      **
 ** http://creativecommons.org/licenses/by-sa/2.0/                           **/

function XAP()
{
  var xmlhttp;
  try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest();                   }
  catch (e) { xmlhttp = false;                                      }}}
  if (!xmlhttp) return null;
  this.connect = function(sURL, sMethod, sVars, fnDone)
  {
    if (!xmlhttp) return false;
    sMethod = sMethod.toUpperCase();

    try {
      if (sMethod == "GET")
      {
        if( sVars == "IGNORE" ){
          xmlhttp.open(sMethod, sURL, true);
        }else{
          xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        }
        sVars = "";
      }
      else
      {
        xmlhttp.open(sMethod, sURL, true);
        xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        xmlhttp.setRequestHeader("Content-Type",
          "application/x-www-form-urlencoded");
      }
      xmlhttp.onreadystatechange = function(){ if (xmlhttp.readyState == 4) {
        fnDone(xmlhttp); }};
      xmlhttp.send(sVars);
    }
    catch(z) { return false; }
    return true;
  };
  return this;
}
var __ePW__;


