var map = new GMap(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.centerAndZoom(new GPoint(-95.677068, 37.0625), 14);

var baseIcon  = new GIcon();
baseIcon.iconSize = new GSize(14, 14);
baseIcon.iconAnchor = new GPoint(2, 2);
baseIcon.infoWindowAnchor = new GPoint(5, 15);

function markerFromObj(lng, lat, obj) {
  if (typeof(this["custom_markerFromObj"]) != 'undefined' &&
      typeof(this["custom_markerFromObj"]) == 'function') {
    return custom_markerFromObj(lng, lat, obj);
  } else {
    var point = new GPoint(lng, lat);
    var icon = new GIcon(baseIcon);
    icon.image = "/images/up.png";
    var marker = new PdMarker(point, icon);
    var name = obj.getAttribute("name");
    marker.setTooltip(name);
    var html = "<div class=\"GMinfoWindow\"><p><b>" + name + "</b></p><p>";
    if (obj.getAttribute("notes") != null)  {
      html += "<p>" + obj.getAttribute("notes") + "</p>\n";
    }
    html += "</div>\n";
    GEvent.addListener(marker, 'click', function() {
			 marker.openInfoWindowHtml(html);
		     });
    return marker;
  }
}

var request = GXmlHttp.create();
request.open('GET', datasource, true);
request.onreadystatechange = function() {
  if (request.readyState == 4) {
    var xmlDoc = request.responseXML;
    var objs = xmlDoc.documentElement.getElementsByTagName(objname);
    for (var i = 0; i < objs.length; i++) {
      var lat = parseFloat(objs[i].getAttribute("latitude"));
      var lng = parseFloat(objs[i].getAttribute("longitude"));
      if (lat != 0 && !isNaN(lat)) {
        var marker = markerFromObj(lng, lat, objs[i]);
        map.addOverlay(marker);
      }
    }
  } // readyState == 4
}

request.send(null);

