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