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: }