var map = null;
var zoomlevel = 1;
var latlng = null;
var slide = null;
var unloading = false;

function savePos() {
  		zoomlevel = this.getZoom(); 
  		latlng = this.getCenter(); 
  		//setHashParam("l", latlng.lat());
  		//setHashParam("g", latlng.lng());	
  		//setHashParam("z", zoomlevel);
  		//info = document.getElementById("info");
  		//info.innerHTML = "lat: " + latlng.lat() + "; lng: " + latlng.lng() + "; zoom: " + zoomlevel;
}

function getChildElement(n, tagName) {
	var cn = n.getElementsByTagName(tagName);
	if (cn.length > 0)
		return cn[0];
	else
		return null;
} 

function createMarker(n) {
	
	var gl = getChildElement(n, "geo-location");
	var ptitle = getChildElement(n, "title");
	var btitle = getChildElement(n, "booktitle");
	var loc = getChildElement(n, "location");

	if (gl != null) {
		var marker = new GMarker(new GLatLng(parseFloat(gl.getAttribute("lat")),
	                  parseFloat(gl.getAttribute("lng"))));
	
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml("<div class='infow'><p><b>" + ptitle.textContent + "</b></p>" + 
			"<p>" + btitle.textContent + "</p>" + 
			"<p><i>" + loc.textContent + "</i></p>" +
			"</div>");
		});
       
        return marker;
	} else 
		return null;
}

function loadmap(url) {
  if (GBrowserIsCompatible()) {

        map = new GMap2(document.getElementById("map_canvas"));
        
        map.centerMap = function(lat, lng, zoom) {
        	map.setCenter(new GLatLng(lat, lng), zoom);
        }
  	 	        
        if (latlng == null) {
			zoomlevel = getHashParam("z", 1);
			latlng = new GLatLng(getHashParam("l",36.59), getHashParam("g",4.21));
			//alert(latlng);
        }
        
        map.setCenter(latlng, zoomlevel);
        map.addControl(new GSmallMapControl());
        //map.addControl(new GMapTypeControl());
                
        GEvent.addListener(map, "zoomend", savePos);
        GEvent.addListener(map, "moveend", savePos);
		        
        GDownloadUrl(url, 
        	function(data) {
	          var xml = GXml.parse(data);
			  var xpe = new XPathEvaluator();
			  var result = xpe.evaluate("/bib/conference[./geo-location]", xml, null, 0, null);
			  var res;
			  while (res = result.iterateNext()) {
				  m = createMarker(res);
				  if (m != null)
	          		map.addOverlay(m);
			  }
              
              end_loading();
              
	        }
        );
        document.getElementById('map_region').style.display = "block";
  }
}

function unloadmap() {
	document.getElementById('map_region').style.display = "none";
}