﻿var geocoder = new GClientGeocoder();
var map;
var pointObjects = new Array();

function nextStep(){
}


function route(coords, type, icon){
	this.coords = coords;
	this.type = type;
	this.icon = icon
}
   


function initialize() {     
    if (GBrowserIsCompatible()) {   
        map = new GMap2(document.getElementById("map_canvas")); 
        map.setCenter(new GLatLng(-1.230374, 11.513672), 12);
		
		
		GDownloadUrl(url, function(data, responseCode) {
			try{																	
				var xml = GXml.parse(data);
			}catch(e){
				alert("Error downloading markers..." + data );
			}
			var markers = xml.documentElement.getElementsByTagName("route");
			
			
			for (var i = 0; i < markers.length; i++) {
				
				
				lat = markers[i].getAttribute("coords").split(",")[0];
				long = markers[i].getAttribute("coords").split(",")[1]	;
				type = markers[i].getAttribute("type");
				icon = markers[i].getAttribute("icon");
		
				routeObj = new route(new GLatLng(lat, long), type, icon);

				pointObjects.push(routeObj);
			}				
			
			placeRoutes();
			nextStep();
			
			
		});		
 
		
		
	    
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
		map.showControls();

        map.addMapType(G_PHYSICAL_MAP); 
        map.setMapType(G_NORMAL_MAP);


		// get array of map types
		var mapTypes = map.getMapTypes();
		// overwrite the getMinimumResolution() and getMaximumResolution() methods for each map type
		for (var i=0; i<mapTypes.length; i++) {
		mapTypes[i].getMinimumResolution = function() {return 2;}
		mapTypes[i].getMaximumResolution = function() {return 10;}
}
        																		
        map.disableScrollWheelZoom();
	}
}


function placeRoutes(){
	//alert(pointObjects.length);
	var bounds = new GLatLngBounds()
        for (var i=0; i< pointObjects.length; i++) {
            bounds.extend(pointObjects[i].coords);
            //map.addOverlay(new GMarker(pointObjects[i].coords));
        }

        map.setZoom(map.getBoundsZoomLevel(bounds));
        map.setCenter(bounds.getCenter());
		
		drawlines()
}

function drawlines() {
	for (var i=0; i< pointObjects.length -1; i++) {

			tempPoly = [pointObjects[i].coords, pointObjects[i + 1].coords];
		
			
			switch(pointObjects[i + 1].type)
			{
			case "1":
			  map.addOverlay(new GPolyline(tempPoly, "#FF0000"));
			  break;    
			case "2":
			  map.addOverlay(new GPolyline(tempPoly, "#0000FF"));
			  break;
			case "3":
			  break;
			default:
			}
			
			
			var icon  = new GIcon(G_DEFAULT_ICON);
			icon.image = pointObjects[i].icon;
			icon.shadow = "";
			icon.iconSize = new GSize(9, 9);
			icon.iconAnchor = new GPoint(4, 4);
			
			
			
			//replace with images
			if(i == 0){
				map.addOverlay(new GMarker(pointObjects[i].coords, icon, true));
			}
			map.addOverlay(new GMarker(pointObjects[i + 1].coords, icon, true));
            
        }
}
   

function addEvent(obj, evType, fn){ 
 if (obj.addEventListener){ 
   obj.addEventListener(evType, fn, false); 
   return true; 
 } else if (obj.attachEvent){ 
   var r = obj.attachEvent("on"+evType, fn); 
   return r; 
 } else { 
   return false; 
 } 
}

addEvent(window, 'load', initialize);
addEvent(window, 'unload', GUnload);
