var map;
var selected_map_location = null;
var default_lat;
var default_lng;
var default_zoom;

function init_page(lat, lng, zoom, default_layer_id, default_location_id){
	var map_layer;
	var map_location;
	
	if ($('map')){
		if (GBrowserIsCompatible()) {
			map = new GMap2($('map'));		
			default_lat = lat;
			default_lng = lng;
			default_zoom = zoom;			
			map.setCenter(new GLatLng(default_lat, default_lng), default_zoom);
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.enableScrollWheelZoom();
		}
		
		map_layer_control.attach(map);
		
		GEvent.addListener(map, "click", function(marker, point){
			if (marker){
				map_location = map_layer_control.find_map_location_by_marker(marker);
				if (map_location){
					show_location(map_location.location_id);
				}
			}
		});
		
		show_layer(default_layer_id);
		show_location(default_location_id);
	}
}

function center_map(){
	
	map.panTo(new GLatLng(default_lat, default_lng));
}

function free_page(){
	if ($('map')){
		GUnload();
	}
}

function update_layer(checkbox_element, layer_id){		
	if (checkbox_element.checked){
		show_layer(layer_id);
	}
	else{
		hide_layer(layer_id);
	}
}

function set_layer(layer_id, visible){
	var map_layer = map_layer_control.find_map_layer_by_layer_id(layer_id);
	
	if (map_layer){
		var ul = $("ul_layer_" + layer_id);
		var li = null;
		var cb = null;
		
		if (visible){
			map_layer.show();
			if ($("layer_" + layer_id)){
				$("layer_" + layer_id).checked = true;
			}
		}
		else{
			map_layer.hide();
			if ($("layer_" + layer_id)){
				$("layer_" + layer_id).checked = false;
			}
		}
								
		if (ul){
			$A(ul.childNodes).each( function(li){
				$A(li.childNodes).each( function(element){
					if (element.nodeName == "INPUT"){
						set_layer(element.value, visible);
					}
				});
			});
		}
	}
}

function show_layer(layer_id){
	set_layer(layer_id, true);
}

function hide_layer(layer_id){
	set_layer(layer_id, false);
}
		
function show_location(location_id){
	var map_location = map_layer_control.find_map_location_by_location_id(location_id);

	if (map_location){
		map_location.show();
		map_location.show_info_window();
		selected_map_location = map_location;
		$('pLocation').innerHTML = "Naar: <strong>" + map_location.name + "</strong>";
		$('ctnrRouteRest').style.display = "block";
	}
}

function buildRoute(){
	if (map){	
		var directionsPanel = $("ctnrRouteResultDescription");
		var directions = new GDirections(map, directionsPanel);
		
		directionsPanel.innerHTML = "";
		
		if (selected_map_location){
			var waypoints = new Array();
			waypoints.push($("from_street").value + ", " + $("from_city").value);
			waypoints.push(selected_map_location.gmarker.getPoint());
			if (!directions.loadFromWaypoints(waypoints)){
				directionsPanel.innerHTML = "De route kan niet berekend worden.";
			}
		}
	}
}