$(document).ready(function() {
	
	var searchLabel = $('#search label').remove().text();
	
	$('#search_keyword').addClass('placeholder').val(searchLabel).focus(function() {
		if (this.value == searchLabel) {
			$(this).val('');//.removeClass('placeholder')
		};
	}).blur(function() {
		if (this.value == '') {
			$(this).addClass('placeholder').val(searchLabel);
		};
	});
	
	$('#search').submit(function() {
		if ($('#search_keyword').val() == searchLabel) {
			$('#search_keyword').val('');
		}
	});
	var width = $('#search_keyword').css('width');
	width1 = width.replace('px', '');	
	width = width1 - 35 + "px";
	
	var textbox_left = $('#search_keyword').offset().left;
	var p_left = $("#search form p").offset().left;
	var diff = textbox_left - p_left;
	
	var $autocomplete = $('<ul class="autocomplete"></ul>').hide().insertAfter('#search_keyword').css('width', width).css('margin-left', diff + 'px');
	
	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 - 1) {
			selectedItem = $autocomplete.find('li').length - 1;
		}
		
		$autocomplete.find('li').removeClass('selected').eq(selectedItem).addClass('selected');
		
		$autocomplete.show();
	};
	
	var populateSearchField = function() {
		$('#search_keyword').val($autocomplete.find('li').eq(selectedItem).text());
	};
	
	var keywords_length;
	
	$('#search_keyword').attr('autocomplete', 'off').keyup(function(event) {
		if ( (event.keyCode > 40 || event.keyCode == 8) && $('#search_keyword').val() != '') {
			
			$.ajax({
				'url': baseurl + '/ajax/search.php',
				'data': {'search_keyword': $('#search_keyword').val()},
				'dataType': 'html',
				'type': 'POST',
				'success': function(data) {
					data = data.split('|');
					keywords_length = data.length;
					
					if (data.length > 1) {
						$autocomplete.empty();
						$.each(data, function(index, term) {
							if (index != data.length-1)
                            {
                                $('<li></li>').text(term).appendTo($autocomplete).mouseover(function() {
                                    setSelectedItem(index);
                                }).click(function(){
                                    populateSearchField();
                                    setSelectedItem(null);
                                });
                            }
						});

						$('<li style="text-align: right;"></li>').appendTo($autocomplete).html('<a class="close-btn" href="javascript:void(0);">close</a>');
					
						setSelectedItem(0);
					} else {
						
						setSelectedItem(null);
					}
			},
			'error': function(){
					alert('failed');
			}
		});
		}
		else if (event.keyCode == 38 && selectedItem !== null) {
			
			if (selectedItem - 1 < 0)
			{
				setSelectedItem(keywords_length - 2);
			}
			else
			{
				setSelectedItem(selectedItem - 1);
			}
			
			populateSearchField();
			event.preventDefault();
		}
		else if (event.keyCode == 40 && selectedItem !== null) {
;
			if (selectedItem + 1 <= keywords_length - 2)
			{
				setSelectedItem(selectedItem + 1);
			}
			else
			{
				setSelectedItem(0);
			}
			
			populateSearchField();
			event.preventDefault();
		}
		else if (event.keyCode == 27 && selectedItem !== null) {
			setSelectedItem(null);
		}
	}).keypress(function(event) {
		if (event.keyCode == 13 && selectedItem !== null) {			
			populateSearchField();
			setSelectedItem(null);
			event.preventDefault();
		}
	}).blur(function(event) {
		setTimeout(function() {
			setSelectedItem(null);
		}, 250);
	});
});