// JavaScript Document

var pointer = 0;
var searchText = "";

function displayMap() {
	// Read data div
	var data = new Array();
	data = document.getElementById('data').innerHTML.split(';');
	
	if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(data[13], data[14]), 15);
        map.setUIToDefault();
		map.setMapType(G_HYBRID_MAP);
		
		
		var point = new GLatLng(data[13], data[14]);
		marker = new GMarker(point);
        map.addOverlay(marker);
		map.enableInfoWindow();

		GEvent.addListener(marker, 'click', function() {
			var data = new Array();
			var html = '<div class="info">';
			data = document.getElementById('data').innerHTML.split(';');
			
			for (var i in data)
			{
				if (data[i]!='')
				{
					switch (i)
					{
					case '1':
						html = html + data[i] + "<br />";
						break;
					case '5': 
						html = html + data[i] + " bunks<br />";
						break;
					case '6': 
						html = html + "<table border='0' cellpadding='0' cellspacing='0'><tr><td>Cooker</td><td width='10px'></td><td>" + data[i] + "</td></tr>";
						break;
					case '7': 
						html = html + "<tr><td>Heating</td><td width='10px'></td><td>" + data[i] + "</td></tr>";
						break;
					case '8': 
						html = html + "<tr><td>Mattresses</td><td width='10px'></td><td>" + data[i] + "</td></tr>";
						break;
					case '9': 
						html = html + "<tr><td>Lighting</td><td width='10px'></td><td>" + data[i] + "</td></tr></table>";
						break;
					}
				}
			}	
			
			html = html + "</div>";
			marker.openInfoWindowHtml(html, { maxWidth: 500 });
		});
	}

}

function showHuts(checkbox, park, hut)
{
	if (checkbox.checked)
	{
		xmlhttp=GetXmlHttpObject();
		if (xmlhttp==null)
  		{
  			alert ("Browser does not support HTTP Request");
			return;
  		}

		var url="/gethuts.php";
		url=url+"?park="+park;
		xmlhttp.onreadystatechange=stateChanged;
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);	
	}
	else {
		xmlhttp=GetXmlHttpObject();
		if (xmlhttp==null)
  		{
  			alert ("Browser does not support HTTP Request");
			return;
  		}

		var url="/gethuts.php";
		url=url+"?hut="+hut;
		xmlhttp.onreadystatechange=stateChanged;
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);	
	}
}

function showSearch(event)
{
	var keyCode = event.which;
    if (keyCode == undefined) {
        keyCode = event.keyCode;
    }
    
	if (keyCode < 37 || keyCode > 40) {
		pointer = 0;
		searchText = document.getElementById('searchtext').value;
		if (searchText!="") {
	 		xmlhttp=GetXmlHttpObject();
			if (xmlhttp==null)
  			{
  				alert ("Browser does not support HTTP Request");
				return;
  			}
			var url="/searchhuts.php";
			url=url+"?search="+searchText;
			xmlhttp.onreadystatechange=stateChanged;
			xmlhttp.open("GET",url,true);
			xmlhttp.send(null);
		}
		else {
			el = document.getElementById("search");
			el.style.display = "none";
		}	
	}
	else {
		if (keyCode == 38)
			pointer = pointer - 1;
		if (keyCode == 40)
			pointer = pointer + 1;
		
		if (pointer < 0) pointer = 10;
		if (pointer == 11) pointer = 0;
		
		highlightSearchTerm(false);
	}
}

function leftSearch()
{
	// called when focus leaves seachtext box
	DisplaySearchBox('');
	//alert(document.activeElement.tagName);
}

function searchMO(ele)
{
	pointer = ele.id.substring(1);
	highlightSearchTerm(true);
	
}

function searchBoxMO()
{	
	alert ('Bye!');	
}

