/*--------------------------------------------\\
||  D22-Shoutbox :: JavaScript Library        ||
||  Written By:  Dean                         ||
||  Website:  http://www.dscripting.com       ||
||  Date:  December 3, 2006                   ||
||  Updated:  December 20, 2006               ||
||  Copyright (c) 2006 - All Rights Reserved  ||
\\--------------------------------------------*/

function shoutbox()
{
	this.base_url = ipb_var_base_url+'autocom=shoutbox&';

	this.members_refresh = 10;
	this.shouts_refresh  = 5;
	this.editor_height   = '125px';
	this.history_size    = 10;
	this.encode_num      = 5;
	this.flood_limit     = 0;
	this.bypass_flood    = 0;
	this.total_shouts    = 0;
	this._refreshes      = 0;
	this._shout_skips    = 0;

	this.ajax_objs     = new Array();
	this.objs          = new Array();
	this.errors        = new Array();
	this.langs         = new Array();
	this.shout_history = new Array();
	this.shout_data    = new Array();

	this.global_on     = false;
	this.enable_cmds   = true;
	this.skip_fade     = false;
	this.debug         = false;
	this.debug_obj     = null;
	this.shout_obj     = null;
	this._scrolled     = false;
	this.loaded        = false;
	this.mod_loading   = false;
	this.mod_in_action = false;
	this.moderator     = false;
	this._moderator    = false;
	this.copyrighted   = false;
	this.my_last_shout = null;

	this.mod_command     = '';
	this.mod_shout_id    = 0;
	this.this_load_time  = 0;
	this.shout_load_time = -1;

	this.temp_shout = '';

	this.events_load_max_tries = 10;
	this.events_load_tries     = 0;
	this.events_loaded         = false;
	this.events_rte_loaded     = false;
}

shoutbox.prototype.debug_it = function(m)
{
	if (shoutbox.debug)
	{
		if (shoutbox.global_on)
		{
			alert(m);
		}
		else
		{
			try
			{
				shoutbox.debug_obj.innerHTML += m+'<br />';
			}

			catch(e){}
		}
	}
}

shoutbox.prototype.submit_shout = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (this.blur)
	{
		this.blur();
	}

	if (!shoutbox.global_on)
	{
		shoutbox.editor_rte = IPS_editor[shoutbox.editor_id].is_rte;
	}

	var p = new Array();
	var s = shoutbox.get_shouts_ids();

	if (!s.length)
	{
		s = new Array();
	}

	p['autocom']  = 'shoutbox';
	p['code']     = 'shout';
	p['md5check'] = ipb_md5_check;
	p['shout']    = shoutbox.get_shout();
	p['ajaxkey']  = 'submit-shout';
	p['ids']      = (s != '' && s.length > 0) ? s.join(',') : '';
	p['global']   = (shoutbox.global_on) ? 1 : 0;

	if (p['shout'] == '')
	{
		shoutbox.shout_error(shoutbox.errors['blank_shout']);
		return;
	}

	if (p['shout'].length * 1024 > shoutbox.max_length)
	{
		shoutbox.shout_error(shoutbox.errors['shout_too_big']);
		return;
	}

	if (shoutbox.flood_limit > 0 && (shoutbox.get_timestamp()-shoutbox.my_last_shout < shoutbox.flood_limit) && shoutbox.bypass_flood != 1)
	{
		shoutbox.shout_error(shoutbox.errors['flooding'].replace('{#EXTRA#}', shoutbox.flood_limit));
		return;
	}

	shoutbox.shout_error_clear();
	if (shoutbox.check_for_commands() == 'doshout')
	{
		shoutbox.temp_display_shout();
		shoutbox.clear_shout();

		shoutbox.this_load_time = shoutbox.get_timestamp();
		shoutbox.new_ajax('submit-shout', 'post', shoutbox.base_url, shoutbox.submit_shout_func, p);
	}
}

shoutbox.prototype.check_for_commands = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.enable_cmds)
	{
		return 'doshout';
	}

	var s = shoutbox.get_shout().toString();
	var a = s.split(' ');
	var m = new Array();

	switch (a[0])
	{
		case '/refresh':
		case '/reload':
			shoutbox.reload_shouts(true);
			shoutbox.clear_shout();
			break;
		case '/alert':
			if (shoutbox.valid_command_syntax(a[1]))
			{
				shoutbox.clear_shout();
				alert(a[1]);
			}
			else
			{
				shoutbox.shout_error(shoutbox.errors['invalid_command']);
			}

			break;
		case '/load-mod':
			if (shoutbox.valid_command_syntax(a[1]) && shoutbox.valid_command_syntax(a[2]))
			{
				t = a[1];
				d = a[2];

				if (t == 'member' && d != '' && shoutbox.moderator && !shoutbox.mod_in_action)
				{
					var p = new Array();
					p['autocom']  = 'shoutbox';
					p['md5check'] = ipb_md5_check;
					p['code']     = 'ajax';
					p['type']     = 'mod';
					p['do']       = 'load-member-cmd';
					p['name']     = d;

					shoutbox.clear_shout();
					shoutbox.new_ajax('load-mod-opts', 'post', shoutbox.base_url, shoutbox.mod_opts_process, p);
				}
				else
				{
					shoutbox.shout_error(shoutbox.errors['invalid_command']);
				}
			}
			else
			{
				shoutbox.shout_error(shoutbox.errors['invalid_command']);
			}

			break;
		default:
			return 'doshout';
	}

	return null;
}

shoutbox.prototype.submit_shout_func = function(x)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.ajax_objs[x].readystate_ready_and_ok())
	{
		return;
	}

	var o = shoutbox.get_obj('shoutbox-shouts');
	var d = shoutbox.ajax_objs[x].xmlhandler.responseText;

	if (m = d.match(new RegExp("error-(.*)", 'i')))
	{
		shoutbox.shout_error(m[1]);
		return;
	}
	else if (m = d.match(new RegExp("errorfull-(.*)", 'i')))
	{
		shoutbox.shout_error(m[1], true);
		return;
	}
	else
	{
		shoutbox.ajax_objs[x].execute_javascript(d);
		if (shoutbox.this_load_time > shoutbox.shout_load_time)
		{
			o.innerHTML = d;
			shoutbox.ajax_objs[x].execute_javascript(d);

			shoutbox.shout_load_time = shoutbox.this_load_time;
		}
	}

	setTimeout("shoutbox.shouts_scroll_bottom(true)", 500);
}

shoutbox.prototype.shout_area_focus = function()
{
	try
	{
		IPS_editor[shoutbox.editor_id].editor_window.focus();
	}

	catch(e){}
}

shoutbox.prototype.valid_command_syntax = function(c)
{
	if (c != '' && typeof(c) != 'undefined' && c != null && c)
	{
		return true;
	}

	return false;
}

shoutbox.prototype.popup_smilies = function()
{
	window.open(ipb_var_base_url+'act=legends&CODE=emoticons', 'Legends', 'width=250,height=500,resizable=yes,scrollbars=yes');
	return false;
}

shoutbox.prototype.popup_bbcode = function()
{
	window.open(ipb_var_base_url+'act=legends&CODE=bbcode', 'Legends', 'width=700,height=500,resizable=yes,scrollbars=yes');
	return false;
}

emoticon = function(c, id, u)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (shoutbox.global_on)
	{
		shoutbox.shout_obj.value += ' '+c+' ';
	}

	return false;
}

