
function addLoadEvent(func){
    var oldonload = window.onload;
   
    if (typeof window.onload != 'function'){
        window.onload = func;
       
    } else {   
        window.onload = function(){
            if(oldonload){
                oldonload();
            }
            func();
        }
    }
}

var gmap = function(id){	
	var map;
	var url = "gmap.xml";
	var mapHolderId = id;
	var locationList;
	var markerList = [];
	
	var init = function(){
		var xhr = false;
		
		if (window.XMLHttpRequest){
			xhr = new XMLHttpRequest();
			
		} else {		
			if (window.ActiveXObject) {
				
				try	{					
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
					
				} catch (error) { alert(error); }
			}
		}
		
		if (xhr){
			xhr.onreadystatechange = function(){				
				if (this.readyState == 4){					
					if (this.status == 200){
						//var outMsg = xhr.responseText;
						if(this.responseXML){
							var xmlDoc = this.responseXML;							
							var centerLat = parseFloat(xmlDoc.getElementsByTagName("map")[0].getAttribute("lat"));
							var centerLng = parseFloat(xmlDoc.getElementsByTagName("map")[0].getAttribute("lng"));
							var mapZoom = parseInt(xmlDoc.getElementsByTagName("map")[0].getAttribute("zoom"));
							
							map = new GMap2(document.getElementById("gmap-holder"));							
							map.setCenter(new GLatLng(centerLat, centerLng), mapZoom);
							map.addControl(new google.maps.LargeMapControl());
							map.addControl(new google.maps.MapTypeControl());
							
							locationList = this.responseXML.getElementsByTagName("location");
														
							for (var i = 0; i < locationList.length; i++){							
								var point = new google.maps.LatLng( parseFloat(locationList[i].getAttribute("lat")), parseFloat(locationList[i].getAttribute("lng")));
								
								function createMarker(index){
									var myMarker = new google.maps.Marker(point);									

									google.maps.Event.addListener(myMarker, "click", function() {
										myMarker.openInfoWindowHtml(locationList[index].firstChild.data);
									});
									
									return myMarker;
								}
								
								var marker = new createMarker(i);
								
								markerList[i] = marker;
								
								map.addOverlay(marker);
								
								if (locationList[i].getAttribute("openInfoWindowHtml") == "true"){
									marker.openInfoWindowHtml(locationList[i].firstChild.data);									
								}
							}
						}
						
					} else {
						alert("There was a problem with the request " + this.status );
					}
				}				
			};
			
			// GET, url, true = asynchronous
			xhr.open("GET", url, true);
			xhr.send(null);

		} else {
			alert("Sorry, but I couldn't create an XMLHttpRequest");
		}
	}();
	
	this.switchMarker = function(num){		
		markerList[num].openInfoWindowHtml(locationList[num].firstChild.data);
	}
}

function genGmap(){
	window.onunload = "";
	var map = new gmap("gmap-holder");	
	
	var linksContainer = document.getElementById("right-column");
	var links = linksContainer.getElementsByTagName("a");
	
	for (var i = 0; i < links.length; i++){
		var myLink = links[i];
		myLink.onclick = function(){
			var rel = parseInt(this.getAttribute("rel")) ;
			
			map.switchMarker(rel);
			
			return false;
		}
	}
}

addLoadEvent(genGmap);



