jQuery(document).ready(function() {

	$('input#sf_name').grayout();

	var $friends_list = $('.friendlist');

	var transform = function(form, $f, newClass, addText) {

		// serialize form
		var $form 	= $(form);
		var data 	= $form.serializeArray();
		$.post($form.attr('action'), data, function(status) {  

			if (status.status) {

				$f.find('.image, table').remove();
				$f.find('h3').append(addText);
				$f.addClass(newClass);

			} else {
				$f.html(status.content);
				$f.addClass('friend_error');
			}

			$f.slideDown('slow');
		
		}, 'json');

		/**
		 * Remove any forms
		 */
		$f.find('.actions form').remove();
		$f.slideUp('600');
	};

	var ajaxSubmit 		= function() {
		var $f 		= $(this);
		var $friend	= $f.parents('div.friend:first');
		$.post($f.attr('action'), data, function(status) {  
		
			if (status.content != 'ok') {
				$friend.find('div.actions').html(status.content);
			}

		}, 'json' );
	
		return false;
	};

	var deleteSubmit = function() {
		var $f = $(this).parents('div.friend:first');
		transform(this, $f, 'deleted', ' - friendship deleted');
		return false;
	};

	var approveSubmit = function() {
		var $f = $(this).parents('div.friend:first');
		transform(this, $f, 'approved', ' - friendship approved');
		return false;
	};

	var ignoreSubmit = function() {
		var $f = $(this).parents('div.friend:first');
		transform(this, $f, 'ignored', ' - friendship request ignored');
		return false;
	};

	var mutualSubmit = function() {

		var $form 		= $(this);
		var $friend		= $(this).parents('div.friend:first');
		var returned	= false;

		// serialize form
		var data 	= $form.serializeArray();

		$.post($form.attr('action'), data, function(status) {  

			if (status.status) {

				if (status.content != 'ok') {
					$friend.find('div.actions').html(status.content);
					if (typeof(returned) == 'function') { 
						returned();
					} else {
						returned = true;
					}

					attachActions($friend);
				}

			} else {
				$friend.html(status.content);
				$friend.addClass('friend_error');
				$friend.slideDown('fast');
			}
		}, 'json');

		$friend.find('.actions form').remove();

		$friend.slideUp('slow', function() {
			var step2 = function() { 
				$friend.addClass('justadded');
				$friends_list.prepend($friend);
				$friend.slideDown('slow');
			};
			if (returned) { 
				step2();
			} else { 
				returned = step2;
			}
		});

		return false;
	};

	/**
	 * All friend actions are ajax-based!
	$('div.friend div.actions form').submit(ajaxSubmit);
    */

	/**
	 * Every action has their own animation
	 */
	var attachActions = function($friend) {
		$friend.find('.delete').lbconfirm(function($t) {
			var $f = $t.parents('div.friend:first');
			$f.slideUp();
		});
		//$friend.find('.delete').submit(deleteSubmit);
		$friend.find('.approve').submit(approveSubmit);
		$friend.find('.ignore').submit(ignoreSubmit);
		$friend.find('.mutual').submit(mutualSubmit);
	};
	$('div.friend').each(function() { attachActions($(this)); });
});