shoutbox.prototype.rewrite_shout_classes = function()
{
	var o = shoutbox.get_obj('shoutbox-shouts', true);
	var c = '';

	for (var i=0; i<o.childNodes.length; i++)
	{
		x = o.childNodes[i];
		if (x.nodeName == 'DIV' && (x.id.match(/shout-row-(\d+)$/ig) || x.id == 'temp-shout'))
		{
			c = (c == '' || c == 'row2') ? 'row1' : 'row2';

			x.className = c+' divpad';
		}
	}
}

shoutbox.prototype.check_num_mods = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	try
	{
		var o = shoutbox.get_obj('shoutbox-no-mods-message');
		if (shoutbox.num_mods <= 0)
		{
			o.style.display = 'block';
		}
		else
		{
			o.style.display = 'none';
		}
	}

	catch(e){}
}

shoutbox.prototype.check_num_shouts = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	try
	{
		var o = shoutbox.get_obj('shoutbox-no-shouts-message');
		if (shoutbox.total_shouts <= 0)
		{
			o.style.display = 'block';
		}
		else
		{
			o.style.display = 'none';
		}
	}

	catch(e){}
}

shoutbox.prototype.temp_display_shout = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	var s = shoutbox.get_shout();
	if (s == '')
	{
		return;
	}

	var d = new Date();
	var t = shoutbox.format_shout_time(d.getHours(), d.getMinutes());
	var o = shoutbox.get_obj('shoutbox-shouts', true);
	var n = Math.floor(Math.random()*101);
	var c;

	if (shoutbox.shout_order == 'asc')
	{
		for (var i=0; i<o.childNodes.length; i++)
		{
			c = o.childNodes[i];
			if (c.nodeName == 'DIV' && c.id.match(/shout-row-(\d+)$/ig))
			{
				break;
			}
		}
	}
	else
	{
		for (var i=o.childNodes.length-1; i>=0; i--)
		{
			c = o.childNodes[i];
			if (c.nodeName == 'DIV' && c.id.match(/shout-row-(\d+)$/ig))
			{
				break;
			}
		}
	}

	if (document.createElement)
	{
		var div1 = document.createElement('div');
		var div2 = document.createElement('div');
		var tbl  = document.createElement('table');
		var tr   = document.createElement('tr');
		var td1  = document.createElement('td');
		var td2  = document.createElement('td');
		var td3  = document.createElement('td');
		var spn  = document.createElement('span');
		var anc  = document.createElement('a');
		var spc  = document.createTextNode(' ');

		div1.id        = 'temp-shout-'+n;
		div1.className = ((c.className.match(new RegExp('row2', 'i'))) ? 'row1' : 'row2')+' divpad';

		tbl.cellPadding = 0;
		tbl.cellSpacing = 0;

		td1.setAttribute('align', 'left');
		td1.setAttribute('nowrap', 'nowrap');
		td1.setAttribute('valign', 'top');
		td1.className   = 'nopad';
		td1.style.width = '1%';

		td2.setAttribute('align', 'left');
		td2.setAttribute('nowrap', 'nowrap');
		td2.className   = 'nopad';
		td2.style.width = '1%';
		td2.innerHTML = '&nbsp;-&nbsp;';

		td3.setAttribute('align', 'left');
		td3.setAttribute('valign', 'top');
		td3.className   = 'nopad';
		td3.style.width = '100%';
		td3.innerHTML   = s;

		spn.style.color = 'gray';
		spn.innerHTML   = '('+t+')';

		anc.href      = ipb_var_base_url+'showuser='+shoutbox.my_id;
		anc.innerHTML = shoutbox.my_dname;

		td1.appendChild(spn);
		td1.appendChild(spc);
		td1.appendChild(anc);
		tr.appendChild(td1);
		tr.appendChild(td2);
		tr.appendChild(td3);
		tbl.appendChild(tr);
		div1.appendChild(tbl);
		div2.appendChild(div1);

		shoutbox.temp_shout = div2.innerHTML;
		if (shoutbox.shout_order == 'asc')
		{
			if (is_ie)
			{
				o.innerHTML += div2.innerHTML;
			}
			else
			{
				o.appendChild(div1);
			}
		}
		else
		{
			if (is_ie)
			{
				o.innerHTML = div2.innerHTML+o.innerHTML;
			}
			else
			{
				o.insertBefore(div1, o.firstChild);
			}
		}
	}
	else
	{
		var z = shoutbox.get_obj('shoutbox-temp-shout-row');
		var div = z.innerHTML;

		var a =
		{
			'time'  : t,
			'shout' : s,
			'divid' : 'temp-shout-'+n,
			'id'    : shoutbox.my_id,
			'dname' : shoutbox.my_dname,
			'class' : ((c.className.match(new RegExp('row2', 'i'))) ? 'row1' : 'row2')+' divpad'
		};

		for (var i in a)
		{
			div = div.replace('{'+i+'}', a[i]);
		}

		shoutbox.temp_shout = div;
		o.innerHTML         = div+o.innerHTML;

		if (shoutbox.shout_order == 'asc')
		{
			o.innerHTML += div;
		}
		else
		{
			o.innerHTML = div+o.innerHTML;
		}
	}

	try
	{
		var o = shoutbox.get_obj('shoutbox-shouts', true);
		if (o.childNodes.length > shoutbox.shouts_limit)
		{
			/*if (shoutbox.shout_order == 'asc')
			{
				o.removeChild(o.firstChild);
			}
			else
			{
				o.removeChild(c);
			}*/

			if (shoutbox.shout_order == 'asc')
			{
				for (var i=0; i<o.childNodes.length; i++)
				{
					c = o.childNodes[i];
					if (c.nodeName == 'DIV' && c.id.match(/shout-row-(\d+)$/ig))
					{
						break;
					}
				}
			}
			else
			{
				for (var i=o.childNodes.length-1; i>=0; i--)
				{
					c = o.childNodes[i];
					if (c.nodeName == 'DIV' && c.id.match(/shout-row-(\d+)$/ig))
					{
						break;
					}
				}
			}

			o.removeChild(c);
		}
	}

	catch(e){}

	shoutbox.rewrite_shout_classes();
	shoutbox.shouts_scroll_bottom(true);

	if (shoutbox.enable_fade && !shoutbox.skip_fade)
	{
		shoutbox.fade_object('temp-shout-'+n);
	}
}

shoutbox.prototype.format_shout_time = function(h, m)
{
	p = 'AM';
	if (h > 12)
	{
		h -= 12;
		p = 'PM';
	}

	if (h < 10)
	{
		h = '0'+h;
	}

	if (m < 10)
	{
		m = '0'+m;
	}

	return h+':'+m+' '+p;
}

shoutbox.prototype.trim = function(s)
{
	while (s.substring(0,1) == ' ')
	{
		s = s.substring(1, s.length);
	}

	while (s.substring(s.length-1, s.length) == ' ')
	{
		s = s.substring(0, s.length-1);
	}

	s = s.replace(new RegExp("^\n{1,}", 'ig'), '');
	s = s.replace(new RegExp("\n{1,}$", 'ig'), '');
	s = s.replace(new RegExp("^\t{1,}", 'ig'), '');
	s = s.replace(new RegExp("\t{1,}$", 'ig'), '');
	s = s.replace(new RegExp("^\r{1,}", 'ig'), '');
	s = s.replace(new RegExp("\r{1,}$", 'ig'), '');
	s = s.replace(new RegExp("^\0{1,}", 'ig'), '');
	s = s.replace(new RegExp("\0{1,}$", 'ig'), '');

	return s;
}

