function createMarker(map, lat, lng, text) {
  var point = new GLatLng(lat, lng);
  var marker = new GMarker(point);
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(text);
  });
  map.addOverlay(marker);
}

function createAllMarkers(map, text) {
    var lines = text.split("\n");
    var linerx = new RegExp("([-+]?[0-9.]+)[ \t]+([-+]?[0-9.]+)[ \t]+\"([^\"]+)\".*$", "");
    var i;
    for (i = 0; i < lines.length; ++i) {
	var match = linerx.exec(lines[i]);
	if (match) {
	    createMarker(map, match[1], match[2], match[3]);
	}
    }
}

function fetchEmacsWikiPage(map) {
    var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
    request.open("GET", "http://tromey.com/emacs/map/fetch.php", true);

    request.onreadystatechange = function(){
        if (request.readyState == 4 && request.status == 200) {
            if (request.responseText){
		createAllMarkers(map, request.responseText);
            }
        }
    };
    request.send("");
}

function load() {
    if (GBrowserIsCompatible()) {
	var elt = document.getElementById("map");
	if (elt) {
	    var map = new GMap2(elt);
	    map.setCenter(new GLatLng(0.0, 0.0), 1);
	    map.addControl(new GLargeMapControl());
	    map.addControl(new GMapTypeControl());
	    fetchEmacsWikiPage(map);
	}
    }
}

