$.extend({
  googleMaps: {

    uninitialize: function(id)  {
      GUnload();
    },

    initialize: function(id)  {
      var address  = $("#" + id).attr("title")
      var all      = address.split(",")
      var street   = all.shift();
      var region   = all.join(",")

      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById(id));
        var geocoder = new GClientGeocoder();
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert("The dealer's address cannot be found.");
            } else {
              map.setCenter(point, 13);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              map.setUIToDefault();
              marker.openInfoWindowHtml($.googleMaps.getInfoWindowHTML(street, region));
          }
        });
      }
    },

    getInfoWindowHTML: function(street, region)  {
      var form = "<div class='info_html'>"  +
        "<span>" +
          street +
          "<br />" +
          region +
        "</span>" +
        "<br />" +
        "<form action='http://maps.google.com/maps' method='get'>" + "<br />" +
          "<p>" +
            "<label for='saddr'>Where are you coming from?</label>" + "<br />" + 
            "<textarea name='saddr' id='saddr' value='' ></textarea>" +  
            "<input type='hidden' name='daddr' value='" + street + "," + region +"' />" +  
            "<input type='hidden' name='hl' value='en' />" + 
          "</p>" +  
          "<input type='submit' value='Get Directions' />" + 
        "</form>" + 
        "</div>";
      return form;
    }
  }
});

$(document).ready(function() {
    $("div#dealership_info div.address .interactive_map").each(function () {

      $.googleMaps.initialize(this.id);

      $(window).unload(function() {
        $.googleMaps.uninitialize();
      });

    });
});