function highlightSearchTerm(mouse)
{
	textbox = document.getElementById("searchtext");
	
	if (pointer==0) {
		if (!mouse) {
			textbox.value = searchText;	
		}
	}
	
	var i = 1;
	
	for (i=1;i<11;i++)
	{
		el = document.getElementById("s" + i);
		
		if (el == null)
			break;
			
		if (i != pointer) {
			el.style.backgroundColor = "#fff";
		}
		else {
			el.style.backgroundColor = "#bbb";
			if (!mouse) {
				textbox.value = el.innerHTML;
			}
		}
	}
}

function reDisplayMap() {
	// Read data div
	var data = new Array();
	data = document.getElementById('data').innerHTML.split(';');
	if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(data[13], data[14]), 15);
        map.setUIToDefault();
		map.setMapType(G_HYBRID_MAP);
		var latlngbounds = new GLatLngBounds( );

		var count = 0;
		var pointArray = new Array();
		var markerCount = 0;
		
		for (var i = 0; i < data.length; i++)
		{
			pointArray[count] = data[i];
			
			if (count==14) {
				var point = new GLatLng(pointArray[13], pointArray[14]);
				
				var opts = {title:pointArray[1]};				
				marker = new GMarker(point, opts);
				map.addOverlay(marker);

				GEvent.addListener(marker, 'click', function() {
					this.openInfoWindowHtml(displayHut(this.getTitle()), { maxWidth: 500 });
				});

				latlngbounds.extend(point);
				count=0;
				markerCount++;
			}
			else
				count++;
			
		}
		
		if (markerCount > 1) {
			map.setCenter( latlngbounds.getCenter( ), map.getBoundsZoomLevel( latlngbounds ) );
		}
		else {
	        map.setCenter( latlngbounds.getCenter( ), 15);	
		}
		
		map.enableInfoWindow();
	}

}

function displayHut(hutName)
{
	var data = document.getElementById('data').innerHTML.split(';');

	var count = 0;
	var pointArray = new Array();
	var hutHTML = '';

	for (var i = 0; i < data.length; i++)
	{
		pointArray[count] = data[i];
			
		if (count==14) {
			if (pointArray[1] == hutName)
			{
				hutHTML = '<div class="info">';
				hutHTML = hutHTML + '<a href="/hut/' + pointArray[1] + '/">' + pointArray[1] + '</a><br />';
				hutHTML = hutHTML + pointArray[5] + " bunks<br />";
				hutHTML = hutHTML + "<table border='0' cellpadding='0' cellspacing='0'><tr><td>Cooker</td><td width='10px'></td><td>" + pointArray[6] + "</td></tr>";
				hutHTML = hutHTML + "<tr><td>Heating</td><td width='10px'></td><td>" + pointArray[7] + "</td></tr>";
				hutHTML = hutHTML + "<tr><td>Mattresses</td><td width='10px'></td><td>" + pointArray[8] + "</td></tr>";
				hutHTML = hutHTML + "<tr><td>Lighting</td><td width='10px'></td><td>" + pointArray[9] + "</td></tr></table>";
				hutHTML = hutHTML + "</div>";
			}
			
			count=0;
		}
		else
			count++;
		if (hutHTML != '')
			break;
	}
	return hutHTML;
}


function stateChanged()
{
	if (xmlhttp.readyState==4)
	{
		var html = xmlhttp.responseText;
		var type = new Array();
		type = html.split("::");
		switch (type[0])
		{
			case "get" : 
				document.getElementById("data").innerHTML=type[1];
				// Redisplay map
				reDisplayMap();
				break;
			case "search" :
				DisplaySearchBox(type[1]);
				break;
		}
	}
}

function DisplaySearchBox(html)
{
	el = document.getElementById("search");
 	if (html=="") {
		el.style.display = "none";
	}
 	else {
		el.innerHTML=html;
		el.style.display = "block";
	}	
}


function GetXmlHttpObject()
{
	if (window.XMLHttpRequest)
  	{
  		// code for IE7+, Firefox, Chrome, Opera, Safari
  		return new XMLHttpRequest();
  	}
	if (window.ActiveXObject)
  	{
  		// code for IE6, IE5
  		return new ActiveXObject("Microsoft.XMLHTTP");
  	}
	return null;
}
