diff --git a/locationmap.js b/locationmap.js
index c0f9aec..4c36186 100644
--- a/locationmap.js
+++ b/locationmap.js
@@ -1,4 +1,6 @@
 (function($){
+  Drupal.behaviors.locationmap = {
+    attach: function(context, settings) {
   if (GBrowserIsCompatible()) {
     var locationmap = new GMap2(document.getElementById("locationmap_map"));
     target_point = new GLatLng(Drupal.settings.locationmap.lat, Drupal.settings.locationmap.lng);
@@ -13,14 +15,13 @@
     Drupal.settings.locationmap.marker = new GMarker(target_point, {draggable: (admin == true)});
     locationmap.addOverlay(Drupal.settings.locationmap.marker);
     locationmap.setMapType(eval(Drupal.settings.locationmap.type));
-
     GEvent.addListener(Drupal.settings.locationmap.marker, "click", function() {
       Drupal.settings.locationmap.marker.openInfoWindowHtml(description);
     });
     // allow fine tuning marker position in admin mode
     if (admin) {
 	  GEvent.addListener(Drupal.settings.locationmap.marker, "dragstart", function() {
-	    locationmap.closeInfoWindow();
+	          Drupal.settings.locationmap.marker.closeInfoWindow();
 	  });
     GEvent.addListener(Drupal.settings.locationmap.marker, "dragend", function() {
       Drupal.settings.locationmap.marker.openInfoWindowHtml(description);
@@ -28,9 +29,11 @@
 		$('#edit-locationmap-lat').val(latlng.lat());
 	    $('#edit-locationmap-lng').val(latlng.lng());
       });
-	  GEvent.addListener(locationmap.map, "zoomend", function() {
-	    $('#edit-locationmap-zoom').val(locationmap.map.getZoom());
+	        GEvent.addListener(locationmap, "zoomend", function() {
+	          $('#edit-locationmap-zoom').val(locationmap.getZoom());
 	  });
     };
   }
+    }
+  };
 })(jQuery);
\ No newline at end of file
