1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4
<title>JWChat - Recherche</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="jsjac.js"></script>
14
document.getElementById('search_form').style.display = '';
15
document.getElementById('search_results').style.display = 'none';
18
document.getElementById('add_button').disabled = true;
19
document.getElementById('info_button').disabled = true;
20
resultF.selectedRow = null;
22
resultF.document.getElementById('results').innerHTML = '';
27
function searchUser() {
28
document.getElementById('search_results').style.display = '';
29
document.getElementById('search_form').style.display = 'none';
31
document.getElementById('results_header').innerHTML = "Interrogation en cours...";
33
var searchstring = '';
34
var jabberXData = (document.forms['searchfields'].elements['jwchat_form_type'] && document.forms['searchfields'].elements['jwchat_form_type'].value == 'jabber:x:data');
37
searchstring = genJabberXDataReply(document.forms['searchfields']);
39
for (var i=0; i<document.forms['searchfields'].elements.length; i++)
40
if (document.forms['searchfields'].elements[i].name != '' && document.forms['searchfields'].elements[i].value != '')
41
searchstring += "<"+document.forms['searchfields'].elements[i].name+">"+document.forms['searchfields'].elements[i].value+"</"+document.forms['searchfields'].elements[i].name+">";
44
var to = document.forms['service_select'].elements['service'].options[document.forms['service_select'].elements['service'].selectedIndex].value;
46
srcW.Debug.log("searchstring: "+ searchstring, 3);
48
var iq = new JSJaCIQ();
50
if (searchstring == '') {
51
iq.setTo(to+"/users");
53
iq.setQuery('jabber:iq:browse');
57
var query = iq.setQuery('jabber:iq:search');
59
var xmldoc = XmlDocument.create('','');
60
xmldoc.loadXML(searchstring);
62
query.appendChild(xmldoc.documentElement.cloneNode(true));
65
srcW.Debug.log("created query:" + iq.xml(),2);
67
srcW.con.send(iq, getQueryResult);
71
function getQueryResult(iq) {
72
if (!iq || iq.getType() != 'result') {
73
document.getElementById('results_header').innerHTML = "Erreur détectée";
77
srcW.Debug.log("got result: " + iq.getDoc().xml,2);
79
var html = "<table width='100%' border=0 cellspacing=0 cellpadding=0>";
81
// check if it's jabber:x:data
82
if (iq.getNode().getElementsByTagName('x').length && iq.getNode().getElementsByTagName('x').item(0).getAttribute('xmlns') == 'jabber:x:data') {
84
var x = iq.getNode().getElementsByTagName('x').item(0);
87
if (x.getElementsByTagName('title').item(0))
88
document.getElementById('results_header').innerHTML = x.getElementsByTagName('title').item(0).firstChild.nodeValue;
90
document.getElementById('results_header').innerHTML = "Cherche "+iq.getFrom()+" dans les résultats";
92
if (x.getElementsByTagName('reported').item(0) && x.getElementsByTagName('reported').item(0).getElementsByTagName('field').length) { // well - this should be there always
96
for (var i=0 ; i<x.getElementsByTagName('reported').item(0).getElementsByTagName('field').length; i++) {
97
var aField = x.getElementsByTagName('reported').item(0).getElementsByTagName('field').item(i);
98
html += "<th var='"+aField.getAttribute('var')+"' nowrap>"+aField.getAttribute('label')+"</th>";
103
for (var i=0; i<x.getElementsByTagName('item').length; i++) {
104
var item = x.getElementsByTagName('item').item(i);
107
for (var j=0 ; j<x.getElementsByTagName('reported').item(0).getElementsByTagName('field').length; j++) {
108
var rField = x.getElementsByTagName('reported').item(0).getElementsByTagName('field').item(j);
109
for (var k=0; k<item.getElementsByTagName('field').length; k++) {
110
var iField = item.getElementsByTagName('field').item(k);
111
if (rField.getAttribute('var') == iField.getAttribute('var')) { // matched
112
if (!iField.firstChild.firstChild)
113
html += "<td> </td>";
115
html += "<td nowrap>"+iField.firstChild.firstChild.nodeValue+"</td>";
123
} else if (iq.getNode().firstChild.getAttribute('xmlns') == 'jabber:iq:browse') {
124
document.getElementById('results_header').innerHTML = "Cherche "+iq.getFrom()+" dans les résultats";
127
html += "<tr><th>JID</th><th>Name</th></tr>";
130
for (var i=0; i<iq.getNode().firstChild.childNodes.length; i++) {
131
var item = iq.getNode().firstChild.childNodes.item(i);
133
html += "<td>"+item.getAttribute('jid')+"</td>";
134
var val = item.getAttribute('name');
135
if (!val || val == '')
137
html += "<td nowrap>"+val+"</td>";
140
} else if (iq.getQueryXMLNS() == 'jabber:iq:search') {
141
document.getElementById('results_header').innerHTML = "Cherche "+iq.getFrom()+" dans les résultats";
144
html += "<tr><th>JID</th>";
145
for (var j=0; j<document.forms['searchfields'].elements.length; j++)
146
html += "<th>"+document.forms['searchfields'].elements[j].name+"</th>";
150
for (var i=0; i<iq.getQuery().childNodes.length; i++) {
151
var item = iq.getQuery().childNodes.item(i);
153
html += "<td>"+item.getAttribute('jid')+"</td>";
154
for (var j=0; j<document.forms['searchfields'].elements.length; j++) {
155
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)
156
html += "<td nowrap>"+item.getElementsByTagName(document.forms['searchfields'].elements[j].name).item(0).firstChild.nodeValue+"</td>";
158
html += "<td nowrap> </td>";
164
resultF.document.getElementById('results').innerHTML = html;
170
function serviceSelected(selbox) {
171
var el = selbox.options[selbox.selectedIndex];
174
document.getElementById('searchfields').innerHTML = '';
181
var iq = new JSJaCIQ();
184
iq.setQuery('jabber:iq:search');
187
srcW.con.send(iq,me.getSearchForm);
191
function getSearchForm(iq) {
192
if (!iq || iq.getType() != 'result') {
193
document.getElementById('searchfields').innerHTML = "Erreur détecté\nAbandon...";
194
srcW.Debug.log("empty result",1);
197
srcW.Debug.log(iq.getDoc().xml,2);
199
// check if it's jabber:x:data
201
if (iq.getNode().getElementsByTagName('x').length && iq.getNode().getElementsByTagName('x').item(0).getAttribute('xmlns') == 'jabber:x:data') {
202
html += genJabberXDataTable(iq.getNode().getElementsByTagName('x').item(0));
206
if (iq.getNode().getElementsByTagName('instructions').item(0))
207
html += "<tr><th colspan=2>"+iq.getNode().getElementsByTagName('instructions').item(0).firstChild.nodeValue+"</th></tr>";
209
for (var i=0; i<iq.getQuery().childNodes.length; i++) {
210
var aNode = iq.getQuery().childNodes.item(i);
211
if (aNode.nodeName == 'instructions')
213
if (aNode.nodeName == 'key')
214
html += "<tr><td colspan=2><input type=hidden value=\""+aNode.firstChild.nodeValue+"\"></td></tr>";
216
if (aNode.firstChild)
217
html += "<tr><td>"+aNode.nodeName+" </td><td><input type=\"text\" name=\""+aNode.nodeName+"\" value=\""+aNode.firstChild.nodeValue+"\"></td></tr>";
219
html += "<tr><td>"+aNode.nodeName+" </td><td><input type=\"text\" name=\""+aNode.nodeName+"\"></td></tr>";
225
html += "<hr noshade size=1><div align=right><button onClick='return searchUser();'>"+"Recherche"+"</button></div>";
227
var searchfields = document.getElementById('searchfields');
228
searchfields.innerHTML = html;
233
var searchW = window;
236
// determine source window
243
document.getElementById('search_results').style.display = 'none';
244
document.getElementById('add_button').disabled = true;
245
document.getElementById('info_button').disabled = true;
247
var service = document.forms['service_select'].elements['service'];
249
for (var i in srcW.disco) {
250
if (!srcW.disco[i].getNode) continue;
251
for (var j=0; j<srcW.disco[i].getNode().getElementsByTagName('feature').length; j++) {
252
if (srcW.disco[i].getNode().getElementsByTagName('feature').item(j).getAttribute('var') == 'jabber:iq:search') {
253
service.options[optidx++] = new Option(srcW.disco[i].getNode().getElementsByTagName('identity').item(0).getAttribute('name'),srcW.disco[i].getFrom());
260
function keyPressed(e) {
261
if (e.ctrlKey && e.keyCode == 13)
263
else if (e.keyCode == 27)
266
onkeydown = keyPressed;
270
<script for="document" event="onkeydown()" language="JScript">
272
if (window.event.ctrlKey && window.event.keyCode == 13)
274
if (window.event.keyCode == 27)
278
<style type="text/css">
283
.searchfield { padding: 4px; }
287
<body style="margin: 8px;">
288
<div id="search_form">
289
<form name="service_select">
290
Recherche à <select name="service" onChange="return serviceSelected(this);"><option value=''>- Choix répertoire -</option></select>
292
<form name="searchfields" id="searchfields">
296
<div id="search_results">
297
<table height="100%" width="100%">
298
<tr><td id="results_header">Interrogation en cours...</td></tr>
299
<tr><td height="100%" width="100%">
300
<iframe src="search_iframe.html" id="resultF" name="resultF" scrolling="auto" style="width: 100%; height: 100%"></iframe>
303
<hr noshade size="1">
304
<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>