var sendReq = getXmlHttpRequestObject();
var receiveReq = getXmlHttpRequestObject();
var mTimer;
var lastId;

function startChat() {
  var chat_div = document.getElementById('div_chat');
  chat_div.innerHTML = '';
  
  for(var i = 0; i < 10; i++) {
    chat_div.innerHTML += '<p id="message_' + i + '"></p>';
  }

  getChatText();
}
    
function getXmlHttpRequestObject() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  } 
  else if(window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP");
  } 
  else {
    document.getElementById('p_status').innerHTML = 'Status: Cound not create XmlHttpRequest Object.  Consider upgrading your browser.';
  }
}
      
function getChatText(n) {
  var param = null,
  url = 'getchat.php';
  
  if(n != undefined) { 
    url = url + '?lastId=' + n;
  }
  
  if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
    receiveReq.open("GET", url, true);
    receiveReq.onreadystatechange = handleReceiveChat;

    receiveReq.send(null);
  }     
}

function sendChatText() {
  if(document.getElementById('txt_message').value == '') {
    return;
  }
    
  if (sendReq.readyState == 4 || sendReq.readyState == 0) {
    sendReq.open("POST", 'getchat.php', true);
    sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    sendReq.onreadystatechange = handleSendChat; 
    var param = 'texte=' + document.getElementById('txt_message').value;
    sendReq.send(param);
    document.getElementById('txt_message').value = '';
  }             
}

function handleSendChat() {
  clearInterval(mTimer);
  getChatText(lastId);
}

function rotate_messages(n) {
  var i,
  j = 0,
  new_message,
  old_message;

  for(i = n; i < 10; i++) { 
    new_message = document.getElementById('message_' + i);
    old_message = document.getElementById('message_' + j);

    if(old_message != null && new_message != null) {
      old_message.innerHTML = new_message.innerHTML ;
    }
    j++;
  }
}

function handleReceiveChat() {
  if (receiveReq.readyState == 4) {
    var xmldoc = receiveReq.responseXML;
    var message_nodes = xmldoc.getElementsByTagName("message"); 
    var n_messages = message_nodes.length;
    
    if(n_messages != 0) { 
      rotate_messages(n_messages);   

      for (i = 0; i < n_messages; i++) {
        var user_node = message_nodes[i].getElementsByTagName("user");
        var clean_node = message_nodes[i].getElementsByTagName("clean_name");
        var id_membre_node = message_nodes[i].getElementsByTagName("id_membre");
        var text_node = message_nodes[i].getElementsByTagName("text");
        var time_node = message_nodes[i].getElementsByTagName("time");
        var tex = text_node[0].firstChild.nodeValue;
        var p = document.getElementById("message_" + (10 - n_messages + i));
        p.innerHTML = '<span class="mchatdate">' + time_node[0].firstChild.nodeValue + '</span><span class="mchatnom"><a href=/profil-de-' + clean_node[0].firstChild.nodeValue + '-' + id_membre_node[0].firstChild.nodeValue + '.html>' + user_node[0].firstChild.nodeValue + '</a>&gt;</span>' + tex + '</p>';
      }

      lastId = message_nodes[n_messages - 1].attributes.getNamedItem("id").value;
    }

    mTimer = setTimeout('getChatText(' + lastId + ');', 2000);
  }
}

function blockSubmit() {
  sendChatText();
  return false;
}

onload = startChat;
