var CR = 13;
var LF = 10;
var ESC = 27;
var BACKSPACE = 8;
var LEFTARROW = 37;
var UPARROW = 38;
var RIGHTARROW = 39
var DOWNARROW = 40;
var PAGEUP = 33;
var PAGEDOWN = 34;

function prevent_enter($input, event) {
	if (event.keyCode == CR || event.keyCode == LF) {
		event.preventDefault();
		$input.unbind("keydown");
		$input.unbind("keypress");
	}
}

function process_septy($list, $input, $id_holder, septy) {
	$list.empty();
	//$("ul#septy").left('left', $input#psc_obec.css('left'));
	//$("ul#septy").css('top', $input#psc_obec.css('left'));
	for (var i in septy) {
		var sept = septy[i];
		var li = '<li class="sept" id="' + sept['id'] + '">' 
			 + sept['psc'] + ' ' + sept['nazev_obce'] 
				 + ' </li>'
				 ;
		
		$list.append( li );
	}
	$("li.sept", $list).click(function() {
		$input.focus();
		$id_holder.val($(this).attr('id'));
		$input.unbind("keydown");
		$input.unbind("keypress");
		$list.empty();
		$input.val($(this).text());		
		return false;
	});
	$("li:first", $list).addClass("selected");
	$("li.sept", $list).mouseover(function() {
		$("li.sept", $list).removeClass("selected");
		$(this).addClass("selected");
	});
}

var MOUSE_IN_SEPTY = false;

function create_septac($input, $id_holder, $list) {
	$input.keydown(function(event) {prevent_enter($input, event)});
	$input.keypress(function(event) {prevent_enter($input, event)});

	$input.keyup(function(event) {
		var key = event.keyCode;
		if (key == DOWNARROW) {
			var $selected = $("li.selected", $list);
			var $new_selected;
			if ($selected.next().length > 0) {
				$new_selected = $selected.next();
			}
			else {
				$new_selected = $selected;
			}
			$selected.removeClass("selected");
			$new_selected.addClass("selected");
			$input.keydown(function(event) {prevent_enter($input, event)});
			$input.keypress(function(event) {prevent_enter($input, event)});
		}
		else if (key == UPARROW) {
			$selected = $("li.selected", $list);
			if ($selected.prev().length > 0) {
				$new_selected = $selected.prev();
			}
			else {
				$new_selected = $selected;
			}
			$selected.removeClass("selected");
			$new_selected.addClass("selected");
			$input.keydown(function(event) {prevent_enter($input, event)});
			$input.keypress(function(event) {prevent_enter($input, event)});
		}
		else if (key == CR || key == LF) {
			$input.val($("li.selected", $list).text());
			$id_holder.val($("li.selected", $list).attr('id'));
			$list.empty();
		}
		else if (key == ESC) {
			$list.empty();
		}
		else {
			var ss = $(this).val();
			if (ss.length >= 2) {
				$.getJSON('/povinne-ruceni-kalkulacka/psc_feed/', {ss:ss}, function(data) { process_septy($list, $input, $id_holder, data) });
			}
		}
	});

	$list.mouseenter(function(){ MOUSE_IN_SEPTY = true; });
	$list.mouseleave(function(){ MOUSE_IN_SEPTY = false; });
}

