function googlemap (id,lat,lon) {

   if (GBrowserIsCompatible()) {
      var mapdiv = document.getElementById("googlemap");
      mapdiv.style.display = "block";
      var map = new GMap(mapdiv);
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
      map.addControl(new GScaleControl()) ;
      map.addControl(new GOverviewMapControl());

      // Create some custom icons
      var icon = new GIcon();
      icon.image = "http://www.leicesteryha.org.uk/images/marker2.png";
      icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
      icon.iconSize = new GSize(20, 34);
      icon.shadowSize = new GSize(37, 34);
      icon.iconAnchor = new GPoint(10, 34);
      icon.infoWindowAnchor = new GPoint(10, 1);

      var greyicon = new GIcon();
      greyicon.image = "http://www.leicesteryha.org.uk/images/markergrey.png";
      greyicon.shadow = "http://www.google.com/mapfiles/shadow50.png";
      greyicon.iconSize = new GSize(20, 34);
      greyicon.shadowSize = new GSize(37, 34);
      greyicon.iconAnchor = new GPoint(10, 34);
      greyicon.infoWindowAnchor = new GPoint(10, 1);

      function PlotMain (x) {
         var mainmarker = new GMarker(mainpoint,icon);
         map.addOverlay(mainmarker);
         GEvent.addListener(mainmarker, "click", function() {
            mainmarker.showMapBlowup();
         });
      }

      // Creates one of our grey markers at the given point
      function createMarker(point,desc) {
         var marker = new GMarker(point, greyicon);
         map.addOverlay(marker);
         GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(desc);
         });
      }

      var mainpoint = new GPoint(lon, lat);
      map.centerAndZoom(mainpoint, 3);

      var request = GXmlHttp.create();
      request.open("GET", "/cgi-bin/leomapxml.pl", true);
      request.onreadystatechange = function() {
        if (request.readyState == 4) {
           var xmlDoc = request.responseXML;
           var markers = xmlDoc.documentElement.getElementsByTagName("event");

           if ( id > 0 ) {
              for (var i = 0; i < markers.length; i++) {
                 if (markers[i].getAttribute("eno") != id) {
                    var html =  "<div class='mapinfo'><strong>"+GXml.value(markers[i].getElementsByTagName("name")[0])+"</strong><br>";
                    html = html+GXml.value(markers[i].getElementsByTagName("dates")[0])+"<br>";
                    html = html+"<a href='/events/";
                    html = html+markers[i].getAttribute("eno")+"'>[more...]</a></div>";

                    var lat = markers[i].getAttribute("lat");
                    var lon = markers[i].getAttribute("long");

                    createMarker(new GPoint(lon,lat),html);
                 }
              }
           }
           PlotMain();
        }
      }
      request.send(null);

   }
}