shoutbox.prototype.shout_error = function(m, s)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	s = (s == true) ? true : false;

	try
	{
		var o = shoutbox.get_obj('shoutbox-error');
		var c = shoutbox.get_obj('shoutbox-error-close');
		var p = o.parentNode;

		o.innerHTML     = m;
		c.onclick       = shoutbox.shout_error_clear;
		p.style.display = 'block';
	}

	catch(e){}

	if (!s)
	{
		setTimeout("shoutbox.shout_error_clear()", 4000);
	}
}

shoutbox.prototype.shout_error_clear = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	try
	{
		var o = shoutbox.get_obj('shoutbox-error');
		var p = o.parentNode;

		o.innerHTML     = '';
		p.style.display = 'none';
	}

	catch(e){}
}

shoutbox.prototype.clear_shout = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (shoutbox.global_on)
	{
		if (shoutbox.shout_obj)
		{
			shoutbox.shout_obj.value = '';
			shoutbox.shout_obj.focus();
		}
	}
	else
	{
		try
		{
			shoutbox.editor_rte = IPS_editor[shoutbox.editor_id].is_rte;

			if (shoutbox.editor_rte)
			{
				IPS_editor[shoutbox.editor_id].editor_document.body.innerHTML = '';
				IPS_editor[shoutbox.editor_id].togglesource_post_show_html();
				IPS_editor[shoutbox.editor_id].editor_check_focus();
				IPS_editor[shoutbox.editor_id].set_context();
			}
			else
			{
				if (shoutbox.get_obj(shoutbox.editor_id+'_textarea'))
				{
					shoutbox.shout_obj       = shoutbox.get_obj(shoutbox.editor_id+'_textarea');
					shoutbox.shout_obj.value = '';
					shoutbox.shout_obj.focus();
				}
			}
		}

		catch(x)
		{
			try
			{
				if (shoutbox.get_obj(shoutbox.editor_id+'_textarea'))
				{
					shoutbox.shout_obj       = shoutbox.get_obj(shoutbox.editor_id+'_textarea');
					shoutbox.shout_obj.value = '';
					shoutbox.shout_obj.focus();
				}
			}

			catch(y){}
		}
	}
}

shoutbox.prototype.get_shout = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	var d = '';
	if (shoutbox.editor_rte && IPS_editor[shoutbox.editor_id])
	{
		d = IPS_editor[shoutbox.editor_id].clean_html(IPS_editor[shoutbox.editor_id].editor_get_contents());
	}
	else
	{
		d = shoutbox.shout_obj.value;
	}

	if (d)
	{
		d = shoutbox.trim(d);
		d = d.replace(/<br.*>?$/ig, '');
		d = shoutbox.trim(d);
	}

	return d;
}

shoutbox.prototype.add_error_string = function(k, v)
{
	shoutbox.errors[k] = v;
}

shoutbox.prototype.add_lang_string = function(k, v)
{
	shoutbox.langs[k] = v;
}

shoutbox.prototype.force_scroll = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	shoutbox._refreshes += 1;
	if (shoutbox._refreshes >= 5)
	{
		shoutbox._refreshes = 0;
		shoutbox.shouts_scroll_bottom(true);
		setTimeout("shoutbox.shouts_scroll_bottom(true)", 500);
	}
}

shoutbox.prototype.shouts_scroll_bottom = function(f)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox._scrolled || f == true)
	{
		if (!f)
		{
			shoutbox._scrolled = true;
		}

		var o = shoutbox.get_obj('shoutbox-shouts', true);
		if (shoutbox.shout_order == 'asc')
		{
			o.scrollTop = o.scrollHeight-parseInt(shoutbox.read_style(o, 'height'))+500;
		}
		else
		{
			o.scrollTop = 0;
		}
	}
}

shoutbox.prototype.fade_object = function(id)
{
	var hash        = '#';
	var color_items = "0123456789abcdef";
	var start_color = '#ffff66';
	var temp_end    = '#ffffff';
	var iter        = 20;
	var time        = 80;

	try
	{
		var orig_color = shoutbox.read_style(shoutbox.get_obj(id), 'backgroundColor');
	}

	catch(mee)
	{
		var orig_color = document.getElementById(id).style.backgroundColor;
	}

	var rbeg = color_items.indexOf(start_color.substr(1,1))*16+color_items.indexOf(start_color.substr(2,1));
	var gbeg = color_items.indexOf(start_color.substr(3,1))*16+color_items.indexOf(start_color.substr(4,1));
	var bbeg = color_items.indexOf(start_color.substr(5,1))*16+color_items.indexOf(start_color.substr(6,1));
	var rend = color_items.indexOf(temp_end.substr(1,1))*16+color_items.indexOf(temp_end.substr(2,1));
	var gend = color_items.indexOf(temp_end.substr(3,1))*16+color_items.indexOf(temp_end.substr(4,1));
	var bend = color_items.indexOf(temp_end.substr(5,1))*16+color_items.indexOf(temp_end.substr(6,1));
		
	for (i=1, r=rbeg, g=gbeg, b=bbeg; i<=iter; r=Math.round(rbeg+i*((rend-rbeg)/(iter-1))), g=Math.round(gbeg+i*((gend-gbeg)/(iter-1))), b=Math.round(bbeg+i*((bend-bbeg)/(iter-1))), i++)
	{
		hstr = '#'+color_items.charAt(Math.floor(r/16))+color_items.charAt(r%16)+color_items.charAt(Math.floor(g/16))+color_items.charAt(g%16)+color_items.charAt(Math.floor(b/16))+color_items.charAt(b%16);
		setTimeout('try{var div = document.getElementById("'+id+'"); div.style.backgroundColor = "'+hstr+'";}catch(xx){}', i*time);
	}

	setTimeout('try{var div = document.getElementById("'+id+'"); div.style.backgroundColor = "'+orig_color+'";}catch(xx){}', (i+1)*time);
}

shoutbox.prototype.init_mod_shout = function(id)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!id || !shoutbox.moderator)
	{
		return false;
	}

	try
	{
		var o = shoutbox.get_obj('shout-row-'+id, true);

		o.onmouseover = shoutbox.shout_row_rollover;
		o.onmouseout  = shoutbox.shout_row_rollout;
	}

	catch(e){}
}

shoutbox.prototype.shout_row_rollover = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.moderator)
	{
		return false;
	}

	try
	{
		var id = this.id.replace(/shout-row-(\d+)$/ig, '$1');
		var o  = shoutbox.get_obj('shout-row-mod-opts-'+id, true);

		o.style.display = 'inline';
	}

	catch(e){}
}

shoutbox.prototype.shout_row_rollout = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.moderator)
	{
		return false;
	}

	try
	{
		var id = this.id.replace(/shout-row-(\d+)$/ig, '$1');
		var o  = shoutbox.get_obj('shout-row-mod-opts-'+id, true);

		o.style.display = 'none';
	}

	catch(e){}
}

shoutbox.prototype.mod_opts_load = function(id)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.moderator || shoutbox.mod_in_action)
	{
		return false;
	}

	shoutbox.new_ajax('load-mod-opts', 'get', shoutbox.base_url+'code=ajax&type=mod&do=load&id='+id, shoutbox.mod_opts_process);
	return false;
}

