(function($)
{

	function table_row(label, input)
	{
		return $('<tr />').append(
			$('<th />').html(label),
			$('<td />').html(input));
	}

	function form_post(url, id, form_id, params, callback)
	{
		dax(
		{
			url: url,
			id: id,
			form: form_id,
			method: 'post',
			params: params,
			cb: callback
		});
	}

	$.fn.send_form = function(options)
	{
		var	settings = $.extend(
		{
			answer_mail_id: '',
			to: '',
			subject: '',
			hide_subject: false,
			extend_editor: false,
			form_post_url: undefined, // Путь для отправки POST запроса с данными из формы
			onSended: function(resp, cbo) {alert('Mail was sended');},
			onDraftSaved: function(resp, cbo) {alert('Draft  was saved');},
			onDraftDeleted: function(resp, cbo) {alert('Draft  was deleted');}
		}, options);

		var panel = this.first();
		panel.addClass('send-form');

		var form_table = $('<table />');

		var to = $('<textarea name="to" />').html(settings.to);
		var copy_to = $('<textarea name="copy_to" />');
		var hidden_to = $('<textarea name="hidden_to" />');
		var subject = $('<input type="text" name="subject" />').val(settings.subject);

		var to_row = table_row('Кому', to);
		var copy_to_row =  table_row('Копия', copy_to).hide();
		var hidden_to_row =  table_row('Скрытая', hidden_to).hide();
		var subject_row =  table_row('Тема', subject);
		if (settings.hide_subject) subject_row.hide();

		var row_showers = $('<div class="row-showers" />').append(
			$('<a href="#">Добавить копию</a>').click(function()
			{
				copy_to_row.css('display', 'table-row');
				$(this).remove();
				return false;
			}),
			$('<a href="#">Добавить скрытую копию</a>').click(function()
			{
				hidden_to_row.css('display', 'table-row');
				$(this).remove();
				return false;
			})
		);
		if (settings.hide_subject)
		{
			row_showers.append(
				$('<a href="#">Изменить тему</a>').click(function()
				{
					subject_row.css('display', 'table-row');
					$(this).remove();
					return false;
				})
			);
		}

		var showers_row = table_row('&nbsp;', row_showers);

		var files_row = table_row($('<i class="attach-img" />'),
			$('<div class="attach-input" />').append(
				$('<a href="#">Прикрепить файл</a>').click(function()
				{
					var add_file = $(this);
					add_file.before(
						$('<p />').append(
							$('<input type="file" name="attach" size="50" />'),
							$('<a href="#">Удалить</a>').click(function()
							{
								var p = $(this).parents('p').first();
								if (p.parent().find('p').length <= 1)
									add_file.text('Прикрепить файл');
								p.remove();
								return false;
							})
						)
					);
					add_file.text('Прикрепить еще один файл');
					return false;
				})
			));
		files_row.find('th').css('vertical-align', 'top');

		form_table.append(to_row, copy_to_row, hidden_to_row, showers_row, subject_row, files_row);


		var form_id = settings.answer_mail_id + new Date().getTime();

		var message_container = $('<div class="message-container" />');
		var message = $('<textarea name="message"/>');
		message.attr('id', 'message_' + form_id);

		var extend_edit = $('<a href="#">Расширенное форматирование »</a>');
		extend_edit.click(function()
		{
			if (settings.extend_editor)
			{
				var editor = message.ckeditorGet();
				if (editor) editor.destroy();
				extend_edit.text('Расширенное форматирование »');
				settings.extend_editor = false;
			}
			else
			{
				message.ckeditor(function(){},
					{
						skin: 'v2',
						toolbarCanCollapse: false,
						toolbar:
						[
							['Bold','Italic','Underline','Font','FontSize','TextColor','BGColor',
							'Smiley','Image','Link','Unlink',
							'NumberedList','BulletedList', 'Outdent','Indent','Blockquote',
							'JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock', '-', 'RemoveFormat'],
							['Source']
						]
					});
				extend_edit.text('« Простой текст');
				settings.extend_editor = true;
			}
			return false;
		});


		message_container.append(extend_edit, message);
		var form = $('<form />');
		form.attr('id', form_id);

		var send_actions = $('<div class="send_actions"></div>').append(
			$('<button><b>Отправить</b></button>').click(function()
			{
				if (settings.form_post_url)
				{
					var editor = message.ckeditorGet()
					if (editor) editor.updateElement()
					form_post(settings.form_post_url, 'send-mail', form_id, 'action=send_mail', settings.onSended)
				}
				else
				{
					alert('For send mail set parametr "form_post_url"');
				}
				return false;
			}),
			$('<button>Сохранить черновик</button>').click(function()
			{
				if (settings.form_post_url)
				{
					var editor = message.ckeditorGet()
					if (editor) editor.updateElement()
					form_post(settings.form_post_url, 'save-draft', form_id, 'action=save_draft', settings.onDraftSaved)
				}
				else
				{
					alert('For save draft set parametr "form_post_url"');
				}
				return false;
			}),
			$('<button>Удалить черновик </button>').click(function()
			{
				if (settings.form_post_url)
				{
					var editor = message.ckeditorGet()
					if (editor) editor.updateElement()
					form_post(settings.form_post_url, 'delete-draft', form_id, 'action=delete_draft', settings.onDraftDeleted)
				}
				else
				{
					alert('For save draft set parametr "form_post_url"');
				}
				return false;
			})
		);

		form.append(send_actions, form_table, message_container, send_actions.clone(true),
			$('<input type="hidden" name="answer_mail_id" />').val(settings.answer_mail_id)
		);
		panel.html('');
		panel.append(form);
		return panel;
	};

})(jQuery);
