var loadingImg = '<img class="loading" src="/s/pic/loading.gif" height="16" width="16" alt="Подождите...">';
var awesomeTimeout;
var awesome = false;
var godMode = false;

$(document).ready( function() {
	function split(val) {
		return val.split(/,\s*/);
	}

	function extractLast(term) {
		return split(term).pop();
	}

	// кэш результатов поиска
	var cache = {};

	$("#cats").autocomplete({
		minLength: 2,
		source: function(request, response) {
			if ( request.term in cache ) {
				// delegate back to autocomplete, but extract the last term
				response( $.ui.autocomplete.filter( cache[ request.term ], extractLast( request.term ) ) );
				return;
			}

			$.getJSON('/blog.php?act=cats', {title: request.term}, function(data) {
				cache[ request.term ] = data.content;

				// delegate back to autocomplete, but extract the last term
				response( $.ui.autocomplete.filter( data.content, extractLast( request.term ) ) );
			});
		}, focus: function() {
			// prevent value inserted on focus
			return false;
		}, select: function(event, ui) {
			var terms = split( this.value );
			// remove the current input
			terms.pop();
			// add the selected item
			terms.push( ui.item.value );
			// add placeholder to get the comma-and-space at the end
			terms.push("");
			this.value = terms.join(", ");
			return false;
		}
	});

	$("#author").autocomplete({
		minLength: 2,
		source: function(request, response) {
			if ( request.term in cache ) {
				// delegate back to autocomplete, but extract the last term
				response( cache[ request.term ] );
				return;
			}

			$.getJSON('/quotes.php?act=authors', {title: request.term}, function(data) {
				cache[ request.term ] = data.content;

				// delegate back to autocomplete, but extract the last term
				response( data.content );
			});
		}, select: function(event, ui) {
			this.value = ui.item.value;
		}
	});

	// редактирование
	$(document).keyup( function(event) {
		if ( event.keyCode == 90 ) {
			if ( awesome )
				return;

			awesome = true;
			awesomeTimeout = window.setTimeout( function() {
				awesome = false;
			}, 1000 );
		} else if ( event.keyCode == 88 ) {
			if ( !awesome )
				return;

			if ( godMode ) {
				$('a.mng, div.mng-add').addClass('hidden');
				godMode = false;
			} else {
				$('a.mng.hidden, div.mng-add.hidden').removeClass('hidden');
				godMode = true;
			}

			awesome = false;
			clearTimeout( awesomeTimeout );
		}
	});
});