function renderMainMap() {
  var map = new GMap2(document.getElementById("mainmap"));
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(50.7327, 7.0963), 3);

    var baseIcon = new GIcon();
    baseIcon.shadow = "../images/mm_20_shadow.png";
	  baseIcon.iconSize = new GSize(12, 20);
	  baseIcon.shadowSize = new GSize(22, 20);
	  baseIcon.iconAnchor = new GPoint(6, 20);
	  baseIcon.infoWindowAnchor = new GPoint(5, 1);

    GDownloadUrl("/map/locations", function(data, responseCode) {
      var xml = GXml.parse(data);
      var locations = xml.documentElement.getElementsByTagName("location");
      var polyPoints = new Array();
      var trip = 1;
      
      for (var i = 0; i < locations.length; i++) {
        var lat = parseFloat(GXml.value(locations[i].getElementsByTagName("latitude")[0]));
        var lng = parseFloat(GXml.value(locations[i].getElementsByTagName("longitude")[0]));
        var point = new GLatLng(lat, lng);
        var icon = new GIcon(baseIcon);
        var markerOptions = { };
        var currTrip = parseInt(GXml.value(locations[i].getElementsByTagName("trip")[0]));

        polyPoints.push(point);

  			if (i == 0) {
				  icon.image = "../images/mm_20_green.png";
          map.addOverlay(new GMarker(point, { icon:icon }));
			  } else if (i == locations.length - 1) {
				  icon.image = "../images/mm_20_orange.png";

          var marker = new GMarker(point, { icon:icon });
          var title = GXml.value(locations[i].getElementsByTagName("title")[0]);
          
          GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(title);
          });

          map.addOverlay(marker);
          map.setCenter(point, 3);
			  }

        if (currTrip != trip) {
          trip = currTrip;
          map.addOverlay(new GPolyline(polyPoints, "#ff0000", 2, 1));
          polyPoints = new Array();
        }
      }

      var polyline = new GPolyline(polyPoints, "#ff0000", 2, 1);
      map.addOverlay(polyline);
    });
  }
