var Message = Class.create (
{
	initialize : function ()
	{
		this.recipients = new Hash ();
	},

	register : function (ID, name)
	{
		this.recipients.set (ID, name);
	},

	parse : function ()
	{
		if (this.container = $('recipients'))
		{
			this.items = this.container.select ('li a');
			this.items.size () > 0 && this.items.each (function (element) { this.register (element.rel, element.innerHTML); element.observe ('click', this.recipientAdd.bindAsEventListener (this, element.rel)); }, this);

			this.recipientUpdate ();
		}
	},

	recipientUpdate : function ()
	{
		var recipients = $('elementRecipients').value.length > 0 ? $('elementRecipients').value.split (',') : new Array ();
		var recipientsNames = new Array ();

		recipients.size () > 0 && recipients.each (function (element) { recipientsNames[recipientsNames.length] = this.recipients.get (element) + "&nbsp;<a href=\"javascript: void 0;\" rel=\"" + element + "\"><img src=\"/images/message/remove.png\" alt=\"\" /></a>"; }, this);
		$('elementRecipientsNames').innerHTML = recipientsNames.join (' ');

		var items = $('elementRecipientsNames').select ('a');
		items.size () > 0 && items.each (function (element) { element.observe ('click', this.recipientRemove.bindAsEventListener (this, element.rel)); }, this);
	},

	recipientAdd : function (event, ID, name)
	{
		var recipients = $('elementRecipients').value.length > 0 ? $('elementRecipients').value.split (',') : new Array ();
		if (!recipients.member (ID))
		{
			recipients[recipients.length] = ID;
		}

		$('elementRecipients').value = recipients.join (',');

		this.recipientUpdate ();
	},

	recipientRemove : function (event, ID)
	{
		var recipients = $('elementRecipients').value.length > 0 ? $('elementRecipients').value.split (',') : new Array ();
		var recipientsNew = new Array ();

		recipients.each	(function (element) { if (element != ID) { recipientsNew[recipientsNew.length] = element; } });

		$('elementRecipients').value = recipientsNew.join (',');

		this.recipientUpdate ();
	}
});

var Message = new Message ();

document.observe ('dom:loaded', function (event) { Message.parse (); });
