    var geocoder;
    var map;
    geocoder = new google.maps.Geocoder();
    
    function gm_initialize(b, c, map_canvas) {
      var latlng = new google.maps.LatLng(b, c);
      var myOptions = { 	
        zoom: 9,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        disableDefaultUI: true
      }
      map = new google.maps.Map(map_canvas, myOptions);
    }
    function codeAddress(address_field, latitude_field, longitude_field, map_div, map_canvas, callback) {
      var address = address_field.val();      
      if (geocoder) {
    	geocoder.geocode( { 'address': address}, function(results, status) {
          if (status == google.maps.GeocoderStatus.OK) {
        	  latitude_field.val(results[0].geometry.location.b);
        	  longitude_field.val(results[0].geometry.location.c);        	  
        	  gm_initialize(results[0].geometry.location.b, results[0].geometry.location.c, map_canvas);
        	  map.setCenter(results[0].geometry.location);
            var marker = new google.maps.Marker({
                map: map, 
                position: results[0].geometry.location               
            });
            map_div.show();
            callback();
          }
        });
      }
    }