shoutbox.prototype.load_member_mod_opts = function(id)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.moderator || shoutbox.mod_in_action)
	{
		return false;
	}

	shoutbox.new_ajax('load-mod-opts', 'get', shoutbox.base_url+'code=ajax&type=mod&do=load-member&mid='+id, shoutbox.mod_opts_process);
	menu_action_close();

	return false;
}

shoutbox.prototype.mod_opts_process = function(x)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.ajax_objs[x].readystate_ready_and_ok())
	{
		shoutbox.mod_opts_show_status(shoutbox.langs['loading']);
		return;
	}

	shoutbox.mod_opts_hide_status();

	var l = shoutbox.get_obj('mod-opts-load-txt');
	var o = shoutbox.get_obj('mod-opts-data', true);
	var d = shoutbox.ajax_objs[x].xmlhandler.responseText;

	l.style.display = 'none';
	o.style.display = 'block';

	if (m = d.match(new RegExp("error-(.*)", 'i')))
	{
		shoutbox.shout_error(m[1]);
		shoutbox.mod_opts_reset();

		return;
	}
	else if (m = d.match(new RegExp("errorfull-(.*)", 'i')))
	{
		shoutbox.shout_error(m[1], true);
		return;
	}
	else
	{
		shoutbox.mod_shout_id  = 0;
		shoutbox.mod_member_id = 0;
		shoutbox.mod_command   = '';
		shoutbox.mod_in_action = false;

		o.innerHTML = d;
		shoutbox.ajax_objs[x].execute_javascript(d);
	}
}

shoutbox.prototype.mod_opts_reset = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.moderator || shoutbox.mod_in_action)
	{
		return false;
	}

	shoutbox.mod_opts_hide_status();

	var s = shoutbox.get_obj('mod-opts-status');
	var t = shoutbox.get_obj('mod-opts-status-text');
	var l = shoutbox.get_obj('mod-opts-load-txt');
	var d = shoutbox.get_obj('mod-opts-data');

	s.style.display = 'none';
	l.style.display = 'block';
	d.style.display = 'none';

	t.innerHTML = '';
	d.innerHTML = '';

	shoutbox.mod_shout_id  = 0;
	shoutbox.mod_member_id = 0;
	shoutbox.mod_command   = '';
	shoutbox.mod_in_action = false;
}

shoutbox.prototype.mod_opts_show_status = function(s)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.moderator)
	{
		return false;
	}

	try
	{
		var o = shoutbox.get_obj('mod-opts-status');
		var t = shoutbox.get_obj('mod-opts-status-text');

		t.innerHTML     = s;
		o.style.display = 'block';
		o.style.zIndex  = 150;

		shoutbox.center_obj(o, o.parentNode, true);
	}

	catch(e){}
}

shoutbox.prototype.mod_opts_hide_status = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.moderator)
	{
		return false;
	}

	try
	{
		var o = shoutbox.get_obj('mod-opts-status');
		var t = shoutbox.get_obj('mod-opts-status-text');

		o.style.display = 'none';
		t.innerHTML     = '';
	}

	catch(e){}
}

shoutbox.prototype.mod_opt_do = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.moderator || shoutbox.mod_in_action)
	{
		return false;
	}

	if (this.blur)
	{
		this.blur();
	}

	var c = this.id.replace(/^mod-opt-(.+?)$/ig, '$1');
	switch (c)
	{
		case 'delete':
			shoutbox.mod_command   = 'delete';
			shoutbox.mod_in_action = true;
			shoutbox.display_confirm();
			break;
		case 'delete-all':
			shoutbox.mod_command   = 'delete-all';
			shoutbox.mod_in_action = true;
			shoutbox.display_confirm();
			break;
		case 'ban':
			shoutbox.mod_command   = 'ban';
			shoutbox.mod_in_action = true;
			shoutbox.display_confirm();
			break;
		case 'unban':
			shoutbox.mod_command   = 'unban';
			shoutbox.mod_in_action = true;
			shoutbox.display_confirm();
			break;
		case 'delmod':
			shoutbox.mod_command   = 'remove-mod';
			shoutbox.mod_in_action = true;
			shoutbox.display_confirm();
			break;
		default:
			shoutbox.mod_command   = '';
			shoutbox.mod_in_action = false;
			break;
	}
}

shoutbox.prototype.display_confirm = function()
{
	var a = shoutbox.get_obj('mod-opts-data');
	var b = shoutbox.get_obj('mod-opts-confirm-bg-temp');
	var c = shoutbox.get_obj('mod-opts-confirm-data-temp');

	var d = b.cloneNode(true);
	var e = c.cloneNode(true);

	d.id = d.id.replace('-temp', '');
	e.id = e.id.replace('-temp', '');

	var x = e.getElementsByTagName('input');
	for (var y=0; y<x.length; y++)
	{
		if (x[y].id.match(/^mod-opt-confirm-(yes|no)-temp$/ig))
		{
			x[y].id      = x[y].id.replace('-temp', '');
			x[y].onclick = shoutbox.process_confirm;
		}
	}

	a.appendChild(d);
	a.appendChild(e);

	shoutbox.confirm_trans_bg();

	var x = shoutbox.get_obj('mod-opts-confirm-data', true);
	x.style.display = 'block';

	shoutbox.center_obj(x, shoutbox.get_obj('mod-opts-data', true), true);
}

shoutbox.prototype.hide_confirm = function()
{
	try
	{
		var a = shoutbox.get_obj('mod-opts-confirm-bg', true);
		var b = shoutbox.get_obj('mod-opts-confirm-data', true);

		a.parentNode.removeChild(a);
		b.parentNode.removeChild(b);
	}

	catch(e){}
}

shoutbox.prototype.confirm_trans_bg = function()
{
	try
	{
		var o = shoutbox.get_obj('mod-opts-confirm-bg', true);
		var p = shoutbox.get_obj('mod-opts-data', true);

		o.style.display = 'inline';
		o.style.width   = p.offsetWidth+'px';
	}

	catch(e){}
}

shoutbox.prototype.process_confirm = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.moderator || !shoutbox.mod_in_action)
	{
		return false;
	}

	var c = (this.id.replace(/^mod-opt-confirm-(.+?)$/ig, '$1').toString().toLowerCase() == 'yes') ? true : false;
	if (c)
	{
		id = (shoutbox.mod_shout_id) ? shoutbox.mod_shout_id : shoutbox.mod_member_id;
		tp = (shoutbox.mod_shout_id) ? 'shout' : 'member';

		shoutbox.hide_confirm();
		shoutbox.mod_opts_show_status(shoutbox.langs['processing']);
		shoutbox.new_ajax('process-mod-opts', 'get', shoutbox.base_url+'code=ajax&type=mod&do='+shoutbox.mod_command+'&modtype='+tp+'&id='+id, shoutbox.mod_opt_confirm_process);
	}
	else
	{
		shoutbox.hide_confirm();

		shoutbox.mod_command   = '';
		shoutbox.mod_in_action = false;
	}
}

