(function ($) {
  Drupal.behaviors.mjh_views_alter = {
    attach: function(){

      $("button.location-gmap-find-address-button").click(function(e){    
        e.preventDefault();
        var address_parts = new Array();
        $("fieldset#edit-" + $(this).val() + " .form-item input[type=text]," + 
          "fieldset#edit-" + $(this).val() + " .form-item select > option:selected").each(function(){
            if (!$(this).hasClass('gmap-control') && $(this).val() != '') {
              if($(this).is('option')) {
                address_parts.push($(this).text());
              } else {
                address_parts.push($(this).val());
              }
            }
          });

        var address_string = address_parts.join(', ');
        var gmap_id = $("fieldset#edit-" + $(this).val() + " .gmap-map").attr('id');
        if (google.maps.version !== 'undefined') { // assume Google Maps API v3 as API v2 did not have this variable
          var geocoder = new google.maps.Geocoder();
          geocoder.geocode({'address': address_string}, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
              var m = Drupal.gmap.getMap(gmap_id);
              m.locpick_coord = results[0].geometry.location;
              m.change('locpickchange');
              m.map.setCenter(results[0].geometry.location);
              m.map.setZoom(14);
            }
            else {
              alert(Drupal.t("Your address was not found."));
            }
          });
        } 
        else {
          var geocoder = new GClientGeocoder();
          geocoder.reset(); // Clear the client-side cache
          geocoder.getLatLng(address_string, function(point){
            if (!point){
              alert(Drupal.t("Your address was not found."));
            }
            else {
              var m = Drupal.gmap.getMap(gmap_id);
              m.locpick_coord = point;
              m.change('locpickchange');
              m.map.setCenter(point, 14);
              
            }
          });
        }

      });
    
  }

}
})(jQuery);

