//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject()
{
	if (window.XMLHttpRequest)
	{
		return new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		alert("Your browser is not supported");
	}
}

var tmr;

//Our XmlHttpRequest object to get the auto suggest
var locationReq = getXmlHttpRequestObject();

//Our XmlHttpRequest object to get the town populate
var townReq = getXmlHttpRequestObject();

//Called from keyup on the location textbox.
//Starts the AJAX request.
function locationSuggest()
{
	var str = escape(document.getElementById('location').value);
	if (str && (locationReq.readyState == 4 || locationReq.readyState == 0))
	{
		locationReq.open('GET', '/cgi-bin/location_suggest.cgi?q=' + str, true);
		locationReq.onreadystatechange = handleLocationSuggest;
		locationReq.send(null);
	}
}

//Called when the AJAX response is returned.
function handleLocationSuggest()
{
	if (locationReq.readyState == 4)
	{
		document.getElementById('location_suggest').style.display = 'block';
		var ss = document.getElementById('location_suggest');
		ss.innerHTML = '';
		var str = locationReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++)
		{
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			ss.innerHTML += '<div class="suggest_link" style="cursor:pointer;" onmouseover="this.className = \'suggest_link_over\'" onmouseout="this.className = \'suggest_link\'" onclick="setLocation(\''+str[i]+'\');">' + str[i] + '</div>';
		}
	}
}

//Click function
function setLocation(div_value)
{
	clearTimeout(tmr);
	document.getElementById('location').value = div_value;
	tmr = setTimeout('locationClear();', 100);
}

//Reset the location_suggest on blur
function locationClear()
{
	document.getElementById('location_suggest').innerHTML = '';
	document.getElementById('location_suggest').style.display = 'none';
}

//Called on page load and on county change
function loadtowns ()
{
	with (document.getElementById('county'))
	{
		if (selectedIndex > 0)
		{
			jsontowns(value)
		}
	}
}

//Called from loadtowns()
//Starts the AJAX request.
function jsontowns (cid)
{
	if (cid && (townReq.readyState == 4 || townReq.readyState == 0))
	{
		townReq.open('GET', '/cgi-bin/json_towns.cgi?cid=' + cid, true);
		townReq.onreadystatechange = handleTowns;
		townReq.send(null);
	}
}

//Called when the AJAX response is returned.
function handleTowns()
{
	if (townReq.readyState == 4)
	{
		var tn = document.getElementById('town');
		tn.length = 0;
		tn.options[0] = new Option('- Select Town-', '');
		var str = townReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++)
		{
			var bits = str[i].split('|');
			tn.options[tn.length] = new Option(bits[0], bits[1]);
		}
	}
}
