var sendReq = getXmlHttpRequestObject();
var receiveOnline = getXmlHttpRequestObject();
var receiveReq = getXmlHttpRequestObject();
var lastMessage = 0;
var mTimer1,mTimer2;
var chat_div;
var online_div;

function startChat() {
	document.getElementById('txt_message').focus();
	chat_div = document.getElementById('main_chat');
	online_div = document.getElementById('online');	
	getChatText();
	getOnline();	
}		

function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		document.alert('Statut: Votre navigateur ne supporte pas l\'AJAX.');
	}
}

function getChatText() {
	if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
	  var date = new Date();
	  time = date.getTime();
		receiveReq.open("GET", 'includes/chat/get_chat.php?v=' + time + '&chatid=' + chat_id + '&lastid=' + lastMessage + '&userid=' + user_id , true);
		receiveReq.onreadystatechange = handleReceiveChat; 
		receiveReq.send(null);
	}			
}

function getOnline() {
	if (receiveOnline.readyState == 4 || receiveOnline.readyState == 0) {
	  var date = new Date();
	  time = date.getTime();	
		receiveOnline.open("GET", 'includes/chat/get_online.php?v=' + time + '&userid=' + user_id, true);
		receiveOnline.onreadystatechange = handleReceiveOnline;	
		receiveOnline.send(null);		
	}			
}

function sendChatText() {
	if (sendReq.readyState == 4 || sendReq.readyState == 0) {
	  var date = new Date();
	  time = date.getTime();	
		message = document.getElementById('txt_message').value;		
		sendReq.open("POST", 'includes/chat/add_mess.php?v=' + time, true);
		sendReq.onreadystatechange = handleSendChat; 		
		sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		message = remplace(message,"+","::plus::");
		message = remplace(message,"&","::et::");		
		sendReq.send('chatid=' + chat_id + '&userid=' + user_id + '&message=' + message);
		document.getElementById('txt_message').value = '';
	}							
}

function handleSendChat() {
	clearInterval(mTimer1);
	clearInterval(mTimer2);	
	getChatText();
	getOnline();	
}

function handleReceiveChat() {
	if (receiveReq.readyState == 4) {
		var xmldoc = receiveReq.responseXML;
		var message_nodes = xmldoc.getElementsByTagName("message");
		var n_messages = message_nodes.length;
		for (i = 0; i < n_messages; i++) {
			var user_node = message_nodes[i].getElementsByTagName("user");
			var text_node = message_nodes[i].getElementsByTagName("text");
			var time_node = message_nodes[i].getElementsByTagName("time");
			var uId = user_node[0].getAttribute('user_id');
			var uGenre = user_node[0].getAttribute('genre');
			if(uGenre == 1)
				var classe = "f";
			else
				var classe = "h";
			if(uId != 0) {
				chat_div.innerHTML += '<a href="../../index.php?contenu=voirprofil&userid=' + uId + '" class="' + classe + '" target="_blank"><b>' + user_node[0].firstChild.nodeValue + '</b></a>' + '&nbsp;';
				chat_div.innerHTML += '<i>' + time_node[0].firstChild.nodeValue + '</i><br />';
				chat_div.innerHTML += text_node[0].firstChild.nodeValue + '<br />';
				chat_div.scrollTop = chat_div.scrollHeight;
				lastMessage = message_nodes[i].getAttribute('id');
			}
			else {
				chat_div.innerHTML += '<b>' + text_node[0].firstChild.nodeValue + '</b>&nbsp;';			
				chat_div.innerHTML += '<i>(' + time_node[0].firstChild.nodeValue + ')</i><br />';							
				chat_div.scrollTop = chat_div.scrollHeight;
				lastMessage = message_nodes[i].getAttribute('id');				
			}
		}
		mTimer1 = setTimeout('getChatText();',2000);
		mTimer2 = setTimeout('getOnline();',2000);		
	}
}

function handleReceiveOnline() {
	if (receiveOnline.readyState == 4 || receiveOnline.readyState == 0) {	
		var html = receiveOnline.responseText;	
		if(html == "kick")
			document.location.href = "actions.php?action=kick";
		else
			online_div.innerHTML = html;
	}
}

function blockSubmit() {
	sendChatText();
	return false;
}

function remplace(expr,a,b) {
	var i=0
	while (i!=-1) {
		i=expr.indexOf(a,i);
		if (i>=0) {
			expr=expr.substring(0,i)+b+expr.substring(i+a.length);
			i+=b.length;
		}
	}
	return expr
}

function addText(instext)
{
    var mess = document.getElementById('txt_message');
	//IE support
	if (document.selection)
	{
		mess.focus();
		sel = document.selection.createRange();
		sel.text = instext;
		mess.focus();
	}
	//MOZILLA/NETSCAPE support
	else if (mess.selectionStart || mess.selectionStart == "0")
	{
		var startPos = mess.selectionStart;
		var endPos = mess.selectionEnd;
		var chaine = mess.value;

		mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);

		mess.selectionStart = startPos + instext.length;
		mess.selectionEnd = endPos + instext.length;
		mess.focus();
	}
	else
	{
		mess.value += instext;
		mess.focus();
	}
}