var map;
var geocoder;

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

  map = new GMap2(document.getElementById("map"));
  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 marker = new GMarker(new GLatLng(locRec.lat, locRec.lng));
  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());

}

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