//<![CDATA[
var map = null;
var lines = new Array();
var markers = new Array();
for (place in places) {
    marker = myMarker(places[place][0], place, places[place][1]);
    markers.push(marker);
}

function myMarker(point, where, desc) {
    var marker = new GMarker(point);
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(
            "<strong>" + where + "</strong><br/>\n" + desc);
    });
    return marker;
}

function goto_place(place) {
    map.setCenter(place, 10);
}

function toggle_markers() {
  var check = document.getElementById("markers_on");

  for (marker in markers) {
    switch (check.checked) {
      case true:  map.addOverlay(markers[marker]);    break;
      case false: map.removeOverlay(markers[marker]); break;
    }
  }
}

function toggle_lines() {
  var check = document.getElementById("lines_on");

  for (line in lines) {
    switch (check.checked) {
      case true:  map.addOverlay(lines[line]);    break;
      case false: map.removeOverlay(lines[line]); break;
    }
  }
}

function load() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.removeMapType(G_NORMAL_MAP);
    map.removeMapType(G_SATELLITE_MAP);
    map.addControl(new GLargeMapControl());
    map.enableDoubleClickZoom();
    map.enableContinuousZoom();

    map.setCenter(places[start][0], 4);
    map.openInfoWindowHtml(places[start][0],
                           "<strong>" + start + "</strong><br/>\n" +
                           places[start][1]);

    // Markers
    toggle_markers();

    // Lines
    for (route in routes) {
        var color = '#000000';
        switch (routes[route][0]) {
            case 'air': color = '#ffff00'; break;
            case 'land': color = '#ff0000'; break;
            case 'sea': color = '#0000ff'; break;
        }
        line = new GPolyline(routes[route][1], color, 5);
        lines.push(line);
        map.addOverlay(line);
    }
  }
}
//]]>
