
(function(jQuery) {

	/**
	 * Метод добавления друга
	 * @param {Object} options
	 */
	jQuery.fn.friendAdd = function(options) {
		
		// Настройки по умолчанию
		var defaults = {
			lang_title: 'Добавление пользователя в друзья',
			lang_question: 'Вы действительно хотите добавить в друзья этого пользователя?',
			lang_message_default: 'Вы можете написать свое сообщение...',
			lang_success: 'Пользователю отправлено предложение дружбы',
			obj: null
		};
		
		var options = $.extend(defaults, options);
		
		// Получем id пользователя
		var fid = $(this).attr('add');
		
		var self = this;
		var $self = $(this);
		
		// Устанавливаем событие
		$(this).click(function() {
			
			// Инициализируем шаблон
			initAddTpl();
			
			// Создаем окно
			$("#friend_add").jdialog({
				width: 450
			});
			
			// Открываем окно
			$("#friend_add").jdialog('open');
			
			// Добавляем события на textarea
			var text = $("#friend_add textarea");
			text.attr('def', text.val()).
			blur().
			blur(function() {
				if(!text.val())
					text.removeClass('active').val(text.attr('def'));
			}).
			click(function() {
				if(text.val() == text.attr('def'))
					text.addClass('active').val('');
			});
			
			// Устанавливаем событие на кнопку
			$("#friend_add a").click(function() {
				
				// Отключаем кнопку и событие
				$(this).attr('class', 'submit_add_friend_button_disabled').unbind('click');
				
				// Уменьшаем по высоте
				$("#friend_add").
				find('label').hide().end().
				find('textarea').hide().end().
				find('a').hide().end().
				css({
					"height": 265,
					"min-height": 0
				}).animate({
					"height": "-=210px"
				}, 1000, function(){
					
					// Включаем статус загрузки
					var wait = $("#friend_add").jwait({
						position: 'zero',
						show: true
					});
					
					// Получаем сообщение
					var message = '';
					if($('textarea', $(this)).val() != $('textarea', $(this)).attr('def'))
						message = $('textarea', $(this)).val();
					
					// Отправляем запрос на сервер
					$.post('/friend/add/' + fid + '/', {
						message: message
					}, function(response) {
						
						// Скрываем статус загрузки
						wait.hide();
						
						// Меняем текст и включаем
						$("#friend_add label").html(options.lang_success).show();
						
						// Применяем к элементу Cufon
						Cufon.replace('#friend_add label');
						
						if ($self.parent().attr('id') && $self.parent().attr('id') == 'friend_action') 
							$('#friend_action').html(response);
						else {
							$self.parent().find('a[add]').hide();
							$self.parent().find('a[del]').show();
						}
						
						if(options.obj)
							options.obj.info.friend = 'yes';
					})
				});
				
				// Сдвигаем вниз по вертикали
				$("#friend_add").parent().animate({
					"top": "+=105px"
				}, 1000);
			});
			
			return false;
		});
		
		/**
		 * Инициализация шаблона
		 */
		initAddTpl = function() {
			
			// Удаляем шаблон если есть
			$('#friend_add').remove();
			
			// Генерим шаблон
			tpl = '<div id="friend_add" title="' + options.lang_title + '">' +
			'<label>' + options.lang_question + '</label>' +
			'<textarea>' + options.lang_message_default + '</textarea>' +
			'<a id="friend_add_send" class="submit_add_friend_button" href="javascript:void(0)"></a>' +
			'</div>';
			
			// Добавляем шаблон к DOM
			$(tpl).appendTo($('body'));
			
			// Применяем к элементу Cufon
			Cufon.replace('#friend_add label');
		}
	}
	
	/**
	 * Метод удаления друга
	 * @param {Object} options
	 */
	jQuery.fn.friendDelete = function(options) {
		
		//console.log(this);
		
		// Настройки по умолчанию
		var defaults = {
			lang_title: 'Удаление пользователя из друзей',
			lang_question: 'Вы действительно хотите удалить этого пользователя из друзей?',
			lang_success: 'Пользователь удален из друзей',
			obj: null
		};
		
		var options = $.extend(defaults, options);
		
		// Получем id пользователя
		var fid = $(this).attr('del');
		
		var self = this;
		var $self = $(this);
		
		// Устанавливаем событие
		$(this).click(function() {
			
			// Инициализируем шаблон
			initDelTpl();
			
			// Создаем окно
			$("#friend_delete").jdialog({
				width: 450
			});
			
			// Открываем окно
			$("#friend_delete").jdialog('open');
			
			// Устанавливаем событие на кнопку
			$("#friend_delete a").click(function() {
				
				// Отключаем кнопку и событие
				$(this).attr('class', 'submit_delete_friend_button_disabled').unbind('click');
				
				// Уменьшаем по высоте
				$("#friend_delete").
				find('label').hide().end().
				find('a').hide().end().
				css({
					"height": 125,
					"min-height": 0
				}).animate({
					"height": "-=70px"
				}, 1000, function(){
					
					// Включаем статус загрузки
					var wait = $("#friend_delete").jwait({
						position: 'zero',
						show: true
					});
					
					// Отправляем запрос на сервер
					$.post('/friend/action/' + fid + '/escape/', {
					}, function(response) {
						
						// Скрываем статус загрузки
						wait.hide();
						
						// Меняем текст и включаем
						$("#friend_delete label").html(options.lang_success).show();
						
						// Применяем к элементу Cufon
						Cufon.replace('#friend_delete label');
						
						$('#friend_action').html(response);
						
						if ($self.parent().attr('id') && $self.parent().attr('id') == 'friend_action') 
							$('#friend_action').html(response);
						else {
							$self.parent().find('a[del]').hide();
							$self.parent().find('a[add]').show();
						}
						
						if(options.obj)
							options.obj.info.friend = 'no';
					})
				});
				
				// Сдвигаем вниз по вертикали
				$("#friend_delete").parent().animate({
					"top": "+=35px"
				}, 1000);
			});
			
			return false;
		});
		
		/**
		 * Инициализация шаблона
		 */
		initDelTpl = function() {
			
			// Удаляем шаблон если есть
			$('#friend_delete').remove();
			
			// Генерим шаблон
			tpl = '<div id="friend_delete" title="' + options.lang_title + '">' +
			'<label>' + options.lang_question + '</label>' +
			'<a id="friend_delete_send" class="submit_delete_friend_button" href="javascript:void(0)"></a>' +
			'</div>';
			
			// Добавляем шаблон к DOM
			$(tpl).appendTo($('body'));
			
			// Применяем к элементу Cufon
			Cufon.replace('#friend_delete label');
		}
	}

})(jQuery);