/* Uses Prototype to provide AJAX powered input field for town name selection */

/* Turn off autocomplete on input field */
window.onload = function() {
	var town = $('town');
	if (town) {
		town.setAttribute('autocomplete', 'off');
	}
};

var _selectedTown = -1;
var _doRequest = 1;

function updateTownListSelection() {
	var towns = $('townlist').immediateDescendants();
	var town = $('town');
	if (towns) {
		for (i = 0; i < towns.length; i++) {
			towns[i].className = '';
		}
		if (_selectedTown >= 0) {
			towns[_selectedTown].className = 'townselected';
			town.value = towns[_selectedTown].innerHTML;
		}
	}
}

function hideTownList() {
	$('townlist').style.display = 'none';
}

function showTownList() {
	$('townlist').style.display = 'block';
}

function clearTownList() {
	$('townlist').innerHTML = '';
}

function updateTownList() {
	var town = $('town');
	if (_doRequest) {
		new Ajax.Request('/ajax-functions.php?mode=townlist', {
			method:'post',
			parameters: 'q=' + town.value,
			onSuccess: function(transport) {
				var xmlDocument = transport.responseXML;
				var townlist = $('townlist');
				var towns = xmlDocument.getElementsByTagName('name');
				var status = xmlDocument.getElementsByTagName('status');
				clearTownList();
				if (status[0].firstChild.nodeValue == '1') {
					for (i = 0; i < towns.length; i++) {
						townlist.innerHTML += '<div class="town">' + towns[i].firstChild.nodeValue + '</div>';
					}
					showTownList();				
				} else {
					hideTownList();
				}
				updateTownListSelection();
			}
		});
	}
}

function selectTown(event) {
	var towns = $('townlist').immediateDescendants();
	var key = event.which || event.keyCode;
	_doRequest = 1;
	switch (key) {
		case Event.KEY_DOWN:
		if (_selectedTown < (towns.length - 1)) {
			_selectedTown++;
			updateTownListSelection();
		}
		_doRequest = 0;
		break;
		case Event.KEY_UP:
		if (_selectedTown > -1) {
			_selectedTown--;
			updateTownListSelection();
		}
		_doRequest = 0;
		break;
		case Event.KEY_BACKSPACE:
		_selectedTown = -1;
		updateTownListSelection();
		break;
		case 16:
		_doRequest = 0;
		break;
	}
}

function gotoTown() {
	var town = $F('town').toLowerCase().replace(/\s/g, '-').replace(/[^a-zA-Z0-9-]/g, '');
	if(town.length > 0) {
		window.location = '/' + town + '/';
	}
}