franta-hg@149
|
1 |
/** TODO: jQuery */
|
franta-hg@149
|
2 |
/** TODO: neglobální funkce */
|
franta-hg@149
|
3 |
|
franta-hg@149
|
4 |
var intervalObnovy = 2000;
|
franta-hg@149
|
5 |
var poradoveCislo = 0;
|
franta-hg@149
|
6 |
|
franta-hg@149
|
7 |
function setRychlostObnovy(interval) {
|
franta-hg@149
|
8 |
clearTimeout(t);
|
franta-hg@149
|
9 |
intervalObnovy = interval;
|
franta-hg@149
|
10 |
spustCasovac();
|
franta-hg@149
|
11 |
}
|
franta-hg@149
|
12 |
|
franta-hg@149
|
13 |
function getXmlHttpRequestObject() {
|
franta-hg@149
|
14 |
if (window.XMLHttpRequest) {
|
franta-hg@149
|
15 |
return new XMLHttpRequest();
|
franta-hg@149
|
16 |
} else if(window.ActiveXObject) {
|
franta-hg@149
|
17 |
return new ActiveXObject("Microsoft.XMLHTTP");
|
franta-hg@149
|
18 |
} else {
|
franta-hg@149
|
19 |
alert("Nepodporovaný prohlížeč.");
|
franta-hg@149
|
20 |
return null;
|
franta-hg@149
|
21 |
}
|
franta-hg@149
|
22 |
}
|
franta-hg@149
|
23 |
|
franta-hg@149
|
24 |
/** Náš AJAXový objekt. */
|
franta-hg@149
|
25 |
var ajax = getXmlHttpRequestObject();
|
franta-hg@149
|
26 |
|
franta-hg@149
|
27 |
function getMistnost() {
|
franta-hg@149
|
28 |
return document.getElementById("odesilaciFormular").mistnost.value;
|
franta-hg@149
|
29 |
}
|
franta-hg@149
|
30 |
|
franta-hg@149
|
31 |
function getOd() {
|
franta-hg@149
|
32 |
return document.getElementById("odesilaciFormular").od.value;
|
franta-hg@149
|
33 |
}
|
franta-hg@149
|
34 |
|
franta-hg@149
|
35 |
function getZprava() {
|
franta-hg@149
|
36 |
return document.getElementById("odesilaciFormular").text.value;
|
franta-hg@149
|
37 |
}
|
franta-hg@149
|
38 |
|
franta-hg@149
|
39 |
function vymazTextZpravy() {
|
franta-hg@149
|
40 |
document.getElementById("odesilaciFormular").text.value = "";
|
franta-hg@149
|
41 |
}
|
franta-hg@149
|
42 |
|
franta-hg@149
|
43 |
function ajaxOdesli() {
|
franta-hg@149
|
44 |
if (ajax.readyState == 4 || ajax.readyState == 0) {
|
franta-hg@149
|
45 |
ajax.open("POST", "?akce=chat&akceChat=odesli&mistnost=" + encodeURIComponent(getMistnost()) + "&od=" + encodeURIComponent(getOd()) + "&zprava=" + encodeURIComponent(getZprava()), true);
|
franta-hg@149
|
46 |
ajax.onreadystatechange = function() {
|
franta-hg@149
|
47 |
if (ajax.readyState == 4) {
|
franta-hg@149
|
48 |
vymazTextZpravy();
|
franta-hg@149
|
49 |
aktualizujVypisZprav();
|
franta-hg@149
|
50 |
}
|
franta-hg@149
|
51 |
};
|
franta-hg@149
|
52 |
ajax.send(null);
|
franta-hg@149
|
53 |
}
|
franta-hg@149
|
54 |
}
|
franta-hg@149
|
55 |
|
franta-hg@149
|
56 |
function aktualizujVypisZprav() {
|
franta-hg@149
|
57 |
if (ajax.readyState == 4 || ajax.readyState == 0) {
|
franta-hg@149
|
58 |
ajax.open("POST", "?akce=chat&akceChat=vypis&mistnost=" + encodeURIComponent(getMistnost()), true);
|
franta-hg@149
|
59 |
ajax.onreadystatechange = function() {
|
franta-hg@149
|
60 |
if (ajax.readyState == 4) {
|
franta-hg@149
|
61 |
zpracujZpravy(ajax.responseXML);
|
franta-hg@149
|
62 |
document.getElementById("vypisZprav").scrollTop = 100000;
|
franta-hg@149
|
63 |
}
|
franta-hg@149
|
64 |
};
|
franta-hg@149
|
65 |
ajax.send(null);
|
franta-hg@149
|
66 |
}
|
franta-hg@149
|
67 |
}
|
franta-hg@149
|
68 |
|
franta-hg@149
|
69 |
function ziskejVnitrekXML(data, element) {
|
franta-hg@149
|
70 |
try {
|
franta-hg@149
|
71 |
return data.getElementsByTagName(element)[0].firstChild.nodeValue;
|
franta-hg@149
|
72 |
} catch (e) {
|
franta-hg@149
|
73 |
return "";
|
franta-hg@149
|
74 |
}
|
franta-hg@149
|
75 |
}
|
franta-hg@149
|
76 |
|
franta-hg@149
|
77 |
function zpracujZpravy(xmlOdpoved) {
|
franta-hg@149
|
78 |
var vypisZprav = document.getElementById("vypisZprav");
|
franta-hg@149
|
79 |
var zpravy = xmlOdpoved.getElementsByTagName("zprava");
|
franta-hg@149
|
80 |
vypisZprav.innerHTML = "";
|
franta-hg@149
|
81 |
var elementUl = document.createElement("ul");
|
franta-hg@149
|
82 |
vypisZprav.appendChild(elementUl);
|
franta-hg@149
|
83 |
|
franta-hg@149
|
84 |
for (i = 0; i < zpravy.length; i++) {
|
franta-hg@149
|
85 |
var od = ziskejVnitrekXML(zpravy[i], "od");
|
franta-hg@149
|
86 |
var text = ziskejVnitrekXML(zpravy[i], "text");
|
franta-hg@149
|
87 |
var kdy = ziskejVnitrekXML(zpravy[i], "kdy");
|
franta-hg@149
|
88 |
var overeny = ziskejVnitrekXML(zpravy[i], "overeny");
|
franta-hg@149
|
89 |
poradoveCislo = ziskejVnitrekXML(zpravy[i], "poradoveCislo");
|
franta-hg@149
|
90 |
|
franta-hg@149
|
91 |
var elementLi = document.createElement("li");
|
franta-hg@149
|
92 |
elementLi.title = kdy;
|
franta-hg@149
|
93 |
|
franta-hg@149
|
94 |
var elementOd = document.createElement("strong");
|
franta-hg@149
|
95 |
elementOd.textContent = od;
|
franta-hg@149
|
96 |
elementLi.appendChild(elementOd);
|
franta-hg@149
|
97 |
elementLi.appendChild(document.createTextNode(": "));
|
franta-hg@149
|
98 |
|
franta-hg@149
|
99 |
var elementText = document.createElement("span");
|
franta-hg@149
|
100 |
elementText.textContent = text;
|
franta-hg@149
|
101 |
|
franta-hg@149
|
102 |
/**
|
franta-hg@149
|
103 |
* Ověřený je takový uživatel,
|
franta-hg@149
|
104 |
* který se přihlásil normálně přes Jabber a vstoupil do místnosti pod svojí přezdívkou.
|
franta-hg@149
|
105 |
* Uživatelé z webu jsou anonymové a připojují se k XMPP pod společným účtem.
|
franta-hg@149
|
106 |
* Svoji přezdívku si vyplňují sami a přenášíme ji zvlášť.
|
franta-hg@149
|
107 |
* Proto odlišíme tyto dvě skupiny uživatelů jinou barvou jejich příspěvku.
|
franta-hg@149
|
108 |
*/
|
franta-hg@149
|
109 |
if (overeny == "true") {
|
franta-hg@149
|
110 |
}
|
franta-hg@149
|
111 |
// zprávu můžeme zvýraznit
|
franta-hg@149
|
112 |
} else {
|
franta-hg@149
|
113 |
elementText.style.color = "#444444";
|
franta-hg@149
|
114 |
}
|
franta-hg@149
|
115 |
elementLi.appendChild(elementText);
|
franta-hg@149
|
116 |
|
franta-hg@149
|
117 |
elementUl.appendChild(elementLi);
|
franta-hg@149
|
118 |
}
|
franta-hg@149
|
119 |
}
|
franta-hg@149
|
120 |
|
franta-hg@149
|
121 |
var t;
|
franta-hg@149
|
122 |
|
franta-hg@149
|
123 |
function spustCasovac() {
|
franta-hg@149
|
124 |
aktualizujVypisZprav();
|
franta-hg@149
|
125 |
|
franta-hg@149
|
126 |
t = setTimeout(function () {
|
franta-hg@149
|
127 |
aktualizujVypisZprav();
|
franta-hg@149
|
128 |
spustCasovac();
|
franta-hg@149
|
129 |
}, intervalObnovy);
|
franta-hg@149
|
130 |
} |