/* $Id: googlemaps.js,v 1.3 2007-09-30 22:56:35 perhans Exp $
 * ----------------------------------------------------------------------
 * Google maps code
 */

function gmap_init (lat, long, zoom, mapArray) {
    if (GBrowserIsCompatible()) {
      var icon = createIcon();
      var map = new GMap2(document.getElementById("map"));
      map.addControl( new GMapTypeControl());
      map.addControl(new GSmallMapControl());
      map.setCenter(new GLatLng(lat,long), zoom);

      for(i=0; i<mapArray.length; i++) {
          var point = new GLatLng(mapArray[i][0], mapArray[i][1]);
          var text = mapArray[i][2];
          map.addOverlay(createMarker(point, text, icon));
      }
    }
}

function gmap_point_init (lat, long, zoom, formid, latfieldid) {
    var cell = document.getElementById('map');

    if (GBrowserIsCompatible()) {
        var map = new GMap2(cell);
        map.setCenter(new GLatLng(lat,long), zoom);
        map.addControl( new GMapTypeControl());
        map.addControl(new GSmallMapControl());

        GEvent.addListener(map, "click", function(exist_marker, point) {
            var marker = new GMarker(point);

            if (map.old_marker) {
                map.removeOverlay(map.old_marker);
            }

            map.old_marker = marker;
            
            GEvent.addListener(marker, "click",
					      function() {
					         marker.openInfoWindowHtml('Koordinaterne er overf&oslash;rt til editoren. Du kan nu lukke dette vindue.<p> <a href="javascript:window.close()">Luk vindue.</a></p>');
					      }
					   );

            map.addOverlay(marker);
            gmap_update_coordinates(point, formid, latfieldid);
        });

    } else {
        cell.style.display = 'block';
    }
}

function gmap_update_coordinates (point, formid, latfieldid) {
    for (var i = 0; i<this.opener.document[formid].elements.length; i++) {
        if (this.opener.document[formid].elements[i].name == 'f'+latfieldid+'[subtree][lattitude][0][value]') {
	          this.opener.document[formid].elements[i].value  =  point.lat();
        }
        if (this.opener.document[formid].elements[i].name == 'f'+latfieldid+'[subtree][longitude][0][value]') {
          this.opener.document[formid].elements[i].value  =  point.lng();
        }
    }
}

function createMarker(point, text, icon) {
  var marker = new GMarker(point, icon);
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(text);
  });
  return marker;
}

    function createIcon () {
        // Create our "tiny" marker icon
        var icon = new GIcon();
        icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
        icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        icon.iconSize = new GSize(12, 20);
        icon.shadowSize = new GSize(22, 20);
        icon.iconAnchor = new GPoint(6, 20);
        icon.infoWindowAnchor = new GPoint(5, 1);
        return icon;
    }
