~ubuntu-branches/ubuntu/natty/jwchat/natty

« back to all changes in this revision

Viewing changes to src/options.html

  • Committer: Bazaar Package Importer
  • Author(s): Lincoln de Sousa, Lincoln de Sousa, Marcelo Jorge Vieira
  • Date: 2010-09-16 11:42:28 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20100916114228-5s5ne28n1w6wrfbl
Tags: 1.0+dfsg-1
[Lincoln de Sousa]

* Switch to dpkg-source 3.0 (quilt) format
* Migrating package from cdbs to debhelper 7.0.50~
* Changing the rule get-orig-source to generate a dfsg compatible
  package striping swf files from the orig (Closes: #591962)
* Updated Standards-Version to 3.9.1
* Removing po-debconf from the Build-Depends-Indep list.

[Marcelo Jorge Vieira]

* Fixing the default backend
* Fixing Debugger dependency
* Changing information about packaging from old maintainers to
  Debian XMPP Team.
* Removing sound support.
* Setting a port for apache VirtualHost.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
2
<html>
 
3
    <head>
 
4
    <title><l>JWChat - Options</l></title>
 
5
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
 
6
    <script src="switchStyle.js"></script>
 
7
    <script src="version.js"></script>
 
8
    <script src="shared.js"></script>
 
9
    <script src="jabber_x_data.js"></script>
 
10
    <script src="jsjac.js"></script>
 
11
    <script>
 
12
      <!--
 
13
function savePrefs() {
 
14
  var prefs = new Array('usersHidden','autoPopup','autoPopupAway','focusWindows','timestamps','playSounds','timerval','enableLog');
 
15
  
 
16
  if (!srcW.roster)
 
17
    return;
 
18
 
 
19
  var iq = new JSJaCIQ();
 
20
  iq.setType('set');
 
21
  var query = iq.setQuery('jabber:iq:private');
 
22
  var jNode = query.appendChild(
 
23
        iq.buildNode('jwchat', {'xmlns': 'jwchat:prefs'}));
 
24
  
 
25
  for (var i=0; i<prefs.length; i++) {
 
26
    if (prefs[i] == 'usersHidden')
 
27
          jNode.appendChild(iq.buildNode(prefs[i], srcW.roster.usersHidden+""));
 
28
    else
 
29
          jNode.appendChild(iq.buildNode(prefs[i], srcW[prefs[i]]+""));
 
30
  }
 
31
 
 
32
  srcW.Debug.log(iq.xml(),2);
 
33
 
 
34
  srcW.con.send(iq);
 
35
}
 
36
 
 
37
        
 
38
function displayTimestamps() {
 
39
  srcW.timestamps = form.timestamps.checked;
 
40
  /* set timestamp display in all open chat-windows */
 
41
  for (var i=0; i<srcW.roster.users.length; i++) {
 
42
    if ((srcW.roster.users[i].chatW) && (srcW.roster.users[i].chatW.closed == false)) {
 
43
      srcW.roster.users[i].chatW.top.displayTimestamp();
 
44
    }
 
45
    if (srcW.roster.users[i].roster) {
 
46
      for (var j=0; j<srcW.roster.users[i].roster.users.length; j++) {
 
47
        if (srcW.roster.users[i].roster.users[j].chatW && 
 
48
            !srcW.roster.users[i].roster.users[j].chatW.closed)
 
49
          srcW.roster.users[i].roster.users[j].chatW.displayTimestamp();
 
50
         }
 
51
    }
 
52
  }
 
53
}
 
54
 
 
55
function toggleAutoPopupAway(el) {
 
56
  document.getElementById('autoPopupAway').disabled = !el.checked;
 
57
}
 
58
 
 
59
var form;
 
60
function getOptions() {
 
61
  form = document.forms['options'];
 
62
  if (srcW.roster.usersHidden)
 
63
    form.usersHidden.checked = true;
 
64
  if (srcW.autoPopup)
 
65
    form.autoPopup.checked = true;
 
66
  if (srcW.autoPopupAway)
 
67
    form.autoPopupAway.checked = true;
 
68
  if (srcW.playSounds == true)
 
69
    form.playSounds.checked = true;
 
70
  if (srcW.timestamps == true)
 
71
    form.timestamps.checked = true;
 
72
  if (srcW.focusWindows == true)
 
73
    form.focusWindows.checked = true;
 
74
 
 
75
  form.enableLog.checked = srcW.enableLog;
 
76
 
 
77
  if (typeof(srcW.loghost) == 'undefined')
 
78
    document.getElementById('tr_enableLog').style.display = 'none';
 
79
 
 
80
  if (srcW.con.isPolling()) {
 
81
    for (var i=0; i<form.timerval.options.length; i++) {
 
82
      if (form.timerval.options[i].value == srcW.timerval)
 
83
        form.timerval.selectedIndex = i;
 
84
    }
 
85
  }
 
86
  toggleAutoPopupAway(document.getElementById('autoPopup'));
 
87
}
 
88
 
 
89
var pane;
 
90
function service_selected(el) {
 
91
  pane = el.nextSibling;
 
92
  if (el.options[el.selectedIndex].value == '') {
 
93
    pane.innerHTML = '';
 
94
    return;
 
95
  }
 
96
 
 
97
  pane.innerHTML = "<div class='transport_pane'>"+loc("Querying Service ...<br>Please stand by!")+"</div>";
 
98
 
 
99
  var iq = new JSJaCIQ();
 
100
  iq.setType('get');
 
101
  iq.setTo(el.options[el.selectedIndex].value);
 
102
  iq.setQuery('jabber:iq:register');
 
103
  
 
104
  me = this;
 
105
  srcW.con.send(iq,me.getRegisterForm);
 
106
}
 
107
 
 
108
function getRegisterForm(iq) {
 
109
  if (!iq || iq.getType() != 'result' || iq.getQueryXMLNS() != 'jabber:iq:register') {
 
110
    pane.innerHTML = "<div class='transport_pane'>"+loc("An Error occured ...")+"</div>";               
 
111
    return;
 
112
  }
 
113
  srcW.Debug.log(iq.getDoc().xml,2);
 
114
 
 
115
  var query = iq.getQuery();
 
116
        
 
117
  // check if it's jabber:x:data
 
118
 
 
119
  var html = '';
 
120
  if (iq.getNode().getElementsByTagName('x').length && iq.getNode().getElementsByTagName('x').item(0).getAttribute('xmlns') == 'jabber:x:data') {
 
121
    html += "<form>"+genJabberXDataTable(iq.getNode().getElementsByTagName('x').item(0))+"</form>";
 
122
  } else {
 
123
    if (query.getElementsByTagName('registered').item(0))
 
124
      html += "<div class='pane_el'><b style='color:red;'>"+loc("You are already registered at this service!")+"</b></div>";
 
125
    if (query.getElementsByTagName('instructions').item(0))
 
126
      html += "<div class='pane_el'>"+query.getElementsByTagName('instructions').item(0).firstChild.nodeValue+"</div>";
 
127
    html += "<form name='transport'><table>";
 
128
    for (var i=0; i<query.childNodes.length; i++) {
 
129
      var aItem = query.childNodes.item(i);
 
130
      switch (aItem.nodeName) {
 
131
      case 'instructions':
 
132
      case 'registered': 
 
133
        break;
 
134
      case 'key': // hide key
 
135
        html += "<tr><td colspan=2><input type=hidden name='"+aItem.nodeName+"' value='"+aItem.firstChild.nodeValue+"'></td></tr>";
 
136
        break;
 
137
      case 'password':
 
138
        if (aItem.firstChild)
 
139
          html += "<tr><td>"+aItem.nodeName+"</td><td><input type='password' name='"+aItem.nodeName+"' value='"+aItem.firstChild.nodeValue+"'></td></tr>";
 
140
        else
 
141
          html += "<tr><td>"+aItem.nodeName+"</td><td><input type='password' name='"+aItem.nodeName+"'></td></tr>";
 
142
        break;
 
143
      default:
 
144
        if (aItem.firstChild)
 
145
          html += "<tr><td>"+aItem.nodeName+"</td><td><input type='text' name='"+aItem.nodeName+"' value='"+aItem.firstChild.nodeValue+"'></td></tr>";
 
146
        else
 
147
          html += "<tr><td>"+aItem.nodeName+"</td><td><input type='text' name='"+aItem.nodeName+"'></td></tr>";
 
148
      }
 
149
    }
 
150
    html += "</table></form>";
 
151
  }
 
152
  html += "<div class='pane_el' align='right'>";
 
153
  if (query.getElementsByTagName('registered').item(0)) {
 
154
    html += "<button onClick=\"unregisterGateway('"+iq.getFrom()+"');\">"+loc("Unregister")+"</button>";
 
155
    html += "&nbsp;";
 
156
    html += "<button onClick=\"registerService('"+iq.getFrom()+"','"+pane.id+"');\">"+loc("Update")+"</button>";
 
157
  } else
 
158
    html += "<button onClick=\"registerService('"+iq.getFrom()+"','"+pane.id+"');\">"+loc("Register")+"</button>";
 
159
  html += "</div>";
 
160
  pane.innerHTML = html;
 
161
 
 
162
}
 
163
 
 
164
var ie5=document.all&&document.getElementById;
 
165
var oldactiveindex = 0;
 
166
 
 
167
function tabclicked(e) {
 
168
  // find index of clicked element
 
169
  var firingobj=ie5? event.srcElement : e.target;
 
170
  var tablabels = document.getElementById('tablabels');
 
171
  for (var i=0; i<tablabels.childNodes.length; i++)
 
172
    if (tablabels.childNodes[i] == firingobj) {
 
173
      if (oldactiveindex == i)
 
174
        return;
 
175
      var tabs = document.getElementById('tabs');
 
176
      tabs.childNodes[oldactiveindex].className = 'tabinactive';
 
177
      tabs.childNodes[i].className = 'tab';
 
178
      hide_error(tabs.childNodes[i].id);
 
179
      tablabels.childNodes[i].className = 'tablabelactive';
 
180
      tablabels.childNodes[oldactiveindex].className = 'tablabel';
 
181
      oldactiveindex = i;
 
182
    }
 
183
}
 
184
 
 
185
function hide_error(parent_id) {
 
186
  var el = getChildByClassName(parent_id, 'error_wrap');
 
187
  if (el) el.style.display = 'none';
 
188
}
 
189
 
 
190
function show_error(parent_id, text) {
 
191
  var el = getChildByClassName(parent_id, 'error_wrap');
 
192
  
 
193
  if (!el) return false; // well ... not our fault, stupid
 
194
 
 
195
  el.innerHTML = text;
 
196
  el.style.display = '';
 
197
 
 
198
  return false;
 
199
}
 
200
 
 
201
function getChildByClassName(parent, className) {
 
202
  if (document.getElementById(parent))
 
203
    var children = document.getElementById(parent).childNodes
 
204
  else return null;
 
205
  for (var i in children)
 
206
    if (children[i].className == className)
 
207
      return children[i]; // first occurrence
 
208
  return null; // nothing found
 
209
}
 
210
 
 
211
function changePassword(form) {
 
212
  hide_error('password_tab');
 
213
 
 
214
  if (form.password_new.value != form.password_repeat.value)
 
215
    return show_error('password_tab', loc("Passwords don't match"));
 
216
    
 
217
  var aIQ = new JSJaCIQ();
 
218
  aIQ.setType("set");
 
219
 
 
220
  var aQuery = aIQ.setQuery("jabber:iq:register");
 
221
 
 
222
  aQuery.appendChild(aIQ.buildNode('username', srcW.nick));
 
223
  aQuery.appendChild(aIQ.buildNode('password', form.password_new.value));
 
224
 
 
225
  me = self;
 
226
  srcW.con.sendIQ(aIQ,{
 
227
  result_handler:
 
228
    function() {
 
229
      me.show_error('password_tab', loc("Password changed successfully"));
 
230
    },
 
231
  error_handler:
 
232
    function() {
 
233
      me.show_error("An error occured");
 
234
    }
 
235
  });
 
236
 
 
237
  return false;
 
238
}
 
239
 
 
240
function registerService(sJid,paneid) {
 
241
  var aForm;
 
242
  
 
243
  var pane = document.getElementById(paneid);
 
244
 
 
245
  for (var i=0; i<pane.childNodes.length; i++) {
 
246
    if (pane.childNodes[i].tagName == 'FORM') {
 
247
      aForm = pane.childNodes[i];
 
248
      break; // found
 
249
    }
 
250
  }
 
251
 
 
252
  var setxml = '';
 
253
        
 
254
  var jabberXData = (aForm.elements['jwchat_form_type'] && aForm.elements['jwchat_form_type'].value == 'jabber:x:data');
 
255
  
 
256
  if (jabberXData) {
 
257
    setxml = genJabberXDataReply(aForm);
 
258
  }     else {
 
259
    for (var i=0; i<aForm.elements.length; i++) {
 
260
      var el = aForm.elements[i];
 
261
      setxml += "<"+el.name+">"+el.value+"</"+el.name+">";
 
262
    }
 
263
  }
 
264
 
 
265
  var iq = new JSJaCIQ();
 
266
  iq.setType('set');
 
267
  iq.setTo(sJid);
 
268
  
 
269
  var query = iq.setQuery('jabber:iq:register');
 
270
  
 
271
  var xmldoc = XmlDocument.create('body','foo');
 
272
  xmldoc.loadXML('<body>'+setxml+'</body>');
 
273
  
 
274
  for (var i=0; i<xmldoc.firstChild.childNodes.length; i++)
 
275
    query.appendChild(xmldoc.firstChild.childNodes.item(i).cloneNode(true));
 
276
  
 
277
  srcW.Debug.log(iq.getDoc().xml,2);
 
278
  
 
279
  me = this;
 
280
  srcW.con.send(iq,me.handleRegisterService,sJid);
 
281
  
 
282
  pane.innerHTML = "<strong>"+loc("Request sent to [_1]..",sJid)+"</strong><br>";
 
283
}
 
284
 
 
285
/* callback from registering a service */
 
286
function handleRegisterService(iq,sJid) {
 
287
  if (iq.getType() == 'error') {
 
288
                
 
289
    var html = "<strong style='color:red;'>"+loc("Error");
 
290
    if (iq.getNode().getElementsByTagName('error').item(0)) {
 
291
      var aErr = iq.getNode().getElementsByTagName('error').item(0);
 
292
      if (aErr.getAttribute('code'))
 
293
        html += " ("+aErr.getAttribute('code')+")";
 
294
      html += ": ";
 
295
      if (aErr.firstChild && aErr.firstChild.nodeValue)
 
296
        html += aErr.firstChild.nodeValue;
 
297
      else if (aErr.firstChild) {
 
298
        switch (aErr.firstChild.nodeName) {
 
299
        case 'bad-request': html += loc("Bad Request");
 
300
          break;
 
301
        default: html += aErr.firstChild.nodeName;
 
302
          break;
 
303
        }
 
304
      }
 
305
    }
 
306
    html += "</strong><br/>";
 
307
    pane.innerHTML += html;
 
308
    return;
 
309
  }
 
310
  pane.innerHTML += "<strong>"+loc("Registration successful.")+"</strong><br/>";
 
311
        
 
312
  // send presence
 
313
  pane.innerHTML += "<strong>"+loc("Sending presence...")+"</strong><br />";
 
314
  var aPresence = new JSJaCPresence();
 
315
  aPresence.setTo(sJid);
 
316
  aPresence.setShow(srcW.onlstat);
 
317
  aPresence.setStatus(srcW.onlmsg);
 
318
  srcW.con.send(aPresence);
 
319
  pane.innerHTML += "<strong>"+loc("Done.")+"</strong><br />";
 
320
}
 
321
 
 
322
function unregisterGateway(sJid) {
 
323
  if (srcW.roster.getUserByJID(sJid) != null)
 
324
    sJid = srcW.roster.getUserByJID(sJid).fulljid;
 
325
 
 
326
  pane.innerHTML = "<strong>"+loc("Unregistering from service [_1] ...",sJid)+"</strong><br />";
 
327
  var iq = new JSJaCIQ();
 
328
  iq.setType('set');
 
329
  iq.setTo(sJid);
 
330
  var query = iq.setQuery('jabber:iq:register');
 
331
  var item = query.appendChild(iq.getDoc().createElement('remove'));
 
332
  me = this;
 
333
  srcW.con.send(iq,me.handleUnregisterService,sJid);
 
334
}
 
335
 
 
336
function handleUnregisterService(iq,sJid) {
 
337
  if (iq.getType() == 'error') {
 
338
    var html = "<strong style='color:red;'>"+loc("Error");
 
339
    if (iq.getNode().getElementsByTagName('error').item(0)) {
 
340
      var aErr = iq.getNode().getElementsByTagName('error').item(0);
 
341
      if (aErr.getAttribute('code'))
 
342
        html += " ("+aErr.getAttribute('code')+")";
 
343
      html += ": ";
 
344
      if (aErr.firstChild && aErr.firstChild.nodeValue)
 
345
        html += aErr.firstChild.nodeValue;
 
346
      else if (aErr.firstChild) {
 
347
        switch (aErr.firstChild.nodeName) {
 
348
        case 'bad-request': html += loc("Bad Request");
 
349
          break;
 
350
        default: html += aErr.firstChild.nodeName;
 
351
          break;
 
352
        }
 
353
      }
 
354
    }
 
355
    html += "</strong><br/>";
 
356
    pane.innerHTML += html;
 
357
    return;
 
358
  }
 
359
  pane.innerHTML += "<strong>"+loc("Done.")+"</strong><br />";
 
360
  pane.innerHTML += "<strong>"+loc("Removing [_1] from roster...",sJid)+"</strong><br />";
 
361
  
 
362
  var iq = new JSJaCIQ();
 
363
  iq.setType('set');
 
364
  var query = iq.setQuery('jabber:iq:roster');
 
365
  var item = query.appendChild(iq.getDoc().createElement('item'));
 
366
  item.setAttribute('jid',sJid);
 
367
  item.setAttribute('subscription','remove');
 
368
  
 
369
  srcW.con.send(iq);
 
370
  
 
371
  if (confirm(loc("Remove all associated contacts?"))) {
 
372
    pane.innerHTML += "<strong>"+loc("Removing contacts...")+"</strong><br />";
 
373
    var iq = new JSJaCIQ();
 
374
    iq.setType('set');
 
375
    var query = iq.setQuery('jabber:iq:roster');
 
376
    for (var i=0; i<srcW.roster.users.length; i++) {
 
377
      if (cutResource(srcW.roster.users[i].jid.substring(srcW.roster.users[i].jid.indexOf('@')+1)) == cutResource(sJid) &&
 
378
          srcW.roster.users[i].jid != cutResource(sJid)) {
 
379
        var item = query.appendChild(iq.getDoc().createElement('item'));
 
380
        item.setAttribute('jid',srcW.roster.users[i].fulljid);
 
381
        item.setAttribute('subscription','remove');
 
382
        pane.innerHTML += srcW.roster.users[i].name+"<br />";
 
383
      }
 
384
    }
 
385
    srcW.con.send(iq);
 
386
  }
 
387
  pane.innerHTML += "<strong>"+loc("Done.")+"</strong><br />";
 
388
}
 
389
 
 
390
var srcW;
 
391
function init() {
 
392
  srcW = opener.parent;
 
393
 
 
394
  getOptions();
 
395
  
 
396
  // initialise handlers for tabs
 
397
  var tablabels = document.getElementById('tablabels');
 
398
  for (var i=0; i<tablabels.childNodes.length; i++)
 
399
    tablabels.childNodes[i].onclick = tabclicked;
 
400
  
 
401
  // set version
 
402
  var jwchat_version = document.getElementById('jwchat_version');
 
403
  jwchat_version.innerHTML = VERSION;
 
404
  if (VERSION == "CVS")
 
405
    jwchat_version.innerHTML += "<br>(" + document.lastModified + ")";
 
406
  
 
407
  var transports_selector = document.getElementById('transports_selector');
 
408
  var transport_optidx = 1;
 
409
  var directory_selector = document.getElementById('directory_selector');
 
410
  var directory_optidx = 1;
 
411
  for (var i in srcW.disco) {
 
412
    if (!srcW.disco[i].getNode) continue;
 
413
    var item = srcW.disco[i];
 
414
    if (item.getNode().getElementsByTagName('identity').item(0)) {
 
415
      if (item.getNode().getElementsByTagName('identity').item(0).getAttribute('category') == 'gateway') {
 
416
        for (var j=0; j<item.getNode().getElementsByTagName('feature').length; j++) {
 
417
          if (item.getNode().getElementsByTagName('feature').item(j).getAttribute('var') == 'jabber:iq:register') {
 
418
            transports_selector.options[transport_optidx++] = new Option(item.getNode().getElementsByTagName('identity').item(0).getAttribute('name'),item.getFrom());
 
419
            break;
 
420
          }
 
421
        }
 
422
      } else if (item.getNode().getElementsByTagName('identity').item(0).getAttribute('category') == 'directory') {
 
423
        for (var j=0; j<item.getNode().getElementsByTagName('feature').length; j++) {
 
424
          if (item.getNode().getElementsByTagName('feature').item(j).getAttribute('var') == 'jabber:iq:register') {
 
425
            directory_selector.options[directory_optidx++] = new Option(item.getNode().getElementsByTagName('identity').item(0).getAttribute('name'),item.getFrom());
 
426
            break;
 
427
          }
 
428
        }
 
429
      }
 
430
    }
 
431
  }
 
432
  
 
433
  if (directory_optidx == 1)
 
434
    document.getElementById('dir_label').style.display = 'none';
 
435
  if (transport_optidx == 1)
 
436
    document.getElementById('gw_label').style.display = 'none';
 
437
}
 
438
 
 
439
onload = init;
 
440
onunload = savePrefs;
 
441
      //-->
 
442
    </script>
 
443
                <style type="text/css">
 
444
                        th { font-size: 80%; text-align: right; font-weight: normal; }
 
445
                        #transport_pane input { 
 
446
                        border: 1px solid black;
 
447
                        }
 
