(function(jQuery) {
  if (typeof(jQuery) != 'undefined') {

    jQuery(function() {
      jQuery('#advanced_search_form').hide();

      jQuery('#id_city').hide()
      jQuery('<input id="city_autocomplete" type="text" />').insertAfter('#id_city')
      if(jQuery("#id_city option.selected")) {
        jQuery("#city_autocomplete").val(jQuery("#id_city option:selected").text())
      }
      jQuery("#city_autocomplete").autocomplete({
        source: (function() {
          cityArray = [];
          jQuery('#id_city > option').each(function() {
            var jQuerythis = jQuery(this);
            cityArray.push( { value:jQuerythis.val(), label:jQuerythis.text() } );
          });
          return cityArray;
        })(),
        select: function(event, ui) {
          selectedValue = ui.item.value;
          jQuery('#id_city').val(ui.item.value);
          jQuery('#city_autocomplete').val(ui.item.label);
          return false;
        },
        // Don't do the following, city can't be effectively cleared out.
        change: function(event, ui) {
          if(jQuery('#city_autocomplete').val() == '') {
            jQuery('#id_city').val('');
            jQuery('#city_autocomplete').val('');
          } else {
            jQuery('#id_city').val(ui.item.value);
            jQuery('#city_autocomplete').val(ui.item.label);
          }
          return false;
        },
        focus: function(event, ui) {
          jQuery('#city_autocomplete').val(ui.item.label);
          return false;
        }
      });

      jQuery('#id_county').hide()
      jQuery('<input id="county_autocomplete" type="text" />').insertAfter('#id_county')
      if(jQuery("#id_county option.selected")) {
        jQuery("#county_autocomplete").val(jQuery("#id_county option:selected").text())
      }
      jQuery("#county_autocomplete").autocomplete({
        source: (function() {
          countyArray = [];
          jQuery('#id_county > option').each(function() {
            var jQuerythis = jQuery(this);
            countyArray.push( { value:jQuerythis.val(), label:jQuerythis.text() } );
          });
          return countyArray;
        })(),
        select: function(event, ui) {
          selectedValue = ui.item.value;
          jQuery('#id_county').val(ui.item.value);
          jQuery('#county_autocomplete').val(ui.item.label);
          return false;
        },
        // Don't do the following, county can't be effectively cleared out.
        change: function(event, ui) {
          if(jQuery('#county_autocomplete').val() == '') {
            jQuery('#id_county').val('');
            jQuery('#county_autocomplete').val('');
          } else {
            jQuery('#id_county').val(ui.item.value);
            jQuery('#county_autocomplete').val(ui.item.label);
          }
          return false;
        },
        focus: function(event, ui) {
          jQuery('#county_autocomplete').val(ui.item.label);
          return false;
        }
      });

      jQuery('#id_township').hide()
      jQuery('<input id="township_autocomplete" type="text" />').insertAfter('#id_township')
      if(jQuery("#id_township option.selected")) {
        jQuery("#township_autocomplete").val(jQuery("#id_township option:selected").text())
      }
      jQuery("#township_autocomplete").autocomplete({
        source: (function() {
          townshipArray = [];
          jQuery('#id_township > option').each(function() {
            var jQuerythis = jQuery(this);
            townshipArray.push( { value:jQuerythis.val(), label:jQuerythis.text() } );
          });
          return townshipArray;
        })(),
        select: function(event, ui) {
          selectedValue = ui.item.value;
          jQuery('#id_township').val(ui.item.value);
          jQuery('#township_autocomplete').val(ui.item.label);
          return false;
        },
        // Don't do the following, township can't be effectively cleared out.
        change: function(event, ui) {
          if(jQuery('#township_autocomplete').val() == '') {
            jQuery('#id_township').val('');
            jQuery('#township_autocomplete').val('');
          } else {
            jQuery('#id_township').val(ui.item.value);
            jQuery('#township_autocomplete').val(ui.item.label);
          }
          return false;
        },
        focus: function(event, ui) {
          jQuery('#township_autocomplete').val(ui.item.label);
          return false;
        }
      });

      jQuery('#show_advanced').click(function() {
        jQueryform = jQuery('#basic_search_form');
        jQueryform.hide();
        jQuery('#advanced_search_form').fadeIn();
      });

      jQuery('#show_basic').click(function() {
        jQueryform = jQuery('#advanced_search_form');
        jQueryform.hide();
        jQuery('#basic_search_form').fadeIn();
      });
    });

  }
})(jQuery);

