/* This version parses an xml file, displays custom
	triangular icons and an info window with image. 
	It does not highlight or use Jeremy's functions
	with 'this'.
	
	26 November 2007 dyv
	
*/


//global, icons for volcano statuses
var icons = {
	'observatory': 	{'width': 21, 'height': 16},
	'unassigned_unassigned': 	{'width': 18, 'height': 14},
	'green_normal': 			{'width': 21, 'height': 16},
	'yellow_advisory': 			{'width': 27, 'height': 20},
	'yellow_watch': 			{'width': 27, 'height': 20},
	'orange_watch':				{'width': 33, 'height': 24},
	'orange_warning': 			{'width': 33, 'height': 24},
	'red_warning': 				{'width': 40, 'height': 31},
	'red_watch': 				{'width': 40, 'height': 31}
};


/*function retrieveMarkers() {

	markers_loaded = true;
	/* The path needs to be the same as where the file is kept. I
	* have been moving the vhp_status.xml file from production over
	* for testing.
	*/
/*	GDownloadUrl("/webdata/volcano.wr.usgs.gov/rss/highlights.xml", function(data, status) {
			GLog.write("downloading xml file"); 
	    var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			GLog.write("creating markers variable"); 
			var len = markers.length;
	    for (var i = 0; i < len; i++) {
				var m = markers[i];
				var point = new GLatLng(parseFloat(m.getAttribute("lat")),
	parseFloat(m.getAttribute("lng")));
			GLog.write("creating points" + point);

		//add marker to map
		//this.map.addOverlay(marker);
				map.addOverlay(createMarker(point, markers[i]));
			}
		});
}
*/


function getIconURL(name) {
	return '/images/icons/map/'+name+'.png';
}

function getHighlightIconURL(name) {
	return '/images/icons/map/'+name+'_highlight.png';
}

//memoized icons
function getIcon(name) {
	if (!icons[name]) {
		return null;
	}
	
	if (!icons[name].icon) {
		var icon = new GIcon();
		icon.image = getIconURL(name);
		icon.iconSize = new GSize(icons[name].width, icons[name].height);
		var anchor = new GPoint(10, 12);
		icon.iconAnchor = anchor;
		icon.infoWindowAnchor = anchor;
		//save it for later
		icons[name].icon = icon;
	}
	
	return icons[name].icon;
}


function createMarker(point, marker){
	var lat = marker.getAttribute("latitude"); 
	var lng = marker.getAttribute("longitude");
	var volcanoName = marker.getAttribute("volcano_name"); 
	var alertLevel = marker.getAttribute("alert_level"); 
	var colorCode = marker.getAttribute("color_code"); 
	var moreInfo = marker.getAttribute("more_info"); 	
		
		//GLog.write("moreInfo:" + moreInfo);
	colorCodes = colorCode.toLowerCase();
	alertLevels = alertLevel.toLowerCase();
	if (volcanoName == "Cascade Range") {
		var iconName = "observatory";
		
	} else {
	var iconName = colorCodes + '_' + alertLevels;
	}
	
		//create marker
		marker = new GMarker(
			new GLatLng(lat, lng), {icon: getIcon(iconName), clickable:true, title: volcanoName}); 

		marker.normalIcon = getIconURL(iconName);	
		
		GEvent.addListener(marker, "click", function(){
		window.open(moreInfo);
	});
	//var label = new ELabel(new GLatLng(lat,lng), volcanoName, new GSize(-40,0), 60 );  
	return marker;
}

	

function createMap() {
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("alert-map"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(40, -165), 2, G_PHYSICAL_MAP);
		GDownloadUrl("rss/highlights.xml", function(data, status) {
		//	GLog.write("downloading xml file"); 
	    var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
		//	GLog.write("creating markers variable"); 
	    for (var i = 0; i < markers.length; i++) {
				var m = markers[i];
				var point = new GLatLng(parseFloat(m.getAttribute("latitude")),
	parseFloat(m.getAttribute("longitude")));
			//GLog.write("creating points" + point);

		//add marker to map
		//this.map.addOverlay(marker);
				map.addOverlay(createMarker(point, markers[i]));
				
			}
		});
		
		
		
	}
}

window.onload = createMap;

