// JavaScript Document
var stored_events; 

function display_selected_base_layer(layer_name)
{
	//Declare local variables
	var radio_button_name = "";
	var radio_button; 
	
	//Determine the name of the checkbox to check
	switch(layer_name)
	{
		
		case "OS Basemap":
			radio_button_name = "osbasemap";
			break;			
		case "Aerial Base Map":
			radio_button_name = "aerialbasemap";
			break;			
		case "Hybrid":
			radio_button_name = "hybrid";
			break;			
	} 
	
	//Get a handle on the radio buttin to show selected
	if(radio_button_name != "")
	{
		radio_button = document.getElementById(radio_button_name);
		if(radio_button)
		{
			radio_button.checked = true;
		}
	}
	
}

function display_selected_overlay(layer_name)
{
	//Declare local variables
	var check_box_name = "";
	var check_box; 
	
	//Determine the name of the checkbox to check
	switch(layer_name)
	{
		
		case "Community":
			check_box_name = "community";
			break;			
		case "Council Offices":
			check_box_name = "counciloffices";
			break;			
		case "Democracy":
			check_box_name = "democracy";
			break;			
		case "Education":
			check_box_name = "education";
			break;			
		case "Environment":
			check_box_name = "environment";
			break;			
		case "Health":
			check_box_name = "health";
			break;			
		case "Recreation":
			check_box_name = "recreation";
			break;			
		case "Waste":
			check_box_name = "recycling";
			break;			
	} 
	
	//Get a handle on the check box to show checked
	if(check_box_name != "")
	{
		check_box = document.getElementById(check_box_name);
		if(check_box)
		{
			check_box.checked = true;
		}
	}
	
}

function setBaseLayer(layer_name)
{	
	//Declare local variables 
	var new_base_layer;
	
	//Are we switching on the hybrid base map (OS plus Aerial)
	if(layer_name == "Hybrid Basemap")
	{
		//Hybrid layer - switch on OS basemap + Aerial Overlay

		//Get a handle on the OS base layer
		new_base_layer = map.getLayersByName("OS Basemap")[0];	
		if(new_base_layer) 
		{

			//Set the new base layer
			map.setBaseLayer(new_base_layer);
		}
		 
		//Need to switch on the Aerial Photos overlay
		setOverlay("Aerial Photos", true);
					
	}
	else
	{

		//Get a handle on the specified layer 
		new_base_layer = map.getLayersByName(layer_name)[0];
		if(new_base_layer) 
		{

			//Set the new base layer
			map.setBaseLayer(new_base_layer);
		}
		
		//Need to switch off the Aerial Photos overlay
		setOverlay("Aerial Photos", false);
		
	}
	
}


function setOverlay(overlay_name, show)
{

	//Get a handle on the aerial photos overlay 
	var layer = map.getLayersByName(overlay_name)[0];	
	if(layer) 
	{
	
		//Set the overlay on/off
		layer.setVisibility(show);
	}
	
}
	
function layerClicked(selected_layer)
{
	//Declare local variables 
	var layer_name = selected_layer.id;

	//Switch on/off the requested layer		 
	switch(layer_name)
	{
		case "community":
			setOverlay("Community", selected_layer.checked);
			break;
		case "counciloffices":
			setOverlay("Council Offices", selected_layer.checked);
			break;
		case "democracy":
			setOverlay("Democracy", selected_layer.checked);
			break;				
		case "education":
			setOverlay("Education", selected_layer.checked);
			break;			
		case "environment":
			setOverlay("Environment", selected_layer.checked);
			break;			
		case "health":
			setOverlay("Health", selected_layer.checked);
			break;		
		case "recreation":
			setOverlay("Recreation", selected_layer.checked);
			break;			
		case "recycling":
			setOverlay("Waste", selected_layer.checked);
			break;										

	} 
	
}
	
