var map;

function init() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new DragZoomControl());
    map.setCenter(new GLatLng(0,0),0);
    drawTrail();
    listMarkers();
    }
}
function unload() {
  GUnload();
}
function addMarkerToMap(latlng, html) {
  var marker = new GMarker(latlng);
  GEvent.addListener(marker, 'click', function() {
    var markerHTML = html;
    marker.openInfoWindowHtml(markerHTML);
  });
  return marker;
}

function drawTrail() {
  var bounds = new GLatLngBounds();
  var latlngs = [];
  var request = GXmlHttp.create();
  request.open('GET', '/milestones/list', true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var markers=eval( "(" + request.responseText + ")" );
      for (var i=0; i < markers.length; i++) {

        var marker=markers[i].milestone;
        var lat=marker.lat;
        var lng=marker.lng;
        if (lat && lng) {
          var latlng = new GLatLng(parseFloat(lat), parseFloat(lng));
          latlngs.push(latlng);
          bounds.extend(latlng);
        }
      }
      var polyline = new GPolyline(
          latlngs, "#FF0000", 10);
      map.addOverlay(polyline);
      
      map.setZoom(map.getBoundsZoomLevel(bounds));
      map.setCenter(bounds.getCenter());
    }
  }
  request.send(null);
}

function listMarkers() {
  var request = GXmlHttp.create();
  request.open('GET', '/data/get_team_positions', true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var markers=eval( "(" + request.responseText + ")" );
      for (var i=0; i < markers.length; i++) {
        var marker=markers[i]
        var lat=marker.lat;
        var lng=marker.lng;
        if (lat && lng) {
          var latlng = new GLatLng(parseFloat(lat), parseFloat(lng));
          var html = '<div><b>Team:</b> '+marker.name+'</div>';
          var marker = addMarkerToMap(latlng, html);
          map.addOverlay(marker);
        }
      }
    }
  }
  request.send(null);
}

window.onload = init;
window.onunload = unload;
