1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4
<title>JWChat - Hľadať</title>
5
<meta http-equiv="content-type" content="text/html; charset=utf-8">
6
<script src="shared.js"></script>
7
<script src="jabber_x_data.js"></script>
8
<script src="switchStyle.js"></script>
9
<script src="xmlextras.js"></script>
10
<script src="jsjac.js"></script>
15
document.getElementById('search_form').style.display = '';
16
document.getElementById('search_results').style.display = 'none';
19
document.getElementById('add_button').disabled = true;
20
document.getElementById('info_button').disabled = true;
21
resultF.selectedRow = null;
23
resultF.document.getElementById('results').innerHTML = '';
28
function searchUser() {
29
document.getElementById('search_results').style.display = '';
30
document.getElementById('search_form').style.display = 'none';
32
document.getElementById('results_header').innerHTML = "Zasielanie požiadavky...";
34
var searchstring = '';
35
var jabberXData = (document.forms['searchfields'].elements['jwchat_form_type'] && document.forms['searchfields'].elements['jwchat_form_type'].value == 'jabber:x:data');
38
searchstring = genJabberXDataReply(document.forms['searchfields']);
40
for (var i=0; i<document.forms['searchfields'].elements.length; i++)
41
if (document.forms['searchfields'].elements[i].name != '' && document.forms['searchfields'].elements[i].value != '')
42
searchstring += "<"+document.forms['searchfields'].elements[i].name+">"+document.forms['searchfields'].elements[i].value+"</"+document.forms['searchfields'].elements[i].name+">";
45
var to = document.forms['service_select'].elements['service'].options[document.forms['service_select'].elements['service'].selectedIndex].value;
47
srcW.Debug.log("searchstring: "+ searchstring, 3);
49
var iq = new JSJaCIQ();
51
if (searchstring == '') {
52
iq.setTo(to+"/users");
54
iq.setQuery('jabber:iq:browse');
58
var query = iq.setQuery('jabber:iq:search');
60
var xmldoc = XmlDocument.create('body','foo');
61
xmldoc.loadXML('<body>'+searchstring+'</body>');
63
for (var i=0; i<xmldoc.documentElement.childNodes.length; i++)
64
query.appendChild(xmldoc.firstChild.childNodes.item(i).cloneNode(true));
66
query.appendChild(xmldoc.firstChild.cloneNode(true));
70
srcW.Debug.log("created query:" + iq.getDoc().xml,2);
73
srcW.con.send(iq,me.getQueryResult);
77
function getQueryResult(iq) {
78
if (!iq || iq.getType() != 'result') {
79
document.getElementById('results_header').innerHTML = "Vyskytla sa chyba";
83
srcW.Debug.log("got result: " + iq.getDoc().xml,2);
85
var html = "<table width='100%' border=0 cellspacing=0 cellpadding=0>";
87
// check if it's jabber:x:data
88
if (iq.getNode().getElementsByTagName('x').length && iq.getNode().getElementsByTagName('x').item(0).getAttribute('xmlns') == 'jabber:x:data') {
90
var x = iq.getNode().getElementsByTagName('x').item(0);
93
if (x.getElementsByTagName('title').item(0))
94
document.getElementById('results_header').innerHTML = x.getElementsByTagName('title').item(0).firstChild.nodeValue;
96
document.getElementById('results_header').innerHTML = "Výsledky vyhľadávania pre "+iq.getFrom();
98
if (x.getElementsByTagName('reported').item(0) && x.getElementsByTagName('reported').item(0).getElementsByTagName('field').length) { // well - this should be there always
102
for (var i=0 ; i<x.getElementsByTagName('reported').item(0).getElementsByTagName('field').length; i++) {
103
var aField = x.getElementsByTagName('reported').item(0).getElementsByTagName('field').item(i);
104
html += "<th var='"+aField.getAttribute('var')+"' nowrap>"+aField.getAttribute('label')+"</th>";
109
for (var i=0; i<x.getElementsByTagName('item').length; i++) {
110
var item = x.getElementsByTagName('item').item(i);
113
for (var j=0 ; j<x.getElementsByTagName('reported').item(0).getElementsByTagName('field').length; j++) {
114
var rField = x.getElementsByTagName('reported').item(0).getElementsByTagName('field').item(j);
115
for (var k=0; k<item.getElementsByTagName('field').length; k++) {
116
var iField = item.getElementsByTagName('field').item(k);
117
if (rField.getAttribute('var') == iField.getAttribute('var')) { // matched
118
if (!iField.firstChild.firstChild)
119
html += "<td> </td>";
121
html += "<td nowrap>"+iField.firstChild.firstChild.nodeValue+"</td>";
129
} else if (iq.getNode().firstChild.getAttribute('xmlns') == 'jabber:iq:browse') {
130
document.getElementById('results_header').innerHTML = "Výsledky vyhľadávania pre "+iq.getFrom();
133
html += "<tr><th>JID</th><th>Name</th></tr>";
136
for (var i=0; i<iq.getNode().firstChild.childNodes.length; i++) {
137
var item = iq.getNode().firstChild.childNodes.item(i);
139
html += "<td>"+item.getAttribute('jid')+"</td>";
140
var val = item.getAttribute('name');
141
if (!val || val == '')
143
html += "<td nowrap>"+val+"</td>";
146
} else if (iq.getQueryXMLNS() == 'jabber:iq:search') {
147
document.getElementById('results_header').innerHTML = "Výsledky vyhľadávania pre "+iq.getFrom();
150
html += "<tr><th>JID</th>";
151
for (var j=0; j<document.forms['searchfields'].elements.length; j++)
152
html += "<th>"+document.forms['searchfields'].elements[j].name+"</th>";
156
for (var i=0; i<iq.getQuery().childNodes.length; i++) {
157
var item = iq.getQuery().childNodes.item(i);
159
html += "<td>"+item.getAttribute('jid')+"</td>";
160
for (var j=0; j<document.forms['searchfields'].elements.length; j++) {
161
if (document.forms['searchfields'].elements[j].name != '' && item.getElementsByTagName(document.forms['searchfields'].elements[j].name).length > 0 && item.getElementsByTagName(document.forms['searchfields'].elements[j].name).item(0).firstChild)
162
html += "<td nowrap>"+item.getElementsByTagName(document.forms['searchfields'].elements[j].name).item(0).firstChild.nodeValue+"</td>";
164
html += "<td nowrap> </td>";
170
resultF.document.getElementById('results').innerHTML = html;
176
function serviceSelected(selbox) {
177
var el = selbox.options[selbox.selectedIndex];
180
document.getElementById('searchfields').innerHTML = '';
187
var iq = new JSJaCIQ();
190
iq.setQuery('jabber:iq:search');
193
srcW.con.send(iq,me.getSearchForm);
197
function getSearchForm(iq) {
198
if (!iq || iq.getType() != 'result') {
199
document.getElementById('searchfields').innerHTML = "Vyskytla sa chyba\nUkončenie...";
200
srcW.Debug.log("empty result",1);
203
srcW.Debug.log(iq.getDoc().xml,2);
205
// check if it's jabber:x:data
207
if (iq.getNode().getElementsByTagName('x').length && iq.getNode().getElementsByTagName('x').item(0).getAttribute('xmlns') == 'jabber:x:data') {
208
html += genJabberXDataTable(iq.getNode().getElementsByTagName('x').item(0));
212
if (iq.getNode().getElementsByTagName('instructions').item(0))
213
html += "<tr><th colspan=2>"+iq.getNode().getElementsByTagName('instructions').item(0).firstChild.nodeValue+"</th></tr>";
215
for (var i=0; i<iq.getQuery().childNodes.length; i++) {
216
var aNode = iq.getQuery().childNodes.item(i);
217
if (aNode.nodeName == 'instructions')
219
if (aNode.nodeName == 'key')
220
html += "<tr><td colspan=2><input type=hidden value=\""+aNode.firstChild.nodeValue+"\"></td></tr>";
222
if (aNode.firstChild)
223
html += "<tr><td>"+aNode.nodeName+" </td><td><input type=\"text\" name=\""+aNode.nodeName+"\" value=\""+aNode.firstChild.nodeValue+"\"></td></tr>";
225
html += "<tr><td>"+aNode.nodeName+" </td><td><input type=\"text\" name=\""+aNode.nodeName+"\"></td></tr>";
231
html += "<hr noshade size=1><div align=right><button onClick='return searchUser();'>"+"Hľadať"+"</button></div>";
233
var searchfields = document.getElementById('searchfields');
234
searchfields.innerHTML = html;
239
var searchW = window;
242
// determine source window
249
document.getElementById('search_results').style.display = 'none';
250
document.getElementById('add_button').disabled = true;
251
document.getElementById('info_button').disabled = true;
253
var service = document.forms['service_select'].elements['service'];
255
for (var i in srcW.disco) {
256
if (!srcW.disco[i].getNode) continue;
257
for (var j=0; j<srcW.disco[i].getNode().getElementsByTagName('feature').length; j++) {
258
if (srcW.disco[i].getNode().getElementsByTagName('feature').item(j).getAttribute('var') == 'jabber:iq:search') {
259
service.options[optidx++] = new Option(srcW.disco[i].getNode().getElementsByTagName('identity').item(0).getAttribute('name'),srcW.disco[i].getFrom());
266
function keyPressed(e) {
267
if (e.ctrlKey && e.keyCode == 13)
269
else if (e.keyCode == 27)
272
onkeydown = keyPressed;
276
<script for="document" event="onkeydown()" language="JScript">
278
if (window.event.ctrlKey && window.event.keyCode == 13)
280
if (window.event.keyCode == 27)
284
<style type="text/css">
289
.searchfield { padding: 4px; }
293
<body style="margin: 8px;">
294
<div id="search_form">
295
<form name="service_select">
296
Vyhľadaj na <select name="service" onChange="return serviceSelected(this);"><option value=''>- Vyberte adresár -</option></select>
298
<form name="searchfields" id="searchfields">
302
<div id="search_results">
303
<table height="100%" width="100%">
304
<tr><td id="results_header">Zasielanie požiadavky...</td></tr>
305
<tr><td height="100%" width="100%">
306
<iframe src="search_iframe.html" id="resultF" name="resultF" scrolling="auto" style="width: 100%; height: 100%"></iframe>
309
<hr noshade size="1">
310
<button id="info_button" onClick='return srcW.openUserInfo(resultF.selectedRow.childNodes[0].innerHTML);'><l>User Info<l></button> <button id="add_button" onClick='return srcW.openSubscription(resultF.selectedRow.childNodes[0].innerHTML);'><l>Add Contact<l></button> <button onClick='return back();'><l>Back<l></button>