var GetChaturl = "getChatData.php"; var SendChaturl = "sendChatData.php"; var lastID = -1; //initial value will be replaced by the latest known id window.onload = initJavaScript; function initJavaScript() { document.forms['chatForm'].elements['chatbarText'].setAttribute('autocomplete','off'); //this non standard attribute prevents firefox' autofill function to clash with this script checkStatus(''); //sets the initial value and state of the input comment checkName(); //checks the initial value of the input name receiveChatText(); //initiates the first data query } //initiates the first data query function receiveChatText() { currentBid = document.forms['chatForm'].elements['bid'].value; if (httpReceiveChat.readyState == 4 || httpReceiveChat.readyState == 0) { httpReceiveChat.open("GET",GetChaturl + '?b=' + currentBid + '&lastID=' + lastID + '&rand='+Math.floor(Math.random() * 1000000), true); httpReceiveChat.onreadystatechange = handlehHttpReceiveChat; httpReceiveChat.send(null); } } //deals with the servers' reply to requesting new content function handlehHttpReceiveChat() { if (httpReceiveChat.readyState == 4) { results = httpReceiveChat.responseText.split('---'); //the fields are seperated by --- if (results.length > 2) { for(i=0;i < (results.length-1);i=i+4) { //goes through the result one message at a time insertNewContent(results[i+1],results[i+2],results[i+3]); //inserts the new content into the page } lastID = results[results.length-5]; } setTimeout('receiveChatText();',4000); //executes the next data query in 20 seconds } } //inserts the new content into the page function insertNewContent(liName,liText,liUrl) { var source = liUrl; if (source == 'no url') { insertO = document.getElementById("outputList"); oLi = document.createElement('li'); oSpan = document.createElement('span'); oSpan.setAttribute('className','name'); //for IE's sake oSpan.setAttribute('class','name'); oName = document.createTextNode(liName+': '); oText = document.createTextNode(liText); oSpan.appendChild(oName); oLi.appendChild(oSpan); oLi.appendChild(oText); insertO.insertBefore(oLi, insertO.firstChild); } if (source != 'no url') { insertO = document.getElementById("outputList"); oLi = document.createElement('li'); oSpan = document.createElement('span'); oSpan.setAttribute('className','name'); //for IE's sake oSpan.setAttribute('class','name'); oName = document.createTextNode(liName+': '); var link = document.createElement("a"); link.setAttribute("href",liUrl); link.setAttribute("target","_new"); link.appendChild(document.createTextNode(liName)); oText = document.createTextNode(': '+liText); oSpan.appendChild(link); oLi.appendChild(oSpan); oLi.appendChild(oText); insertO.insertBefore(oLi, insertO.firstChild); } } //stores a new comment on the server function sendComment() { currentChatText = document.forms['chatForm'].elements['chatbarText'].value; if (currentChatText != '' & (httpSendChat.readyState == 4 || httpSendChat.readyState == 0)) { currentName = document.forms['chatForm'].elements['name'].value; currentChatUrl = document.forms['chatForm'].elements['url'].value; currentBid = document.forms['chatForm'].elements['bid'].value; currentip = document.forms['chatForm'].elements['ip'].value; param = 'n='+ currentName+'&c='+ currentChatText+'&ur='+ currentChatUrl+'&b='+ currentBid+'&i='+ currentip; httpSendChat.open("POST", SendChaturl, true); httpSendChat.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); httpSendChat.onreadystatechange = handlehHttpSendChat; httpSendChat.send(param); document.forms['chatForm'].elements['chatbarText'].value = ''; } else { setTimeout('sendComment();',1000); } } //deals with the servers' reply to sending a comment function handlehHttpSendChat() { if (httpSendChat.readyState == 4) { receiveChatText(); //refreshes the chat after a new comment has been added (this makes it more responsive) } } //does clever things to the input and submit function checkStatus(focusState) { currentChatText = document.forms['chatForm'].elements['chatbarText']; oSubmit = document.forms['chatForm'].elements['submit']; if (currentChatText.value != '' || focusState == 'active') { oSubmit.disabled = false; } else { oSubmit.disabled = true; } } //autoasigns a random name to a new user function checkName() { currentName = document.forms['chatForm'].elements['name']; if (currentName.value == '') { //currentName.value = 'guest_'+ Math.floor(Math.random() * 10000); currentName.value = 'USER'; } } //initiates the XMLHttpRequest object function getHTTPObject() { var xmlhttp; /*@cc_on @if (@_jscript_version >= 5) try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @else xmlhttp = false; @end @*/ if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } // initiates the two objects for sending and receiving data var httpReceiveChat = getHTTPObject(); var httpSendChat = getHTTPObject(); var x = 10000; /* clears default values from input boxes */ function clearText(thefield){ if (thefield.defaultValue==thefield.value) thefield.value = "" }