<!-- Hide from browsers without JavaScript support
  var xmlHttp;
  var latLng;
  var pos;
  var registryArray;
  var curr;

  // *********************************************************************** //
  function initializeList() {
    // Clear previous results
    document.getElementById("map_canvas").innerHTML = "<hr />";
    pos = 0;
    registryArray = new Array();
    
    // Get the address
    var address = document.getElementById("address").value; 

    if (address.length > 0) {
      document.getElementById("message").innerHTML = "Geocoding address...";
      var geocoder = new GClientGeocoder();
      latLng = null;
      geocoder.getLatLng(address, function(results) {finishInit(results)});

    } else if (navigator.userAgent.toString().indexOf("GFRegistry for Android 2.1") != -1) {
      // Our Android app
      document.getElementById("message").innerHTML = "Detecting location...";
      //alert("Coord: " + window.Android.getLatitude() + ", " + window.Android.getLongitude());
      latLng = new GLatLng(window.Android.getLatitude(), window.Android.getLongitude());
      finishInit(latLng);

    } else if (google.loader.ClientLocation) {
      //alert("Default");
      document.getElementById("message").innerHTML = "Detecting location...";
      latLng = new GLatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
      finishInit(latLng);
    
    } else {
      // Browser doesn't support Geolocation
      handleNoGeolocation();
    }

  }

  function handleNoGeolocation() {
    alert("Please enter your address first");
    return false;

  }

  // *********************************************************************** //
  function finishInit(results) {
    latLng = results;
    ajaxListEventHandler(pos);

  }

  // *********************************************************************** //
  function ajaxListEventHandler(startFrom) {
    // Get the business type
    var businessType = document.getElementById("businessType").value;

    // Initialize the XMLHttpRequest
    document.getElementById("message").innerHTML = "Initializing request...";
    xmlHttp = ajaxInit();

    // Add the results handler
    xmlHttp.onreadystatechange=function() {ajaxListResultsHandler()};

    // Query the database
    document.getElementById("message").innerHTML = "<font color='red'>Scanning. Please wait...</font>";
    var url = "ajax-list-query.do?latLng=" + latLng + "&type=" + businessType + "&startFrom=" + startFrom;
    url = url + "&multipleLoc=" + document.getElementById("multipleLocations").value;
    url = url  + "&appId=1&appKey=H3f6Q32F8v4V9q45"; // Also update gluten-free-world-map.js
    
    var businessSearch = document.getElementById("businessName").value;
    if (businessSearch.length > 0) {
      url = url + "&q=" + encodeURI(businessSearch).replace("'", "&#39;");
      
    }

    //alert(url);
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null); 
  }

  // *********************************************************************** //
  function ajaxListResultsHandler() {
    if(xmlHttp.readyState==4) {
      if (xmlHttp.status == 200) {
        // Get the XML document
        document.getElementById("message").innerHTML = "Receiving results...";
        var xmlDoc = xmlHttp.responseXML.documentElement;
        var userAgent = navigator.userAgent;

        if (xmlDoc == null) {
          document.getElementById("message").innerHTML = "Could not load results. Please try again.";
          //document.getElementById("message").innerHTML = xmlHttp.responseText;
          return false;              
        }

        // Get the registries
        var registries = xmlDoc.getElementsByTagName("registry");
        if (registries == null) {
          alert("No registries found");
          return false;
        }

        // Update the message
        document.getElementById("message").innerHTML = "Adding " + registries.length + " records...";

        // Update the list
        for (var i = 0; i < registries.length; i++) {
          // Get the registry information
          registryArray[pos] = registries[i];
          var registryId = ajaxGetXmlNodeValue(registries[i], 0, userAgent);
          var businessName = ajaxGetXmlNodeValue(registries[i], 1, userAgent);
          var businessType = ajaxGetXmlNodeValue(registries[i], 2, userAgent);
          var addressId = ajaxGetXmlNodeValue(registries[i], 5, userAgent);
          //var longitude =  ajaxGetXmlNodeValue(registries[i], 6, userAgent);
          //var latitude =  ajaxGetXmlNodeValue(registries[i], 7, userAgent);
          var street1 =  ajaxGetXmlNodeValue(registries[i], 8, userAgent);
          var city = ajaxGetXmlNodeValue(registries[i], 9, userAgent);
          var state = ajaxGetXmlNodeValue(registries[i], 10, userAgent);
          var zip = ajaxGetXmlNodeValue(registries[i], 11, userAgent);
          var registryType = ajaxGetXmlNodeValue(registries[i], 15, userAgent);
          var hasGFPizza  = ajaxGetXmlNodeValue(registries[i], 18, userAgent);       // Added 10/3/2011
          var hasGFPasta  = ajaxGetXmlNodeValue(registries[i], 19, userAgent);       // Added 10/3/2011
          var hasGFBread  = ajaxGetXmlNodeValue(registries[i], 20, userAgent);       // Added 10/3/2011
          var hasGFMenu  = ajaxGetXmlNodeValue(registries[i], 21, userAgent);        // Added 10/3/2011
          //var menuURL  = ajaxGetXmlNodeValue(registries[i], 22, userAgent);          // Added 10/3/2011
          var accommodatesOnly  = ajaxGetXmlNodeValue(registries[i], 24, userAgent); // Added 10/3/2011
          var dailyDealsEnabled  = ajaxGetXmlNodeValue(registries[i], 25, userAgent); // Added 10/12/2011
          var dailyDeal  = ajaxGetXmlNodeValue(registries[i], 26, userAgent);         // Added 10/12/2011

          // Build the HTML
          var linkClass = "ilist";
          if (registryType == "PREM" || dailyDealsEnabled == "Y" && dailyDeal.toString().length > 0) { // Updated 10/12/2011
            linkClass = "ilistBold";
          }

          // GF Offerings (added 10/3/2011)
          var temp = "";
          if (accommodatesOnly == "Y") {
            temp = "** Accommodates only";

          } else {
            temp = "";
            if (hasGFPizza == "Y") {
              if (temp == "") {
                temp = "* Offers Gluten Free: Pizza"
              } else {
                temp = temp + ", Pizza"
              }
            }

            if (hasGFPasta == "Y") {
              if (temp == "") {
                temp = "* Offers Gluten Free: Pasta"
              } else {
                temp = temp + ", Pasta"
              }
            }

            if (hasGFBread == "Y") {
              if (temp == "") {
                temp = "* Offers Gluten Free: Bread"
              } else {
                temp = temp + ", Bread"
              }
            }

            if (hasGFMenu == "Y") {
              if (temp == "") {
                temp = "* Offers Gluten Free: Menu"
              } else {
                temp = temp + ", Menu"
              }
            }
          }
          
          registryHTML = "<a name='pos" + pos + "'></a>" + 
                         "<a class='" + linkClass + "' href='javascript:showRegistry(" + pos + ")'>" +
                         "[" + businessType.substr(0, 1) + "] " + businessName + 
                         "<span class='watermark'>" + registryId + "</span>" + "<br />";
          if (temp.length > 0) {
            registryHTML = registryHTML + temp + "<br />";
          }

          registryHTML = registryHTML + street1 + "<span class='watermark'>" + addressId + "</span>" + "<br />" +
                         city + ", " + state + " " + zip + "<br />" + 
                         "</a>" + "<hr />";

          // Add the registry to the list
          document.getElementById("map_canvas").innerHTML = document.getElementById("map_canvas").innerHTML + registryHTML;

          // Increment the list position
          pos++;
        }

        //document.getElementById("message").innerHTML = registries.length + " records added. ";
        document.getElementById("message").innerHTML = "";
        hideContent("listFooter2"); // Added 9/16/2011
        showContent("listFooter");  // Added 9/16/2011

      } else {
        alert ( "Not able to retrieve data: status = " + xmlHttp.status );
        return false;
      }

    }

    return true;
  }

  // *********************************************************************** //
  function next() {
    hideContent("listFooter");  // Added 9/16/2011
    showContent("listFooter2"); // Added 9/16/2011
    ajaxListEventHandler(pos);
    return true;
  }
  
  // *********************************************************************** //
  function getListAnchor() {
      return "#pos" + curr;
  }

  // *********************************************************************** //
  function showRegistry(i) {
    curr = i;
    var temp = "";
    var userAgent = navigator.userAgent;
    
    hideContent("mapBody");
    //hideContent("map_canvas");
    hideContent("listFooter");
    showContent("registryDetail");

    // Get the registry information
    var registryId = ajaxGetXmlNodeValue(registryArray[i], 0, userAgent);
    var businessName = ajaxGetXmlNodeValue(registryArray[i], 1, userAgent);
    var businessType = ajaxGetXmlNodeValue(registryArray[i], 2, userAgent);
    var website = ajaxGetXmlNodeValue(registryArray[i], 3, userAgent);
    var feedbackCount = ajaxGetXmlNodeValue(registryArray[i], 4, userAgent);
    var addressId = ajaxGetXmlNodeValue(registryArray[i], 5, userAgent);
    //var longitude =  ajaxGetXmlNodeValue(registryArray[i], 6, userAgent);
    //var latitude =  ajaxGetXmlNodeValue(registryArray[i], 7, userAgent);
    var street1 =  ajaxGetXmlNodeValue(registryArray[i], 8, userAgent);
    var city = ajaxGetXmlNodeValue(registryArray[i], 9, userAgent);
    var state = ajaxGetXmlNodeValue(registryArray[i], 10, userAgent);
    var zip = ajaxGetXmlNodeValue(registryArray[i], 11, userAgent);
    var phone = ajaxGetXmlNodeValue(registryArray[i], 12, userAgent);
    var registryNote = ajaxGetXmlNodeValue(registryArray[i], 13, userAgent);
    var addressNote = ajaxGetXmlNodeValue(registryArray[i], 14, userAgent);
    var hasGFPizza  = ajaxGetXmlNodeValue(registryArray[i], 18, userAgent); // Added 9/13/2011
    var hasGFPasta  = ajaxGetXmlNodeValue(registryArray[i], 19, userAgent); // Added 9/13/2011
    var hasGFBread  = ajaxGetXmlNodeValue(registryArray[i], 20, userAgent); // Added 9/13/2011
    var hasGFMenu  = ajaxGetXmlNodeValue(registryArray[i], 21, userAgent);  // Added 9/13/2011
    var menuURL  = ajaxGetXmlNodeValue(registryArray[i], 22, userAgent);    // Added 9/13/2011
    var accommodatesOnly  = ajaxGetXmlNodeValue(registryArray[i], 24, userAgent); // Added 9/13/2011
    var dailyDealsEnabled  = ajaxGetXmlNodeValue(registryArray[i], 25, userAgent); // Added 10/12/2011
    var dailyDeal  = ajaxGetXmlNodeValue(registryArray[i], 26, userAgent);         // Added 10/12/2011
    
    // Track the click
    urchinTracker("/ilist/registry/registryId=" + registryId);
    
    // Business name with website link and watermark
    temp = "[" + businessType.substr(0, 1) + "] ";
    if (!(website == null)) {
      temp = temp + "<a href='http://" + website + "' target='_blank'>";
    }
    temp = temp + businessName;
    if (!(website == null)) {
      temp = temp + "</a>";
    }
    temp = temp + "<span class='watermark'>" + registryId + "</span>";
    document.getElementById("rBusinessName").innerHTML = temp;

    // GF Offerings (added 9/13/2011)
    if (accommodatesOnly == "Y") {
      temp = "** Accommodates only";
      
    } else {
      temp = "";
      if (hasGFPizza == "Y") {
        if (temp == "") {
          temp = "* Offers Gluten Free: Pizza"
        } else {
          temp = temp + ", Pizza"
        }
      }

      if (hasGFPasta == "Y") {
        if (temp == "") {
          temp = "* Offers Gluten Free: Pasta"
        } else {
          temp = temp + ", Pasta"
        }
      }

      if (hasGFBread == "Y") {
        if (temp == "") {
          temp = "* Offers Gluten Free: Bread"
        } else {
          temp = temp + ", Bread"
        }
      }

      if (hasGFMenu == "Y") {
        if (menuURL == "") {
          if (temp == "") {
            temp = "* Offers Gluten Free: Menu"
          } else {
            temp = temp + ", Menu"
          }
        } else {
          if (temp == "") {
            temp = "* Offers Gluten Free: <a href='http://" + menuURL + "' target='_blank'>Menu</a>"
          } else {
            temp = temp + ", <a href='http://" + menuURL + "' target='_blank'>Menu</a>"
          }
        }
      }

    }

    document.getElementById("rOffers").innerHTML = temp;

    // Street with map link and watermark
    temp = street1 + 
           "<span class='watermark'>" + addressId + "</span>" +
           "[<a href='http://maps.google.com/maps?q=" + 
           street1 + ", " + city + ", " + state + " " + zip +
           "' target='_blank'>Map</a>]";
    document.getElementById("rStreet1").innerHTML = temp;
    
    // City, state and zip
    document.getElementById("rCityStateZip").innerHTML = city + ", " + state + " " + zip;

    // Phone
    document.getElementById("rPhone").innerHTML = "<a href='tel:" + phone + "'>" + phone + "</a>";

    // Notes
    document.getElementById("rRegistryNote").innerHTML = registryNote;
    document.getElementById("rAddressNote").innerHTML = addressNote;

    // Daily Deal (added 10/12/2011)
    if (dailyDealsEnabled == "Y") {
      document.getElementById("rDailyDeal").innerHTML = dailyDeal;

    }

    // Comment link
    if (feedbackCount > 0) {
      // Include a comments link
      temp = "<a href='javascript:requestComments(" + registryId + ", " + addressId + ")'>" + 
             feedbackCount + " Reviews </a>";
      document.getElementById("rComments").innerHTML = temp;
    
    } else {
      // Clear the comments
      document.getElementById("rComments").innerHTML = "";

    }

    // Save some info (added 10/4/2011)
    sRegistryId = registryId;
    sAddressId = addressId;
    sBusinessName = businessName;

    // Done
    return true;
  }

  // *********************************************************************** //
  function requestComments(registryId, addressId) {
    // Track the click
    urchinTracker("/ilist/comment/registryId=" + registryId);
    
    hideContent("registryDetail");
    ajaxRequestComments(registryId, addressId);    
    return true;
  }

  // *********************************************************************** //
  function closeComments() {
    hideContent("commentBody");
    showContent("registryDetail");
    return true;
  }

  // *********************************************************************** //
  function backToList() {
    hideContent("registryDetail");
    showContent("mapBody");
    showContent("map_canvas");
    showContent("listFooter");
    return true;
  }

  // *********************************************************************** //
  function enterAddress() {
    if (window.event && window.event.keyCode == 13) {
      initializeList();
    }

    return true;
  }
-->