function search_addresses() 
{
	//Declare local variables 
	var url_params;
	var search_terms; 
	var search_url = "/services/AddressSearch/SearchResultsHTML.aspx?"; 
	
	//Extract the parameters from the query string 
	url_params = get_url_params();
	
	//Display the terms search on
	search_terms = url_params['searchterms'];
	display_searchterms(search_terms); 
	
	//Build up the url to perform the search
	search_url += "SearchTerms=" + search_terms;
	search_url += "&base=" + url_params['base'];
	search_url += "&overlays=" + url_params['overlays'];
	
	//Search for addresses
	load_address_results(search_url);
	
}
	
function load_address_results(url)
{
	//Declare local variables
	var search_request = new XMLHttpRequest();
	
	search_request.open("GET", url, true);
	//search_request.setRequestHeader("content-type", "text/xml");
	search_request.onreadystatechange = function()
	{
		if(search_request.readyState == 4)
		{
			if(search_request.status == 200)
			{
				show_address_details(search_request.responseText);
			}
			
		}
		
	};
	
	search_request.send();
}

function show_address_details(address_results)
{
	//Declare local variables 
	var results_field = ""; 
	var results_html = ""; 
	var search_field;
	
	//alert(address_results);
	//Get a handle on the element used to display the search results	
	results_field = document.getElementById("addressSearch");
	if(results_field)
	{
		results_field.innerHTML = address_results;

		//Stop clicks on the address results bubbling down to the map
		
		//OpenLayers.Event.stopObservingElement(map.div);
	}
	
	//Move the cursor to the search terms field
	search_field = document.getElementById("searchterms");
	if(search_field)
	{
		search_field.focus();
	}
}
	
function perform_search()
{
	//Declare local variables 
	var base_layer_field;
	var overlays_field;
	var temp_name; 
	
	//Set the current base layer
	base_layer_field = document.getElementById("base");
	if(base_layer_field)
	{
		temp_name = get_base_layer();
		temp_name = replaceSubstring(temp_name, "+", " ");
		
		base_layer_field.value = temp_name;
	}
	
	//Set the current overlays
	overlays_field = document.getElementById("overlays");
	if(overlays_field)
	{
		temp_name = get_visible_layers();
		temp_name = replaceSubstring(temp_name, "+", " ");

		overlays_field.value = temp_name;
	}

}
	
function display_searchterms(search_terms)
{
	//Declare local variables 
	var search_field;
	var search_url; 

	//Get a handle on the search terms field		
	search_field = document.getElementById("searchterms");
	if(search_field)
	{
		//Display the supplied search terms
		search_field.value = unescape(search_terms);
		
	}
}

function load_tabs(uprn)
{
	//Declare local variables
	//var base_url = "/openlayers/proxy.asp?url=http://l72595/gis/cgi-bin/siscgi.exe?request=info_local_service&uprn=" + uprn;
	var proxy = "/openlayers/proxy.asp?url=";
	var base_url = proxy + "http://" + document.batch_form.server_name.value + "/gis/cgi-bin/siscgi.exe?request=info_local_service&uprn=" + uprn;
	
	
	//Ensure a valid uprn has been supplied 
	if(uprn != undefined)
	{
		//Load in the info for the relavant data sets
		var info_link; 
		
		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=community";
		load_local_info(info_link, "community");

		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=offices";	
		load_local_info(info_link, "offices");

		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=democracy";	
		load_local_info(info_link, "democracy");

		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=educational";	
		load_local_info(info_link, "education");

		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=educational";	
		load_local_info(info_link, "education");				

		//Load environmental information
		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=environment";	
		load_local_info(info_link, "environment");				

		//Load events information
		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=events";	
		load_local_info(info_link, "events");				

		//Load health information
		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=health";	
		load_local_info(info_link, "health");				

		//Load recreation information
		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=recreation";	
		load_local_info(info_link, "recreation");				
		
		//Load Recycing information
		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=waste";	
		load_local_info(info_link, "recycling");			
		
		//Load News information
		info_link = "/services/LocalInfo/InfoHTML.aspx?uprn=" + uprn + "&type=news";	
		load_local_info(info_link, "news");		
		
		//var help_tab;
		//var help_details;
		//var community_tab; 

		//Get a handle on the Help tab
		var help_tab = document.getElementById("helpTab");
		if(help_tab)
		{
			//Switch the Help tab off
			help_tab.setAttribute("class", "");
			
		}
		
		//Get a handle on the Help details
		var help_details = document.getElementById("help_details");
		if(help_details)
		{
			//Switch the Help tab off
			help_details.style.display = "none";
			
		}

		//Get a handle on the Community tab
		var community_tab = document.getElementById("communityTab");
		if(community_tab)
		{
			//Switch the Community tab on
			community_tab.setAttribute("class", "on");
			
		}
		
		//Get a handle on the Community Results
		var community_results = document.getElementById("community_results");
		if(community_results)
		{
			//Switch the Community tab on
			community_results.style.display = "block";
			
		}

	}

}


