(function($)
{
	function load_mail(settings, panel)
	{
		var mail_id = panel.attr('id').replace(settings.id_prefix, '');
		var content_panel = $('<div class="mail-content"></div>');
		var content_panel_id = 'mail-' + mail_id + '-content';
		content_panel.attr('id', content_panel_id).text('Загрузка...');
		panel.append(content_panel);
		hax({url: settings.base_url + '/mail_' + mail_id + '.html', id: content_panel_id,
				nohistory: true,
				onerror: function() {alert('Error loading mail');},
				onload: function()
				{
					var answer_panel = $('<div class="mail-answer-panel" />');
					var answer_container = $('<div />');
					var answer = $('<li class="answer"/>').append($('<span>Ответить</span>'));
					answer.click(function()
					{
						if (answer_panel.find('.answer-form').length > 0) return false;
						answer.addClass('selected');
						var answer_form = $('<div class="answer-form" />');
						answer_panel.append(answer_form);
						var subject = panel.find('td.subject').text();
						answer_form.send_form(
						{
							answer_mail_id: mail_id,
							subject: 'Re: ' + subject,
							hide_subject: true
						});
						return false;
					});
					var resend = $('<li class="resend"/>').append($('<span>Переслать</span>'));
					var tabs = $('<ul class="answer-tabs" />').append(answer, resend);
					answer_panel.append(tabs);
					panel.append(answer_panel);
					if (settings.onLoaded) settings.onLoaded(mail_id);
				}
			});	
	}
	
	$.fn.mail_panel = function(options)
	{
		var settings = $.extend(
		{
			id_prefix: 'mail-',
			onOpened: undefined,
			onClosed: undefined,
			onLoaded: undefined,
			base_url: './mails'
		}, options);
		
		this.not(':last').find('.mail-header').click(function()
		{
			var header = $(this);
			var panel = header.parents('.mail-panel').first();
			if (panel.hasClass('opened'))
			{
				if (panel.find('.mail-from').hasClass('mail-show-details'))
				{
					$(panel).find('.show-details').click();
				}
				panel.removeClass('opened').addClass('closed');
				if (settings.onClosed) settings.onClosed(panel);
			}
			else
			{
				panel.removeClass('closed').addClass('opened');
				if (!panel.has('.mail-content').length) load_mail(settings, panel);
				if (settings.onOpened) settings.onOpened(panel);
			}
		});
		
		this.each(function(i, v)
		{
			var panel = $(v);
			// panel.addClass('opened');
			
			var title = $('h3', panel);
			var mail_from = $('.mail-from', panel);
			$('.show-details', panel).click(function()
			{
				
				if (mail_from.hasClass('mail-show-details'))
				{
					mail_from.removeClass('mail-show-details');
					$(this).text('Показать подробные сведения');
				}
				else
				{
					mail_from.addClass('mail-show-details');
					$(this).text('Скрыть подробные сведения');
				}
				return false;
			});
		});
		
		var mail_id = '';

		var actions_panel = $('<div class="mail-actions-panel"></div>');
		var actions_list = $('<ul></ul>').append(
			$('<li rel="replay-to-all">Ответить всем</li>'),
			$('<li rel="resend">Переслать</li>'),
			$('<li rel="filter-similar">Фильтровать похожие письма</li>'),
			$('<li rel="print">Печать</li>'),
			$('<li rel="delete">Удалить это письмо</li>'),
			$('<li rel="show-original">Показать оригинал</li>')
		);
		$('li', actions_list).click(function()
		{
			var rel = $(this).attr('rel');
			alert('Press "' + rel + '" for mail ID=' + mail_id);
		});
		actions_panel.append(actions_list);
		var embeded_panel = EmbededPanel(actions_panel, '#content-col');
	
		$('.mail-actions span', this).each(function(i, v)
		{
			var button = $(v);
			button.panel_button(
			{
				embeded_panel: embeded_panel,
				selfclick_close: false,
				h_align: 'right',
				onOpen: function()
				{
					mail_id = button.parents('.mail-panel').attr('id').replace('mail-', '');
				}
			});
		});

		load_mail(settings, this.last().removeClass('closed').addClass('opened'));

		return this;
	};

})(jQuery);