448
                        .tablabels {
 
449
                        padding-top: 8px;
 
450
                        margin-bottom: 4px;
 
451
                        cursor: default;
 
452
                        }
 
453
                        .tablabel {
 
454
                        border: 1px solid black;
 
455
                        border-bottom: 0px solid white;
 
456
                        padding: 4px;
 
457
                        background-color: lightgrey;
 
458
                        }
 
459
                        .tablabelactive {
 
460
                        border: 1px solid black;
 
461
                        border-bottom: 1px solid white;
 
462
                        padding: 4px;
 
463
                        padding-top: 6px;
 
464
                        background-color: white;
 
465
                        }
 
466
                        td.tabs {
 
467
                        padding: 4px;
 
468
                        border: 1px solid black;
 
469
                        background-color: white;
 
470
                        }
 
471
                        .tab { display: block; }
 
472
                        .tabinactive { display: none;   }
 
473
                        .pane_el { margin: 4px; }
 
474
            .error_wrap {
 
475
            padding: 8px;
 
476
              margin: 8px;
 
477
            font-weight: bold;
 
478
            background-color: #ffc2c2;
 
479
            border: 1px solid red;
 
480
            }
 
481
                </style>
 
482
  </head>
 
483
  <body style="margin: 8px;">
 
484
 
 
485
        <table border=0 cellpadding=0 cellspacing=0 height="100%" width="100%">
 
