var open=false; var messageReq=false; var uc=0; function ajaxchat_init() { pingIM(); setInterval(pingIM,1000); if(document.getElementById("msg") && open) { document.getElementById("msg").focus(); } if(document.getElementById("myName") && myName.length) { document.getElementById("myName").value=myName; } reload_list(); } if(window.addEventListener) { window.addEventListener("load",ajaxchat_init,false); } else { window.attachEvent("onload",ajaxchat_init); } function im_kp(el, e) { if(!e) { e=window.event; } if(e.keyCode==13) { updateName(el); } } function reload_list() { var count=document.getElementById("online_count"); var list=document.getElementById("online_list"); var listReq=getXML(); listReq.onreadystatechange=function() { if(listReq.readyState==4 && listReq.status==200) { var data=listReq.responseText.split("::"); list.innerHTML=data[1]; count.innerHTML=data[0]; } } listReq.open("GET","ajaxchat_xml.php?action=online_list&t="+new Date().getTime()); listReq.send(null); } function openOnline() { //Toggle ajaxchat window. open=!open; var openReq=getXML(); openReq.open("GET","ajaxchat_xml.php?action=open&val="+(open?'1':'0')+"&t="+new Date().getTime()); openReq.send(null); var el=document.getElementById("ac_window"); var messages=document.getElementById("messages"); if(el.style.display=="none" || el.style.display=="") { el.style.display="block"; if(document.getElementById("msg")) { document.getElementById("msg").focus(); } } else { el.style.display="none"; } if(open) { messages.scrollTop=messages.scrollHeight; } } function updateName(el) { var updateReq=getXML(); updateReq.onreadystatechange=function() { if(updateReq.readyState==4 && updateReq.status==200) { if(updateReq.responseText.match("OK")) { var tmp=updateReq.responseText; tmp=tmp.split(":"); document.getElementById("myName").value=tmp[1]; myName=tmp[1]; document.getElementById("msg").focus(); reload_list(); } else { if(myName.length) { document.getElementById("myName").value=myName; } alert(updateReq.responseText); } } } updateReq.open("GET","ajaxchat_xml.php?action=updateName&name="+el.value); updateReq.send(null); } function blurName(el) { if(myName.length) { el.value=myName; } } function ajaxchat_closed() { open=false; closeReq=getXML(); closeReq.open("GET","ajaxchat_xml.php?action=open&val=0",function() { return false; }); closeReq.send(null); } function ajaxchat_open() { open=true; openReq=getXML(); openReq.open("GET","ajaxchat_xml.php?action=open&val=1",function() { return false; }); openReq.send(null); } function loadEl(el, url, cb) { if(!el || !url) { return false; } var req=getXML(); req.onreadystatechange=function() { if(req.readyState==4 && req.status==200) { el.innerHTML=req.responseText; cb(); } }; req.open("GET",url); req.send(null); } function getXML() { try { httpreq=new XMLHttpRequest(); } catch(err) { try { httpreq=new ActiveXObject("Microsoft.XMLHTTP"); } catch(err) { try { httpreq=new ActiveXObject("Msxml2.XMLHTTP"); } catch(err) { } } } if(!httpreq) { alert("XMLHttpRequest not supported"); return false; } return httpreq; } function loadMessages(info) { var maxid=0; var el=document.getElementById("messages"); var i,x; el.innerHTML+=info; el.scrollTop=el.scrollHeight; //Just in case, check to make sure no duplicates in messages div for(i=0;i1) { for(x=1;xmaxid) { maxid=tId; } } lastID=maxid; } function pingIM() { uc++; if(uc==10) { reload_list(); uc=0; } if(messageReq) { return false; } messageReq=getXML(); messageReq.onreadystatechange=function() { if(messageReq.readyState==4) { //Seperate block so we always clear messageReq when the request is finished, regardless of status if(messageReq.status==200) { if(messageReq.responseText.match("NEW:")) { var loadIt=messageReq.responseText.split("NEW:"); loadIt=loadIt[1]; loadMessages(loadIt); } } messageReq=null; } } messageReq.open("GET","ajaxchat_ping.php?lastid="+lastID+"&t="+new Date().getTime()); messageReq.send(null); } function msg_kp(el,e) { if(!e) { e=window.event; } if(e.keyCode==13 && el.value.length) { sendMsg(el.value); el.value=""; } } function sendMsg(txt) { var sendReq=getXML(); sendReq.onreadystatechange=function() { if(sendReq.readyState==4 && sendReq.status==200) { if(sendReq.responseText.match("ERROR")) { alert("There was an error sending your message."+sendReq.responseText); return false; } } } var params="msg="+encodeURI(txt); params=params.replace("+","%2B"); //Replace any remaining plus signs, spaces should have been converted to %20, remaining plus signs are user inputted. sendReq.open("POST","/ajaxchat_xml.php?action=send",true); sendReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=ISO-8859-1"); sendReq.setRequestHeader("Content-length", params.length); sendReq.setRequestHeader("Connection", "close"); sendReq.send(params); }