  var sBType = BrowserID();       // Identify the Client Web Browser.
//  var sBType = "M";
//  var xmlDoc = createXMLDOM();   // Create the XML DOM object for global use.
  var sRunDate = "";              // Other unique values for global use.
  var sTotAccs = "";
  var sTotFats = "";

  function BrowserID() {
    if (window.ActiveXObject) {
      return "I";                 // Internet Explorer
    }
    else if (document.implementation && document.implementation.createDocument) {
      return "M";                 // Mozilla (FireFox, NetScape, etc.)
    }
    else {
      return "U";                 // Unknown Web Browser Type.
    }
  }
  //
  //  Each function below switches images according
  //  to the selected county.
  //
  function Atlantic() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj01.gif' width='211' height='399' border='0'>";
    DisplayCounty('01','Atlantic');
  }
  
  function Bergen() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj02.gif' width='211' height='399' border='0'>";
    DisplayCounty('02','Bergen');
  }
  
  function Burlington() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj03.gif' width='211' height='399' border='0'>";
    DisplayCounty('03','Burlington');
  }
  
  function Camden() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj04.gif' width='211' height='399' border='0'>";
    DisplayCounty('04','Camden');
  }
  
  function CapeMay() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj05.gif' width='211' height='399' border='0'>";
    DisplayCounty('05','Cape May');
  }
  
  function Cumberland() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj06.gif' width='211' height='399' border='0'>";
    DisplayCounty('06','Cumberland');
  }
  
  function Essex() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj07.gif' width='211' height='399' border='0'>";
    DisplayCounty('07','Essex');
  }
  
  function Gloucester() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj08.gif' width='211' height='399' border='0'>";
    DisplayCounty('08','Gloucester');
  }
  
  function Hudson() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj09.gif' width='211' height='399' border='0'>";
    DisplayCounty('09','Hudson');
  }
  
  function Hunterdon() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj10.gif' width='211' height='399' border='0'>";
    DisplayCounty('10','Hunterdon');
  }
  
  function Mercer() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj11.gif' width='211' height='399' border='0'>";
    DisplayCounty('11','Mercer');
  }
  
  function Middlesex() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj12.gif' width='211' height='399' border='0'>";
    DisplayCounty('12','Middlesex');
  }
  
  function Monmouth() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj13.gif' width='211' height='399' border='0'>";
    DisplayCounty('13','Monmouth');
  }
  
  function Morris() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj14.gif' width='211' height='399' border='0'>";
    DisplayCounty('14','Morris');
  }
  
  function Ocean() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj15.gif' width='211' height='399' border='0'>";
    DisplayCounty('15','Ocean');
  }
  
  function Passaic() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj16.gif' width='211' height='399' border='0'>";
    DisplayCounty('16','Passaic');
  }
  
  function Salem() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj17.gif' width='211' height='399' border='0'>";
    DisplayCounty('17','Salem');
  }
  
  function Somerset() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj18.gif' width='211' height='399' border='0'>";
    DisplayCounty('18','Somerset');
  }
  
  function Sussex() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj19.gif' width='211' height='399' border='0'>";
    DisplayCounty('19','Sussex');
  }
  
  function Union() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj20.gif' width='211' height='399' border='0'>";
    DisplayCounty('20','Union');
  }
  
  function Warren() {
    document.getElementById("NJMap").innerHTML="<img usemap='#CountyMap' src='images/nj21.gif' width='211' height='399' border='0'>";
    DisplayCounty('21','Warren');
  }
  //
  // End county functions.
  //

  function loadFAUXML() {
  //
  //  This function loads and parses the FAU Quick Stats XML file.
  //

    var txtXML = "";
//    var url = 'http://mysite.verizon.net/a2j111j4/FAUQStats2012.xml';
  var url = 'http://www.njsp.org/info/fatalacc/FAUQStats2012.xml';
//    var url = 'http://lppjonea.njsp.org/XMLParse/FAUQStats2012.xml';

    var myAjax = new Ajax.Request(
      url,
      {
        method: 'get',
        onComplete: showResponse
      });

    function showResponse(originalRequest) {

      txtXML = originalRequest.responseText;

      if (window.DOMParser) {
        parser = new DOMParser();
        xmlDoc = parser.parseFromString(txtXML,"text/xml");
      } else { // Internet Explorer
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(txtXML);
      }

      //  Plug in single occurrence values
      $('TotAccs').innerHTML = xmlDoc.getElementsByTagName("TOTACCIDENTS")[0].childNodes[0].nodeValue;
      $('TotFats').innerHTML = xmlDoc.getElementsByTagName("TOTFATALITIES")[0].childNodes[0].nodeValue;
      $('StatYear').innerHTML = xmlDoc.getElementsByTagName("STATSYEAR")[0].childNodes[0].nodeValue;
      $('StatYear2').innerHTML = xmlDoc.getElementsByTagName("STATSYEAR")[0].childNodes[0].nodeValue;

//      $('debug').innerHTML = xmlDoc.getElementsByTagName("COUNTY")[39].childNodes.length;
    }
  }

  function createXMLDOM() {
  //
  //  Create XML DOM Object.
  //
    if (sBType == "I") {  // Internet Explorer
      // Work backwards through the latest MSXML versions until one works.
      var arrSignatures = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",
                           "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument",
                           "Microsoft.XmlDom"];

      for (var i=0; i < arrSignatures.length; i++) {
        try {
          var xmlDoc = new ActiveXObject(arrSignatures[i]);
          return xmlDoc;
        } catch (oError) {
          // Do Nothing
        }
      }
      throw new Error("MSXML is not installed on your system.");
    }
    else if (sBType == "M") {  // Mozilla (FireFox, NetScape, etc.)
      var xmlDoc = document.implementation.createDocument("", "FAUQSTATS", null);
      return xmlDoc;
    }
    else {
      throw new Error("Your browser does not support XML DOM objects.");
    }
  }

  function DisplayCounty(id, name) {
  //
  //  Takes County ID and Name and displays corresponding data table.
  //
    var sText = "";
    var nAcnt = 0;
    var nCtyFats = 0;
    var nCtyInjs = 0;
    var sMuni = "";
    var sMuniHold = "";
    sText += "<table cellspacing='1' cellpadding='1' width='100%' border='1' class='xxsblat'>";
//    sText += "<tr align='center'><th colspan='6'>" + name + " County</th></tr>";	// With 'Injuries' Column
    sText += "<tr align='center'><th colspan='5'>" + name + " County</th></tr>";	// Without 'Injuries' Column
//    sText += "<tr><th>Municipality</th><th align='center'>Date</th><th align='center'>Time</th><th>Location</th><th align='center'>Injuries</th><th align='center'>Fatalities</th></tr>";	// With 'Injuries' Column
    sText += "<tr><th>Municipality</th><th align='center'>Date</th><th align='center'>Time</th><th>Location</th><th align='center'>Fatalities</th></tr>";	// Without 'Injuries' Column

    if (sBType == "I") {  // Internet Explorer
      var lMNodes =  xmlDoc.documentElement.selectNodes("//COUNTY[@CCODE='" + id + "']//MUNICIPALITY");
      for (var i=0; i < lMNodes.length; i++) {  // Loop for the Selected County's Municipalities.
        sMuni = lMNodes[i].selectSingleNode("@MNAME").text;
        var lANodes = lMNodes[i].selectNodes("ACCIDENT");
        for (var j=0; j < lANodes.length; j++) {  // Loop for the Municipalities Accidents.
          if (sMuni != sMuniHold) { sMuniHold = sMuni; }
          else { sMuni = "&nbsp; &nbsp; &nbsp; &quot;"; }
          var sDate = lANodes[j].selectSingleNode("@DATE").text;
          var sTime = lANodes[j].selectSingleNode("@TIME").text;
          var sLoc = "&nbsp;";  // Default values if the tags aren't there
          var sFats = "&nbsp;";
          var sInjs = "&nbsp;";
          if (lANodes[j].selectSingleNode("LOCATION") != null) {
            sLoc = lANodes[j].selectSingleNode("LOCATION").text;
          }
          if (lANodes[j].selectSingleNode("FATALITIES") != null) {
            sFats = lANodes[j].selectSingleNode("FATALITIES").text;
            nCtyFats += parseInt(sFats, 10);
          }
          if (lANodes[j].selectSingleNode("INJURIES") != null) {
            sInjs = lANodes[j].selectSingleNode("INJURIES").text;
            nCtyInjs += parseInt(sInjs, 10);
          }
//          sText += "<tr class='bwhi'><td>" + sMuni + "</td><td align='center'>" + sDate + "</td><td align='center'>" + sTime + "</td><td>" + sLoc + "</td><td align='center'>" + sInjs + "</td><td align='center'>" + sFats + "</td></tr>";		// With 'Injuries' Column
          sText += "<tr class='bwhi'><td>" + sMuni + "</td><td align='center'>" + sDate + "</td><td align='center'>" + sTime + "</td><td>" + sLoc + "</td><td align='center'>" + sFats + "</td></tr>";		// Without 'Injuries' Column
          nAcnt++;
        }
      }
    }
    else if (sBType == "M") {  // Mozilla (FireFox, NetScape, etc.)
      var oEvaluatorM = new XPathEvaluator();
      var oResultM = oEvaluatorM.evaluate("//COUNTY[@CCODE='" + id + "']//MUNICIPALITY",
                                        xmlDoc, 
                                        null, 
                                        XPathResult.ORDERED_NODE_ITERATOR_TYPE, 
                                        null);
      if (oResultM != null) {
        var oElementM = oResultM.iterateNext();
        while (oElementM) {  // Loop for the Selected County's Municipalities.
          sMuni = xmlDoc.evaluate("@MNAME",
                                        oElementM, 
                                        null,
                                        XPathResult.ANY_TYPE, 
                                        null).iterateNext().textContent;

          var oEvaluatorA = new XPathEvaluator();
          var oResultA = oEvaluatorA.evaluate("ACCIDENT",
                                            oElementM, 
                                            null, 
                                            XPathResult.ORDERED_NODE_ITERATOR_TYPE, 
                                            null);
          if (oResultA != null) {
            var oElementA = oResultA.iterateNext();
            while (oElementA) {  // Loop for the Municipalities Accidents.
              if (sMuni != sMuniHold) { sMuniHold = sMuni; }
              else { sMuni = "&nbsp; &nbsp; &nbsp; &quot;"; }
              var sDate = xmlDoc.evaluate("@DATE",
                                            oElementA, 
                                            null, 
                                            XPathResult.ANY_TYPE, 
                                            null).iterateNext().textContent;
              var sTime = xmlDoc.evaluate("@TIME",
                                            oElementA, 
                                            null, 
                                            XPathResult.ANY_TYPE, 
                                            null).iterateNext().textContent;
              var sLoc = "&nbsp;";  // Default values if the tags aren't there
              var sFats = "&nbsp;";
              var sInjs = "&nbsp;";
              var oLocElement = xmlDoc.evaluate("LOCATION",
                                            oElementA, 
                                            null, 
                                            XPathResult.ANY_TYPE, 
                                            null).iterateNext();
              if (oLocElement != null) {
                var sLoc = oLocElement.textContent;
              }

              var oFatsElement = xmlDoc.evaluate("FATALITIES",
                                            oElementA, 
                                            null, 
                                            XPathResult.ANY_TYPE, 
                                            null).iterateNext();
              if (oFatsElement != null) {
                var sFats = oFatsElement.textContent;
                nCtyFats += parseInt(sFats, 10);
              }

              var oInjsElement = xmlDoc.evaluate("INJURIES",
                                   oElementA, 
                                   null, 
                                   XPathResult.ANY_TYPE, 
                                   null).iterateNext();
              if (oInjsElement != null) {
                var sInjs = oInjsElement.textContent;
                nCtyInjs += parseInt(sInjs, 10);
              }
//              sText += "<tr class='bwhi'><td>" + sMuni + "</td><td align='center'>" + sDate + "</td><td align='center'>" + sTime + "</td><td>" + sLoc + "</td><td align='center'>" + sInjs + "</td><td align='center'>" + sFats + "</td></tr>";		// With 'Injuries' Column
              sText += "<tr class='bwhi'><td>" + sMuni + "</td><td align='center'>" + sDate + "</td><td align='center'>" + sTime + "</td><td>" + sLoc + "</td><td align='center'>" + sFats + "</td></tr>";		// Without 'Injuries' Column
              nAcnt++;
              oElementA = oResultA.iterateNext(); // Next Accident
            }
          }

          oElementM = oResultM.iterateNext(); // Next Municipality
        }
      }
    }
//    sText += "<tr><td colspan='3' align='center'><b>Accident Count: " + nAcnt + "</b></td><td align='right'><b>County Totals: </b></td><td align='center'><b>" + nCtyInjs + "</b></td><td align='center'><b>" + nCtyFats + "</b></td></tr>";		// With 'Injuries' Column
    sText += "<tr><td colspan='3' align='center'><b>Accident Count: " + nAcnt + "</b></td><td align='right'><b>County Totals: </b></td><td align='center'><b>" + nCtyFats + "</b></td></tr>";		// Without 'Injuries' Column
    sText += "</table>";
    document.getElementById("QStats").innerHTML = sText;  // Plug in the data table.
  }