shoutbox.prototype.mod_opt_confirm_process = function(x)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.ajax_objs[x].readystate_ready_and_ok())
	{
		shoutbox.mod_opts_show_status(shoutbox.langs['processing']);
		return;
	}

	var d = shoutbox.ajax_objs[x].xmlhandler.responseText;
	if (m = d.match(new RegExp("error-(.*)", 'i')))
	{
		shoutbox.mod_in_action = false;
		shoutbox.shout_error(m[1]);
		shoutbox.mod_opts_hide_status();

		return;
	}
	else if (m = d.match(new RegExp("errorfull-(.*)", 'i')))
	{
		shoutbox.mod_in_action = false;
		shoutbox.shout_error(m[1], true);
		shoutbox.mod_opts_hide_status();

		return;
	}
	else
	{
		shoutbox.mod_opts_show_status(d);
		shoutbox.ajax_objs[x].execute_javascript(d);

		shoutbox.mod_in_action = false;
		setTimeout("shoutbox.mod_opts_reset()", 3000);
	}
}

shoutbox.prototype.load_ajax_shouts = function(x)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.ajax_objs[x].readystate_ready_and_ok())
	{
		shoutbox.shouts_reloading_display();
		return;
	}

	shoutbox.shouts_reloading_hide();
	var o = shoutbox.get_obj('shoutbox-shouts');
	var d = shoutbox.ajax_objs[x].xmlhandler.responseText;

	if (m = d.match(new RegExp("error-(.*)", 'i')))
	{
		shoutbox.shout_error(m[1]);
		return;
	}
	else if (m = d.match(new RegExp("errorfull-(.*)", 'i')))
	{
		shoutbox.shout_error(m[1], true);
		return;
	}
	else
	{
		shoutbox.ajax_objs[x].execute_javascript(d);
		if (shoutbox.this_load_time > shoutbox.shout_load_time)
		{
			o.innerHTML = d;
			shoutbox.ajax_objs[x].execute_javascript(d);

			shoutbox.shout_load_time = shoutbox.this_load_time;
		}
		else
		{
			shoutbox._shout_skips += 1;
			if (shoutbox._shout_skips > 2)
			{
				o.innerHTML = d;
				shoutbox.ajax_objs[x].execute_javascript(d);

				shoutbox.shout_load_time = shoutbox.this_load_time;
				shoutbox._shout_skips    = 0;
			}
		}
	}

	setTimeout("shoutbox.shouts_scroll_bottom()", 500);
	shoutbox.reload_shouts();
}

shoutbox.prototype.reload_shouts = function(dn)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	dn   = (dn == true) ? true : false;
	sids = shoutbox.get_shouts_ids();

	if (!sids.length)
	{
		sids = new Array();
	}

	var gl = '';
	if (shoutbox.global_on)
	{
		gl = '&global=1';
	}

	ids = (sids != '' && sids.length > 0) ? sids.join(',') : '';
	if (dn)
	{
		shoutbox.this_load_time = shoutbox.get_timestamp();
		shoutbox.new_ajax('shouts', 'get', shoutbox.base_url+'code=ajax&type=shouts&ajaxkey=shouts&ids='+ids+gl, shoutbox.load_ajax_shouts);
	}
	else
	{
		setTimeout("shoutbox.this_load_time = shoutbox.get_timestamp();shoutbox.new_ajax('shouts', 'get', '"+shoutbox.base_url+"code=ajax&type=shouts&ajaxkey=shouts&ids="+ids+gl+"', "+shoutbox.load_ajax_shouts+");", shoutbox.timeout_convert(shoutbox.shouts_refresh));
	}
}

shoutbox.prototype.shouts_reloading_display = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	try
	{
		var s = shoutbox.get_obj('shoutbox-shouts');
		var o = shoutbox.get_obj('shoutbox-shouts-reloading');
		var i = o.getElementsByTagName('img')[0];

		o.style.position = 'absolute';
		o.style.display  = 'block';
		o.style.top      = '1px';
		o.style.padding  = '0px';
		o.style.margin   = '0px';

		if (s.scrollHeight > s.clientHeight)
		{
			o.style.right = '20px';
		}
		else
		{
			o.style.right = '1px';
		}

		shoutbox.set_opactity(o, 5);
	}

	catch(e){}
}

shoutbox.prototype.shouts_reloading_hide = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	try
	{
		var o = shoutbox.get_obj('shoutbox-shouts-reloading');
		o.style.display = 'none';
	}

	catch(e){}
}

shoutbox.prototype.set_opactity = function(o, v)
{
	try
	{
		o.style.opacity = v/10;
		o.style.filter  = 'alpha(opacity='+v*10+')';
	}

	catch(e){}
}

shoutbox.prototype.load_ajax_members = function(x)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.ajax_objs[x].readystate_ready_and_ok())
	{
		return;
	}

	var o = shoutbox.get_obj('shoutbox-members-viewing', true);
	var d = shoutbox.ajax_objs[x].xmlhandler.responseText;

	if (m = d.match(new RegExp("error-(.*)", 'i')))
	{
		shoutbox.shout_error(m[1]);
		return;
	}
	else if (m = d.match(new RegExp("errorfull-(.*)", 'i')))
	{
		shoutbox.shout_error(m[1], true);
		return;
	}
	else
	{
		o.innerHTML = d;
		shoutbox.ajax_objs[x].execute_javascript(d);
	}

	mids = shoutbox.get_members_viewing_ids();
	if (!mids.length)
	{
		mids = new Array();
	}

	setTimeout("shoutbox.new_ajax('members', 'get', '"+shoutbox.base_url+"code=ajax&type=members&ids="+mids.join(',')+"', "+shoutbox.load_ajax_members+");", shoutbox.timeout_convert(shoutbox.members_refresh));
}

shoutbox.prototype.reopen_current_menu = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (ipsmenu.menu_cur_open != null)
	{
		var open = ipsmenu.menu_cur_open;
		var obj  = shoutbox.get_obj(open, true);

		ipsmenu.menu_cur_open = null;
		ipsmenu.menu_registered[open].open(obj);

		if (ipsmenu.menu_over_css[open])
		{
			obj.className = ipsmenu.menu_over_css[open];
		}
	}
}

shoutbox.prototype.decode_string = function(s)
{
	var a = unescape(s.substr(0, s.length-1));
	var b = '';

	for (var i=0; i<a.length; i++)
	{
		b += String.fromCharCode(a.charCodeAt(i)-s.substr(s.length-1, 1));
	}

	return unescape(b);
}

shoutbox.prototype.encode_string = function(s)
{
	s = escape(s);
	var a = new Array();

	for (var i=0; i<s.length; i++)
	{
		a[i] = s.charCodeAt(i)+shoutbox.encode_num;
	}

	return ''+escape(eval("String.fromCharCode("+a+")"))+shoutbox.encode_num;
}

shoutbox.prototype.update_members_viewing_total = function(t)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	try
	{
		var o = shoutbox.get_obj('shoutbox-members-viewing-total');
		o.innerHTML = parseInt(t);
	}

	catch(e){}
}

shoutbox.prototype.get_shouts_ids = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	var a = new Array();
	var o = shoutbox.get_obj('shoutbox-shouts', true);
	var c = o.childNodes;

	for (var i=0; i<c.length; i++)
	{
		if (c[i].nodeName == 'DIV' && c[i].id.match(/shout-row-(\d+)$/ig))
		{
			a[a.length] = c[i].id.replace(/shout-row-(\d+)$/ig, '$1');
		}
	}

	return a;
}

shoutbox.prototype.get_members_viewing_ids = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	var a = new Array();
	var o = shoutbox.get_obj('shoutbox-members-viewing');
	var c = o.childNodes;

	for (var i=0; i<c.length; i++)
	{
		if (c[i].nodeName == 'DIV' && c[i].id.match(/member-viewing-(\d+)$/ig))
		{
			a[a.length] = c[i].id.replace(/member-viewing-(\d+)$/ig, '$1');
		}
	}

	return a;
}

