   var map = null;
   var mgr = null;
   var MaxTabs = 5;
   function loadMap() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(40.803157, -96.677313), 3);
	 	setupMarkers();
      }
    }

    function getStateMarkers(){
    	var batch = [];
		var state_data_dir = "projects/state";
		var iconImage = "./images/marker_red.png";
		
		GDownloadUrl(state_data_dir + "/hartgen-state-data.xml", function(data) {
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
        								parseFloat(markers[i].getAttribute("lng")));
        		var state = (markers[i].getAttribute("state"));
        		var xml_file = (markers[i].getAttribute("xml_file"));
        		var state_code = (markers[i].getAttribute("state_code"));
        		mgr.addMarker(createMarker(point, state, state_data_dir, state_code, xml_file, iconImage),1,10);
    		}
    	});	
    }
    
    function getCountryMarkers(){
    	var national_data_dir = "projects/national";
    	var iconImage = "./images/marker_blue.png";
		GDownloadUrl(national_data_dir + "/hartgen-national-data.xml", function(data) {
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
        								parseFloat(markers[i].getAttribute("lng")));
        		var country = markers[i].getAttribute("country");
        		var xml_file = markers[i].getAttribute("xml_file");
        		var country_code = markers[i].getAttribute("country_code");
    			mgr.addMarker(createMarker(point,country, national_data_dir, country_code, xml_file, iconImage),1,10);
    		}
    	});	
	}   	
    
	var baseIcon = new GIcon();
	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(20, 34);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	
    function createMarker(point, title, data_dir, code, xml_file, iconImage){
		var icon = new GIcon(baseIcon);
		icon.image = iconImage;
		var marker = new GMarker(point,icon);
	    var infoTabs = [];
		var infoWindowOptions = {maxWidth: 520};
		var html="";
		GDownloadUrl(data_dir + "/" + code + "/" + xml_file, function(data){
			var xml = GXml.parse(data);
			var projects = xml.documentElement.getElementsByTagName("project");
				for (var i = 0; i< projects.length; i++){
					var proj_name = projects[i].getAttribute("proj_name");
					var proj_report = projects[i].getAttribute("proj_report");
					var alt_proj_report = projects[i].getAttribute("alt_proj_report");
					var proj_dir = projects[i].getAttribute("proj_dir");
					var proj_url = projects[i].getAttribute("proj_url");
					var proj_key_statistic = projects[i].getAttribute("proj_key_statistic");
					var proj_overview = projects[i].getAttribute("proj_overview");
					var proj_year = projects[i].getAttribute("proj_year");
					var html_proj_link;
					if(proj_report != "")
					{
						html_proj_link = "<br> Click <a href=\"" + data_dir + "/" + code + "/" + proj_dir + "/" + proj_report + "\"> here</a> for the project report.<br>";
					}
					else if(proj_url != "")
					{
						html_proj_link = "<br> Click <a href=\"" + proj_url + "\"> here</a> for the project report.<br>";
					}
					else
					{
						html_proj_link = "<br>" + alt_proj_report;
					}	
					if(i < MaxTabs)
					{
						infoTabs.push(new GInfoWindowTab("Prj " + (i + 1), 
						// Project Title
						"<b>" + proj_name + "</b><br>" +
						// Project Overveiw
						proj_overview + "<br>" + html_proj_link));
					
					}
					else
					{
						html = html +  
						// Project Title
						//"<b>" + proj_name + "</b>" +
						// Project Overveiw
						//proj_overview +
						// Link to the Project Report
						//"<a href=\"" + data_dir + "/" + code + "/" + proj_dir + "/" + proj_report + "\">" + 
						proj_name + ", " + proj_year + "<br>";
						// + " </a><br>";
					}
				}
				if (projects.length > MaxTabs)
					infoTabs.push(new GInfoWindowTab("More",html));
		});
		
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowTabsHtml(infoTabs,infoWindowOptions);  
    	});
    	return marker;
    }
    	
	function setupMarkers(){
    	mgr = new GMarkerManager(map);
    	getStateMarkers();
    	getCountryMarkers();
//    	mgr.addMarkers(getStateMarkers(),4,6);
//    	mgr.addMarkers(getCountryMarkers(),1,3);
    	mgr.refresh();
    }