486
                <tr>
 
487
                        <td>
 
488
                        <div id="tablabels" class="tablabels"><span class="tablabelactive"><l>General</l></span><span class='tablabel' id='pw_label'><l>Change Password</l></span><span class="tablabel" id='gw_label'><l>Gateways</l></span><span class="tablabel" id='dir_label'><l>User Directory</l></span><span class="tablabel"><l>About</l></span></div>
 
489
                        </td></tr>
 
490
                <tr><td height="100%" class="tabs" valign="top">
 
491
                        <div id="tabs"><div id="tab1" class="tab">
 
492
                                <form name="options">
 
493
                                        <fieldset>
 
494
                                                <legend><l>Options</l></legend>
 
495
                                                <table border="0">
 
496
                                                                <tr>
 
497
                                                                        <td><input id="usersHidden" type="checkbox" onChange="srcW.roster.toggleHide();"></td>
 
498
                                                                        <td><label for="usersHidden"><l>Hide offline users</l></label></td>
 
499
                                                                </tr>
 
500
                                                                <tr>
 
501
                                                                        <td><input id="autoPopup" type="checkbox" onChange="srcW.autoPopup=this.checked;toggleAutoPopupAway(this);"></td>
 
502
                                                                        <td><label for="autoPopup"><l>Automatically open messages and chats</l></label></td>
 
