diff -r 000000000000 -r d7b5099bf65e java/nekurak.net-web/web/js/chat.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/nekurak.net-web/web/js/chat.js Sun Aug 15 22:20:10 2010 +0200 @@ -0,0 +1,130 @@ +/** TODO: jQuery */ +/** TODO: neglobální funkce */ + +var intervalObnovy = 2000; +var poradoveCislo = 0; + +function setRychlostObnovy(interval) { + clearTimeout(t); + intervalObnovy = interval; + spustCasovac(); +} + +function getXmlHttpRequestObject() { + if (window.XMLHttpRequest) { + return new XMLHttpRequest(); + } else if(window.ActiveXObject) { + return new ActiveXObject("Microsoft.XMLHTTP"); + } else { + alert("Nepodporovaný prohlížeč."); + return null; + } +} + +/** Náš AJAXový objekt. */ +var ajax = getXmlHttpRequestObject(); + +function getMistnost() { + return document.getElementById("odesilaciFormular").mistnost.value; +} + +function getOd() { + return document.getElementById("odesilaciFormular").od.value; +} + +function getZprava() { + return document.getElementById("odesilaciFormular").text.value; +} + +function vymazTextZpravy() { + document.getElementById("odesilaciFormular").text.value = ""; +} + +function ajaxOdesli() { + if (ajax.readyState == 4 || ajax.readyState == 0) { + ajax.open("POST", "?akce=chat&akceChat=odesli&mistnost=" + encodeURIComponent(getMistnost()) + "&od=" + encodeURIComponent(getOd()) + "&zprava=" + encodeURIComponent(getZprava()), true); + ajax.onreadystatechange = function() { + if (ajax.readyState == 4) { + vymazTextZpravy(); + aktualizujVypisZprav(); + } + }; + ajax.send(null); + } +} + +function aktualizujVypisZprav() { + if (ajax.readyState == 4 || ajax.readyState == 0) { + ajax.open("POST", "?akce=chat&akceChat=vypis&mistnost=" + encodeURIComponent(getMistnost()), true); + ajax.onreadystatechange = function() { + if (ajax.readyState == 4) { + zpracujZpravy(ajax.responseXML); + document.getElementById("vypisZprav").scrollTop = 100000; + } + }; + ajax.send(null); + } +} + +function ziskejVnitrekXML(data, element) { + try { + return data.getElementsByTagName(element)[0].firstChild.nodeValue; + } catch (e) { + return ""; + } +} + +function zpracujZpravy(xmlOdpoved) { + var vypisZprav = document.getElementById("vypisZprav"); + var zpravy = xmlOdpoved.getElementsByTagName("zprava"); + vypisZprav.innerHTML = ""; + var elementUl = document.createElement("ul"); + vypisZprav.appendChild(elementUl); + + for (i = 0; i < zpravy.length; i++) { + var od = ziskejVnitrekXML(zpravy[i], "od"); + var text = ziskejVnitrekXML(zpravy[i], "text"); + var kdy = ziskejVnitrekXML(zpravy[i], "kdy"); + var overeny = ziskejVnitrekXML(zpravy[i], "overeny"); + poradoveCislo = ziskejVnitrekXML(zpravy[i], "poradoveCislo"); + + var elementLi = document.createElement("li"); + elementLi.title = kdy; + + var elementOd = document.createElement("strong"); + elementOd.textContent = od; + elementLi.appendChild(elementOd); + elementLi.appendChild(document.createTextNode(": ")); + + var elementText = document.createElement("span"); + elementText.textContent = text; + + /** + * Ověřený je takový uživatel, + * který se přihlásil normálně přes Jabber a vstoupil do místnosti pod svojí přezdívkou. + * Uživatelé z webu jsou anonymové a připojují se k XMPP pod společným účtem. + * Svoji přezdívku si vyplňují sami a přenášíme ji zvlášť. + * Proto odlišíme tyto dvě skupiny uživatelů jinou barvou jejich příspěvku. + */ + if (overeny == "true") { + } + // zprávu můžeme zvýraznit + } else { + elementText.style.color = "#444444"; + } + elementLi.appendChild(elementText); + + elementUl.appendChild(elementLi); + } +} + +var t; + +function spustCasovac() { + aktualizujVypisZprav(); + + t = setTimeout(function () { + aktualizujVypisZprav(); + spustCasovac(); + }, intervalObnovy); +} \ No newline at end of file