/**
 * Addes a given thread to favorites.
 *
 * @param	int	id	Thread ID
 * @return	void
 */
function manageThreadFavorites(id, subject) {
	// Call the server
	setWaitBox();
	var element = Ext.get('thread-fav-ctl');
	var action = (element.dom.className == 'thread-add-fav' ? 'add' : 'remove');
	Ext.Ajax.request({
		method: 'POST',
		url: 'action_favoritethread.php',
		success: function() { switchThreadFavIcon(id, subject); },
		failure: doNothing,
		params: {
			action: action,
			id: id
		}
	});
}

/**
 * Changes favorite icon
 * @return
 */
function switchThreadFavIcon(id, subject) {
	// Change icon
	var element = Ext.get('thread-fav-ctl');
	var added = (element.dom.className == 'thread-add-fav');
	element.dom.className = (added ? 'thread-remove-fav' : 'thread-add-fav');

	var button = Ext.getCmp('favorite-threads');

	if (added) {
		// Remove help item (if any)
		var item = Ext.getCmp('favorite-threads-help');
		if (item) {
			button.menu.remove(item);
		}

		// Add to button
		button.menu.addMenuItem({
			id: 'ft' + id,
			handler: favoritesButtonClicked,
			text: subject,
			url: 'thread.php?id=' + id	// no page here. just my laziness
		});

		button.setText(String.format(forumLabels.favoritesButton, button.menu.items.length));
	}
	else {
		// Remove item
		var item = Ext.getCmp('ft' + id);
		if (item) {
			button.menu.remove(item);
			button.setText(String.format(forumLabels.favoritesButton, button.menu.items.length));
		}

		// Add help if necessary
		if (button.menu.items.length == 0) {
			button.menu.addMenuItem(getFavoriteThreadsHelpItem());
		}
	}

	// Remove wait box
	removeWaitBox();
}

