var map;
var geocoder;

function initGoogleMap() {
  if (!GBrowserIsCompatible())
    return false;

  map = new GMap2(document.getElementById("multimap"));
  map.addMapType(G_DEFAULT_MAP_TYPES);
  var _mPreferMetric = true;
  var pos = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(70,5)); 
  map.addControl(new GScaleControl(), pos);
  map.addControl(new GSmallMapControl()); // pan buttons/zoom slider

  map.setCenter(new GLatLng(map_centre_lat, map_centre_long), map_zoom_level);
  window.onunload = GUnload;
  
  var markers = fetchMarkers();
  for (var i = 0; i < markers.length; i++) {
    map.addOverlay(markers[i]);
  }
  
  return true;
}

function grabLatLongFromClick(overlay, point)
{
  alert('clicked on: ' + point);
}

function fetchMarkers()
{
  var markers = new Array();
  
  for (var i= 0; i < mapLocations.length; i++) {
    locRec = mapLocations[i];
    
    if (locRec.lat == 0)
      continue;
    
    markers.push(createMarker(locRec));
  }
  
  return markers;
}


function createMarker(locRec)
{
  var descHtml = '<div class="map-info-desc"><h3>' + locRec.title + '</h3><br clear="all" /></div>';
  
  var marker = new GMarker(new GLatLng(locRec.lat, locRec.lng));
  marker.tts_descriptionHtml = descHtml;
  GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(marker.tts_descriptionHtml); });
  locRec.marker = marker;

  return marker;
}


function locationFromAddress(address)
{
  if (!geocoder)
    geocoder = new GClientGeocoder();
  
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point)
        alert(address + 'not found');
      else
        alert('lat/lng: ' + point);
    }
  );
}

function findLocationWithId(locId)
{
  for (var i= 0; i < mapLocations.length; i++) {
    if (mapLocations[i].locId == locId)
      return mapLocations[i];
  }
  
  return 0;
}

function highlightMapLocation(locId)
{
  locRec = findLocationWithId(locId);

  map.panTo(locRec.marker.getPoint());
  locRec.marker.openInfoWindowHtml(locRec.marker.tts_descriptionHtml);

}

function setMapCentreandZoom(lat,lng,centre){
  map.setCenter(new GLatLng(lat,lng),centre);
}
