var xslt = '';
var timerVal = 1500;
var oldText = '';

function chatjs() {
  timerID = undefined;
  if (timerID == undefined){timerID = window.setTimeout("chatjs()", timerVal);}
  
  if (xslt == '') {  xslt = xmlParse(loadME('/includes/AJAX/chatXSLT.xsl')); }
  
  loadXMLDoc('/XML/GetAJAXEventNotifications.asp?x=' + (Math.random()*10000));
  
}

var timerID = window.setTimeout("chatjs()", 1500);


//THIS IS THE SEND FOR THE CHAT
var xmlhttpChat;
function justSendXMLDoc(url)
{
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
  xmlhttpChat=new XMLHttpRequest()
  //xmlhttpChat.onreadystatechange=xmlhttpChange
  xmlhttpChat.open("GET",url,true)
  xmlhttpChat.send(null)
  }
// code for IE
else if (window.ActiveXObject)
  {
  xmlhttpChat=new ActiveXObject("Microsoft.XMLHTTP")
    if (xmlhttpChat)
    {
    //xmlhttpChat.onreadystatechange=xmlhttpChange
    xmlhttpChat.open("GET",url,true)
    xmlhttpChat.send()
    }
  }
}


//THIS IS THE SEND/RECEIVE PING FOR THE CHAT
var xmlhttp;

function loadXMLDoc(url)
{
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest()
  xmlhttp.onreadystatechange=xmlhttpChange
  xmlhttp.open("GET",url,true)
  xmlhttp.send(null)
  }
// code for IE
else if (window.ActiveXObject)
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
    if (xmlhttp)
    {
    xmlhttp.onreadystatechange=xmlhttpChange
    xmlhttp.open("GET",url,true)
    xmlhttp.send()
    }
  }
}

function xmlhttpChange()
{
// if xmlhttp shows "loaded"
if (xmlhttp.readyState==4)
  {
  // if "OK"
  if (xmlhttp.status==200)
    {
      var tempText = xmlhttp.responseText;
      var domXML = xmlhttp.responseXML;
      
      
      //lastChat
      if (tempText != oldText) {
        timerVal = 1500;
        oldText = tempText;
      }else{
        if (timerVal < 10000){
            timerVal = timerVal + 1000;
        }
        return;
      }
      
      var collection = domXML.getElementsByTagName('fromUser');
      if (collection != undefined){
      
       if (collection[0] != null) {
       
        var foundValidChat=false;
        for (var kd=0; kd < collection.length;kd++){
            //alert(collection[kd].attributes['m'].value);
            if (collection[kd].attributes[0].value == 0) {
                lastChat = collection[kd].firstChild.nodeValue;
                foundValidChat=true;
            }
        }
        
        if (!foundValidChat) {return;}
        }        
      }
      
      var xml = xmlParse(tempText);
      var html = xsltProcess(xml, xslt);
      if (html!=""){
        
        ChatArea.clear();
        ChatArea.writeRaw(linkText(html));
        //el('chattext').innerHTML=html;
      }
    }
  else
    {
    //alert("Problem retrieving XML data")
    }
  }
}
 
 


function sendchat(curText) {

    if (curText.value != '') {
        //alert(curText.value);
        justSendXMLDoc ('/XML/ChatXML.asp?ccode=1&cuser=' + curText.name + '&ctext=' + escape('/u ' + curText.name + ', ' + curText.value));
        curText.value = '';
    }
}


var lastChat='';


// An implementation of the chat area.  (based on the Log from the google-ajaxslt-0.4 specs)

var chatting__ = true;

function ChatArea() {};

ChatArea.lines = [];

ChatArea.write = function(s) {
  if (chatting__) {
    this.lines.push(xmlEscapeText(s));
    this.show();
  }
};

// Writes the given XML with every tag on a new line.
ChatArea.writeXML = function(xml) {
  if (chatting__) {
    var s0 = xml.replace(/</g, '\n<');
    var s1 = xmlEscapeText(s0);
    var s2 = s1.replace(/\s*\n(\s|\n)*/g, '<br/>');
    this.lines.push(s2);
    this.show();
  }
}

// Writes without any escaping
ChatArea.writeRaw = function(s) {
  if (chatting__) {
    this.lines.push(s);
    this.show();
  }
}

ChatArea.clear = function() {
  if (chatting__) {
    var l = this.div();
    l.innerHTML = '';
    this.lines = [];
  }
}

ChatArea.show = function() {
  var l = this.div();
  l.innerHTML += this.lines.join('<br/>'); 
  this.lines = [];
  l.scrollTop = l.scrollHeight;
}

ChatArea.hide = function() {
   var l = document.getElementById('chatarea');
   l.style.visibility='hidden';
}

ChatArea.div = function() {
  var l = document.getElementById('chatarea');
  if (!l) {
    l = document.createElement('div');
    l.id = 'chatarea';
    l.style.position = 'absolute';
    l.style.right = '5px';
    l.style.bottom = '5px';
    l.style.width = '250px';
    l.style.height = '216px';
    l.style.backgroundColor = '#ffffff';
    l.style.border = '1px solid gray';
    l.style.fontSize = '12px';
    l.style.padding = '5px';
    l.style.zIndex = 1;
    document.body.appendChild(l);
  
    l.innerHTML = '<form id=chatform onsubmit=\"Javascript: sendchat(this.' + lastChat + ');return false\"><table border=0 cellspacing=0 cellpadding=0 width=100% height=100%><tr><td align=right><a href=\"javascript: closeChat(\'' + lastChat + '\');\"><img border=0 src=\"/images/close.gif\" /></a></td></tr><tr valign=top height=100%><td><div id=\"innerchatarea\" style=\"overflow:auto; fontSize:12px; height:170px\" /></td></tr><tr valign=bottom><td><input id=\"chattextinput\" name=\"' + lastChat + '\" size=\"35\"><INPUT type=\"image\" src=\"/image/spacer.gif\ width=\"0\" height=\"0\" ></td></tr></table></form>';
  }
  l = document.getElementById('innerchatarea');
  
  return l;
}


function closeChat(chatText){
    ChatArea.hide();
}

function unHTML(text){
    return (text ? text : '').replace('&gt;','>').replace('&lt;','<');
}


function linkText(text) {
    return (text ? text : '').replace(/(.*)(http:\/\/[^ \<]*)(.*)/g, '$1<a href="$2">$2</a>$3');
}