
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 markersXml;
	var markerList = [];
	
	var directionsPanel = document.getElementById("route");
	var directions;
	
	var init = function(){
		GDownloadUrl(url, function(data){
			var xml = GXml.parse(data);
			var markersXml = xml.getElementsByTagName("map");
			var centerLat = parseFloat(xml.getElementsByTagName("map")[0].getAttribute("lat"));
			var centerLng = parseFloat(xml.getElementsByTagName("map")[0].getAttribute("lng"));
			var mapZoom = parseInt(xml.getElementsByTagName("map")[0].getAttribute("zoom"));
			
			map = new GMap2(document.getElementById(mapHolderId));
			map.setCenter(new GLatLng(centerLat,centerLng), mapZoom);
			map.addControl(new google.maps.LargeMapControl());
			map.addControl(new google.maps.MapTypeControl());
			
			directions = new GDirections(map, directionsPanel);
			
			markersXml = xml.getElementsByTagName("marker");
			
			for (var i = 0; i < markersXml.length; i++){							
				var point = new google.maps.LatLng( parseFloat(markersXml[i].getAttribute("lat")), parseFloat(markersXml[i].getAttribute("lng")));
				
				function createMarker(index){
					var myMarker = new google.maps.Marker(point);									

					google.maps.Event.addListener(myMarker, "click", function() {
						myMarker.openInfoWindowHtml(markersXml[index].firstChild.data);
					});
					
					return myMarker;
				}
				
				var marker = new createMarker(i);
				
				markerList[i] = marker;
				
				map.addOverlay(marker);
				
				if (markersXml[i].getAttribute("openInfoWindowHtml") == "true"){
					marker.openInfoWindowHtml(markersXml[i].firstChild.data);
				}
			}
									   
		});				
	}();
	
	this.switchMarker = function(num){		
		markerList[num].openInfoWindowHtml(markersXml[num].firstChild.data);
	}
	
	this.clearMap = function(){
		
	}
	
	this.getDirection = function(from, destination){		
		directions.load("from: " + from + "  to:" + destination);
	}
}

function genGmap(){
	window.onunload = "";
	var map = new gmap("gmap-holder");	
	var youAreHere = "@51.449353,-0.407224";
	
	var myTables = new Array();

	for (var i = 0; i < document.getElementsByTagName('table').length; i ++){
		if (document.getElementsByTagName('table')[i].className === 'directions'){
			myTables.push(document.getElementsByTagName('table')[i]);			
		}
	}	

	for (var j = 0; j < myTables.length; j ++){
		var myLinks = myTables[j].getElementsByTagName('a');
		
		for (var k = 0; k < myLinks.length; k++){
			var mylink = myLinks[k].onclick = function(){
								
				$("#maplist").accordion('disable');
								
				var destination =  this.getAttribute('rel');				
				map.getDirection(youAreHere, destination);
								
				return false;
			}
		}
	}	
}


addLoadEvent(genGmap);


