var ac_visible = false;
var pos = 0;
var ac_cached = new Array();
var usr_input = '';

$(function() {
	//$('#autocomplete').attr('autocomplete', 'off');
	
	$('#autocomplete').blur(function() {
	 	if($(this).attr('value') == '')
			$(this).attr('value', 'Music Search');
		ac_hide();
	});
	
	$('#autocomplete').focus(function() {
 		if($(this).attr('value') == 'Music Search')
			$(this).attr('value', '');
		if(!ac_visible && $(this).attr('value').length > 0)
			ac_buid();
	});
	
	$('#autocomplete').keyup(function(event) {

		if(event.keyCode == 27)
		{
			$(this).attr('value', $(this).attr('value'));
			ac_hide();
			return;
		}
		if($(this).attr('value').length < 1)
		{
			ac_hide();
		}
		else if(usr_input == '' || usr_input != $(this).attr('value'))
		{
			usr_input = $(this).attr('value');
			ac_buid();
		}
		
	});
	
	$('#autocomplete').keydown(function(event) {
		
		if(!ac_visible)
			return;
		var prev_pos = pos;
		if(event.keyCode == 13) //enter
		{
			if(pos != 99 && pos != 0)
			{
				$('#pos' + pos).click();
				return false;
			}
		}
		if(event.keyCode == 27) //esc
		{
			$(this).attr('value', $(this).attr('value'));
		}
		if(event.keyCode == 38) // Up arrow
		{
			if(pos == 0)
				return;
			if(pos == 99)
			{
				for(pos=9;pos>=0;pos--)
					if($('#pos' + pos).length > 0)
						break;
			}
			else			
				pos--;
		}
		if(event.keyCode == 40) // Down arrow
		{
			if(pos == 99)
				return;
			pos++;
			if($('#pos' + pos).length  == 0)
				pos = 99;
		}
		$('#pos' + prev_pos).removeClass('active-dd');
		$('#pos' + pos).addClass('active-dd');
		
	});
	/*
	$('#search_form').submit(function() {
		if(pos == 99 || pos == 0)
			location = '/search?q=' + encodeURI($('#autocomplete').attr('value'));
		else
			return false;
	});
	*/
});

function ac_buid()
{
	var inp = $('#autocomplete').attr('value');
	
	if(!ac_cached[inp.toLowerCase()])
		$.get('/autocomplete.php',{ac: inp}, function(data){ ac_cached[inp.toLowerCase()] = data; ac_show(data); });
	else
		ac_show(ac_cached[inp.toLowerCase()]);
}
function ac_show(data)
{
	if(data != '')
	{
		$('#ac_container').html(data);
		$('#ac_container').fadeIn(200);
		ac_visible = true;
		pos = 0;
	}
}
function ac_hide()
{
	if(!ac_visible)
		return;
	$('#ac_container').fadeOut(200);
	ac_visible = false;
}

function ac_hover(id)
{
	$(".active-dd").removeClass('active-dd');
	$('#pos' + id).addClass('active-dd');
	pos = id;
}