503
                                                                </tr>
 
504
                                                                <tr>
 
505
                                                                        <td><input id="autoPopupAway" type="checkbox" onChange="srcW.autoPopupAway=this.checked"></td>
 
506
                                                                        <td><label for="autoPopupAway"><l>Auto-Pop-Up if away</l></label></td>
 
507
                                                                </tr>
 
508
                                                                <tr>
 
509
                                                                        <td><input id="playSounds" type="checkbox" onChange="srcW.playSounds=this.checked;"></td>
 
510
                                                                        <td><label for="playSounds"><l>Play sounds</l></label></td>
 
511
                                                                </tr>
 
512
                                                                <tr>
 
513
                                                                        <td><input id="focusWindows" type="checkbox" onChange="srcW.focusWindows=this.checked;"></td>
 
514
                                                                        <td><label for="focusWindows"><l>Raise window if a new message is received</l></label></td>
 
515
                                                                </tr>
 
516
                                                                <tr>
 
517
                                                                        <td><input id="timestamps" type="checkbox" onClick="displayTimestamps();"></td>
 
518
                                                                        <td><label for="timestamps"><l>Display timestamps in chat windows</l></label></td>
 
519
                                                                </tr>
 
520
                                                                <tr id='tr_enableLog'>
 
521
                                                                        <td><input id="enableLog" type="checkbox" onChange="srcW.enableLog=this.checked;"></td>
 