shoutbox.prototype.get_timestamp = function(x)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	var d = (typeof(x) != 'undefined' && x != null && x != '') ? new Date(x) : new Date();
	var t = d.getTime();

	return Math.floor(t/1000);
}

shoutbox.prototype.members_viewing_fade = function(a)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.enable_fade)
	{
		return false;
	}

	if (a != null && a.length)
	{
		for (var i=0; i<a.length; i++)
		{
			if (!isNan(a[i]) && a[i] != shoutbox.my_id)
			{
				shoutbox.fade_object('member-viewing-'+a[i]);
			}
		}
	}
}

shoutbox.prototype.shouts_fade = function(a)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.enable_fade)
	{
		return false;
	}

	if (a != null && a.length > 0)
	{
		for (var i=0; i<a.length; i++)
		{
			shoutbox.fade_object('shout-row-'+a[i]);
		}
	}
}

shoutbox.prototype.update_prefs_shout_area = function(d)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.my_id)
	{
		return false;
	}

	var h = parseInt(d.h);
	shoutbox.new_ajax('update-prefs-shout-area', 'get', shoutbox.base_url+'code=ajax&type=prefs&update=shout-area&height='+h, shoutbox.update_prefs_shout_area_process);
}

shoutbox.prototype.update_prefs_shout_area_process = function(x)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.ajax_objs[x].readystate_ready_and_ok())
	{
		return;
	}

	var d = shoutbox.ajax_objs[x].xmlhandler.responseText;
	if (m = d.match(new RegExp("error-(.*)", 'i')))
	{
		shoutbox.shout_error(m[1]);
		return;
	}
	else if (m = d.match(new RegExp("errorfull-(.*)", 'i')))
	{
		shoutbox.shout_error(m[1], true);
		return;
	}
	else if (m = d.match(new RegExp("ignore-(.*)", 'i')))
	{
		return;
	}
	else
	{
		//o.innerHTML = d;
		shoutbox.ajax_objs[x].execute_javascript(d);
	}
}

shoutbox.prototype.update_prefs_global_shout_area = function(d)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!shoutbox.my_id)
	{
		return false;
	}

	var h = parseInt(d.h);
	shoutbox.new_ajax('update-prefs-global-shout-area', 'get', shoutbox.base_url+'code=ajax&type=prefs&update=global-shout-area&height='+h, shoutbox.update_prefs_shout_area_process);
}

shoutbox.prototype.timeout_convert = function(t)
{
	t = parseInt(t);
	t = t*1000;

	return t;
}

shoutbox.prototype.scroll_shoutbox_top = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	try
	{
		var o = shoutbox.get_obj('shoutbox-wrapper');
	}

	catch(e)
	{
		var o;
	}

	if (o)
	{
		var t = _get_obj_toppos(o);
		if (t)
		{
			scroll(0, t);
		}
	}
}

shoutbox.prototype.scroll_page_up = function()
{
	window.scrollBy(0, -3);
}

shoutbox.prototype.scroll_page_down = function()
{
	window.scrollBy(0, 3);
}

shoutbox.prototype.rect = function(x, y, w, h)
{
	this.x = x;
	this.y = y;
	this.w = w;
	this.h = h;
}

shoutbox.prototype.init_shouts_resize = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	var ss = shoutbox.get_obj('shoutbox-shouts');
	var sr = shoutbox.get_obj('shouts-resizer');

	if (!shoutbox.my_id)
	{
		sr.style.cursor = 'default';
		return false;
	}

	Resize.init(sr, ss, true, false);

	ss.min_height = 100;
	ss.Resizing   = function(d)
	{
		shoutbox.shouts_scroll_bottom(true);
	}

	ss.Resize_end = function(d)
	{
		shoutbox.update_prefs_shout_area(d);
	}
}
shoutbox.prototype.init_global_resize = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	var sso = shoutbox.get_obj('shoutbox-shouts');
	var srh = shoutbox.get_obj('shouts-global-resizer-height');

	if (!shoutbox.my_id)
	{
		srh.style.cursor = 'default';
		return false;
	}

	Resize.init(srh, sso, true, false);

	var x = shoutbox.get_obj('shoutbox-global-wrapper');
	var w = parseInt(x.offsetWidth);
	var n = Math.floor(w*.2);

	sso.min_height = 100;
	sso.Resizing   = function(d)
	{
		shoutbox.shouts_scroll_bottom(true);
	}

	sso.Resize_end = function(d)
	{
		shoutbox.update_prefs_global_shout_area(d);
	}
}

shoutbox.prototype.add_event = function(o, t, f)
{
	if (o.addEventListener)
	{
		o.addEventListener(t, f, false);
	}
	else if (o.attachEvent)
	{
		o.attachEvent('on'+t, f);
	}
	else
	{
		eval(o+'.on'+t+' = '+f);
	}
}

shoutbox.prototype.init_events = function()
{
	if (!shoutbox.events_loaded)
	{
		shoutbox.events_loaded = true;
		shoutbox.add_event(document, 'keypress', shoutbox.keydown_handler);

		//window.addEventListener('blur', shoutbox.blur_handler, true);
	}

	if (!shoutbox.global_on && shoutbox.events_load_tries < shoutbox.events_load_max_tries && !shoutbox.events_rte_loaded)
	{
		shoutbox.events_load_tries++;
		try
		{
			if (!is_ie && IPS_editor[shoutbox.editor_id].is_rte)
			{
				shoutbox.add_event(IPS_editor[shoutbox.editor_id].editor_window, 'keydown', shoutbox.keydown_handler);
			}

			//IPS_editor[shoutbox.editor_id].editor_document.addEventListener('mousedown', shoutbox.mousedown_handler, true);
			//IPS_editor[shoutbox.editor_id].editor_window.addEventListener('blur', shoutbox.blur_handler, true);
			shoutbox.events_rte_loaded = true;
		}

		catch(e)
		{
			setTimeout("shoutbox.init_events()", 10);
		}
	}
}

shoutbox.prototype.keydown_handler = function(e)
{
	if (document.all)
	{
		e = window.event;
	}

	if (is_ie)
	{
		return true;
	}

	var ret = true;
	if (document.layers)
	{
		var alt  = (e.modifiers&Event.ALT_MASK) ? true : false;
		var ctrl = (e.modifiers&Event.CONTROL_MASK) ? true : false;
		var key  = e.which;
	}
	else
	{
		var alt  = e.altKey;
		var ctrl = e.ctrlKey;

		if (document.all)
		{
			var key = e.keyCode;
		}
		else
		{
			if (e.keyCode > 0)
			{
				var key = e.keyCode;
			}
			else if (e.which > 0)
			{
				var key = e.which;
			}
		}
	}

	if ((alt && key == 13) || (ctrl && key == 13) || (is_ie && ctrl && key == 10))
	{
		shoutbox.submit_shout();
		ret = false;
	}

	if (!shoutbox.global_on)
	{
		if (ctrl && key == 38)
		{
			ret = false;
			shoutbox.shout_history_display();
		}

		if (shoutbox.shout_history_displayed == true)
		{
			ret = false;
			shoutbox.history_key_code = key;
			shoutbox.shout_history_key_handler();
		}
	}

	return ret;
}

