  function getAjaxRequest()
  {
    var ajaxRequest;

    try {
      ajaxRequest = new XMLHttpRequest();
    } catch (e) {
      try {
        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
          ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
          return false;
        }
      }
    }

    return ajaxRequest;
  }

  var chatTimer;

  function chat(url, id, clearMessage) {

    var ajaxRequest;
    var parameters;

    ajaxRequest = getAjaxRequest();

    if( ! ajaxRequest)
      return false;

    if(chatTimer)
      clearTimeout(chatTimer);

    chatTimer = setTimeout('chat("' + url + '","' + id + '", 0)', 5000);

    if( ! document.getElementById("chatMessages"))
      return false;

    if( ! document.getElementById("chatMessage"))
      return false;

    ajaxRequest.onreadystatechange = function() {
      if(ajaxRequest.readyState == 4) {
        document.getElementById("chatMessages").innerHTML = ajaxRequest.responseText;
        document.getElementById("chatMessages").scrollTop = document.getElementById("chatMessages").scrollHeight;
      }
      else {
        if(clearMessage)
          document.getElementById("chatMessage").value = "";
      }
    }

    parameters = "chatID=" + id;
    if(clearMessage)
      parameters += "&message=" + encodeURI(document.getElementById("chatMessage").value);
    else
      parameters += "&message=";

    ajaxRequest.open("POST", url, true);

    ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajaxRequest.setRequestHeader("Content-length", parameters.length);
    ajaxRequest.setRequestHeader("Connection", "close");
    ajaxRequest.send(parameters);
  }
