/*
Name		:	Component - Forum Posting
Author/s	:	Yang Wong
Related		:	php, css, js
*/

// CLASS //

var COM_CIPHERCITIES_FORUMPOSTING = Class.create();
COM_CIPHERCITIES_FORUMPOSTING.prototype =
{

	// CONSTRUCTOR //

	initialize: function()
	{
		// CONSTANTS //

		this.ID_STATUS	= 'for_status';

		this.ERROR_GAMES_NOTRETRIEVED	= 'Game data could not be retrieved. Please try again later.';

		// PROPERTIES //
	},

	// INITIALISATION //

	init: function()
	{
		// If page has no js
		if (!$(this.ID_STATUS)) return;

		// Status
		$(this.ID_STATUS).hide();
		$(this.ID_STATUS).removeClassName('com_hidden');

		// Games
		$('for_games').hide();
		$('for_games').removeClassName('com_hidden');

		// Actions
		if ($('for_link_game'))
		{
			Event.observe('for_link_game', 'click', this.getGamesBuilt.bind(this));
		}
	},

	// HELPER //

	showStatusError: function(message)
	{
		COM_CIPHERCITIES_COMMON.showStatusError(this.ID_STATUS, message);
	},

	showStatusSuccess: function(message)
	{
		COM_CIPHERCITIES_COMMON.showStatusSuccess(this.ID_STATUS, message);
	},

	showStatusLoading: function(message)
	{
		COM_CIPHERCITIES_COMMON.showStatusLoading(this.ID_STATUS, message);
	},

	clearStatus: function()
	{
		COM_CIPHERCITIES_COMMON.clearStatus(this.ID_STATUS);
	},

	// ACTIONS //

	getGamesBuilt: function()
	{
		$('for_games').hide();
		$('for_actions').hide();
		this.showStatusLoading();

		var target = 'getUserGamesBuiltSummary';
		var data = new Object();
		var args =
		{
			method: 'get',
			parameters: {target: target, data: Object.toJSON(data), v: Date()},
			onSuccess: this.processGetGamesBuilt.bindAsEventListener(this)
		}
		new Ajax.Request(COM_CIPHERCITIES_GLOBALS.URL_SITE+COM_CIPHERCITIES_GLOBALS.HANDLER_MAIN, args);
	},

	processGetGamesBuilt: function(data)
	{
		var response = data.responseText.evalJSON(true);

		if (response.logout)
		{
			COM_CIPHERCITIES_COMMON.loadURLLogout();
			return;
		}

		if (!response.success)
		{
			this.showStatusError(this.ERROR_GAMES_NOTRETRIEVED);
			$('for_games').show();
			$('for_actions').show();
			return;
		}

		this.drawGames(response.data);
	},

	drawGames: function(data)
	{
		var NODES_DATA 	= data.games;
		var NODES_TOTAL = NODES_DATA.length;

		$('for_games_list').update();
		if (NODES_DATA.length == 0)
		{
			var element = document.createElement('div');
			element.className = 'com_empty_list';
			var text = document.createTextNode('No Built Games');
			element.appendChild(text);
			$('for_games_list').appendChild(element);
		}
		else
		{
			var select = document.createElement('select');
			select.id = 'for_games_list_values';
			select.style.width = '350px';
			for (var i=0; i<NODES_DATA.length; i++)
			{
				var nodeData = NODES_DATA[i];
				var option = document.createElement('option');
				var text = document.createTextNode(nodeData.title);
				option.value = nodeData.gameID;
				option.appendChild(text);
				select.appendChild(option);
			}
			$('for_games_list').appendChild(select);
			var input = document.createElement('input');
			input.id = 'for_game_link_insert';
			input.className = 'com_button_style';
			input.style.marginLeft = '5px';
			input.type = 'button';
			input.value = 'Insert Link';
			$('for_games_list').appendChild(input);
			Event.observe('for_game_link_insert', 'click', this.insertGameLink.bind(this));
		}

		$('for_games').show();
		this.clearStatus();
	},

	insertGameLink: function()
	{
		var gameID = $('for_games_list_values').value;
		var label = $('for_games_list_values').options[$('for_games_list_values').selectedIndex].innerHTML;
		var txtarea = document.post.message;
		var bbcode = '<a href="'+COM_CIPHERCITIES_GLOBALS.URL_SITE+COM_CIPHERCITIES_COMMON.getURLGamePoster(gameID)+'">'+label+'</a>';
		txtarea.value += bbcode;
		txtarea.focus();
	}

}

// MAIN //

var content = new COM_CIPHERCITIES_FORUMPOSTING();
Event.observe(window, 'load', content.init.bind(content));
