    function load(routeId,memberId,currentNearestPastDestinationNumber,lat,lng,centerLat,centerLng,zoomLevel) {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GSmallMapControl());
        map.setCenter(new GLatLng(centerLat,centerLng), zoomLevel);
		loadDestinations(map,routeId);
        loadTeams(map,memberId);
        var currentPoint = new GLatLng(lat,lng);
		var getDestinationUrl = '/exerciseChallenge/ajax_request/ajax.get_exercise_challenge_destinations.php?route_id='+routeId;
        GDownloadUrl(getDestinationUrl,function(data){
        var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');
    	for (var i = 0; i < markers.length; i++) {
			var destNumber = markers[i].getAttribute('destNumber');
			var destinationName = markers[i].getAttribute('destinationName');
			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
	                              parseFloat(markers[i].getAttribute('lng')));
			if(i == 0)
			{
				var latlngs = new Array(point);
			}
			else
			{
				latlngs.push(point);
			}
	    }        
		var walkedPast = latlngs.slice(0,currentNearestPastDestinationNumber);
		walkedPast.push(currentPoint);
		map.addOverlay(new GPolyline(walkedPast, '#5355C6',  6,  0.6));
		});
      }
    }
    
    function loadDestinations(map,routeId)
    {
        var getDestinationUrl = '/exerciseChallenge/ajax_request/ajax.get_exercise_challenge_destinations.php?route_id='+routeId;
        GDownloadUrl(getDestinationUrl,function(data){
        var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');
    	map.clearOverlays();
    	for (var i = 0; i < markers.length; i++) {
			var destNumber = markers[i].getAttribute('destNumber');
			var destinationName = markers[i].getAttribute('destinationName');
			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
	                              parseFloat(markers[i].getAttribute('lng')));
			var marker = createDestinationMarker(point, destNumber, destinationName);
			map.addOverlay(marker);
			if(i == 0)
			{
				var latlngs = new Array(point);
			}
			else
			{
				latlngs.push(point);
			}
	    }
	    map.addOverlay(new GPolyline(latlngs, '#A5A437',  4,  0.6));
        }); 
    }
    
    function loadTeams(map,memberId) {
    	var myTeamOnly=1 // option to set display my team only or all teams
        var getDestinationUrl = '/exerciseChallenge/ajax_request/ajax.get_team_position.php?member_id='+memberId+'&my_team_only='+myTeamOnly;
        GDownloadUrl(getDestinationUrl,function(data){
        var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');
    	for (var i = 0; i < markers.length; i++) {
			var teamId = markers[i].getAttribute('teamId');
			var teamName = markers[i].getAttribute('teamName');
			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
	                              parseFloat(markers[i].getAttribute('lng')));
	        var isUser = markers[i].getAttribute('isUser'); 
			var marker = createTeamMarker(point, teamId, teamName, isUser);
			map.addOverlay(marker);
	    }
        });
    }
    
    function createDestinationMarker(point, destNumber, destinationName)
    {
    	// Create our "tiny" marker icon
		var tinyIcon = new GIcon();
		tinyIcon.image = "http://www.fordhealth.com.au/exercisechallenge/image/destination_marker.png";
		tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		tinyIcon.iconSize = new GSize(12, 20);
		tinyIcon.shadowSize = new GSize(22, 20);
		tinyIcon.iconAnchor = new GPoint(6, 20);
		tinyIcon.infoWindowAnchor = new GPoint(5, 1);
		
		// Set up our GMarkerOptions object literal
		markerOptions = { icon:tinyIcon };
 		var marker = new GMarker(point, markerOptions);
         GEvent.addListener(marker, "mouseover", function() {
        marker.openInfoWindowHtml("Destination Name: <br />"+destinationName);
     	 });  
     	 return marker; 
    }
    
    function createTeamMarker(point, teamId, teamName, isUser)
    {
 		var otherTeamIcon = new GIcon();
		otherTeamIcon.image = "http://www.fordhealth.com.au/exercisechallenge/image/team_marker.png";
		otherTeamIcon.iconSize = new GSize(33, 39);
		otherTeamIcon.iconAnchor = new GPoint(16, 39);
		otherTeamIcon.infoWindowAnchor = new GPoint(5, 1);
 		
 		var currentTeamIcon = new GIcon();
		currentTeamIcon.image = "http://www.fordhealth.com.au/exercisechallenge/image/current_team_marker.png";
		currentTeamIcon.iconSize = new GSize(33, 39);
		currentTeamIcon.iconAnchor = new GPoint(16, 39);
		currentTeamIcon.infoWindowAnchor = new GPoint(5, 1);
 		if (isUser == '1')
 		{
 			var markerOptions = { icon:currentTeamIcon };
 		}
 		else
 		{
 			var markerOptions = { icon:otherTeamIcon };
 		}
 		
 		var marker = new GMarker(point, markerOptions);
         GEvent.addListener(marker, "mouseover", function() {
        marker.openInfoWindowHtml("Team Name: <br />"+teamName+"<br />");
     	 });  
     	 return marker; 
    }