function load_local_info(url, data_type)
{
	//Declare local variables

	var search_request = new XMLHttpRequest();
	
	search_request.open("GET", url, true);
	search_request.onreadystatechange = function()
	{
		if(search_request.readyState == 4)
		{
			if(search_request.status == 200)
			{
				show_results(search_request.responseText, data_type);
			}
			
		}
		
	};
	
	search_request.send();
}

function show_results(info_results, data_type)
{
	//Declare local variables 
	var results_field = ""; 
	var results_html = ""; 
	

	//Determine the results field to use 
	switch(data_type)
	{
		case "democracy":
			results_field = "democracy_results";
			break;
		case "education":
			results_field = "education_results";
			break;
		case "community":
			results_field = "community_results";
			break;
		case "offices":
			results_field = "offices_results";
			break;
		case "environment":
			results_field = "environment_results";
			break;
		case "health":
			results_field = "health_results";
			break;
		case "news":
			results_field = "news_results";
			break;
		case "recreation":
			results_field = "recreation_results";
			break;
		case "events":
			results_field = "events_results";
			break;
		case "health":
			results_field = "health_results";
			break;
		case "recreation":
			results_field = "recreation_results";
			break;
		case "recycling":
			results_field = "recycling_results";
			break;
		case "news":
			results_field = "news_results";
			break;
		default:
			break;
	}
	
	//Get a handle on the element used to display the search results	
	results_field = document.getElementById(results_field);
	if(results_field)
	{
		//results_field.innerHTML = info_results;
		results_field.innerHTML = info_results;
	}
	
}


	

function reset()
{
	//Get a handle on the results base layer overlay 
	var base_layer = map.getLayersByName("Results Base Layer")[0];	
	if(base_layer) 
	{
	
		//Set the overlay on/off
		base_layer.setVisibility(false);
	}
	
	//Get a handle on the results layer overlay 
	var results_layer = map.getLayersByName("Results")[0];	
	if(results_layer) 
	{
	
		//Set the overlay on/off
		results_layer.setVisibility(false);
	}

	//Get a handle on the element used to display the search results	
	results_field = document.getElementById("show_results");
	if(results_field)
	{
		//results_field.innerHTML = info_results;
		results_field.innerHTML ="<p>&nbsp;</p>";
	}

	//Remove any popups
	var popups = map.popups;
	for(current_popup in popups)
	{
		map.removePopup(popups[current_popup]);
	}
	
}	
	

function load_address_line(uprn)
{
	//Declare local variables
	var url = "/services/AddressSearch/AddressHTML.aspx?uprn=" + uprn;

	var search_request = new XMLHttpRequest();
	
	search_request.open("GET", url, true);
	search_request.onreadystatechange = function()
	{
		if(search_request.readyState == 4)
		{
			if(search_request.status == 200)
			{
				show_address_line(search_request.responseText);
			}
			
		}
		
	};
	
	search_request.send();
}

