
var markerGroups = {"1": [], "2": [], "3": [], "4": [], "5": []};

function initialize() {
	
	// reset each time to counter problems if back button used after clicking onto a profile page
	document.forms['persecutionLevelSelector'].severe_persecution.checked = true;
	document.forms['persecutionLevelSelector'].oppression.checked = true;
	document.forms['persecutionLevelSelector'].severe_limitations.checked = true;
	document.forms['persecutionLevelSelector'].some_limitations.checked = true;
	document.forms['persecutionLevelSelector'].some_problems.checked = true;
	
  if (GBrowserIsCompatible()) {
	var map = new GMap2(document.getElementById("map_canvas"));
	
	//centre map on middle east and zoom right out to world view
	map.setCenter(new GLatLng(29.22, 47.58), 1);
	
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());

   // Create a base icon for all of our markers that specifies the
	// shadow, icon dimensions, etc.
	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);
	baseIcon.infoShadowAnchor = new GPoint(18, 25);


	// Creates a marker whose info window displays the letter corresponding
	// to the given index.
	function createMarker(point, index, id, name, capital, level, wwlPosition) {
	  // Create an icon for this point using our icon class
	  var countryIcon = new GIcon(baseIcon);
		
	  // set specific properties for the icon	
	  countryIcon.image = 'wwl/images/marker_' + level + '.png';
	  countryIcon.shadow = 'wwl/images/marker_shadow.png';
	  countryIcon.iconSize = new GSize(20, 20);
	  countryIcon.shadowSize = new GSize(37, 20);
	  countryIcon.iconAnchor = new GPoint(6, 20);
	  countryIcon.infoWindowAnchor = new GPoint(5, 1);

	  // Set up our GMarkerOptions object
	  markerOptions = {icon:countryIcon, title:name};
	  var marker = new GMarker(point, markerOptions);

	  // Add element to the end of the appropriate array of markers
	  markerGroups[String(level)].push(marker);

	  var persecutionLevel;
	  
	  // assign text for World Watch colour code
	  if (level == 1) {
		persecutionLevel = "Severe persecution";
	  }
	  else if (level == 2) {
		persecutionLevel = "Oppression";
	  }
	  else if (level == 3) {
		persecutionLevel = "Severe limitations";
	  }
	  else if (level == 4) {
		persecutionLevel = "Some limitations";
	  }
	  else if (level == 5) {
		persecutionLevel = "Some problems";
	  }	
	  
	  // copy wwl position for display purposes
	  var wwlPositionScreen = wwlPosition;
	  
	  // trim leading 0's from wwlPositions less than 10
	  if (String(wwlPosition.substring(0,1)) == "0") {
		wwlPositionScreen = String(wwlPosition.substring(1));
	  }
	  
	  // copy name for display purposes
	  var nameScreen = name;
	  
	  // name for filename link (replace spaces with underscores and remove bracketed terms) 
	  name = name.replace(/\s/g, "_").toLowerCase();
	  name = name.replace(/\(/, "");
	  name = name.replace(/\)/, "");
	  //name = name.replace(/[_]\([a-z_]*\)/, "");
		  
	  GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml("<table><tr><td><img src='wwl/images/sm/" + name + ".jpg' width='55' height='55' alt='" + nameScreen + "' class='ib'></td><td>Country: <b>" + nameScreen + "</b><br />Capital: <b>" +  capital + "</b><br />Persecution: <b>" + persecutionLevel + "<br /></b>WWL Postion: <b>" + wwlPositionScreen + "</b></td></tr></table><a href='wwl.php?country="+ id +"'> " + nameScreen + " profile &raquo;</a>");
	  });
	  return marker;
	}

	// Download the data in the xml file and load it on the map. 
	GDownloadUrl("wwl/countries.xml", function(data) {
	  var xml = GXml.parse(data);
	  var ids = xml.documentElement.getElementsByTagName("id");
	  var names = xml.documentElement.getElementsByTagName("name");
	  var capitals = xml.documentElement.getElementsByTagName("capital");
	  var markers = xml.documentElement.getElementsByTagName("marker");
	  var wwlPositions = xml.documentElement.getElementsByTagName("wwlPosition")
	  var persecutionLevels = xml.documentElement.getElementsByTagName("persecutionLevel");
	  
	  // Put selected markers onto the map
	  for (var i = 0; i < markers.length; i++) {
		var latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
								parseFloat(markers[i].getAttribute("lng")));
		map.addOverlay(createMarker(latlng, i, ids[i].childNodes[0].nodeValue, names[i].childNodes[0].nodeValue, capitals[i].childNodes[0].nodeValue, persecutionLevels[i].childNodes[0].nodeValue, wwlPositions[i].childNodes[0].nodeValue));
	  }
	});
  }
}

// Toggle markers on and off with respect to persecution level check boxes
function toggleGroup(level) { 
  for(var i = 0; i < markerGroups[level].length; i++) {
	var marker = markerGroups[level][i];
	if(marker.isHidden()) {
	  marker.show();
	} else {
	  marker.hide();
	}
  }
}

var strOnLoad = ""; 
var strOnUnload = "";
strOnLoad += 'initialize();';
self.onload = new Function(strOnLoad);
strOnUnload += 'GUnload();';
self.onunload = new Function(strOnUnload);

window.onload = initialize; 