var map;
var mgr; 
var solar_markers;
var current_location_marker;
var visited_points;
var not_visited_points;

$(document).ready( function() {
	if (GBrowserIsCompatible()) {
		var mapElement = $("#map").get(0);
		map = new GMap2(mapElement, { size : new GSize(725, 547) });
		
	    map.setCenter(new GLatLng(37.0625,-98.5), 4); //center of america, zoom level 4
		
		map.enableScrollWheelZoom();
		
		mgr = new MarkerManager(map);
	    
	    map.addControl(new GLargeMapControl());
	    
		solar_markers = [];
		visited_points = [];
		not_visited_points = [];
		
	   	current_location_marker = undefined; 
	    
	    var last_solar_object_with_video = undefined;
	    	
	    if(current_location.lat != undefined) {
	    	var current_location_point = new GLatLng(current_location.lat, current_location.lon);

	    	var marker_icon = new GIcon(G_DEFAULT_ICON);
	    	marker_icon.iconSize = new GSize(32,32);
	    	marker_icon.iconAnchor = new GPoint(10,10);
			marker_icon.image = "/static/images/spaceship.png";
	    	marker_icon.shadow = "";
			var markerOptions = { icon : marker_icon };

	    	current_location_marker = new GMarker(current_location_point, markerOptions);

		    solar_markers.push(current_location_marker);
	    	not_visited_points.push(current_location_point);
	    }
		
		for (var i = 0; i < solar_objects.length; i++) {
			var solar_object = solar_objects[i];
			
			if(solar_object.youtube_id !== "None") {
				last_solar_object_with_video = solar_object;
			}
			
			solar_markers.push(createMarker(solar_object));
	    }
	    
    	visited_points.push(current_location_point);
	    
	    map.addOverlay(new GPolyline(visited_points, "#FFFF00", 2.5, 1));
	    map.addOverlay(new GPolyline(not_visited_points, "#FFFF00", 1, 0.6));
	    
		var spaceCopyright = new GCopyright('Spaceship Excellent',
		  new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)),
		  0,'2008 Spaceship Excellent')
		var tilelayer = new GTileLayer(spaceCopyright);
		tilelayer.getTileUrl = function() { return "/static/images/space_tile.png"; };
		tilelayer.isPng = function() { return true;};
		tilelayer.getOpacity = function() { return 0.6; }
		
		var spaceTileLayer = new GTileLayerOverlay(tilelayer);
		map.addOverlay(spaceTileLayer);
	    
	    mgr.addMarkers(solar_markers, 4);
	    mgr.refresh();
	    
	    map.openInfoWindowHtml(new GLatLng(last_solar_object_with_video.lat, last_solar_object_with_video.lon), 
	    						buildMarkerHTML(last_solar_object_with_video));
	}
});


$(window).unload( function () {
	GUnload();
});

function createMarker(solar_object) { 
	var point = new GLatLng(solar_object.lat, solar_object.lon);
	
	var marker_icon = new GIcon(G_DEFAULT_ICON);
	marker_icon.iconSize = new GSize(20,20);
	marker_icon.iconAnchor = new GPoint(10,10);
	marker_icon.shadow = "";
	if(solar_object.has_visited === "True") {
		if(solar_object.youtube_id != "None")
			marker_icon.image = "/static/images/star_visited.png";
		else
			marker_icon.image = "/static/images/star_not_visited.png";
			
		visited_points.push(point);
	}
	else { 
		marker_icon.image = "/static/images/star_not_visited.png";
		not_visited_points.push(point);
	}
	var markerOptions = { icon : marker_icon };
	
	var marker = new GMarker(point, markerOptions);
	GEvent.addListener(marker, "click", function() {
		map.openInfoWindowHtml(point, buildMarkerHTML(solar_object));
	});
	
	return marker;
}

