var suggestUrl = 'http://peclic.com/suggest.php?text=';

function processSuggestions(text, keyCode)
{
	// keyCode = 27 => Escape
	// keyCode = 38 => Up Arrow
	// keyCode = 40 => Down Arrow
	if (keyCode == 27)
	{
		hideSuggestions();
	}
	else if (keyCode == 40)
	{
		moveDown();
	}
	else if (keyCode == 38)
	{
		moveUp();
	}
	else
	{
		getSuggestions(text);
	}
}

function moveDown()
{
	var selectedTr = getFirstElementByClass("selected", "tr");
	var allTrs = document.getElementsByTagName("tr");

	if (selectedTr == null)
	{
		// No item is selected, we select the first
		selectElement(allTrs[0]);
		return;
	}

	// An item is alreadyselected, we select the next
	var nextToSet = false;
	for (i=0; i<allTrs.length; i++)
	{
		if (nextToSet)
		{
			selectElement(allTrs[i]);
			nextToSet = false;
			break;
		}
		if (allTrs[i] == selectedTr)
		{
			nextToSet = true;
		}
	}
	
	if (nextToSet)
	{
		selectElement(allTrs[0]);
	}
	
	selectedTr.className = 'unSelected';
}

function moveUp()
{
	var selectedTr = getFirstElementByClass("selected", "tr");
	var allTrs = document.getElementsByTagName("tr");

	if (selectedTr == null)
	{
		// No item is selected, we select the first
		selectElement(allTrs[allTrs.length-1]);
		return;
	}

	// An item is alreadyselected, we select the next
	var previousWasSet = false;
	for (i=1; i<allTrs.length; i++)
	{
		if (allTrs[i] == selectedTr)
		{
			selectElement(allTrs[i-1]);
			previousWasSet = true;
		}
	}
	
	if (!previousWasSet)
	{
		selectElement(allTrs[allTrs.length-1]);
	}
	
	selectedTr.className = 'unSelected';
}

var hideSuggestionBox = true;
function somethingWasClicked(elem)
{
	if (elem.id == 'searchBox')
	{
		// searchBox was clicked
		hideSuggestionBox = false;
	}
	else if (elem.className == 'unSelected')
	{
		// unselected tr was clicked
		hideSuggestionBox = true;
		selectElement(elem);
	}
	else
	{
		hideSuggestionBox = true;
	}

	if (hideSuggestionBox)
	{
		hideSuggestions();
	}
}

function selectElement(elem)
{
	elem.className = 'selected';
	var searchBox = document.getElementById("searchBox");
	searchBox.value = elem.cells[0].innerHTML;
}

function getSuggestions(text)
{
	if (text == '')
	{
		hideSuggestions();
	}
	else
	{
		new Request.HTML({
				url:suggestUrl + text, 
				onSuccess: function(resultHtml) 
				{	
					showSuggestions();
					$('suggest').set('text', '');
					$('suggest').adopt(resultHtml);
				},
				onFailure: function() { /*alert("Suggest failed");*/ }
			}).send();
	}
}

function hideSuggestions()
{
	var suggestDiv = document.getElementById('suggest');
	suggestDiv.style.display = 'none';
}

function showSuggestions()
{
	var suggestDiv = document.getElementById('suggest');
	suggestDiv.style.display = 'block';
}