//document-level code

	//document variables
	var emptyImage = new Image();
	var regionIds = new Array();
	var regionNames = new Array();
	var highlightedRegionImages = new Array();
	var selectedRegions = new Array();
	var selectedRegionImages = new Array();
	var goButtonImage = new	Image();
	var goButtonImageDisabled = new	Image();

	//load empty image
	emptyImage.src = "images/empty.gif";
	
	//load go images
	goButtonImage.src = "images/search/go.gif";
	goButtonImageDisabled.src = "images/search/go_off.gif";

//event-handling functions

	//mouseOverRegion FUNCTION
	function mouseOverRegion(regionIndex)
	{
		if (selectedRegions[regionIndex] == false)
		{
			highlightRegion(regionIndex);
		}
		//show city container
		var cityListContainerDiv = document.getElementById("cityListContainerDiv");
		cityListContainerDiv.style.visibility = "visible";
		//show cities of specified region index
		var cityListDivs = getCityListDivs();
		var cityListDiv = cityListDivs[regionIndex];
		cityListDiv.style.visibility = "visible";
	}
	
	//mouseOutRegion FUNCTION
	function mouseOutRegion(regionIndex)
	{
		if (selectedRegions[regionIndex] == false)
		{
			unhighlightRegion(regionIndex);
		}
		//hide city container
		var cityListContainerDiv = document.getElementById("cityListContainerDiv");
		cityListContainerDiv.style.visibility = "hidden";
		//hide all city lists
		var cityListDivs = getCityListDivs();
		for (index = 0; index < cityListDivs.length; index++)
		{
			var cityListDiv = cityListDivs[index];
			cityListDiv.style.visibility = "hidden";
		}
	}
				
	//toggleRegion FUNCTION
	function toggleRegion(regionIndex)
	{
		//toggle whether or not region is selected
		selectedRegions[regionIndex] = !selectedRegions[regionIndex];
		//show/hide selected image
		if (selectedRegions[regionIndex] == true)
		{
			//select region
			selectRegion(regionIndex);
		}
		else
		{
			//go back to just being highlighted
			highlightRegion(regionIndex);
		}
		//coordinate selected region list
		coodinateSelectedRegionList();
		//coordinate go button
		coordinateGoButton();
	}
	
	//initRegions FUNCTION
	function initRegions()
	{
		//enumerate regions; highlighted those that are selected
		for (regionIndex = 0; regionIndex < selectedRegions.length; regionIndex++)
		{
			if (selectedRegions[regionIndex] == true)
			{
				//select region
				selectRegion(regionIndex);
			}
		}
		//coordinate go button
		coordinateGoButton();
		//coodinate selected region list
		coodinateSelectedRegionList();
	}
	
	//submitSearch FUNCTION
	function submitSearch()
	{
		//determin if at least one region is selected
		var regionsAreSelected = areRegionsSelected();
		if (regionsAreSelected == true)
		{
			//form is valid:
			//set regions field value
			var regionsValue = new String();
			for (regionIndex = 0; regionIndex < selectedRegions.length; regionIndex++)
			{
				if (selectedRegions[regionIndex] == true)
				{
					//append delimiter
					if (regionsValue.length > 0)
					{
						regionsValue = regionsValue + ",";
					}
					//get id
					regionId = regionIds[regionIndex];
					//append id
					regionsValue = regionsValue + regionId;
				}
			}	
			//set field
			document.serverForm.regions.value = regionsValue;		
			//submit form
			document.serverForm.submit();
		}
		else
		{
			//form is not valid:
			alert("You must select at least one region to perform the search.");
		}
	}

//helper functions

	//highlightRegion
	function highlightRegion(regionIndex)
	{
		//get region image
		var regionImages = getRegionImages();
		var regionImage = regionImages[regionIndex];
		//get highlighted region image
		var highlightedRegionImage = highlightedRegionImages[regionIndex];
		//swap with highlighted region image
		if (regionImage != null)
		{
			regionImage.src = highlightedRegionImage.src;
		}		
	}
	
	//unhighlightRegion
	function unhighlightRegion(regionIndex)
	{
		//get region image
		var regionImages = getRegionImages();
		var regionImage = regionImages[regionIndex];
		//swap with empty image
		if (regionImage != null)
		{
			regionImage.src = emptyImage.src;
		}					
	}
	
	//selectRegion
	function selectRegion(regionIndex)
	{
		//get region image
		var regionImages = getRegionImages();
		var regionImage = regionImages[regionIndex];
		//get selected region image
		var selectedRegionImage = selectedRegionImages[regionIndex];
		//swap with selected region image
		if (regionImage != null)
		{
			regionImage.src = selectedRegionImage.src;
		}		
	}

	//coordinateGoButton
	function coordinateGoButton()
	{
		//determin if at least one region is selected
		var regionsAreSelected = areRegionsSelected();
		//enable/disable go button, depending on if regions have been selected
		var image = document.getElementById("goButton");
		if (regionsAreSelected == true)
		{
			image.src = goButtonImage.src;
		}
		else
		{
			image.src = goButtonImageDisabled.src;
		}
	}
	
	//coodinateSelectedRegionList
	function coodinateSelectedRegionList()
	{
		var selectedRegionListText = new String();
		for (regionIndex = 0; regionIndex < selectedRegions.length; regionIndex++)
		{
			if (selectedRegions[regionIndex] == true)
			{
				//append delimiter
				if (selectedRegionListText.length > 0)
				{
					selectedRegionListText += ", ";
				}
				//append region name
				selectedRegionListText += regionNames[regionIndex];
			}
		}		
		//set div
		var selectedRegionListSpan = document.getElementById("selectedRegionListSpan");
		var newText = document.createTextNode(selectedRegionListText);
		if (selectedRegionListSpan.childNodes.length == 0)
		{
			selectedRegionListSpan.appendChild(newText);
		}
		else
		{
			selectedRegionListSpan.replaceChild(newText, selectedRegionListSpan.childNodes[0]);
		}
	}
	
	//getRegionImages FUNCTION
	function getRegionImages()
	{
		return document.getElementsByName("regionImage");
	}

	//getDivArray FUNCTION
	function getDivArray(divId)
	{
		//get all div elements
		var allDivs = document.getElementsByTagName("div");
		//find elements with matching id
		var newIndex = 0;
		var divArray = new Array();
		for (index = 0; index < allDivs.length; index++)
		{
			var div = allDivs[index];
			if (div.id == divId)
			{
				divArray[newIndex] = div;
				newIndex++;
			}
		}
		//return
		return divArray;
	}

	//getCityListDivs FUNCTION
	function getCityListDivs()
	{
		var cityListDiv = getDivArray("cityListDiv");
		return cityListDiv;
	}
	
	//areRegionsSelected FUNCTION
	function areRegionsSelected()
	{
		for (index = 0; index < selectedRegions.length; index++)
		{
			if (selectedRegions[index] == true)
			{
				//at least one region was selected
				return true;
				break;
			}
		}
		//no regions were selected
		return false;
	}

