$(function() {

	$(document).keydown(function(e) {
		if ($('#suggestion').css('visibility') == 'visible') {
			
			var current = $('#suggestion .selected');
			var winH = $(window).height() - 60;
			var sTop = $(window).scrollTop();

			if (e.keyCode == 13) {
				$('#live').val(current.html());
				$.suggestion.close();
				e.preventDefault();
			} else if (e.keyCode == 38) {
				e.preventDefault();
				if (sTop > 0) {
					$(window).scrollTop(sTop - 24);
				}
				if (current.length) {
					current.removeClass('selected');
					current.prev().addClass('selected');
				} else {
					$('#suggestion :last-child').addClass('selected');
				}
			} else if (e.keyCode == 40) {
				if (current.length) {
					if (current.offset().top > winH) {
						$(window).scrollTop(sTop + 24);
					}
					current.removeClass('selected');
					current.next().addClass('selected');
				} else {
					$('#suggestion :first-child').addClass('selected');
				}
			}
			return true;
		}
	});

	$('#form').submit(function(e) {
		return ($('#suggestion').css('visibility') == 'visible') ? false : true;
	});

	$('#live').keyup(function(e) {
		if (e.keyCode == 38 || e.keyCode == 40) {
			return false;
		}
		$.ajax({
			url: '?query='+encodeURIComponent($(this).val()),
			success: function(result) {
				if (result) {
					$.suggestion.open({output: result});
				} else {
					$.suggestion.close();
				}
			}
		});
	});

	$('#live').focusout(function() {
		$.suggestion.close();
	});

	$.vote = function(choice) {
		$.ajax({
			type: 'POST',
			data: 'ajax=1&id='+choice.id+'&comment='+choice.comment+'&set_vote[]='+choice.vote,
			dataType: 'script',
			cache: false,
			success: function(result) { 
				var response = eval(result);
				if (!response.error) {
					var rating = (response.rating != 0) ? (response.rating > 0 ? '<span style="color:#693">+'+response.rating+'</span>' : '<span style="color:#f30">'+response.rating+'</span>') : '';
					$('#comment'+choice.comment).html(rating);
				} else {
					return alert(response.error);
				}
			},
			error: function() { 
				alert('Ошибка! Не удалось выполнить операцию.'); 
			}
		});
	};

	$('#www').val('test');
	
	$('#balance').ready(function() {
		$.getJSON('/my?balance', function(data) {
			if (data.login && data.balance) {
				$('#balance').html('<div id="userinfo"><div class="item"><img src="/img/logout.png" /><a href="?logout">Выйти</a></div><div class="item">Кредит: <a href="/credit">'+data.credit+'</a> руб.</div><div class="item">Баланс: <b style="color:'+(data.balance < 0 ? '#f10000' : '#093')+'">'+data.balance+'</b> руб.</div><div class="item"><img src="/img/userpic.png" /><b>'+data.login+'</b></div></div>');
				$('#signin').html('');
			}
		});
	});

	$("#add_to_favorites").click(function() {
		$.getJSON("?add_to_favorites", function(data) {
			if (data.success) {
				$("#add_to_favorites").hide();
				if ($("div").is("#favorites")) {
					$("#favorites").html(data.success);
				} else {
					$("#submenu").prepend('<div id="favorites">'+data.success+'</div>');
				}
			}
		});
	});

	$.suggestion = {

		open: function (obj) {
			$('#suggestion').css('visibility', 'visible'); 
			$('#suggestion').html(obj.output);
			$('#suggestion div').click(function() {
				$('#live').val($(this).html());
				$.suggestion.close();
			});
			$('#suggestion div').hover(function() {
				if (!$('#suggestion .selected').length) {
					$(this).addClass('selected');
				}
			}, function() {
				$(this).removeClass('selected');
			});
		},

		close: function () {
			setTimeout(function() {
				$('#suggestion').css('visibility', 'hidden');
				$('#suggestion').html();
				$(window).scrollTop(0);
			}, 300);
		}
	}

});
