var chat = {};

chat.loadCategories = function(timer)
{
	$('#block-chat-quotes .loader').fadeIn();
	$.getJSON(Drupal.settings.basePath + 'data/categories',
		function(categories)
		{
			//alert('load categories');
			//$('#categories li.custom').remove();
											
			$.each(categories, 
				function(i, category)
				{
					//alert(i);
				
					if ($("#categories li:contains('" + category.name + "')").length == 0)
					{
						li = $('<li>' + category.name + '</li>');
						li.mousedown(
							function()
							{
								$('#block-chat-quotes .loader').fadeIn();
								$.getJSON(Drupal.settings.basePath + 'data/quotes/' + category.tid, chat.loadQuotes);
								$('#categories > li').removeClass('active');
								$(this).addClass('active');
							}
						);

						$('#categories').append(li);
					}
				}
			);
			
			$('#categories li').mouseover(
				function()
				{
					$(this).addClass('hover');
				}
			);
			
			$('#categories li').mouseout(
				function()
				{
					$(this).removeClass('hover');
				}
			);
			
			$('#block-chat-quotes .loader').fadeOut();
		}
	);
	
}

/*
chat.currentCategory = 'category--1';

chat.loadCategories = function(timer)
{
	$('#block-chat-quotes .loader').fadeIn();

	var path = Drupal.settings.basePath + 'fragment/categories/' + Drupal.settings.user.uid;
	$('#categories').load(path,
		function()
		{
			$('#block-chat-quotes .loader').fadeOut();
			$('#categories > li').removeClass('active');
			$('li#' + chat.currentCategory).addClass('active');
							
			
			$('#categories a[rel=dynamic]').each(
				function(i)
				{
					$(this).click(
						function()
						{
							chat.currentCategory = $(this).parent('li').attr('id');
							$('#categories > li').removeClass('active');
							$('li#' + chat.currentCategory).addClass('active');

							
							var target = $(this).attr('target');
							var href = $(this).attr('href');
							$('#block-chat-quotes .loader').fadeIn();
							$(target).load(href, 
								function()
								{
									$('#block-chat-quotes .loader').fadeOut();
									$(target).children('li').click(
										function()
										{

											$("textarea#quote").val($(this).children('.text').html());
											$("input#source").attr('value', $(this).children('.source').html());
											$("input#date").attr('value', $(this).children('.date').html());
											$("input#categoryTerms").attr('value', $(this).children('.categories').html());
										}
									);
								}
							);
							return false;
						}
					)
				}
			);
		}
	);
	
}*/


chat.loadQuotes = function(quotes)
{
	$('#quotes').empty();
	
	$.each(quotes, 
		function(i, quote)
		{
			var li = $('<li>&#147;' + quote.quote + '&#148; - ' + quote.source + ', ' + quote.date + '</li>');
			li.mousedown(
				function()
				{
					$("textarea#quote").val(quote.quote);
					$("input#source").attr('value', quote.source);
					$("input#date").attr('value', quote.date);
					$("input#categoryTerms").attr('value', quote.categories);
					//$.getJSON('data/quotes/' + category.tid, loadCategories);
				}
			);
			li.mouseover(
				function()
				{
					$(this).addClass('hover');
				}
			);
			li.mouseout(
				function()
				{
					$(this).removeClass('hover');
				}
			);
			$('#quotes').append(li);
			
			$('#block-chat-quotes .loader').fadeOut();
        }
    );

}

chat.perform = function(action)
{
	var quote = $("textarea#quote").val();
	var source = $("input#source").attr('value');
	var date = $("input#date").attr('value');
	var categories = $("input#categoryTerms").attr('value');
	
	//alert('quote = ' + quote + ', source = ' + source + ', date = ' + date);
	
	var isValid = true;
	
	if (source == '')
	{
		$('#source').addClass('invalid');
		isValid = false;
		//alert('source');
	}
	else
	{
		$('#source').removeClass('invalid');
	}
	
	
	if (quote == '')
	{
		$('#quote').addClass('invalid');
		isValid = false;
		//alert('quote');
	}
	else
	{
		$('#quote').removeClass('invalid');
	}
	
	if (date == null)// || date.length != 4 || isNaN(parseInt(date)))
	{
		$('#date').addClass('invalid');
		isValid = false;
		//alert('date');
	}
	else
	{
		$('#date').removeClass('invalid');
	}
	
	
	if (!isValid)
	{
		//alert('invalid');
		return false;
	}
	
	var data = 
	{
		quote: quote,
		source: source,
		date: date,
		recipientId: Drupal.settings.recipientId,
		categories: categories
	}
	
	$.post(Drupal.settings.basePath + action, data,
		function()
		{
			$("textarea#quote").val('');
			$("input#source").val('');
			$("input#date").val('');
			$("input#categoryTerms").val('');
		
			chat.loadMessages(null);
			chat.loadCategories(null);
		
		}
	);
	
	return false;
}

chat.loadUsers = function(timer)
{
	$('#block-chat-users .loader').fadeIn();
	$('#users').load(Drupal.settings.basePath + 'fragment/users/1',
		function()
		{
			$('#block-chat-users .loader').fadeOut();
			$('#users a[rel=facebox]').facebox();
		}
	);
}

chat.loadMessages = function(timer)
{
	$('#block-chat-messages .loader').fadeIn();
	var path = Drupal.settings.basePath + 'fragment/messages/' + Drupal.settings.recipientId;
	$('div#conversation table tbody').load(path, 
		function()
		{
			$('#block-chat-messages .loader').fadeOut();
			var objDiv = $('div#conversation').get(0);
			objDiv.scrollTop = objDiv.scrollHeight;
		}
	);
}

$(document).ready(

	function()
	{
	
		$('a[rel=facebox]').facebox();
		
		$('.block h2.title').css('float', 'left').css('margin-right', '5px').after('<div class="loader"><img src="' + Drupal.settings.basePath + 'sites/all/modules/chat/ajax-loader.gif"/></div><div style="clear: left"></div>');
		
		$('#speak').click(
			function()
			{
				chat.perform('speak');
			}
		);
		
		$('#save').click(
			function()
			{
				chat.perform('save');
			}
		);
		
		var li = $('<li class="first">All</li>');
				
		li.click(
			function()
			{
				$('#block-chat-quotes .loader').fadeIn();
				$.getJSON(Drupal.settings.basePath + 'data/quotes/-1', chat.loadQuotes);
				$('#categories > li').removeClass('active');
				$(this).addClass('active');
			}
		);
		$('#categories').append(li);
		
		li.trigger('click');
		
		li = $('<li>Uncategorised</li>');
		
		li.mousedown(
			function()
			{
				$('#block-chat-quotes .loader').fadeIn();
				$.getJSON(Drupal.settings.basePath + 'data/quotes/0', chat.loadQuotes);
				$('#categories > li').removeClass('active');
				$(this).addClass('active');
			}
		);
		
		$('#categories').append(li);
				
		chat.loadCategories(null);
		//$.timer(30000, chat.loadCategories);
		
		chat.loadUsers(null);
		$.timer(30000, chat.loadUsers);
		
		chat.loadMessages(null);
		$.timer(15000, chat.loadMessages);
	}
);