var last_id = '';	
var first = true;
var messagebox = '';
var ajaxmanager = '';
var last_write = '';
var max_write_interval = 10000;
var error_username = 'Övervakaren';

$(function(){
	
	messagebox = $('#board_messages');
	ajaxmanager = $.manageAjax.create('queue', 
	{
		preventDoubbleRequests: true,
		cache : true,
		maxRequests: 1
	});
	
	// skall boardboxes visas från början eller inte?
	var c = $.cookie("showboard");

	if ( c == "yes" )
	{
		$('#board').show();
		$('#boardopen').hide();
	}
	
	$('#boardopen').click(function(){
		//$('#board').animate({width: 'toggle'});
		$('#board').show();
		$('#boardopen').hide();
		// en cookie sätts så att denna visas vid pagereload
		$.cookie("showboard","yes", {path: '/'});
	});
	$('#boardclose').click(function(){
		//$('#board').animate({width: 'toggle'});
		$('#board').hide();
		$('#boardopen').show();
		// ta bort kakan..
		$.cookie("showboard","no", {path: '/'});
	});
	
	get_last_id();
	
	
	$('#form_board').submit(function()
	{
		return false;
	});
	$('[name=message]').keypress(function(e){
		var bottom = '';
		var message = $('[name=message]').val();
		var d = new Date;
		message = message.replace('\n','');
		
		
		$('[name=message]').val(message);
		if ( e.keyCode == 13) //enter har klickats
		{
			if ( last_write == '' ||  (d.getTime() - last_write > max_write_interval))
			{
				message = trim(message);
				var data = {};

				data['message'] = message;
				if ( message != '' )
				{
					
					ajaxmanager.add('queue',{
					url: BASE_URL + 'index.php/board/write/last/' + last_id, 
					data: data,
					beforeSend: function(request){
						$('#loader').show();
						bottom = isBottom();
					},
					success: function(data)
					{
						for(var i = 0; i < data.length; i++)
						{
							create_message(data[i].username, data[i].message, data[i].avatar);
							if ( ! data[i].id == 0) last_id = data[i].id;
						}
						
						last_write = d.getTime();
						
						//if ( bottom )
							scrollBottom();
						
						
						$('[name=message]').val('');
						//$('[name=message]').focus();
						$('#loader').hide();
					},
					dataType: 'json',
					type: 'POST'
					});
				}
			}
			else
			{
				send_error('Fler vill synas än du, endast ett meddelande var 5:e minut är tillåtet.', error_username);
				scrollBottom();
			}
			e.preventDefault();
		}
		
	});
	scrollBottom();
	setInterval("get_messages()", 60000);
});

// loopar igenom alla meddelanden för att ta ut vilket sista IDt är..
function get_last_id()
{
	var big_nr = 0;
	var divs = $('.message');
	$.each(divs, function(){
		if ( $(this).attr("id") > big_nr )
			big_nr = $(this).attr("id");
	});
	
	last_id = big_nr;

}

function clearboard()
{
	messagebox.html('');
	last_id = '';
}
function scrollBottom()
{
	messagebox.attr({ scrollTop: messagebox.attr("scrollHeight") });
}
function isBottom()
{
	return messagebox.attr("scrollHeight") - messagebox.scrollTop() == messagebox.outerHeight();
}
function get_messages()
{
	var bottom = '';
	// skall endast köras ifall boardtboxen är aktiv..
	// skall endast köras ifall senaste updaten var för mer än 1 sek sen
	if ( $('#board').is(':visible') )
	{
		ajaxmanager.add('queue', {
			type: 'GET',
			url: BASE_URL + 'index.php/board/get/last/' + last_id,
			dataType: 'json',
			beforeSend: function(){
				// är vi i botten?
				bottom = isBottom();
			},
			success: function(data){
				for(var i = 0; i < data.length; i++)
				{
					create_message(data[i].username, data[i].message, data[i].avatar);
					if ( ! data[i].id == 0) last_id = data[i].id;
				}
				// var vi i slutet av diven innan updaten? isf scrolla bottom
				if ( bottom == true || first == true)
					scrollBottom();
				// uppdaterar last_update
				first = false;
			}
		});
	}
}

function send_error(message, username)
{
	create_message(username, message, AVATAR_DIR + 'fffuuu.jpg');
}

function create_message(username, message, avatar)
{
	var messagebox = $('#board_messages');
	var d_container = document.createElement('div');
	var d_message = document.createElement('div');
	var d_avatar = document.createElement('img');
	var d_username = document.createElement('div');
	
	$(d_container).attr("class","message");
	$(d_message).attr("class","body");
	$(d_avatar).attr("class","avatar");
	$(d_avatar).attr("src",avatar);
	$(d_username).attr("class","username");
	
	d_username.innerHTML = username + " säger:" ;
	d_message.innerHTML = message;
	
	d_container.appendChild(d_avatar);
	d_container.appendChild(d_username);
	d_container.appendChild(d_message);
	
	messagebox.append(d_container);
}
function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
