
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.tvknob.com/site/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();

}




//Function to play sound on message receipt... this gonna be tough :P

function PlaySound()

{

	current_frame=document.sound.CurrentFrame();

	if (current_frame == 2){

		document.sound.GotoFrame(3);

		return false;

	}

	else {

		return true;

	}

}




// 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 = 4000;

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;

			
			PlaySound();

	   		
	    }

    	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=Sun, 21 Sep 2008 23:43:15 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=Sun, 21 Sep 2008 23:43:15 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;

}