        
         
function onLoad() {
	var zoomLevel = 15;
    var map = new GMap(document.getElementById("map"));
  	var overlays = [];
  	var countryOverlays = [];
  	var MenuText = [];
  	
    map.setMapType(G_SATELLITE_TYPE);
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.centerAndZoom(new GPoint(55, 40), zoomLevel);
   
   //Does nothing now - will use it when Microsoft fix their shit
   function writeMenu(text)
	{
		
			x = document.getElementById("menu");
			//x.innerHTML = '';
			//x.innerHTML = text;
		
	} 
   
	function displayOverlays() {
	    map.clearOverlays();
	    if (map.getZoomLevel() > 13) {
			for (var i = 0; i < countryOverlays.length; i++) {
				map.addOverlay(countryOverlays[i]);
			}
		} else {
			for (var country in overlays) {
				for (var i = 0; i < overlays[country].length; i++) {
					map.addOverlay(overlays[country][i]);
				}
			}
		}
	}
	

  var request = GXmlHttp.create();
  request.open("GET", "locations.xml", true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var xmlDoc = request.responseXML;
      // obtain the array of markers and loop through it
      var country = xmlDoc.getElementsByTagName("country");
      MenuText.push("<ul id='menuList'>");
      for (var y = 0; y < country.length; y++) { 
          var countryName = country[y].getAttribute("label");	
      	  var lat = parseFloat(country[y].getAttribute("lat"));
	      var lng = parseFloat(country[y].getAttribute("lng"));
	      var cmarker = new GMarker(new GPoint(lng,lat)); 
	      cmarker.my_name = countryName;
      	  countryOverlays[y] = cmarker; 
      	  MenuText.push("<li>"+countryName+"<ul id='"+countryName+"'>");
      	  overlays[countryName] = new Array();     	     	 
      	  var markers = country[y].getElementsByTagName("marker");
	      
	      for (var i = 0; i < markers.length; i++) {  
	        lat = parseFloat(markers[i].getAttribute("lat"));
	        lng = parseFloat(markers[i].getAttribute("lng"));
	        point = new GPoint(lng,lat);
	        label = markers[i].getAttribute("label");
	        var marker = new GMarker(point);
	        marker.my_name = label;     
	        
	        var links = markers[i].getElementsByTagName("link");
	        var html = [];  
	           
	        for (var x=0;x < links.length;x++) {
	        		var href=links[x].getAttribute("href");
	        		var link_name=links[x].getAttribute("label");
	        		html[x] = '<li><a href="'+href+'">'+link_name+'</a></li>';
	        		MenuText.push("<li>"+html[x]+"</li>");
	        }
	        if (links.length == 1) {
	        		marker.my_html = "<div id='infowindow' style='white-space: nowrap;'><h4><ul>"+html.join()+"</ul></h4></div>";
	        	} else {
	        		marker.my_html = "<div id='infowindow' style='white-space: nowrap;'><h3>"+label+"</h3><ul>"+html.join(" ")+"</ul></div>";
	        	}
	        overlays[countryName][i] = marker;	         
	      }  
	      MenuText.push("</ul></li>");
	      
	    }
	    MenuText.push("</ul>");
	    displayOverlays();
	    writeMenu(MenuText.join(" "));
      }   
      
    }  
   
      request.send(null);

      GEvent.addListener(map, "click", function(overlay, point) {
        if (overlay) {
          if (map.getZoomLevel() > 13) {
          	map.centerAndZoom(overlay.point, 12);
          	currentCountry = overlay.my_name;
          	displayOverlays();
          } else {
          	overlay.openInfoWindowHtml(overlay.my_html);
          }
        } else {
        		displayOverlays(); 
        }
      });
      
      GEvent.addListener(map, "zoom", function(oldZoomLevel, newZoomLevel) {
        displayOverlays();
      });
      
}