/*
Name		:	Component - User Information
Author/s	:	Yang Wong
Related		:	php, css, js
*/

// CLASS //

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

	// CONSTRUCTOR //

	initialize: function()
	{
		// CONSTANTS //

		this.ID_STATUS					= 'ui_status';

		this.ERROR_CONTACT_NOTADDED		= 'Contact could not be added. Please try again later.';
		this.ERROR_CONTACT_NOTDELETED	= 'Contact could not be deleted. Please try again later.';

		// VALUES //

		this.GET;
	},

	// INITIALISATION //

	init: function()
	{
		// Tooltips
		var options = {
						contentClass: 'tooltip_content_1',
						maxWidth: 250
						//mouseFollow: false
						};
		$$('.ui_tooltip').each(function(element) { new Tooltip(element, options); });

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

		// Actions
		if ($('ui_action'))
		{
			$('ui_add').hide();
			$('ui_add').removeClassName('com_hidden');
			$('ui_delete').hide();
			$('ui_delete').removeClassName('com_hidden');
			$('ui_message').hide();
			$('ui_message').removeClassName('com_hidden');

			Event.observe('ui_add', 'click', this.addContact.bind(this));
			Event.observe('ui_delete', 'click', this.deleteContact.bind(this));
			Event.observe('ui_message', 'click', this.messageContact.bind(this));

			switch ($('ui_action').value)
			{
			case 'add' :
				$('ui_add').show();
				break;
			case 'delete' :
				$('ui_delete').show();
				break;
			}
			this.GET = COM_CIPHERCITIES_COMMON.getGETVariables();
			if (
				COM_CIPHERCITIES_COMMON.isLoggedIn() &&
				COM_CIPHERCITIES_COMMON.getUsername() != this.GET[COM_CIPHERCITIES_GLOBALS.TE_USERPROFILE_USERNAME_ID]
			)
			{
				$('ui_message').show();
			}
		}
	},

	// 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 //

	addContact: function()
	{
		$('ui_actions').hide();
		this.showStatusLoading();

		var target = 'addUserContact';
		var data = new Object();
		var GET = COM_CIPHERCITIES_COMMON.getGETVariables();
		data.username = GET[COM_CIPHERCITIES_GLOBALS.TE_USERPROFILE_USERNAME_ID];
		var args =
		{
			method: 'post',
			parameters: {target: target, data: Object.toJSON(data)},
			onSuccess: this.processAddContact.bindAsEventListener(this)
		}
		new Ajax.Request(COM_CIPHERCITIES_GLOBALS.HANDLER_MAIN, args);
	},

	processAddContact: function(data, page)
	{
		var response = data.responseText.evalJSON(true);

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

		if (!response.success)
		{
			this.showStatusError(this.ERROR_CONTACT_NOTADDED);
			$('ui_actions').show();
			return;
		}

		this.clearStatus();
		$('ui_add').hide();
		$('ui_delete').show();
		$('ui_actions').show();
	},

	deleteContact: function()
	{
		$('ui_actions').hide();
		this.showStatusLoading();

		var target = 'deleteUserContact';
		var data = new Object();
		var GET = COM_CIPHERCITIES_COMMON.getGETVariables();
		data.username = GET[COM_CIPHERCITIES_GLOBALS.TE_USERPROFILE_USERNAME_ID];
		var args =
		{
			method: 'post',
			parameters: {target: target, data: Object.toJSON(data)},
			onSuccess: this.processDeleteContact.bindAsEventListener(this)
		}
		new Ajax.Request(COM_CIPHERCITIES_GLOBALS.HANDLER_MAIN, args);
	},

	processDeleteContact: function(data, page)
	{
		var response = data.responseText.evalJSON(true);

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

		if (!response.success)
		{
			this.showStatusError(this.ERROR_CONTACT_NOTDELETED);
			$('ui_actions').show();
			return;
		}

		this.clearStatus();
		$('ui_delete').hide();
		$('ui_add').show();
		$('ui_actions').show();
	},

	messageContact: function()
	{
		COM_CIPHERCITIES_COMMON.loadURL(COM_CIPHERCITIES_COMMON.getURLCreateMessage(this.GET[COM_CIPHERCITIES_GLOBALS.TE_USERPROFILE_USERNAME_ID]));
	}

}

// MAIN //

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