		//
		// Global variables
		//
		var isFirefox;
		var isIE;
		var timeout;
		var pingtimeout;
		var textFocus   = true;
		var starsadded  = false;
		//var md4hash     = 0;
		var timedout    = 0;
		var pingsent	= 0;
		var requestsent = 0;
		var postsent	= 0;
		var chatsent	= 0;
		var pingRate	= 1000 * 1800;	 // 30 minutes
		var refreshRate = 1000 * 2;		 // two seconds
		
		// added to reduce server load
		var t = 0;
		var throttle_back = 60;  // this is in multiples of refreshRate
		var lastpost = 0;        // throttling reduces traffic by 
		var isLoading;

		function sniff() 
		{
			var ff = "Netscape";
			var ie = "Microsoft Internet Explorer";
			isFirefox = ( navigator.appName == ff );
			isIE = (navigator.appName == ie ); 
		}

		function captureReturn( event )
		{
			if( isIE ) 
				event = window.event;
			if( event.keyCode == 13 ) 
			{
				postText();
				if( isIE ) 
					event.returnValue = false;
			 else 
					event.preventDefault();
			}
			var typing=document.getElementById('typing');
			pingServer();
		}

		function scrollChatPane()
		{
			pane = document.getElementById( "chatpane" );
			pane.scrollTop=pane.scrollHeight+10- pane.offsetHeight;	
		}
		function showLoadScreen()
		{
			chat = document.getElementById( "chatbuffer" );
			chat.innerHTML = "<div style=\"text-align:center;\"><h4>Loading...</h4></div>";
			isLoading=1;		
		}

		function resetPing()
		{
			pingtimeout = window.setTimeout( "pingTimeOut()", pingRate );
		}
		
		function pingTimeOut()
		{
			window.location="http://www.brokenmetal.net/pages/logout.php";
			timedout=1;
		}
		
		function setTimers()
		{
			timeout = window.setTimeout( "fetch()", refreshRate );
		}

		function fetch()
		{
			window.clearTimeout( timeout );
			fetchBufferText();
			if( ++t - lastpost > throttle_back ) 
			  refreshRate = 5000;
			 else 
			  refreshRate = 2000;
			
			if( timedout != 1 ) { setTimers(); }
		}

		function fetchBufferText()
		{
			var d=new Date();
			if(isLoading==1)
			 url = '/chat/buffertext.php?isLoading=true&rand=' + d.getTime();
			else
			 url = '/chat/buffertext.php?rand=' + d.getTime();
		 if(isLoading==1)	isLoading=2;
			var req = getAjax();
			req.onreadystatechange = function(){
			
			if( req.readyState == 4 && req.status == 200) 
			{	
					obj = document.getElementById( "chatbuffer" );
					if( req.responseText.indexOf("timeout") != -1 ) {
		 			window.location="http://www.brokenmetal.net/pages/loggedout.php";
					}
					else
					{
						playerCount=req.responseText.substr(0,5);
						document.getElementById( "plrCount" ).innerHTML=parseInt(playerCount);
						msg=req.responseText.substr(6);
					 if(isLoading==2)
					 {
					 	obj.innerHTML=addExtras(msg);
					 	isLoading=3;
					 }
					 else if(msg!=" ")
					 obj.innerHTML+=addExtras(msg);
		 			if(msg!=" ")
			 		 scrollChatPane();
					}	
				}
			}
			
			req.open( 'GET', url , true );
			req.send( null );
		}

  function addExtras(newMsgs)
		{

   newMsgs=newMsgs.replace(/:\)/g,"<img src='/chat/images/smile.gif' border=0 align=\'absmiddle\'>");
   newMsgs=newMsgs.replace(/:\(/g,"<img src='/chat/images/sad.gif' border=0 align=\'absmiddle\'>");
	  newMsgs=newMsgs.replace(/;\)/g,"<img src='/chat/images/wink.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:p/g,"<img src='/chat/images/tongue.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:P/g,"<img src='/chat/images/tongue.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:D/g,"<img src='/chat/images/laugh.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:d/g,"<img src='/chat/images/laugh.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:roll/g,"<img src='/chat/images/rollface.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:cheers/g,"<img src='/chat/images/cheers.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:kiss/g,"<img src='/chat/images/kiss.gif' border=0 align=\'absmiddle\'>");

			newMsgs=newMsgs.replace(/X-\(/g,"<img src='/bmboards/images/smiles/icon_mad.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/x-\(/g,"<img src='/bmboards/images/smiles/icon_mad.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/8\)/g,"<img src='/bmboards/images/smiles/icon_cool.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:\|/g,"<img src='/bmboards/images/smiles/what_smile.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/\^o\)/g,"<img src='/bmboards/images/smiles/50_50.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/B\)/g,"<img src='/bmboards/images/smiles/shades_smile.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/\(H\)/g,"<img src='/bmboards/images/smiles/shades_smile.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/\(h\)/g,"<img src='/bmboards/images/smiles/shades_smile.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:O/g,"<img src='/bmboards/images/smiles/omg_smile.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:e/g,"<img src='/bmboards/images/smiles/cry_smile.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:'\(/g,"<img src='/bmboards/images/smiles/cry_smile.gif' border=0 align=\'absmiddle\'>");

			newMsgs=newMsgs.replace(/\|\-\)/g,"<img src='/bmboards/images/smiles/77_77.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:\-\$/g,"<img src='/bmboards/images/smiles/red_smile.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/:\$/g,"<img src='/bmboards/images/smiles/red_smile.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/\*\-\)/g,"<img src='/bmboards/images/smiles/72_72.gif' border=0 align=\'absmiddle\'>");
			newMsgs=newMsgs.replace(/8\-\)/g,"<img src='/bmboards/images/smiles/75_75.gif' border=0 align=\'absmiddle\'>");


newMsgs=newMsgs.replace(/(http:\/\/\S*)/,'<a href="$1" target="_blank">$1</a>');  
   
return newMsgs;
		}

		function postText()
		{
			chatbox = document.getElementById( "chattext" );
			chat = escape(chatbox.value);
			chat = chat.replace(/\+/,"%2B");
			chatbox.value = '';
			url = '/chat/posttext.php?t=' + chat;
			req = getAjax();
			req.onreadystatechange = function()
			{
				if( req.readyState == 4 && req.status == 200 ) 
					fetch();			
			}
			req.open( 'GET', url, true );
			req.send( null );
			lastpost = t;
		}

		function pingServer()
		{
			window.clearTimeout( pingtimeout );
			if(timedout != 1) { 
			  resetPing(); 
			}
		}
		
		function startChat()
		{
			sniff();
			resetPing();
			showLoadScreen();
			setTimers();
			
			//if( isFirefox ) {
				mytext = document.getElementById( "chattext" );
			//}
			mytext.focus();
		 //if(!isIE) 
			// mytext.onkeypress = captureReturn;
		}
		
		
		function setsmiley(what){
	tmp=document.getElementById("chattext");
    tmp.value = tmp.value+" "+what+" ";
    tmp.focus();
}

function chatClose()
{
	windows[0].stopWin=true;
	windows[0].style.display="none";
	var d=new Date();
 makeHttpRequest("http://www.brokenmetal.net/pageincludes/helperfiles/runningSmallScripts.php?chatoff=1&rand="+d.getTime());
}

function showChat(sendInfo)
{
	windows[0].stopWin=false;
	windows[0].style.display = "";
	scrollChatPane();
	if(sendInfo)
	{
  var d=new Date();
  makeHttpRequest("http://www.brokenmetal.net/pageincludes/helperfiles/runningSmallScripts.php?chatoff=0&rand="+d.getTime());
	}
}