1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4
<title>JWChat - Chat</title>
5
<meta http-equiv="content-type" content="text/html; charset=utf-8">
6
<script src="shared.js"></script>
7
<script src="browsercheck.js"></script>
8
<script src="emoticons.js"></script>
9
<script src="switchStyle.js"></script>
10
<script src="statusLed.js"></script>
11
<script src="jsjac.js"></script>
19
function putMsgHTML(msg) {
24
if (msg.getType() == 'error') {
25
var error = aJSJaCPacket.getNode().getElementsByTagName('error').item(0);
26
if (error && error.getElementsByTagName('text').item(0))
27
body = error.getElementsByTagName('text').item(0).firstChild.nodeValue;
34
now = msg.jwcTimestamp;
38
var mtime = (now.getHours()<10)? "0" + now.getHours() : now.getHours();
40
mtime += (now.getMinutes()<10)? "0" + now.getMinutes() : now.getMinutes();
42
mtime += (now.getSeconds()<10)? "0" + now.getSeconds() : now.getSeconds();
44
if (msg.getTo() == user.jid){ // msg sent by me
45
nick = htmlEnc(srcW.roster.nick);
54
msgHTML += "<div title=\"@ "+mtime+"\" cDate=\""+now.getTime()+"\" dir=\""+dir+"\" body=\""+htmlEnc(body)+"\"><span class=time>["+mtime+"] </span>";
55
body = msgFormat(body);
57
msgHTML += "<span style='color:red;'> ";
58
} else if (body.match(/^\/me /)) {
59
body = body.replace(/^\/me /,"<span style=\"color:green;font-weight:bold;\" class=msgnick>* "+nick+"</span> ");
61
msgHTML += "<span style=\"color:"+nickcolor+";\" class=msgnick><" + nick + "></span> ";
68
var auto_scroll = false;
69
if (cFrame.body.scrollTop+cFrame.body.clientHeight >= cFrame.body.scrollHeight) // scrollbar at bottom
72
cFrame.body.innerHTML += msgHTML;
75
chat.scrollTo(0,cFrame.body.scrollHeight);
79
while (user.chatmsgs.length>0) {
82
msg = user.chatmsgs[0];
83
user.chatmsgs = user.chatmsgs.slice(1,user.chatmsgs.length);
85
msg = user.chatmsgs.shift();
91
if (jwcMain.focusWindows) {
93
document.forms.chatform.msgbox.focus();
95
if (user.lastsrc != null && user.messages.length == 0) {
96
var images = srcW.roster.getUserIcons(user.jid);
97
for (var i=0; i<images.length; i++)
98
images[i].src = user.lastsrc;
100
if (srcW.roster.usersHidden && user.status == 'unavailable') // remove user from roster if not available any more
105
function openUserInfo() {
106
return jwcMain.openUserInfo(user.jid);
109
function openUserHistory() {
110
return jwcMain.openUserHistory(user.jid);
113
function updateUserPresence() {
114
// var user = srcW.roster.getUserByJID(jid);
115
var awaymsg = document.getElementById('awaymsg');
116
document.getElementById('user_name').innerHTML = user.name;
117
if (user.statusMsg) {
118
awaymsg.style.display = '';
119
awaymsg.innerHTML = htmlEnc(user.statusMsg);
121
awaymsg.style.display = 'none';
123
var img = document.images['statusLed'];
124
img.src = eval(user.status + "Led").src;
127
function submitClicked() {
128
var body = document.forms[0].elements["msgbox"].value;
129
if (body == '') // don't send empty message
132
var aMessage = new JSJaCMessage();
133
aMessage.setType('chat');
134
aMessage.setTo(user.jid);
135
aMessage.setBody(body);
137
jwcMain.con.send(aMessage);
139
// insert into chat window
140
putMsgHTML(aMessage);
142
// add message to our message history
143
jwcMain.addtoHistory(body);
144
document.forms["chatform"].msgbox.value=''; // empty box
145
document.forms["chatform"].msgbox.focus(); // set focus back on input field
154
jid = passedArgs['jid'];
156
if (opener.top.roster) {
163
alert("error iniciando chat");
169
cFrame = chat.document;
170
user = srcW.roster.getUserByJID(jid);
171
document.title = "Chat com "+user.name;
173
document.getElementById('user_name').innerHTML = user.name;
175
if (typeof(srcW.loghost) == 'undefined')
176
document.getElementById('hist_button').style.display = 'none';
178
updateUserPresence();
184
function displayTimestamp() {
187
tstyle = cFrame.styleSheets('timestampstyle');
188
tstyle.disabled = jwcMain.timestamps;
190
tstyle = cFrame.getElementById("timestampstyle");
191
tstyle.sheet.disabled = jwcMain.timestamps;
196
var group_open = new Image();
197
group_open.src = 'images/group_open.gif';
198
var group_close = new Image();
199
group_close.src = 'images/group_close.gif';
200
var msgbox_toggled = false;
201
function toggle_msgbox(el) {
202
if (msgbox_toggled) {
203
document.getElementById('msgbox').style.height = '1.4em';
204
document.getElementById('chat').style.height = '100%';
205
document.getElementById('submitbutton').style.display = 'none';
206
el.src = group_close.src;
208
document.getElementById('msgbox').style.height = '4.2em';
209
document.getElementById('chat').style.height = '99%';
210
document.getElementById('submitbutton').style.display = '';
211
el.src = group_open.src;
213
msgbox_toggled = !msgbox_toggled;
216
function msgboxKeyPressed(el,e) {
218
if (window.event) { e = window.event; keycode = window.event.keyCode; }
219
else if (e) keycode = e.which;
225
if (!msgbox_toggled) {
226
toggle_msgbox(document.getElementById('toggle_icon'));
230
return submitClicked();
236
function msgboxKeyDown(el,e) {
238
if (window.event) { e = window.event; keycode = window.event.keyCode; }
239
else if (e) keycode = e.which;
245
el.value = jwcMain.getHistory('up', el.value);
246
el.focus(); el.select();
249
case 40: // shift+down
251
el.value = jwcMain.getHistory('down', el.value);
252
el.focus(); el.select();
256
if (e.ctrlKey) { // ctrl+l
257
chat.document.body.innerHTML = '';
269
if (!srcW.enableLog || typeof(srcW.loghost) == 'undefined')
272
var nodes = cFrame.body.getElementsByTagName("div");
273
if (nodes.length == 0)
276
var aIQ = new JSJaCIQ();
278
aIQ.setTo(jwcMain.loghost);
282
{'xmlns': 'http://jabber.org/protocol/archive',
284
'start': jabberDate(cDate)});
286
for (var i=0; i<nodes.length; i++) {
287
var node = nodes.item(i);
289
var aItem = aStore.appendChild(aIQ.getDoc().createElement(node.getAttribute('dir')));
290
aItem.setAttribute('secs',Math.round((node.getAttribute('cDate')-cDate.getTime())/1000));
291
aItem.appendChild(aIQ.getDoc().createElement("body")).appendChild(aIQ.getDoc().createTextNode(node.getAttribute('body')));
294
jwcMain.Debug.log(aIQ.xml(),2);
295
jwcMain.con.send(aIQ);
303
<body style="margin:8px;">
304
<table width="100%" height="100%">
306
<table border=0 cellspacing=0 cellpadding=0 width="100%">
308
<td width="100%" valign=top><img src="images/unavailable.gif" name="statusLed" width=16 height=16 border=0 align=left><span id="user_name" class="link" onClick="return openUserInfo();" style="padding:2px;" title="Clique para ver o vcard do usuario"></span><br clear=all>
309
<span id="awaymsg" class="statusMsg"></span></td>
310
<td align=right valign=top><button id='hist_button' onClick="return openUserHistory();">Historico</button></td></table>
312
<tr><td width="100%" height="100%" colspan=2><iframe src="chat_iframe.html" id="chat" name="chat" scrolling="auto"></iframe></td></tr>
313
<form name="chatform" style="border:0px;margin:0px;padding:0px;">
315
<td valign=top><img id="toggle_icon" src="images/group_close.gif" width="14" height="14" onClick="toggle_msgbox(this);"></td>
317
<textarea id="msgbox" wrap="virtual" style="width:100%;height:1.4em;" onKeyPress="return msgboxKeyPressed(this,event);" onKeyDown="return msgboxKeyDown(this,event);"></textarea>
320
<tr id="submitbutton" style="display:none;"><td colspan=2 align=right><button onClick="submitClicked(); return false;">Enviar</button></td></tr>