var chatSend = GetXmlHttpObject();
var chatRequest = GetXmlHttpObject();
var chatLastMessage = 0;
var chatPage = 0;
var chatTimer;
var chatNoUpdate = 0;

function chatGetText()
{
	if (chatRequest.readyState == 4 || chatRequest.readyState == 0) 
	{
		chatRequest.open("GET", 'ajaxchat.php?last='+chatLastMessage+'&page='+chatPage , true);
		chatRequest.onreadystatechange = chatOnResponse; 
		chatRequest.send(null);
	}			
}

function chatOnResponse()
{
	
	if(chatRequest.readyState==4 && chatRequest.status==200) 
	{
		var xml = chatRequest.responseXML.documentElement;
		writeChat(xml);
	}
	chatTimer = setTimeout('chatGetText();',5000);
}

function sendChatText()
{
	var textbox = document.getElementById('chatWrite');
	if ( (textbox.value!='') && (chatSend.readyState == 4 || chatSend.readyState == 0) )
	{
		chatSend.open("GET", 'ajaxchat.php?writechat='+encodeURIComponent(textbox.value) , true);
		chatSend.onreadystatechange = chatSendOnResponse; 
		chatSend.send(null);
		textbox.value='';
	}
	return false;
}

function chatSendOnResponse()
{
	clearInterval(chatTimer);
	if(chatSend.readyState==4 && chatSend.status==200) 
	{
		var xml = chatSend.responseXML.documentElement;
		writeChat(xml);
	}
	chatTimer = setTimeout('chatGetText();',5000);
}

function writeChat(xml)
{
	var output = document.getElementById('chatBox');
	var messages = xml.getElementsByTagName("message");
	var error = data_from_xml( xml.getElementsByTagName("error") );
	var update = data_from_xml( xml.getElementsByTagName("update") );
	
	if (update=="TRUE") 
	{
		document.getElementById('chatError').innerHTML= error;
		output.innerHTML="";
		
		for (i = 0; i < messages.length; i++) 
		{
			var userid   = data_from_xml( messages[i].getElementsByTagName("userid") );
			var content  = data_from_xml( messages[i].getElementsByTagName("content") );
			var time     = data_from_xml( messages[i].getElementsByTagName("time") );
			
			output.innerHTML += '<div style="padding:1px;">';
			output.innerHTML += '<b>'+userid+'<b><br />';
			output.innerHTML += content + '<br />';
			output.innerHTML += '<small>'+time+'</small><br />';
			output.innerHTML += '</div>';
			
			if ((messages[i].getAttribute('id'))>chatLastMessage)
			{
				chatLastMessage=messages[i].getAttribute('id');
			}
		}
	}
	else
	{
		chatNoUpdate++;
		if (chatNoUpdate>12)
		{
			chatLastMessage = 0;
			chatNoUpdate=0;
		}
	}
}

function setPage(i)
{
	clearInterval(chatTimer);
	chatLastMessage = 0;
	chatPage = i;
	chatGetText();
}

function GetXmlHttpObject()
{
	var xmlhttp=false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	// JScript gives us Conditional compilation, we can cope with old IE versions.
	// and security blocked creation of the objects.
	try
	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} 
	catch (e)
	{
		try
		{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch (E)
		{
			xmlhttp = false;
		}
	}
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') 
	{
		try
		{
			xmlhttp = new XMLHttpRequest();
		} 
		catch (e)
		{
			xmlhttp=false;
		}
	}
	if (!xmlhttp && window.createRequest) 
	{
		try
		{
			xmlhttp = window.createRequest();
		} 
		catch (e)
		{
			xmlhttp=false;
		}
	}
	return xmlhttp;
}

function data_from_xml(input)
{
	try
	{
		return input[0].firstChild.nodeValue;
	}
	catch (er)
	{
		return "";
	}
}

