var map;
var geocoder;

function onLoad() {
  var m = document.getElementById("map");
  geocoder = new GClientGeocoder();

  if (m) {
    map = new GMap2(m);
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());

    
    try {
      var lat = 40.774430;
      var lng = -74.006099;
      var scale = 12;
      map.setCenter(new GLatLng(lat,lng),scale);
    } catch (e) { /* if it's not defined for some reason */ }

    addAllMarkers();
  }
}

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

function htmlStart() {
	var s = "<div id='mainInfoDiv' style='max-width: 300px; text-align:left; padding: 2px; ' >";
	return s;
}

function htmlEnd() {
	return "</div>";
}

function addMarker(address,txt) {
  address += ", New York, NY";
  var _txt = txt;
  geocoder.getLatLng
    (address,
     function(point) {
       if (!point) {
         alert(address + " not found");
       } else {
         var marker = new GMarker(point);
         map.addOverlay(marker);
         GEvent.addListener(marker, 'click', newPopup(marker,_txt));
       }
     }
     );
}

function newPopup(marker,txt) {
  var _marker = marker;
  var _txt = txt;
  return function() {
    _marker.openInfoWindowHtml(html(_txt));
  };
}

