var Fat = {
	make_hex : function (r,g,b) 
	{
		r = r.toString(16); if (r.length == 1) r = '0' + r;
		g = g.toString(16); if (g.length == 1) g = '0' + g;
		b = b.toString(16); if (b.length == 1) b = '0' + b;
		return "#" + r + g + b;
	},
	fade_all : function ()
	{
		var a = document.getElementsByTagName("*");
		for (var i = 0; i < a.length; i++) 
		{
			var o = a[i];
			var r = /fade-?(\w{3,6})?/.exec(o.className);
			if (r)
			{
				if (!r[1]) r[1] = "";
				if (o.id) Fat.fade_element(o.id,null,null,"#"+r[1]);
			}
		}
	},
	fade_element : function (id, fps, duration, from, to) 
	{
		if (!fps) fps = 30;
		if (!duration) duration = 3000;
		if (!from || from=="#") from = "#FFFF33";
		if (!to) to = this.get_bgcolor(id);
		
		var frames = Math.round(fps * (duration / 1000));
		var interval = duration / frames;
		var delay = interval;
		var frame = 0;
		
		if (from.length < 7) from += from.substr(1,3);
		if (to.length < 7) to += to.substr(1,3);
		
		var rf = parseInt(from.substr(1,2),16);
		var gf = parseInt(from.substr(3,2),16);
		var bf = parseInt(from.substr(5,2),16);
		var rt = parseInt(to.substr(1,2),16);
		var gt = parseInt(to.substr(3,2),16);
		var bt = parseInt(to.substr(5,2),16);
		
		var r,g,b,h;
		while (frame < frames)
		{
			r = Math.floor(rf * ((frames-frame)/frames) + rt * (frame/frames));
			g = Math.floor(gf * ((frames-frame)/frames) + gt * (frame/frames));
			b = Math.floor(bf * ((frames-frame)/frames) + bt * (frame/frames));
			h = this.make_hex(r,g,b);
		
			setTimeout("Fat.set_bgcolor('"+id+"','"+h+"')", delay);

			frame++;
			delay = interval * frame; 
		}
		setTimeout("Fat.set_bgcolor('"+id+"','"+to+"')", delay);
	},
	set_bgcolor : function (id, c)
	{
		var o = document.getElementById(id);
		o.style.backgroundColor = c;
	},
	get_bgcolor : function (id)
	{
		var o = document.getElementById(id);
		while(o)
		{
			var c;
			if (window.getComputedStyle) c = window.getComputedStyle(o,null).getPropertyValue("background-color");
			if (o.currentStyle) c = o.currentStyle.backgroundColor;
			if ((c != "" && c != "transparent") || o.tagName == "BODY") { break; }
			o = o.parentNode;
		}
		if (c == undefined || c == "" || c == "transparent") c = "#FFFFFF";
		var rgb = c.match(/rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/);
		if (rgb) c = this.make_hex(parseInt(rgb[1]),parseInt(rgb[2]),parseInt(rgb[3]));
		return c;
	}
}


function jal_apply_filters(s) {
	// we don't need filters via javascript anymore since we are parsing both smilies and bbcode directly in the module
	// it is fatser for user instead of using his machine, and of course php is more powerfull to parse bbcode
	// se let's just return s
	return s;
}