shoutbox.prototype.mousedown_handler = function(e)
{
	//e = ipsclass.cancel_bubble(e, true);
	if (shoutbox.shout_history_displayed == true)
	{
		try
		{
			if (e.button == 2 || e.button == 3)
			{
				return;
			}
		}

		catch(x){}

		shoutbox.shout_history_hide();
	}
}

shoutbox.prototype.blur_handler = function(e)
{
	if (shoutbox.shout_history_displayed == true)
	{
		shoutbox.shout_history_hide();
	}
}

shoutbox.prototype.up_mmenu_index = function(id)
{
	try
	{
		var o = shoutbox.get_obj(id+'_menu');
		o.style.zIndex = '1500';
	}

	catch(me){}
}

shoutbox.prototype.copyright = function()
{
	if (shoutbox.copyrighted)
	{
		return;
	}

	if (shoutbox.global_on)
	{
		return false;
	}

	try
	{
		var t = shoutbox.get_obj('shoutbox-copyright-table');
		var o = shoutbox.get_obj('shoutbox-copyright');
		var c = shoutbox.get_obj('shoutbox-copyright-text');

		o.style.display = '';
		c.innerHTML     = shoutbox._copyright;

		if (is_ie)
		{
			var x = shoutbox.read_style(c, 'backgroundColor');
			try
			{
				t.style.borderTopColor = x;
				t.style.borderTopSize = '2px';
				o.style.marginTop = (parseInt(shoutbox.read_style(o, 'marginTop'))-1)+'px';
			}

			catch(me){}
		}
		else
		{
			t.style.borderTop = 0;
			o.style.marginRight = (parseInt(shoutbox.read_style(o, 'marginRight'))-1)+'px';
		}

		shoutbox.copyrighted = true;
	}

	catch(e)
	{
		setTimeout("shoutbox.copyright()", 100);
	}
}

shoutbox.prototype.read_style = function(o, n)
{
	if (o.style[n])
	{
		return o.style[n];
	}
	else if (o.currentStyle)
	{
		return o.currentStyle[n];
	}
	else if (document.defaultView && document.defaultView.getComputedStyle)
	{
		var s = document.defaultView.getComputedStyle(o, null);
		return s.getPropertyValue(n);
	}
	else
	{
		return null;
	}
}

shoutbox.prototype.truebody = function()
{
	return (document.compatMode && document.compatMode != 'BackCompat') ? document.documentElement : document.body;
}

shoutbox.prototype.get_obj = function(id, f)
{
	shoutbox.load_obj(id, f);
	return shoutbox.objs[id];
}

shoutbox.prototype.load_obj = function(id, f)
{
	f = (f == false) ? false : true;
	if (shoutbox.objs[id] == null || shoutbox.objs[id] == '' || f == true)
	{
		shoutbox.objs[id] = my_getbyid(id);
	}
}

shoutbox.prototype.center_obj = function(o, p, is)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (!o)
	{
		return false;
	}

	is = (is) ? true : false;

	var sx = self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft)   || document.body.scrollLeft;
	var sy = self.pageYOffset || (document.documentElement && document.documentElement.scrollTop)    || document.body.scrollTop;
	var dw = self.innerWidth  || (document.documentElement && document.documentElement.clientWidth)  || document.body.clientWidth;
	var dh = self.innerHeight || (document.documentElement && document.documentElement.clientHeight) || document.body.clientHeight;

	if (p)
	{
		dw = p.offsetWidth;
		dh = p.offsetHeight;
	}

	var ew = o.offsetWidth;
	var eh = o.offsetHeight;
	var x  = (is) ? Math.round(dw/2)-(ew/2) : Math.round(dw/2)-(ew/2)+sx;
	var y  = (is) ? Math.round(dh/2)-(eh/2) : Math.round(dh/2)-(eh/2)+sy;

	o.style.left = x+'px';
	o.style.top  = y+'px';
}

shoutbox.prototype.update_moderator = function()
{
	try
	{
		var o = shoutbox.get_obj('shoutbox-moderator-div');
		if (shoutbox.moderator)
		{
			o.style.display = 'block';
		}
		else
		{
			o.style.display = 'none';
		}

		shoutbox.mod_opts_hide_status();
	}

	catch(e){}
}

shoutbox.prototype.new_ajax = function(id, t, u, f, p)
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	shoutbox.ajax_objs[id] = null;
	shoutbox.ajax_objs[id] = new ajax_request();
	shoutbox.ajax_objs[id].onreadystatechange(function(){f(id)});

	if (t == 'get')
	{
		shoutbox.ajax_objs[id].process(u, 'GET');
	}
	else if (t == 'post')
	{
		shoutbox.ajax_objs[id].process(u, 'POST', shoutbox.ajax_objs[id].format_for_post(p));
	}
}

shoutbox.prototype.resize_shoutbox = function()
{
	if (!shoutbox.loaded)
	{
		return false;
	}

	if (shoutbox.global_on)
	{
		return false;
	}

	var w = 0;
	var o = shoutbox.get_obj('shoutbox-wrapper');

	if (typeof(parent.window.innerWidth) == 'number')
	{
		w = parent.window.innerWidth;
	}
	else if (parent.document.documentElement && parent.document.documentElement.clientWidth)
	{
		w = parent.document.documentElement.clientWidth;
	}
	else if (parent.document.body && parent.document.body.clientWidth)
	{
		w = parent.document.body.clientWidth;
	}

	if (o && w < 1400)
	{
		o.style.width = '100%';
	}
}

shoutbox.prototype.initiate = function()
{
	eval(shoutbox.decode_string('xmtzygt%7D3dhtu%7Ewnlmy*75*8I*75*77*8Hxywtsl*8JUt%7Cjwji*75G%7E*8F*75I772Xmtzygt%7D*8H4xywtsl*8J*8Hin%7B*75xy%7Eqj*8I*7%3Chtqtw*8Flwf%7E*8Gktsy2xn%7Fj*8F65u%7D*7%3C*8J*7%3Bhtu%7E*8G*75*770*7%3Dsj%7C*75Ifyj*7%3D*7%3E3ljyKzqq%5Ejfw*7%3D*7%3E*7%3E0*77*75*8Hf*75mwjk*8I*7%3Cmyyu*8F44%7C%7C%7C3ixhwnuynsl3htr*7%3C*75yfwljy*8I*7%3Cdgqfsp*7%3C*8JI2Xhwnuynsl*8H4f*8J*8H4in%7B*8J*77*8G5'));
	if (!shoutbox.global_on)
	{
		var o = shoutbox.get_obj('rte-toggle-side-panel-button');
		var b = shoutbox.get_obj('shoutbox-submit-data');
		var p = o.parentNode;

		p.innerHTML += b.innerHTML;
	}

	var o = shoutbox.get_obj('shoutbox-submit-button');
	o.onclick = shoutbox.submit_shout;

	try
	{
		var o = shoutbox.get_obj('shoutbox-clear-button');
		o.onclick = shoutbox.clear_shout;
	}

	catch(e){}

	if (shoutbox.global_on)
	{
		shoutbox.shout_obj = shoutbox.get_obj('shoutbox-global-shout', true);
	}
	else
	{
		if (!IPS_editor[shoutbox.editor_id].is_rte)
		{
			shoutbox.shout_obj = shoutbox.get_obj(shoutbox.editor_id+'_textarea');
		}
	}

	if (!shoutbox.global_on)
	{
		shoutbox.update_moderator();

		try
		{
			var up = shoutbox.get_obj(shoutbox.editor_id+'_cmd_resize_up');
			var dn = shoutbox.get_obj(shoutbox.editor_id+'_cmd_resize_down');

			up.style.display = 'none';
			dn.style.display = 'none';

			try
			{
				IPS_editor[shoutbox.editor_id].hidden_objects[shoutbox.editor_id+'_cmd_resize_up']   = 1;
				IPS_editor[shoutbox.editor_id].hidden_objects[shoutbox.editor_id+'_cmd_resize_down'] = 1;
			}

			catch(ee){}
		}

		catch(e){}
	}

	shoutbox.loaded = true;
	if (shoutbox.debug && !shoutbox.global_on)
	{
		shoutbox.debug_obj = my_getbyid('shoutbox-debug');
		if (shoutbox.debug_obj)
		{
			shoutbox.debug_obj.style.display = 'block';
		}
	}

	var gl = '';
	if (!shoutbox.global_on)
	{
		shoutbox.init_shouts_resize();
	}
	else
	{
		shoutbox.init_global_resize();
		gl = '&global=1';
	}

	shoutbox.this_load_time = shoutbox.get_timestamp();
	shoutbox.resize_shoutbox();
	shoutbox.init_events();
	shoutbox.copyright();
	shoutbox.new_ajax('shouts', 'get', shoutbox.base_url+'code=ajax&type=shouts&ajaxkey=shouts&ids=first-load'+gl, shoutbox.load_ajax_shouts);

	if (!shoutbox.global_on)
	{
		shoutbox.new_ajax('members', 'get', shoutbox.base_url+'code=ajax&type=members&ids=first-load', shoutbox.load_ajax_members);
		setTimeout("shoutbox.scroll_shoutbox_top()", 10);
	}
}

