/*
 * You must define: getIcon(addr)
 */
var map;

// Constants
var  BLUE_ICON  = gIcon('blue');
var   RED_ICON  = gIcon('red');
var GREEN_ICON  = gIcon('green');
var YELLOW_ICON = gIcon('yellow');

function getPoint(addr) {
  return POINTS[addr];
}

function distance(p1,p2) {
  var dx = p1.lng() - p2.lng();
  var dy = p1.lat() - p2.lng();
  return Math.sqrt(dx*dx + dy*dy);
}

function gIcon(color) {
  var icon = new GIcon(G_DEFAULT_ICON);
  icon.image = 'http://labs.google.com/ridefinder/images/mm_20_' + color + '.png';
  icon.iconSize = new GSize(12,20);
  icon.iconAnchor = new GPoint(6,20); // default (9,24)
  return icon;
}

function onLoad() {
  map = new GMap2(document.getElementById("map"));
  map.addControl(new GLargeMapControl());
  map.addControl(new GMapTypeControl());
  map.addControl(new GScaleControl());
  map.setCenter(new GLatLng(40.774430,-73.950000),10);
  addPoints();
  //
  // Maybe defined afterOnLoad()
  //
  try {afterOnLoad();} catch (e) { /*ignore*/ }
}

function addPoints() {
  for (var addr in POINTS) {
    try {
      addPoint(addr);
    } catch (e) {}
  }
}

function addPointToMap(addr,p,icon) {
  var marker = new GMarker(p,icon);
  GEvent.addListener(marker, 'click', newOpenFunction(marker,addr));
  map.addOverlay(marker);
}

function addPoint(addr) {
  var p = POINTS[addr];
  var icon = getIcon(addr);
  addPointToMap(addr,p,icon);
}

function newOpenFunction(marker,addr) {
  var _marker = marker;
  var _addr   = addr;
  return function() {
    _marker.openInfoWindowHtml(html(_addr));
  };
}

function html(txt) {
  return htmlStart() + txt + htmlEnd();
}

function htmlStart() {
  return "<div id='mainInfoDiv' style='padding: 2px; white-space: nowrap;' >";
}
	
function htmlEnd() {
  return "</div>";
}

