var WriteHTTP; var ReadXML; var WriteReadXML; var MAX = 0; var NAME = ""; function LOGGER(TEXT) { /* var now = new Date(); var timeNow = now.getHours()+":"+now.getMinutes()+":"+now.getSeconds(); var DEBUG = document.getElementById("DEBUG"); var div = document.createElement('div'); div.innerHTML = timeNow+" : "+TEXT; DEBUG.insertBefore(div, DEBUG.firstChild); */ } function GetXmlHttpObject() { var obj=null; try { // Firefox, Opera 8.0+, Safari obj=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { obj=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { obj=new ActiveXObject("Microsoft.XMLHTTP"); } } return obj; } function MessageKeyHandler(e) { var MESSAGE = document.getElementById("MESSAGE"); var NAME = document.getElementById("NAME"); if (typeof e == 'undefined') e = window.event; var theCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode; if (theCode == 13) { if(MESSAGE.value == "") { alert("你忘了輸入你要說的話"); } else if(NAME.value == "") { alert("你忘了輸入名字"); } else { var MSG = MESSAGE.value; MESSAGE.value = ""; Write(NAME.value, MSG); } return false; } else return true; } function Write(NAME, MESSAGE) { //LOGGER("Write() Called, MAX="+MAX+ ", NAME=" + NAME); try { var url="system/write.php"; url=url+"?NAME="+encodeURIComponent(NAME); url=url+"&MESSAGE="+encodeURIComponent(MESSAGE); url=url+"&SID="+Math.random(); WriteHTTP=GetXmlHttpObject(); WriteHTTP.onreadystatechange=WriteCallBack WriteHTTP.open("GET",url,true); WriteHTTP.send(null); } catch(e) { //LOGGER(e); } } function WriteCallBack() { if (WriteHTTP.readyState==4 || WriteHTTP.readyState=="complete") { WriteRead(); } } function Read() { //LOGGER("Read() Called, MAX="+MAX+ ", NAME=" + NAME); try { var url="system/read.php"; url=url+"?MAX="+MAX; url=url+"&NAME="+encodeURIComponent(NAME); url=url+"&SID="+Math.random(); ReadXML=GetXmlHttpObject(); ReadXML.onreadystatechange=ReadCallBack ReadXML.open("GET",url,true); ReadXML.send(null); } catch(e) { //LOGGER(e); setTimeout('Read()', 3700); } } function ReadCallBack() { if (ReadXML.readyState==4 || ReadXML.readyState=="complete") { try { var xml = ReadXML.responseXML; //LOGGER("*** OLD MAX =>"+MAX + " *** NEW MAX=>" + xml.getElementsByTagName("MAX")[0].childNodes[0].nodeValue); //LOGGER("*** 1 Parse MAX CHANGED? " + (MAX < parseInt(xml.getElementsByTagName("MAX")[0].childNodes[0].nodeValue))); //LOGGER("*** 0 Parse MAX CHANGED? " + (MAX < xml.getElementsByTagName("MAX")[0].childNodes[0].nodeValue)); var newMax = parseInt(xml.getElementsByTagName("MAX")[0].childNodes[0].nodeValue); if(MAX < newMax) { MAX = newMax; var TIMES = xml.getElementsByTagName("TIME"); var NAMES = xml.getElementsByTagName("NAME"); var MESSAGES = xml.getElementsByTagName("MESSAGE"); var NUM_MESSAGES = NAMES.length; for( var i = NUM_MESSAGES-1; i >=0 ; i--) { Insert(NAMES[i].childNodes[0].nodeValue, TIMES[i].childNodes[0].nodeValue, MESSAGES[i].childNodes[0].nodeValue); } } var ONLINES = xml.getElementsByTagName("ONLINE"); var ONLINE = document.getElementById("ONLINE"); var NUM_ONLINES = ONLINES.length; ONLINE.innerHTML = ""; var ONLINE_COUNT = document.createElement('div'); ONLINE_COUNT.className = "ONLINE_COUNT"; ONLINE_COUNT.innerHTML = NUM_ONLINES + " 個人在線"; ONLINE.appendChild(ONLINE_COUNT); for( var i = NUM_ONLINES-1; i >=0 ; i--) { UpdateOnline(ONLINE, ONLINES[i].childNodes[0].nodeValue); } setTimeout('Read()', 3700); } catch(e) { //LOGGER(e); setTimeout('Read()', 3700); } } } function WriteRead() { //LOGGER("WriteRead() Called, MAX="+MAX); try { var url="system/read.php"; url=url+"?MAX="+MAX; url=url+"&NAME="+encodeURIComponent(NAME); url=url+"&SID="+Math.random(); WriteReadXML=GetXmlHttpObject(); WriteReadXML.onreadystatechange=WriteReadCallBack WriteReadXML.open("GET",url,true); WriteReadXML.send(null); } catch(e) { //LOGGER(e); setTimeout('WriteRead()', 11); } } function WriteReadCallBack() { if (WriteReadXML.readyState==4 || WriteReadXML.readyState=="complete") { try { var xml = WriteReadXML.responseXML; var newMax = parseInt(xml.getElementsByTagName("MAX")[0].childNodes[0].nodeValue); if(MAX < newMax) { MAX = newMax; var TIMES = xml.getElementsByTagName("TIME"); var NAMES = xml.getElementsByTagName("NAME"); var MESSAGES = xml.getElementsByTagName("MESSAGE"); var NUM_MESSAGES = NAMES.length; for( var i = NUM_MESSAGES-1; i >=0 ; i--) { Insert(NAMES[i].childNodes[0].nodeValue, TIMES[i].childNodes[0].nodeValue, MESSAGES[i].childNodes[0].nodeValue); } } var ONLINES = xml.getElementsByTagName("ONLINE"); var ONLINE = document.getElementById("ONLINE"); var NUM_ONLINES = ONLINES.length; ONLINE.innerHTML = ""; var ONLINE_COUNT = document.createElement('div'); ONLINE_COUNT.className = "ONLINE_COUNT"; ONLINE_COUNT.innerHTML = NUM_ONLINES + " 個人在線"; ONLINE.appendChild(ONLINE_COUNT); for( var i = NUM_ONLINES-1; i >=0 ; i--) { UpdateOnline(ONLINE, ONLINES[i].childNodes[0].nodeValue); } } catch(e) { //LOGGER(e); } } } function UpdateOnline(ONLINE, NAME) { var div = document.createElement('div'); div.innerHTML = NAME; div.className = "ONLINE_NAME"; ONLINE.appendChild(div); } function Insert(NAME, TIME, MESSAGE) { var HISTORY = document.getElementById("HISTORY"); var table = document.createElement('table'); var tbody = document.createElement('tbody'); var tr = document.createElement('tr'); var td1 = document.createElement('td'); var td2 = document.createElement('td'); var td3 = document.createElement('td'); var div1 = document.createElement('div'); var div2 = document.createElement('div'); var div3 = document.createElement('div'); var textName = document.createTextNode(NAME); var textMessage = document.createTextNode(MESSAGE); var textTime = document.createTextNode(TIME); div1.appendChild(textTime); div2.appendChild(textName); div3.appendChild(textMessage); td1.appendChild(div1); td2.appendChild(div2); td3.appendChild(div3); td1.className = "HISTORY_TIME"; td2.className = "HISTORY_NAME"; td3.className = "HISTORY_MESSAGE"; table.className = "HISTORY_ITEM"; tr.appendChild(td1); tr.appendChild(td2); tr.appendChild(td3); tbody.appendChild(tr); table.appendChild(tbody); HISTORY.insertBefore(table, HISTORY.firstChild); } function SetName() { NAME = document.getElementById("NAME").value; }