var newest_message_id = 0;
var query_messages = undefined;
var last_message_author = undefined;

$(document).ready(function(){
	var author_field = $('#message_author');
	var message_field = $('#message_content');
	var message_list = $('#messages > table');
	var autoscroll = true;
	var original_chat_height = undefined;
	
	$('a#autoscroll_toggle').click(function(){
		if (autoscroll) {
			autoscroll = false;
			$(this).text('Automatischen Bildlauf einschalten');
		} else {
			autoscroll = true;
			$(this).text('Automatischen Bildlauf ausschalten');
		}
		return false;
	});
	
	$('a#maximize_toggle').click(function(){
		var content = $('div#content');
		var messages = $('#messages');
		
		if (content.hasClass('overlayed')) {
			messages.height(original_chat_height);
			content.removeClass('overlayed');
			$(this).text('Chatbereich vergrößern');
		} else {
			content.addClass('overlayed');
			original_chat_height = messages.height();
			var max_chat_height = $(window).height() - content.find('h2').outerHeight(true) - 50 - content.find('form').outerHeight(true);
			messages.height(max_chat_height);
			$(this).text('Chatbereich verkleinern');
		}
		
		return false;
	});
	
	$('#chat > form').submit(function(){
		var content = '';
		var author = '';
		
		if ( ! message_field.hasClass('empty') )
			content = message_field.val();
		
		if ( ! author_field.hasClass('empty') )
			author = author_field.val();
		
		// Simply don't send if there is nothing to send
		if (content == '')
		{
			message_field.addClass('with_error');
			message_field.focus();
			return false;
		}
		message_field.removeClass('with_error');
		
		// If ther's no author jet, set the author name field to with_error so
		// that the user enters a name before sending
		if (author == '')
		{
			author_field.addClass('with_error');
			author_field.focus();
			return false;
		}
		author_field.removeClass('with_error');
		
		append_message(new Date(), author_field.val(), content, 'fake');
		$.post(window.location.href, {author: author, content: content});
		
		message_field.val('').focus();
		
		return false;
	});
	
	function append_message(time, author, content, css_class){
		var class_part = '';
		var message_part = '';
		
		if (css_class)
			class_part = ' class="' + css_class + '"';
		
		if (last_message_author != author) {
			message_part = '<td class="time">' + humanize_time(time) + '</td>' +
				'<td class="message"><em>' + author + ':</em> ' + content + '</td>';
		} else {
			message_part = '<td class="time"></td><td class="message">' + content + '</td>';
		}
		
		message_list.append('<tr' + class_part + ' style="color: ' + name_to_color(author) + ';">' +
			message_part + '</tr>');
		
		if (autoscroll)
		{
			var message_container = $('#messages').get(0);
			//message_container.scrollTop = 0;
			message_container.scrollTop = message_container.scrollHeight;
		}
	};
	
	query_messages = function(){
		var query_uri = window.location.protocol + '//' + window.location.host + window.location.pathname;
		query_uri = query_uri + '?messages_since=' + newest_message_id;
		
		$.getJSON(query_uri, function(data, textStatus){
			$('#messages tr.fake').remove();
			for (var i = data.length - 1; i >= 0; i--)
			{
				var message = data[i];
				var message_id = parseInt(message.id);
				if ( newest_message_id < message_id )
					newest_message_id = message_id;
				
				append_message(new Date(parseInt(message.time * 1000)), message.author, eval('"' + message.content + '"'));
				last_message_author = message.author;
			}
			setTimeout('query_messages()', 2000);
		});
	};
	
	query_messages();
});