
  var search = {

      init: function()
      {
          var churchCountry = document.getElementById("churchCountry");
          var xmlFileName   = "xml/countries_xml.php";
          search.populateDropDown(churchCountry, xmlFileName);

          var searchCountry = document.getElementById("searchCountry");
          var xmlFileName   = "xml/countries_xml.php";
          search.populateDropDown(searchCountry, xmlFileName);
      },

      validateSearch: function()
      {
          var searchName     = document.getElementById("searchName");
          var searchLocation = document.getElementById("searchLocation");
          var searchCountry  = document.getElementById("searchCountry");

          if(searchName.value == "" && searchLocation.value == "")
          {
              alert("Please enter either Church Name and/or Church Location.");
              searchName.focus();
              return false;
          }

          return true;
      },

      enableView: function()
      {
          document.getElementById("viewButton").disabled = false;
      },

      getTowns: function()
      {
          // Remove existing churches
          var churchName    = document.getElementById("churchName");
          churchName.options.length = 0;

          var churchCountry = document.getElementById("churchCountry");
          var selCountryId  = churchCountry.options[churchCountry.selectedIndex].value;
          var churchTown    = document.getElementById("churchTown");

          var xmlFileName = "xml/towns_xml.php?countryId=" + encodeURIComponent(selCountryId);
          search.populateDropDown(churchTown, xmlFileName);
      },

      getChurches: function()
      {
          var churchTown = document.getElementById("churchTown");
          var selTownId  = churchTown.options[churchTown.selectedIndex] .value;
          var churchCountry = document.getElementById("churchCountry");
          var selCountryId  = churchCountry.options[churchCountry.selectedIndex] .value;
          var churchName = document.getElementById("churchName");

          var xmlFileName = "xml/churches_xml.php?townId=" + encodeURIComponent(selTownId) + "&countryId=" + encodeURIComponent(selCountryId);;
          search.populateDropDown(churchName, xmlFileName);
      },

      populateDropDown: function(dd, xmlFileName)
      {
          dd.disabled = false;

          // Remove existing options
          dd.options.length = 0;

          // Set option to show loading
          var option = document.createElement("OPTION");
          option.innerHTML = "Loading Contents...";
          option.value = "";
          dd.appendChild(option);

          // Create XML object
          var XMLObj = toucanXMLRequest();
          XMLObj.open("GET", xmlFileName, true);
          XMLObj.onreadystatechange = function()
          {
              if(XMLObj.readyState == 4)
              {
                  var j;

                  // Get XML
                  var xml = XMLObj.responseXML;

                  // Get field nodes
                  var lookupData = xml.getElementsByTagName("field");

                  for(var i = 0, j = lookupData.length; i < j; i++)
                  {
                      // Create new option
                      var option = document.createElement("OPTION");

                      // Set options properties
                      var title = lookupData[i].childNodes[0].nodeValue;
                      var value = lookupData[i].getAttribute("value");

                      option.innerHTML = title;
                      option.value     = value;

                      if(lookupData.length == 2 && i == 1 && dd.id == "churchName")
                      {
                          option.selected = true;
                          search.enableView();
                      }

                      // Append to dropdown control
                      dd.appendChild(option);
                  }

                  // Remove first option
                  if(dd.options[0]){
                      dd.removeChild(dd.options[0]);
                  }
              }
          }
          XMLObj.send(null);
      },

      viewChurch: function()
      {
          var churchName = document.getElementById("churchName");
          var churchId   = churchName.options[churchName.selectedIndex].value;

          if(churchId !=  "" && churchId > 0)
          {
              window.location.href = "church-details.php?id=" + churchId;
          }
          else
          {
              alert("No church has been selected.");
          }
      }
  }

  function toucanXMLRequest()
  {
      // Create xmlHttp var
      var xmlHttp;

      // Check of native XMLHttpRequest support
      if(window.XMLHttpRequest){

          try{
              xmlHttp = new XMLHttpRequest();
          }
          catch(e){
              xmlHttp = false;
          }
      }
      else if(window.ActiveXObject){

          // IE 6 (Non native support)
          try{
              xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
          }
          catch(e)
          {
              try{
                  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
              }
              catch(e){
                  xmlHttp = false;
              }
          }
      }

      return xmlHttp;
  }