// кэш синонимов для определения, существует ли такой синоним и (в перспективе) для автодополнения
var synonyms_cache = [];

$().ready(function() {
	$('#create_slogan').keydown(handleAdd).focus();
	if (authorized) {
		$('#slogans > li').hover(fakeHoverIn, fakeHoverOut);
	}
	//$('#slogans > li').click(editSlogan);
	$('#slogans .delete').click(deleteSlogan);

	$.ajaxSetup({
		type: 'post'
		, url: '/antibrand/admin/slogan_ajax.php'
		, dataType: 'json'
	});

});

function fakeHoverIn(event) {
	$(event.target).addClass('hover');
}

function fakeHoverOut(event) {
	$(event.target).removeClass('hover');
}

function saveSlogan(event) {
	event.preventDefault();
	var $input = $(event.target);
	var slogan = $input.val();
	if ($.trim(slogan) == '') {
		return;
	}

	/*var edit = $input.is('#create_slogan') ? false : true;*/
	// Forbid editing so far
	var edit = false;
	if (edit) {
		var id = parseInt($input.parents('li:first').attr('id').replace('slogan', ''), 10);
	}

	$.ajax({
		data: 'action=' + (edit ? 'update' : 'create') + '&slogan=' + encodeURIComponent(slogan) + (edit ? '&id=' + id : '')
		, success: function(response) {
			if (response.error) {
				showStatusMessage(response.status_message, 'error');
				return;
			}
			if (edit) {
				$input.parent().click(editSlogan);
				$input.replaceWith(slogan);
			}
			else {
				// Forbid edit for now
				//$('<li id="slogan' + response.id + '">' + slogan + '</li>').prependTo($('#slogans')).click(editSlogan);
				var $li = $('<li id="slogan' + response.id + '" style="color: #' + (response.color ? response.color : '') + ';">' + slogan + '</li>').prependTo($('#slogans'));
				if (authorized) {
					$li.hover(fakeHoverIn, fakeHoverOut);
					$('<button class="delete"></button>').click(deleteSlogan).appendTo($li);
				}
				$input.val('');
			}
		}
	});
}

function deleteSlogan(event) {
	event.preventDefault();
	var $input = $(event.target);
	var id = parseInt($input.parents('li:first').attr('id').replace('slogan', ''), 10);
	$.ajax({
		data: 'action=delete&id=' + id
		, success: function(response) {
			if (response.error) {
				showStatusMessage(response.status_message, 'error');
				return;
			}
			$input.parents('li:first').remove();
		}
	});

}

function resetSlogan(event) {
	event.preventDefault();
	var $input = $(event.target);
	var id = parseInt($input.parent().attr('id').replace('slogan', ''), 10);
	$.ajax({
		data: 'action=read&id=' + id
		, success: function(response) {
			if (response.error) {
				showStatusMessage(response.status_message, 'error');
				return;
			}
			$input.parent().click(editSlogan);
			$input.replaceWith(response.slogan);
		}
	});
}

function editSlogan(event) {
	event.preventDefault();

	var $target = $(event.target);
	var slogan = $target.text();
	$target.text('');
	$('<input type="text" />').val(slogan).appendTo($target).focus().keydown(handleEdit).parent()
	.unbind('click', editSlogan);
}

function handleAdd(event) {
	// Enter
	if (event.keyCode == 13) {
		saveSlogan(event);
	}
}

function handleEdit(event) {
	// Escape
	if (event.keyCode == 27) {
		resetSlogan(event);
	}
	// Enter
	else if (event.keyCode == 13) {
		saveSlogan(event);
	}
}

function showStatusMessage(message) {
	/*var $span = $('<span>' + message + '</span>').fadeOut(5000, function() { $(this).remove(); });
	$('#status_message').append($span);*/
	alert(message);
}