//we must leave smilies retrival just for the smileys window, otherwize we don't need them
var smilies_for_window=	[[':)', 'icon_smile.gif', 'Smile'],
/*						[':-)', 'icon_smile.gif', 'Smile'], */ /* Commenting it since it is the same image but different code, we don't need to print all codes */
						[':D', 'icon_biggrin.gif', 'Smile'],
/*						[':-D', 'icon_biggrin.gif', 'Smile'], 
						[':grin:', 'icon_biggrin.gif', 'grin'], 
						[':smile:', 'icon_smile.gif', 'Smile'], */
						[':(', 'icon_sad.gif', 'sad'],
/*						[':-(', 'icon_sad.gif', 'sad'],
						[':sad:', 'icon_sad.gif', 'sad'], */
						[':o', 'icon_surprised.gif', 'shock'], 
/*						[':-o', 'icon_surprised.gif', 'shock'],
						[':eek:', 'icon_surprised.gif', 'eek'], */
						['8O', 'icon_eek.gif', 'eek'],
/*						['8-O', 'icon_eek.gif', 'eek'],
						[':shock:', 'icon_eek.gif', 'shock'], */
						[':?', 'icon_confused.gif', 'question'],
/*						[':-?', 'icon_confused.gif', 'question'],
						[':???:', 'icon_confused.gif', 'confused'], */
						['8)', 'icon_cool.gif', 'cool'],
/*						['8-)', 'icon_cool.gif', 'cool'],
						[':cool:', 'icon_cool.gif', 'cool'], */
/*						[':lol:', 'icon_lol.gif', 'lol'], */
						[':x', 'icon_mad.gif', 'shock'],
/*						[':-x', 'icon_mad.gif', 'shock'],
						[':mad:', 'icon_mad.gif', 'mad'], */
						[':P', 'icon_razz.gif', 'razz'],
/*						[':-P', 'icon_razz.gif', 'razz'],
						[':razz:', 'icon_razz.gif', 'razz'], */
						[':oops:', 'icon_redface.gif', 'oops'],
						[':cry:', 'icon_cry.gif', 'cry'],
						[':evil:', 'icon_evil.gif', 'evil'],
						[':twisted:', 'icon_twisted.gif', 'twisted'],
						[':roll:', 'icon_rolleyes.gif', 'roll'],
/*						[':wink:', 'icon_wink.gif', 'wink'], */
						[';)', 'icon_wink.gif', 'wink'],
/*						[';-)', 'icon_wink.gif', 'wink'], */
						[':!:', 'icon_exclaim.gif', 'explination'],
						[':?:', 'icon_question.gif', 'question'],
						[':idea:', 'icon_idea.gif', 'idea'],
						[':arrow:', 'icon_arrow.gif', 'arrow'],
						[':|', 'icon_neutral.gif', 'surprised'],
/*						[':-|', 'icon_neutral.gif', 'surprised'], */
						[':neutral:', 'icon_neutral.gif', 'neutral'],
						[':mrgreen:', 'icon_mrgreen.gif', 'grin']];
	