function show_address_line(address_results)
{
	//Declare local variables 
	var results_field = ""; 
	var results_html = ""; 
	
	//Get a handle on the element used to display the address
	results_field = document.getElementById("address_details");
	if(results_field)
	{
		results_field.innerHTML = address_results;

	}
}

function close_address_results()
{
	//Declare local variables 
	var results_field = ""; 
	
	//Get a handle on the element used to display the address search results
	results_field = document.getElementById("addressSearch");
	if(results_field)
	{
		results_field.style.display = "none";

	}
}

function go_to_town(town_list)
{
	//Get the name of the selected town/locality
	var selected_town = town_list.options[town_list.selectedIndex].value;
			
	//Ensure we are dealing with a valid town/locality			
	if(selected_town != "Select a location")
	{
		//Build up the link to navigate to the selected town/locality
		//window.location = "/local/map.asp?type=locality&id=" + selected_town;
		window.location = "?type=locality&id=" + selected_town + "&" + get_selected_layers();
	}
	
}


function get_base_layer() 
{
	//Declare local variables
	var base_layer = "";

	for(var i=0; i< map.layers.length; i++) 
	{
		//Get a handle on all the currently loaded layers
		var layer = map.layers[i];

		//Ensure we are dealing with a base layer
		if (layer.isBaseLayer) 
		{
			//Is the layer visible 
			if(layer.visibility)
			{
				//Store the name of the base layer
				base_layer = layer.name;
				
			}

		}
	}

	//Return the curent base lyaer
	return base_layer;
	
}

function get_visible_layers() 
{
	//Declare local variables
	var layers = "";
	var first_layer = true;
		
	for(var i=0; i< map.layers.length; i++) 
	{
		var layer = map.layers[i];

		//Ensure the layer isn't a base layer
		if (!layer.isBaseLayer) 
		{
			//Is the layer visible 
			if(layer.visibility)
			{
				//Is this is the first layer found
				if(first_layer)
				{
					//First layer so start of the layers list
					layers += layer.name;
					
					//Flag that we have processed the first layer
					first_layer = false; 
				}
				else
				{
					//Not the first layer so append it to the list of layers
					layers += "," + layer.name;
				}
			}

		}
	}

	//Return the loaded layers
	return layers;

}

function get_uprn_for_town(town_name)
{
	var town_uprn = ""; 
	
	//Determine the results field to use 
	switch(town_name)
	{

		case "Aberdeen":
			town_uprn = "9051031889";
			break;
		case "Aboyne":
			town_uprn = "151086184";
			break;
		case "Alford":
			town_uprn = "151085030";
			break;
		case "Ballater":
			town_uprn = "151086444";
			break;			
		case "Banchory":
			town_uprn = "151085221";
			break;			
		case "Banff":
			town_uprn = "151141349";
			break;				
		case "Braemar":
			town_uprn = "151085205";
			break;				
		case "Ellon":
			town_uprn = "151100180";
			break;				
		case "Fraserburgh":
			town_uprn = "151087323";
			break;				
		case "Huntly":
			town_uprn = "151088475";
			break;								
		case "Inverurie":
			town_uprn = "151085780";
			break;
		case "Kemnay":
			town_uprn = "151085965";
			break;			
		case "Laurencekirk":
			town_uprn = "151086001";
			break;				
		case "Mintlaw":
			town_uprn = "151086139";
			break;				
		case "Oldmeldrum":
			town_uprn = "151086122";
			break;				
		case "Peterhead":
			town_uprn = "151089347";
			break;				
		case "Portlethen":
			town_uprn = "151086192";
			break;				
		case "Stonehaven":
			town_uprn = "151651176";
			break;	
		case "Turriff":
			town_uprn = "151085422";
			break;							
		case "Westhill":
			town_uprn = "151087059";
			break;							

		default:
			break;
	}

	//Return the temp uprn to represent the specified town
	return town_uprn; 
}

