var shout_interval_id;
var btn_shoutbox_shout,
	cbb_shout_mode,
	btn_shoutbox_refresh,
	tb_shoutbox_message,
	div_shoutbox_header,
	ul_shoutbox_shouts;

function init_shoutbox()
{
	tb_shoutbox_message = get_elem('tb_shoutbox_message');
	cbb_shout_mode = get_elem('cbb_shout_mode');
	
	add_handler(tb_shoutbox_message, 'keyup', shoutbox_key_up);
	add_handler(tb_shoutbox_message, 'keyup', shoutbox_validate);
	add_handler(tb_shoutbox_message, 'change', shoutbox_validate);
	
	btn_shoutbox_shout = get_elem('btn_shoutbox_shout');
	add_handler(btn_shoutbox_shout, 'click', do_shout);
	
	btn_shoutbox_refresh = get_elem('btn_shoutbox_refresh');
	add_handler(btn_shoutbox_refresh, 'click', refresh_shoutbox);
	
	div_shoutbox_header = get_elem('div_shoutbox_header');
	ul_shoutbox_shouts = get_elem('ul_shoutbox_shouts');
	
	refresh_shoutbox();
}

function shoutbox_key_up(e)
{
	if(e.type == "keyup" && e.keyCode == 13)
	{
		do_shout();
	}
}

function shoutbox_validate()
{
	if(tb_shoutbox_message.disabled == false && tb_shoutbox_message.value != "")
		enable_button(btn_shoutbox_shout);
	else
		disable_button(btn_shoutbox_shout);
}

function do_shout()
{
	if(tb_shoutbox_message.value == "")
		return;
		
	clearInterval(shout_interval_id);

	disable_field(tb_shoutbox_message);
	disable_button(btn_shoutbox_refresh);
	disable_button(btn_shoutbox_shout);
	div_shoutbox_header.className = 'working';
	
	protoAjax = new Ajax.Request (acturl,
	{
		method: 'post',
		parameters:{
					act: "do_shout",
					message: tb_shoutbox_message.value,
					mode: cbb_shout_mode.value
				},
		onComplete : shouted
	});
}

function shouted(t)
{
	shout_interval_id = setInterval("refresh_shoutbox()", 10000);
	
	div_shoutbox_header.className = '';
	
	var response = process_ajax_response(t);
	var root = response.root;
	var success = response.success;

	if(success)
	{
		tb_shoutbox_message.value = "";
		var username = root.getAttribute('username');
		var message = root.getAttribute('message');
		var bot_response = root.getAttribute('bot_response');
		
		if(bot_response != null)
		{
			li = document.createElement('li');
			li.className = 'bot_response';
			ul_shoutbox_shouts.insertBefore(li, ul_shoutbox_shouts.firstChild);
			li.innerHTML = "<b>Pika Bot</b>: " + bot_response;
		}

		var li = document.createElement('li');
		ul_shoutbox_shouts.insertBefore(li, ul_shoutbox_shouts.firstChild);
		li.innerHTML = "<b>" + username + "</b>: " + message;
	}
	else
	{
		enable_button(btn_shoutbox_shout);
	}
	enable_field(tb_shoutbox_message);
}

function refresh_shoutbox()
{
	disable_button(btn_shoutbox_refresh);
	div_shoutbox_header.className = 'working';
	clearInterval(shout_interval_id);
	protoAjax = new Ajax.Request (acturl,
	{
		method: 'post',
		parameters:{
					act: "refresh_shoutbox"
				},
		onComplete : shoutbox_refreshed
	});
}

function shoutbox_refreshed(t)
{
	enable_button(btn_shoutbox_refresh);
	div_shoutbox_header.className = '';
	shout_interval_id = setInterval("refresh_shoutbox()", 10000);

	var response = process_ajax_response(t);
	var root = response.root;
	var success = response.success;
	
	if(success)
	{
		ul_shoutbox_shouts.innerHTML = "";
		var shouts = root.getElementsByTagName('shout');
		for(var i = 0; i < shouts.length; i++)
		{
			var shout = shouts[i];
			var username = shout.getAttribute('username');
			var message = shout.getAttribute('message');
			var bot_response = shout.getAttribute('bot_response');
			
			var li = document.createElement('li');
			ul_shoutbox_shouts.appendChild(li);
			li.innerHTML = "<b>" + username + "</b>: " + message;
			
			if(bot_response != '')
			{
				li = document.createElement('li');
				li.className = 'bot_response';
				ul_shoutbox_shouts.appendChild(li);
				li.innerHTML = "<b>Pika Bot</b>: " + bot_response;
			}
		}
	}
}