var smileyPopupWindow;
function moreChatSmileys()
{
	var i;

	if (smileyPopupWindow)
	smileyPopupWindow.close();

	smileyPopupWindow = window.open("", "add_smileys", "toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,width=480,height=640,resizable=yes");
	smileyPopupWindow.document.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html>');
	smileyPopupWindow.document.write('\n\t<head>\n\t\t<title>Additional smileys</title>\n\t\t <style>\n\t\t.tborder\n\t\t\t{\n\t\t\t\t\tborder-top: solid  1px #454545;\n\t\t\t\t\tborder-left: solid 1px #454545;\n\t\t\t\t\tborder-right: solid  1px black;\n\t\t\t\t\tborder-bottom: solid 1px black;\n\t\t\t\t\tbackground-color: #303030;\n\t\t\t\t\tpadding: 0px;\n\t\t\t}\n\t\tbody\n\t\t\t{\n\t\t\t\t\tbackground-color: #000000;\n\t\t\t\t\tmargin: 0px;\n\t\t\t\t\tpadding: 5px 20px 5px 20px;\n\t\t\t}\n\t\tbody, td\n\t\t\t{\n\t\t\t\t\tcolor: #ffffff;\n\t\t\t\t\tfont-size: small;\n\t\t\t\t\tfont-family: tahoma, helvetica, serif;\n\t\t\t}\n\t\t.titlebg, tr.titlebg td\n\t\t\t{\n\t\t\t\t\tbackground-color: #303030;\n\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\tcolor: #e0e0e0;\n\t\t\t\t\tfont-style: normal;\n\t\t\t}\n\t\t.windowbg\n\t\t\t{\n\t\t\t\t\tfont-family: tahoma, helvetica, serif;\n\t\t\t\t\tcolor: #ffffff;\n\t\t\t\t\tbackground-color: #404040;\n\t\t\t\t\tborder-top: solid  1px #606060;\n\t\t\t\t\tborder-left: solid 1px #606060;\n\t\t\t\t\tborder-right: solid  1px black;\n\t\t\t\t\tborder-bottom: solid 1px black;\n\t\t\t}\n\t\t</style> \n\t</head>');
	smileyPopupWindow.document.write('\n\t<body style="margin: 1ex;">\n\t\t<table width="100%" cellpadding="5" cellspacing="0" border="0" class="tborder">\n\t\t\t<tr class="titlebg"><td align="left">Pick a smiley</td></tr>\n\t\t\t<tr class="windowbg"><td align="left">');

	for (i = 0; i < smilies_for_window.length; i++)
	{
		smilies_for_window[i][2] = smilies_for_window[i][2].replace(/"/g, '&quot;');
		smileyPopupWindow.document.write('<a href="javascript:void(0);" onclick="window.opener.replaceText(&quot; ' + smilies_for_window[i][0] + '&quot;, window.opener.document.forms.chatForm.chatbarText); window.focus(); return false;"><img src="http://www.geniessen.org/cms/components/com_smo_ajax_shoutbox/smilies/' + smilies_for_window[i][1] + '" alt="' + smilies_for_window[i][2] + '" title="' + smilies_for_window[i][2] + '" style="padding: 4px;" border="0" /></a> ');
	}
	smileyPopupWindow.document.write("<br />");


	smileyPopupWindow.document.write('</td></tr>\n\t\t\t<tr><td align="center" class="windowbg"><a href="javascript:window.close();\">Close Window</a></td></tr>\n\t\t</table>\n\t</body>\n</html>');
	smileyPopupWindow.document.close();
}

// Replaces the currently selected text with the passed text.
function replaceText(text, textarea)
{
	// Attempt to create a text range (IE).
	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
	{
		var caretPos = textarea.caretPos;

		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		caretPos.select();
	}
	// Mozilla text range replace.
	else if (typeof(textarea.selectionStart) != "undefined")
	{
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var scrollPos = textarea.scrollTop;

		textarea.value = begin + text + end;

		if (textarea.setSelectionRange)
		{
			textarea.focus();
			textarea.setSelectionRange(begin.length + text.length, begin.length + text.length);
		}
		textarea.scrollTop = scrollPos;
	}
	// Just put it on the end.
	else
	{
		textarea.value += text;
		textarea.focus(textarea.value.length - 1);
	}
}

var helpPopupWindow;
function openShoutboxHelp()
{
	var i;

	if (helpPopupWindow)
	helpPopupWindow.close();

	helpPopupWindow = window.open("", "add_smileys", "toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,width=1024,height=480,resizable=yes");
	helpPopupWindow.document.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html>\n\t<head>\n\t\t<title>Shoutbox Help</title>\n\t\t\t <style>\n\t\t\t.tborder\n\t\t\t\t{\n\t\t\t\t\t\tborder-top: solid  1px #454545;\n\t\t\t\t\t\tborder-left: solid 1px #454545;\n\t\t\t\t\t\tborder-right: solid  1px black;\n\t\t\t\t\t\tborder-bottom: solid 1px black;\n\t\t\t\t\t\tbackground-color: #303030;\n\t\t\t\t\t\tpadding: 0px;\n\t\t\t\t}\n\t\t\tbody\n\t\t\t\t{\n\t\t\t\t\t\tbackground-color: #000000;\n\t\t\t\t\t\tmargin: 0px;\n\t\t\t\t\t\tpadding: 5px 20px 5px 20px;\n\t\t\t\t}\n\t\t\tbody, td\n\t\t\t\t{\n\t\t\t\t\t\tcolor: #ffffff;\n\t\t\t\t\t\tfont-size: small;\n\t\t\t\t\t\tfont-family: tahoma, helvetica, serif;\n\t\t\t\t}\n\t\t\t.titlebg, tr.titlebg td\n\t\t\t\t{\n\t\t\t\t\t\tbackground-color: #303030;\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tcolor: #e0e0e0;\n\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t}\n\t\t\t.windowbg\n\t\t\t\t{\n\t\t\t\t\t\tfont-family: tahoma, helvetica, serif;\n\t\t\t\t\t\tcolor: #ffffff;\n\t\t\t\t\t\tbackground-color: #404040;\n\t\t\t\t\t\tborder-top: solid  1px #606060;\n\t\t\t\t\t\tborder-left: solid 1px #606060;\n\t\t\t\t\t\tborder-right: solid  1px black;\n\t\t\t\t\t\tborder-bottom: solid 1px black;\n\t\t\t\t}\n\t\t\ta:link, a:visited\n\t\t\t\t{\n\t\t\t\t\t\tfont-size: 11px;\n\t\t\t\t\t\tfont-family: Verdana, Arial, Helvetica, sans-serif;\n\t\t\t\t\t\tcolor: #CBD8EF;\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t}\n\t\t\ta:hover\n\t\t\t\t{\n\t\t\t\t\t\tcolor: #5D74A3;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t}\n\t\t</style> \n\t</head>\n\t<body style="margin: 1ex;">\n\t\t<table width="100%" cellpadding="5" cellspacing="0" border="0" class="tborder">\n\t\t\t<tr class="titlebg"><td align="center"><a href="http://www.arabic-lounge.com" target="_blank">SMO Ajax Shoutbox</a></td></tr>\n\n\t\t\t<tr class="windowbg"><td align="left">\n\t\t\tBBcode:\n\t\t\t<table width="100%" cellpadding="0" cellspacing="0" border="1" class="tborder">\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\tBBcode\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\tBBcode Example\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\tBBcode Example Results\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[url] link [/url]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[url]http://www.arabic-lounge.com[/url]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t<a href="http://www.arabic-lounge.com" target="_blank">&laquo;link&raquo;</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[url=link] text [/url]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[url=http://www.arabic-lounge.com]Arabic-Lounge.com[/url]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t<a href="http://www.arabic-lounge.com" target="_blank">Arabic-Lounge.com</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[email] text [/email]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[email] mail@domain.com [/email]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t<a href="mailto: mail@domain.com ">&laquo;email&raquo;</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[email=link] text [/email]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[email=mail@domain.com] my email [/email]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t<a href="mailto: mail@domain.com ">my email</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[img] Link here [/img]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[img]http://siemens-mobiles.org/img/Gandalf.png[/img]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t<a href="http://siemens-mobiles.org/img/Gandalf.png" target="_blank"><img src="http://siemens-mobiles.org/img/Gandalf.png" alt="" height="35" border="0" /></a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[b] text [/b]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[b] Arabic Lounge [/b]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t<b> Arabic Lounge </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[u] text [/u]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[u] Arabic Lounge [/u]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t<u> Arabic Lounge </u>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[i] text [/i]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[i] Arabic Lounge [/i]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t<i> Arabic Lounge </i>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[color=COLOR] text [/color]<br />\n\t\t\t\t\t\tWhere COLOR is red, yellow, pink, green, blue, orange, purple etc..<br />\n\t\t\t\t\t\tor html code, means #XXXXXX\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[color=#00BFFF] Arabic Lounge [/color]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t<span style="color: #00BFFF;"> Arabic Lounge </span>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[sup] text [/sup]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\tArabic Lounge[sup]TM[/sup]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\tArabic Lounge<sup>TM</sup>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class="windowbg">\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\t[sub] text [/sub]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\tArabic Lounge[sub]TM[/sub]\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align="left">\n\t\t\t\t\t\tArabic Lounge<sub>TM</sub>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t<br />\n\t\t\t<br />\n\t\t\tThis shoutbox will also notify you for new messages sound (if it is enabled by the Administrator), you can disable the sound by simply clicking on the green button under the shoutbox, Green means sound is enabled, Red means sound is disabled<br />\n\t\t\t<br />\n\t\t\t<br />\n\t\t\tIf you found a bug in this shoutbox thanks for sending me <a href="http://wael.nasreddine.com/component/contact/Administrator/Wael_Nasreddine/" target="_blank">an email</a> about it\n\t\t\t<br />\n\t\t\t<br />\n\t\t\tSMO Ajax Shoutbox, Made by Wael Nasreddine aka Gandalf<br />\n\t\t\t<a href="http://www.arabic-lounge.com" target="_blank">Arabic-Lounge.com</a> | <a href="http://www.siemens-mobiles.org" target="_blank">Siemens-Mobiles.org</a> | <a href="http://www.linux-globe.com" target="_blank">Linux-Globe.com</a> | <a href="http://www.zone-celebrity.com" target="_blank">Zone-Celebrity.com</a>\n\t\t\t</td></tr>\n\t\t\t<tr><td align="center" class="windowbg"><a href="javascript:window.close();">Close Window</a></td></tr>\n\t\t</table>\n\t</body>\n</html>');
	helpPopupWindow.document.close();
}


// XHTML live Chat
// author: alexander kohlhofer
// version: 1.0
// http://www.plasticshore.com
// http://www.plasticshore.com/projects/chat/
// please let the author know if you put any of this to use
// XHTML live Chat (including this script) is published under a creative commons license
// license: http://creativecommons.org/licenses/by-nc-sa/2.0/


var jal_loadtimes;
var jal_org_timeout = 15000;
var jal_timeout = jal_org_timeout;
var GetChaturl = "modules/mod_smo_ajax_shoutbox.php?jalGetChat=yes";
var SendChaturl = "modules/mod_smo_ajax_shoutbox.php?jalSendChat=yes";
var httpReceiveChat;
var httpSendChat;

///////////////////////////////////////
//
//  Generic onload by Brothercake
//  http://www.brothercake.com/
//
///////////////////////////////////////

//onload function

//setup onload function
if(typeof window.addEventListener != 'undefined')
{
	//.. gecko, safari, konqueror and standard
	window.addEventListener('load', initJavaScript, false);
}
else if(typeof document.addEventListener != 'undefined')
{
	//.. opera 7
	document.addEventListener('load', initJavaScript, false);
}
else if(typeof window.attachEvent != 'undefined')
{
	//.. win/ie
	window.attachEvent('onload', initJavaScript);
}

function initJavaScript() {
	if (!document.getElementById('chatbarText')) { return; }
	document.forms['chatForm'].elements['chatbarText'].setAttribute('autocomplete','off'); //this non standard attribute prevents firefox' autofill function to clash with this script
	// initiates the two objects for sending and receiving data
	checkStatus(''); //sets the initial value and state of the input comment
	checkName(); //checks the initial value of the input name
	checkUrl();
	
	jal_loadtimes = 1;
	
	httpReceiveChat = getHTTPObject();
	httpSendChat = getHTTPObject();
	
	setTimeout('receiveChatText()', jal_timeout); //initiates the first data query
	
	document.getElementById('shoutboxname').onblur = checkName;
	document.getElementById('shoutboxurl').onblur = checkUrl;
	document.getElementById('chatbarText').onfocus = function () { checkStatus('active'); }	
	document.getElementById('chatbarText').onblur = function () { checkStatus(''); }
	document.getElementById('submitchat').onclick = sendComment;
    document.getElementById('chatForm').onsubmit = function () { return false; }
	// When user mouses over shoutbox
    document.getElementById('chatoutput').onmouseover = function () {
    	if (jal_loadtimes > 9) {
    		jal_loadtimes = 1;
			receiveChatText();
    	}
    	jal_timeout = jal_org_timeout;
    }
}

//initiates the first data query
function receiveChatText() {
	jal_lastID = parseInt(document.getElementById('jal_lastID').value) - 1;
	if (httpReceiveChat.readyState == 4 || httpReceiveChat.readyState == 0) {
		  		httpReceiveChat.open("GET",GetChaturl + '&jal_lastID=' + jal_lastID, true);
		httpReceiveChat.onreadystatechange = handlehHttpReceiveChat; 
  		httpReceiveChat.send(null);
		jal_loadtimes++;
	    if (jal_loadtimes > 9) jal_timeout = jal_timeout * 5 / 4;
	}
    	setTimeout('receiveChatText()',jal_timeout);
}

		
//deals with the servers' reply to requesting new content
function handlehHttpReceiveChat() {
  if (httpReceiveChat.readyState == 4) {
    results = httpReceiveChat.responseText.split('---'); //the fields are seperated by ---
    if (results.length > 4) {
	    for(i=0;i < (results.length-1);i=i+5) { //goes through the result one message at a time
	    	insertNewContent(results[i+1],results[i+2],results[i+3],results[i+4], results[i]); //inserts the new content into the page
	    	document.getElementById('jal_lastID').value = parseInt(results[i]) + 1;
				    }
    	jal_timeout = jal_org_timeout;
    	jal_loadtimes = 1;
    }
  }
}

//inserts the new content into the page
function insertNewContent(liName,liText,lastResponse, liUrl, liId) {
    response = document.getElementById("responseTime");
    response.replaceChild(document.createTextNode(lastResponse), response.firstChild);
	insertO = document.getElementById("outputList");
	oLi = document.createElement('li');
	oLi.setAttribute('id','comment-new'+liId);

	oSpan = document.createElement('span');
	oSpan.setAttribute('class','name');
	
	oName = document.createTextNode(liName);
	
	if (liUrl != "http://" && liUrl != '') {
		oURL = document.createElement('a');
		oURL.href = liUrl;
		oURL.appendChild(oName);
	} else {
		oURL = oName;
	}
	
	oSpan.appendChild(oURL);
	oSpan.appendChild(document.createTextNode(' : '));
	oLi.appendChild(oSpan);
	oLi.innerHTML += jal_apply_filters(liText);
	insertO.insertBefore(oLi, insertO.firstChild);
	Fat.fade_element("comment-new"+liId, 30, 1500, "#666666", "#FFFFFF");
}
	

//stores a new comment on the server
function sendComment() {
	currentChatText = document.forms['chatForm'].elements['chatbarText'].value;
	if (httpSendChat.readyState == 4 || httpSendChat.readyState == 0) {
		if (currentChatText == '') return;
		prefix = document.getElementById('shoutbox_prefix').value;			//prefix must be [GUEST] if it's a guest who is shouting
		currentName = document.getElementById('shoutboxname').value;
		currentUrl = document.getElementById('shoutboxurl').value;
		currentName = prefix + currentName;							//joining prefix to currentName
		param = 'n='+ encodeURIComponent(currentName)+'&c='+ encodeURIComponent(currentChatText) +'&u='+ encodeURIComponent(currentUrl);	
		httpSendChat.open("POST", SendChaturl, true);
		httpSendChat.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  		httpSendChat.onreadystatechange = receiveChatText;
  		httpSendChat.send(param);
  		document.forms['chatForm'].elements['chatbarText'].value = '';
	}
}

// http://www.codingforums.com/showthread.php?t=63818
function pressedEnter(field,event) {
	var theCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (theCode == 13) {
		sendComment();
		return false;
	} 
	else return true;
}


//does clever things to the input and submit
function checkStatus(focusState) {
	currentChatText = document.forms['chatForm'].elements['chatbarText'];
	oSubmit = document.forms['chatForm'].elements['submit'];
	if (currentChatText.value != '' || focusState == 'active') {
		oSubmit.disabled = false;
	} else {
		oSubmit.disabled = true;
	}
}

function jal_getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}


//autoasigns a random name to a new user
//If the user has chosen a name, use that
function checkName() {
	
	jalCookie = jal_getCookie("jalUserName");
	currentName = document.getElementById('shoutboxname');
		
	if (currentName.value != jalCookie) {
		document.cookie = "jalUserName="+currentName.value+"; expires=Tue, 08 Jul 2008 19:50:53 UTC;"
	}
		
	if (jalCookie && currentName.value == '') {
		currentName.value = jalCookie;
		return;
	}
	
	if (currentName.value == '') {
		currentName.value = 'guest_'+ Math.floor(Math.random() * 10000);
	}
	
}

function checkUrl() {
	
	jalCookie = jal_getCookie("jalUrl");
	currentName = document.getElementById('shoutboxurl');
	
	if (currentName.value == '')
		return;
	
	if (currentName.value != jalCookie) {
		document.cookie = "jalUrl="+currentName.value+"; expires=Tue, 08 Jul 2008 19:50:53 UTC;"
		return;
	}
	
	if (jalCookie && ( currentName.value == '' || currentName.value == "http://")) {
		currentName.value = jalCookie;
		return;
	}		
}



//initiates the XMLHttpRequest object
//as found here: http://www.webpasties.com/xmlHttpRequest
function getHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}