$(document).ready(function() {
	var searchLabel = $('#search label').remove().text();
	$('#search-text').addClass('placeholder').val(searchLabel)
	.focus(function() {
		if (this.value == searchLabel) {
			$(this).removeClass('placeholder').val('');
		};
	}).blur(function() {
		if (this.value == '') {
			$(this).addClass('placeholder').val(searchLabel);
		};
	});
	$('#search').submit(function() {
		if ($('#search-text').val() == searchLabel) {
			$('#search-text').val('');
		}
	});
	//var $autocomplete = $('<ul class="autocomplete"></ul>').hide().insertAfter('#search-text');
	var $autocomplete = $('<ul class="autocomplete"></ul>').hide().appendTo('#search-list');
	var selectedItem = null;
	var setSelectedItem = function(item) {
		selectedItem = item;
		if (selectedItem === null) {
			$autocomplete.hide();
			return;
		}
		if (selectedItem < 0) {
			selectedItem = 0;
		}
		if (selectedItem >= $autocomplete.find('li').length) {
			selectedItem = $autocomplete.find('li').length - 1;
		}
		$autocomplete.find('li').removeClass('selected').eq(selectedItem)
		.addClass('selected');
		$autocomplete.show();
	};
	var populateSearchField = function() {
		$('#search-text').val($autocomplete.find('li').eq(selectedItem)
		.text());
		setSelectedItem(null);
	};
	$('#search-text').attr('autocomplete', 'off').keyup(function(event) {
		
		if (event.keyCode > 40 || event.keyCode == 8) {
			// Keys with codes 40 and below are special
			// (enter, arrow keys, escape, etc.).
			// Key code 8 is backspace.
			$.ajax({
				'url': 'autocomplete.php',
				'data': {'search-text': $('#search-text').val()},
				'dataType': 'json',
				'type': 'POST','success': function(data) {
					if (data.length) {
						$autocomplete.empty();
						$.each(data, function(index, term) {
							$('<li></li>').text(term).appendTo($autocomplete)
							.mouseover(function() {
								setSelectedItem(index);
							}).click(populateSearchField);
						});
						setSelectedItem(0);
					}
					else {
						setSelectedItem(null);
					}
				}
			});
		}
		else if (event.keyCode == 38 && selectedItem !== null) {
			// User pressed up arrow.
			setSelectedItem(selectedItem - 1);
			event.preventDefault();
		}
		else if (event.keyCode == 40 && selectedItem !== null) {
			// User pressed down arrow.
			setSelectedItem(selectedItem + 1);
			event.preventDefault();
		}
		else if (event.keyCode == 27 && selectedItem !== null) {
			// User pressed escape key.
			setSelectedItem(null);
		}
	}).keypress(function(event) {
		if (event.keyCode == 13 && selectedItem !== null) {
			// User pressed enter key.
			populateSearchField();
			event.preventDefault();
		}
	}).blur(function(event) {
		setTimeout(function() {
			setSelectedItem(null);
		}, 250);
	});
});