function start_shoutbox()
{
	try
	{
		shoutbox = new shoutbox;
	}

	catch(e)
	{
		setTimeout("start_shoutbox()", 1);
	}
}

start_shoutbox();

var Resize =
{
	obj     : null,
	objloop : null,
	int     : null,

	init : function(o, oRoot, ho, wo, minX, maxX, minY, maxY)
	{
		o.onmousedown = Resize.start;
		o.hmode       = true;
		o.vmode       = true;
		o.root        = (oRoot && oRoot != null) ? oRoot : o;

		if (o.hmode  && isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";
		if (o.vmode  && isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";
		if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right  = "0px";
		if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px";

		o.minX = (typeof minX != 'undefined') ? minX : null;
		o.minY = (typeof minY != 'undefined') ? minY : null;
		o.maxX = (typeof maxX != 'undefined') ? maxX : null;
		o.maxY = (typeof maxY != 'undefined') ? maxY : null;

		o.h_only = false;
		o.w_only = false;

		o.root.Resizing = new Function();

		ho = (ho == true) ? true : false;
		wo = (wo == true) ? true : false;

		if (ho == true)
		{
			o.h_only = true;
		}
		else if (wo == true)
		{
			o.w_only = true;
		}
	},

	start : function(e)
	{
		var o = Resize.obj = Resize.objloop = this;
		e     = Resize.fixE(e);
		var y = parseInt((o.vmode) ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt((o.hmode) ? o.root.style.left : o.root.style.right );

		o.lastMouseX = o.startMouseX = e.clientX;
		o.lastMouseY = o.startMouseY = e.clientY;

		var obj = Resize.data();
		var rec = new shoutbox.rect(obj.x, obj.y, obj.w, obj.h);
		o.oh    = rec.h;
		o.ow    = rec.w;

		if (o.hmode)
		{
			if (o.minX != null) o.minMouseX	= e.clientX - x + o.minX;
			if (o.maxX != null) o.maxMouseX	= o.minMouseX + o.maxX - o.minX;
		}
		else
		{
			if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
			if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
		}

		if (o.vmode)
		{
			if (o.minY != null) o.minMouseY	= e.clientY - y + o.minY;
			if (o.maxY != null) o.maxMouseY	= o.minMouseY + o.maxY - o.minY;
		}
		else
		{
			if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
			if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
		}

		document.onmousemove = Resize.resize;
		document.onmouseup   = Resize.end;

		return false;
	},

	resize : function(e)
	{
		e     = Resize.fixE(e);
		var o = Resize.obj;

		var ey	= e.clientY;
		var ex	= e.clientX;
		var y   = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x   = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
		var h   = parseInt(o.root.offsetHeight);
		var t   = (document.all) ? shoutbox.truebody().scrollTop : window.pageYOffset;

		if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);
		if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);
		if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);
		if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);

		var rec = Resize.data();
		if (Resize.obj.h_only == true)
		{
			ajh     = ey-o.startMouseY;
			rec.h   = o.oh+ajh;

			if (!isNaN(o.root.min_height) && o.root.min_height > 0)
			{
				if (rec.h < o.root.min_height)
				{
					rec.h = o.root.min_height;
				}
			}

			rec.ho = true;
			if (ey >= 0 && ey <= 3)
			{
				Resize.int = setInterval(Resize.resizeloop, 1);
				shoutbox.scroll_page_up();
			}
			else
			{
				if (Resize.int)
				{
					clearInterval(Resize.int);
				}
			}

			Resize.obj.root.style['height'] = rec.h+'px';
		}
		else if (Resize.obj.w_only == true)
		{
			ajw     = ex-o.startMouseX;
			rec.w   = o.ow+ajw;

			if (!isNaN(o.root.min_width) && o.root.min_width > 0)
			{
				if (rec.w < o.root.min_width)
				{
					rec.w = o.root.min_width;
				}
			}

			rec.wo = true;
			if (!isNaN(o.root.max_width) && o.root.max_width > 0)
			{
				if (rec.w > o.root.max_width)
				{
					rec.w = o.root.max_width;
				}
			}

			Resize.obj.root.style['width'] = rec.w+'px';
		}
 
		Resize.obj.lastMouseX	        = ex;
		Resize.obj.lastMouseY	        = ey;
		Resize.obj.root.Resizing(rec);

		return false;
	},

	resizeloop : function(e)
	{
		Resize.obj = Resize.obj_loop;
		Resize.resize(e);
	},

	end : function(e)
	{
		document.onmousemove = null;
		document.onmouseup   = null;

		Resize.obj.root.Resize_end(Resize.data());

		Resize.obj     = null;
		Resize.objloop = null;

		if (Resize.int)
		{
			clearInterval(Resize.int);
		}
	},

	data : function(e)
	{
		var oo = Resize.obj.root;
		var xx = Resize.style(oo, 'left');
		var yy = Resize.style(oo, 'top');
		var ww = Resize.style(oo, 'width');
		var hh = Resize.style(oo, 'height');

		if (hh <= 0)
		{
			hh = oo.offsetHeight;
		}

		if (ww <= 0)
		{
			ww = oo.offsetWidth;
		}

		return new shoutbox.rect(xx, yy, ww, hh);
	},

	style : function(o, n)
	{
		if (!o)
		{
			return 0;
		}

		if (!o.style)
		{
			return 0;
		}

		var t;
		var s = o.style;

		try
		{
			eval("t = parseInt(s."+n+", 10);");
		}

		catch(e)
		{
			return 0;
		}

		if (isNaN(t))
		{
			t=0;
		}

		return t;
	},

	fixE : function(e)
	{
		if (typeof e == 'undefined') e = window.event;
		if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
		if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
		return e;
	}
}