522
                                                                        <td><label for="enableLog"><l>Enable logging of messages</l></label></td>
 
523
                                                                </tr>
 
524
<script language="JavaScript">
 
525
                                                                        if (opener.parent.con.isPolling()) 
 
526
                                                                                document.write(' \
 
527
                                                                <tr> \
 
528
                                                                        <td colspan="2"> \
 
529
                                                                                <l>Update interval</l>: \
 
530
                                                                                <select name="timerval" onChange="srcW.con.setPollInterval(this.value);srcW.timerval=this.value;"> \
 
531
                                                                                        <option value="2000"><l>2 sec.</l></option> \
 
532
                                                                                        <option value="5000"><l>5 sec.</l></option> \
 
533
                                                                                        <option value="10000"><l>10 sec.</l></option> \
 
534
                                                                                        <option value="30000"><l>30 sec.</l></option> \
 
535
                                                                                </select> \
 
536
                                                                        </td> \
 
537
                                                                </tr>');
 
538
</script>
 
539
                                                </table>
 
540
                                        </fieldset>
 
541
                                </form>
 
542
            </div><div class="tabinactive" id="password_tab">
 
543
                <div class="error_wrap"></div>
 
544
                <form name="password_form" onSubmit="return changePassword(this);">
 
545
                  <table border="0">
 
546
                    <tr><th>New Password</th>
 
547
                      <td><input type="password" name="password_new" value=""></td></tr>
 
548
                    <tr><th>Retype Password</th>
 
549
                      <td><input type="password" name="password_repeat" value=""></td></tr>
 
550
                    <tr><td></td><td><input type="submit"></td></tr>
 
551
                    </table></form>
 
552
                        </div><div class="tabinactive" id="transports_tab"><l>Register at</l> <select id="transports_selector" onchange="service_selected(this);"><option value=""> - <l>Choose Gateway</l> - </option></select><div id="transport_pane"></div></div><div class="tabinactive" id="directory_tab"><l>Register at</l>  <select id="directory_selector" onchange="service_selected(this);"><option value=""> - <l>Choose Directory</l> - </option></select><div id="directory_pane"></div></div><div class="tabinactive" id="about_tab" align="center">
 
553
                                                                <p>
 
554
                                                                <img src="images/jwchat.jpg" style="border:1px solid black;">
 
555
                                                                <h1 style="margin-bottom: 0px;">JWChat</h1>
 
556
                                                                Version <span id="jwchat_version"></span>
 
557
                                                                <p>
 
558
                                                                <nobr>&copy 2003-2004 by <a href="mailto:steve@zeank.in-berlin.de">Stefan Strigler</a></nobr>
 
559
                                                                <p>
 
560
                                                                        <img src="images/jumpto.gif" align="middle"><a href="http://jwchat.sourceforge.net" target="_new">http://jwchat.sourceforge.net</a>
 
561
                                                        </div></div>
 
562
                        </td></tr>
 
563
        </table>
 
564
  </body>
 
565
</html>