1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/java/nekurak.net-web/web/js/chat.js Sun Aug 15 22:20:10 2010 +0200
1.3 @@ -0,0 +1,130 @@
1.4 +/** TODO: jQuery */
1.5 +/** TODO: neglobální funkce */
1.6 +
1.7 +var intervalObnovy = 2000;
1.8 +var poradoveCislo = 0;
1.9 +
1.10 +function setRychlostObnovy(interval) {
1.11 + clearTimeout(t);
1.12 + intervalObnovy = interval;
1.13 + spustCasovac();
1.14 +}
1.15 +
1.16 +function getXmlHttpRequestObject() {
1.17 + if (window.XMLHttpRequest) {
1.18 + return new XMLHttpRequest();
1.19 + } else if(window.ActiveXObject) {
1.20 + return new ActiveXObject("Microsoft.XMLHTTP");
1.21 + } else {
1.22 + alert("Nepodporovaný prohlížeč.");
1.23 + return null;
1.24 + }
1.25 +}
1.26 +
1.27 +/** Náš AJAXový objekt. */
1.28 +var ajax = getXmlHttpRequestObject();
1.29 +
1.30 +function getMistnost() {
1.31 + return document.getElementById("odesilaciFormular").mistnost.value;
1.32 +}
1.33 +
1.34 +function getOd() {
1.35 + return document.getElementById("odesilaciFormular").od.value;
1.36 +}
1.37 +
1.38 +function getZprava() {
1.39 + return document.getElementById("odesilaciFormular").text.value;
1.40 +}
1.41 +
1.42 +function vymazTextZpravy() {
1.43 + document.getElementById("odesilaciFormular").text.value = "";
1.44 +}
1.45 +
1.46 +function ajaxOdesli() {
1.47 + if (ajax.readyState == 4 || ajax.readyState == 0) {
1.48 + ajax.open("POST", "?akce=chat&akceChat=odesli&mistnost=" + encodeURIComponent(getMistnost()) + "&od=" + encodeURIComponent(getOd()) + "&zprava=" + encodeURIComponent(getZprava()), true);
1.49 + ajax.onreadystatechange = function() {
1.50 + if (ajax.readyState == 4) {
1.51 + vymazTextZpravy();
1.52 + aktualizujVypisZprav();
1.53 + }
1.54 + };
1.55 + ajax.send(null);
1.56 + }
1.57 +}
1.58 +
1.59 +function aktualizujVypisZprav() {
1.60 + if (ajax.readyState == 4 || ajax.readyState == 0) {
1.61 + ajax.open("POST", "?akce=chat&akceChat=vypis&mistnost=" + encodeURIComponent(getMistnost()), true);
1.62 + ajax.onreadystatechange = function() {
1.63 + if (ajax.readyState == 4) {
1.64 + zpracujZpravy(ajax.responseXML);
1.65 + document.getElementById("vypisZprav").scrollTop = 100000;
1.66 + }
1.67 + };
1.68 + ajax.send(null);
1.69 + }
1.70 +}
1.71 +
1.72 +function ziskejVnitrekXML(data, element) {
1.73 + try {
1.74 + return data.getElementsByTagName(element)[0].firstChild.nodeValue;
1.75 + } catch (e) {
1.76 + return "";
1.77 + }
1.78 +}
1.79 +
1.80 +function zpracujZpravy(xmlOdpoved) {
1.81 + var vypisZprav = document.getElementById("vypisZprav");
1.82 + var zpravy = xmlOdpoved.getElementsByTagName("zprava");
1.83 + vypisZprav.innerHTML = "";
1.84 + var elementUl = document.createElement("ul");
1.85 + vypisZprav.appendChild(elementUl);
1.86 +
1.87 + for (i = 0; i < zpravy.length; i++) {
1.88 + var od = ziskejVnitrekXML(zpravy[i], "od");
1.89 + var text = ziskejVnitrekXML(zpravy[i], "text");
1.90 + var kdy = ziskejVnitrekXML(zpravy[i], "kdy");
1.91 + var overeny = ziskejVnitrekXML(zpravy[i], "overeny");
1.92 + poradoveCislo = ziskejVnitrekXML(zpravy[i], "poradoveCislo");
1.93 +
1.94 + var elementLi = document.createElement("li");
1.95 + elementLi.title = kdy;
1.96 +
1.97 + var elementOd = document.createElement("strong");
1.98 + elementOd.textContent = od;
1.99 + elementLi.appendChild(elementOd);
1.100 + elementLi.appendChild(document.createTextNode(": "));
1.101 +
1.102 + var elementText = document.createElement("span");
1.103 + elementText.textContent = text;
1.104 +
1.105 + /**
1.106 + * Ověřený je takový uživatel,
1.107 + * který se přihlásil normálně přes Jabber a vstoupil do místnosti pod svojí přezdívkou.
1.108 + * Uživatelé z webu jsou anonymové a připojují se k XMPP pod společným účtem.
1.109 + * Svoji přezdívku si vyplňují sami a přenášíme ji zvlášť.
1.110 + * Proto odlišíme tyto dvě skupiny uživatelů jinou barvou jejich příspěvku.
1.111 + */
1.112 + if (overeny == "true") {
1.113 + }
1.114 + // zprávu můžeme zvýraznit
1.115 + } else {
1.116 + elementText.style.color = "#444444";
1.117 + }
1.118 + elementLi.appendChild(elementText);
1.119 +
1.120 + elementUl.appendChild(elementLi);
1.121 + }
1.122 +}
1.123 +
1.124 +var t;
1.125 +
1.126 +function spustCasovac() {
1.127 + aktualizujVypisZprav();
1.128 +
1.129 + t = setTimeout(function () {
1.130 + aktualizujVypisZprav();
1.131 + spustCasovac();
1.132 + }, intervalObnovy);
1.133 +}
1.134 \ No newline at end of file