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