snippets / common.js

Language: Javascript - First posted by willowdan on 2008-01-17 03:23 (10 months, 1 week)
Link to the snippet: http://www.friendsnippets.org/snippet/152/

common.js

   1 var outputContactListObj;
2 var outputExtendedConvObj = [];
3 var outputChatObj = [];
4 var outputClientGroupDataObj = [];
5 var outputPingObj;
6 var outputExtendedConvClientGroupInviteDataObj = [];
7 var outputExtendedConvClientGroupEventDataObj = [];
8 var defaultContactListIndex = 0;
9 var defaultContactList = '';
10 var userAvailability = new Array();
11 var contactListRightClickObj = null;/*dcj*/
12 var contactRightClickObj = null;/*dcj*/
13 var numOfTicked = 0;
14 var action = '';
15 var dname = '';
16 var curSelectedIframesArray = [];
17 var extendedConversationParticipantsArray = [];
18 var chatParticipantsArray = [];
19 var extendedConversationParticipantsDisplayNameArray = [];
20 var chatParticipantsDisplayNameArray = [];
21 var extendedConvAddressArray = [];
22 var chatAddressArray = [];
23 var extendedConvAddress;
24 var chatAddress;
25 var extendedConvScreenNameArray = [];
26 var chatScreenNameArray = [];
27 var cookie_string;
28 var cookie_string0;
29 var buddyListWin = {};
30 var oLinksContactListObj;
31 var curContactList="";
32 var contactList;
33 var contactIDGlobal;
34 var fullAddress;
35
36 function errorHandling(divID,msg,style) {
37 $(divID).innerHTML = msg;
38 $(divID).style.display = style;
39 }
40
41 function iFramesArrayClass() {
42 this.curSelectedIframesArray = [];
43 }
44
45 var iFramesArrayObj = new iFramesArrayClass();
46
47 function Contacts() {
48 this.contactListDisplayName = new Array();
49 this.online = new Array();
50 this.offline = new Array();
51 this.allalpha = new Array();
52 this.onofflinealpha = new Array();
53 }
54
55 var contactsObj = new Contacts();
56
57 function ownProfile() {
58 this.alias;
59 this.clientType;
60 this.statusText;
61 this.statusMood;
62 this.statusContent;
63 this.userAvailability;
64 this.firstName;
65 this.lastName;
66 this.email;
67 this.phone;
68 this.userId;
69 this.fullAddress;
70 this.address;
71 }
72
73 var ownProfileObj = new ownProfile();
74
75 function msgClass() {
76 this.userId;
77 this.content;
78 this.contentSize;
79 this.dateTime;
80 this.messageID;
81 this.recepientUsers;
82 this.content;
83 }
84
85 var msgObj = new msgClass();
86
87 function presenceNotificationRequestClass() {
88 this.statusText;
89 this.statusMood;
90 this.statusContent;
91 this.userAvailability;
92 this.userId;
93 this.presenceValue;
94 }
95
96 var presenceNotificationRequestObj = [];
97
98 function invitationNotificationClass() {
99 this.userId;
100 this.alias;
101 this.fullAddress;
102 this.address;
103 this.email;
104 this.firstName;
105 this.lastName;
106 this.onlineStatus;
107 this.phone;
108 this.statusContent;
109 this.statusMood;
110 this.statusText;
111 this.userAvailability;
112 }
113
114 var invitationNotificationObj = new invitationNotificationClass();
115
116 function ConnectionClass() {
117 this.forcedLogout = null;
118 this.networkInterruption = null;
119 }
120
121 var connectionObj = new ConnectionClass();
122
123 function BrowserClass () {
124 var ua;
125
126 // Browser check
127 ua = navigator.userAgent;
128 this.platform = navigator.platform;
129 this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
130 this.isMSIE5 = this.isMSIE && (ua.indexOf('MSIE 5') != -1);
131 this.isMSIE5_0 = this.isMSIE && (ua.indexOf('MSIE 5.0') != -1);
132 this.isMSIE7 = this.isMSIE && (ua.indexOf('MSIE 7') != -1);
133 this.isGecko = this.isFireFox = ua.indexOf('Gecko') != -1; // Will also be true on Safari
134 this.isSafari = ua.indexOf('Safari') != -1;
135 this.isOpera = window['opera'] && opera.buildNumber ? true : false;
136 this.isMac = ua.indexOf('Mac') != -1;
137 this.isNS7 = ua.indexOf('Netscape/7') != -1;
138 this.isNS71 = ua.indexOf('Netscape/7.1') != -1;
139 }
140
141 var browserObj = new BrowserClass();
142 //alert(navigator.userAgent+'\n'+browserObj.isFireFox+'\n'+browserObj.platform);
143
144 function updateAlias(ownAlias) {
145 params = 'updateUserAlias&alias='+ ownAlias;
146 if (ownAlias.length > 0) {
147 new Ajax.Request(updateOwnProfileUrl, {
148 method : 'post',
149 onComplete : function(xh) {
150 var output = JSON.parse(xh.responseText);
151 ownProfileObj.alias = output.presence.alias;
152 $('disp').innerHTML = ownProfileObj.alias;
153 },
154 parameters : params
155 });
156 }
157 }
158
159 function updateNickname(nickName, alias, fullAddress, userId, isBlocked) {
160
161 if (nickName == '') {
162 if (alias != null) {
163 nickName = alias;
164 }
165 }
166
167 params = 'addContact&contactNickname='+ nickName+'&contactID='+fullAddress;
168
169
170 if (nickName.length > 0) {
171
172 new Ajax.Request(contactAddhUrl, {
173
174 method : 'post',
175 onComplete : function(xh) {
176
177 var output = JSON.parse(xh.responseText);
178
179 if (contactsListObj != undefined) {
180 delete contactsListObj;
181 } else if (wcapUserObj != undefined) {
182 delete wcapUserObj;
183 } else if (userIDObj != undefined) {
184 delete userIDObj;
185 } else if (presenceObj != undefined) {
186 delete presenceObj;
187 }
188
189 contactListDataObj = new contactListDataClass();
190 wcapUserObj = new wcapUserClass();
191 userIDObj = new userIDClass();
192 presenceObj = new presenceClass();
193
194 contactListDataObj.displayName = output.displayName;
195 contactListDataObj.nickNname = output.nickname;
196
197 // presence
198 presenceObj.onlineStatus = output.wcapUser.presence.onlineStatus;
199 presenceObj.onlineStatus = output.wcapUser.presence.clientInfo;
200 presenceObj.onlineStatus = output.wcapUser.presence.email;
201 presenceObj.onlineStatus = output.wcapUser.presence.firstName;
202 presenceObj.onlineStatus = output.wcapUser.presence.lastName;
203 presenceObj.onlineStatus = output.wcapUser.presence.phone;
204 presenceObj.onlineStatus = output.wcapUser.presence.statusContent;
205 presenceObj.onlineStatus = output.wcapUser.presence.statusMood;
206 presenceObj.onlineStatus = output.wcapUser.presence.statusText;
207 presenceObj.onlineStatus = output.wcapUser.presence.userAvailability;
208
209 // userIDObj
210 userIDObj.userId = userId;
211 userIDObj.fullAddress = fullAddress;
212
213 wcapUserObj.userID = userIDObj;
214
215 // wcapUserObj
216 wcapUserObj.isBlocked = false;
217 wcapUserObj.presence = presenceObj;
218
219 // contactListDataObj
220 contactListDataObj.wcapUser = wcapUserObj;
221
222 insertContacts(contactListDataObj);
223
224 },
225
226 parameters : params
227 });
228
229 }
230 }
231
232 function updateStatusText(ownStatus) {
233 params = 'updateUserStatusText&statusText='+ ownStatus;
234 new Ajax.Request(updateOwnProfileUrl, {
235 method : 'post',
236 onComplete : function(xh) {
237 var output = JSON.parse(xh.responseText);
238 ownProfileObj.statusText=ownStatus;
239 if (ownStatus.length > 0) {
240 $('curStatus').innerHTML = ownStatus;
241 } else if (ownStatus.length == 0){
242 $('curStatus').innerHTML = "Status Text";
243 }
244
245 },
246 parameters : params
247 });
248 }
249
250 function sendMessageExtendedConv(extendedConvAddressParam, tinyMceObj, ajax, msg) {
251
252 var fullAddressExtendedConv = getExtendedConvFullAddress(extendedConvAddressParam);
253
254 tinyMceObj.execCommand('mceSetContent', false, '');
255
256 //msg = regExpEscape(msg);
257 params = "messageText="+msg+'&contactID='+fullAddressExtendedConv+'&messageContentType=text/plain';
258
259 new ajax.Request(groupMessageSendUrl, {
260
261 onComplete : function() {
262
263 if(trim($(extendedConvAddressParam+"_extendedConv_sendBox").value).length > 0) {
264 var sentText = $(extendedConvAddressParam + '_extendedConv_sendBox').value;
265 var rcvdBox = $(extendedConvAddressParam+"_extendedConv_rcvd");
266
267 Stamp = new Date();
268
269 var h = String(Stamp.getHours());
270 var m = String(Stamp.getMinutes());
271 var s = String(Stamp.getSeconds());
272 h = (h.length > 1) ? h : "0"+h; m = (m.length > 1) ? m : "0"+m;
273
274 /*sentText = regExpEscape(sentText);*/
275 sentText = emoteReplace(sentText, smilies);
276 sentText = sentText.replace(/\ /,"");
277
278 if(sentText.replace(/<([^>]+)>/ig, '').indexOf('/me') == 0) {
279 rcvdBox.innerHTML = rcvdBox.innerHTML + "<b class=\"userA\"><i>" + ownProfileObj.alias + ' ' +
280 sentText.replace(/<([^>]+)>/ig, '').replace(/\/me/, '') + "</i></b><br>\n";
281 } else {
282 rcvdBox.innerHTML = rcvdBox.innerHTML + "<b class=\"userA\">" + ownProfileObj.alias +
283 ":</b> <span>" +
284 sentText + "</span><br>\n";
285 }
286 //[" + h + ":" + m + "]
287 scrollToBottom(extendedConvAddressParam+"_extendedConv_rcvd");
288 //dcj for the meantime if(audioNotify == true) soundManager.play('msg_out', 1, true);
289 }
290
291 },
292
293 onFailure : function(xh) {
294 alert("Oops, there's been an error.");
295 },
296
297 parameters : params
298
299 });
300
301
302
303 }
304
305 function sendMessage(winName, tinyMceObj, ajax, msg) {
306
307 var fullAddress = getContactFullAddress(winName);
308
309 tinyMceObj.execCommand('mceSetContent', false, '');
310
311 //msg = regExpEscape(msg);
312 params = "messageText="+msg+'&contactID='+fullAddress+'&messageContentType=text/plain';
313
314 new ajax.Request(sendMessagesUrl, {
315
316 onFailure : function(xh) {
317 alert("Oops, there's been an error.");
318 },
319
320 parameters : params
321
322 });
323
324 if(trim($(winName+"_sendBox").value).length > 0) {
325 var sentText = $(winName + '_sendBox').value;
326 var rcvdBox = $(winName+"_rcvd");
327
328 Stamp = new Date();
329
330 var h = String(Stamp.getHours());
331 var m = String(Stamp.getMinutes());
332 var s = String(Stamp.getSeconds());
333 h = (h.length > 1) ? h : "0"+h; m = (m.length > 1) ? m : "0"+m;
334
335 /*sentText = regExpEscape(sentText);*/
336 sentText = emoteReplace(sentText, smilies);
337 sentText = sentText.replace(/\&nbsp;/,"");
338
339 if(sentText.replace(/<([^>]+)>/ig, '').indexOf('/me') == 0) {
340 rcvdBox.innerHTML = rcvdBox.innerHTML + "<b class=\"userA\"><i>" + user + ' ' +
341 sentText.replace(/<([^>]+)>/ig, '').replace(/\/me/, '') + "</i></b><br>\n";
342 } else {
343 rcvdBox.innerHTML = rcvdBox.innerHTML + "<b class=\"userA\">" + user +
344 ":</b> <span>" +
345 sentText + "</span><br>\n";
346 }
347 //[" + h + ":" + m + "]
348 scrollToBottom(winName+"_rcvd");
349 //dcj for the meantime if(audioNotify == true) soundManager.play('msg_out', 1, true);
350 }
351 }
352
353 function ping() {
354
355 var parametersPing = 'getReceivedSOT='
356 new Ajax.Request(getEventsUrl, {
357 method : 'post',
358
359 onComplete : function(xh) {
360
361 if (trim(xh.responseText).length == 0) return;
362
363 if (xh.responseText == 'not_logged_in') {
364 logout();
365 return;
366 }
367
368 var output = JSON.parse(xh.responseText);
369 outputPingObj = output;
370 var i;
371 var toBeAdded = '';
372
373 for (var i=0; i < output.length; i++) {
374
375 if (output[i].contactMessage != null) {
376
377 if (output[i].contactMessage.contentData != '') {
378 renderP2P(output[i]);
379 }
380
381 } else if (output[i].presences != null) {
382
383 updatePresence(output[i]);
384 updateContactsObjOnOfflineAlpha();
385 sortMain(false);
386 renderContactsMain();
387 rightClick();
388
389 } else if (output[i].groupData != null) { //class: ClientGroupInviteData: joining
390
391 var screenName;
392 var participantUserId;
393 var participants = '';
394 var addedParticipantsClientGroupInviteData = [];
395
396 extendedConvAddress = curSelected = output[i].groupData.groupID.address;
397 outputExtendedConvClientGroupInviteDataObj[extendedConvAddress] = output[i];
398
399 for (var j=0; j<output[i].groupData.participants.length; j++) {
400
401 participantUserId = output[i].groupData.participants[j].userID.userId;
402 screenName = output[i].groupData.participants[j].screenName;
403
404 extendedConvScreenNameArray[screenName] = participantUserId;
405
406 if (extendedConversationParticipantsArray[extendedConvAddress] == undefined) {
407 extendedConversationParticipantsArray[extendedConvAddress] = [];
408 }
409
410 extendedConversationParticipantsArray[extendedConvAddress].push(output[i].groupData.participants[j]);
411
412 if (extendedConversationParticipantsDisplayNameArray[extendedConvAddress] == undefined) {
413 extendedConversationParticipantsDisplayNameArray[extendedConvAddress] = [];
414 }
415
416 if (!extendedConversationParticipantsDisplayNameArray[extendedConvAddress].search(output[i].groupData.participants[j].displayName)) {
417 extendedConversationParticipantsDisplayNameArray[extendedConvAddress].push(output[i].groupData.participants[j].displayName);
418 addedParticipantsClientGroupInviteData.push(output[i].groupData.participants[j].displayName);
419 }
420
421 }
422
423 if (!$(extendedConvAddress+'_extendedConv')) {
424
425 renderExtendedConvMessages(outputExtendedConvClientGroupInviteDataObj[extendedConvAddress]);
426 $(extendedConvAddress+'_extendedConv_top').innerHTML = '&nbsp;&nbsp;'+outputExtendedConvClientGroupInviteDataObj[extendedConvAddress].groupData.name;
427 Windows.close(outputExtendedConvClientGroupInviteDataObj[extendedConvAddress].groupData.groupID.userId+'_im');
428
429 } else {
430
431 IMWindows[extendedConvAddress].show();
432
433 }
434
435 var rcvdBox = $(extendedConvAddress+'_extendedConv_rcvd');
436
437 for (var j=0; j<addedParticipantsClientGroupInviteData.length; j++) {
438 rcvdBox.innerHTML = rcvdBox.innerHTML + "<i><font color='grey'> --- " +
439 "<span>" +
440 addedParticipantsClientGroupInviteData[j] + "</span> has joined the conversation ---</font></i><br>\n";
441 }
442
443 } else if (output[i].joinedParticipants != null) { //class: ClientGroupEventData: joining
444
445 var screenName;
446 var participantUserId;
447 var addedParticipantsClientGroupEventData = [];
448
449 chatAddress = extendedConvAddress = output[i].groupID.address;
450
451 if (extendedConvAddress.indexOf('/~') != -1) {
452
453 outputExtendedConvClientGroupEventDataObj[extendedConvAddress] = output[i];
454
455 for (var j=0; j<output[i].joinedParticipants.length; j++) {
456
457 $(extendedConvAddress+'_extendedConv_top').innerHTML += ', '+output[i].joinedParticipants[j].displayName;
458
459 participantUserId = output[i].joinedParticipants[j].userID.userId;
460 screenName = output[i].joinedParticipants[j].screenName;
461
462 extendedConvScreenNameArray[screenName] = participantUserId;
463
464 if (extendedConversationParticipantsArray[extendedConvAddress] == undefined) {
465 extendedConversationParticipantsArray[extendedConvAddress] = [];
466 }
467
468 if (!extendedConversationParticipantsDisplayNameArray[extendedConvAddress].search(output[i].joinedParticipants[j].displayName)) {
469
470 extendedConversationParticipantsArray[extendedConvAddress].push(output[i].joinedParticipants[j]);
471
472 if (extendedConversationParticipantsDisplayNameArray[extendedConvAddress] == undefined) {
473 extendedConversationParticipantsDisplayNameArray[extendedConvAddress] = [];
474 }
475
476 if (!extendedConversationParticipantsDisplayNameArray[extendedConvAddress].search(output[i].joinedParticipants[j].displayName)) {
477 extendedConversationParticipantsDisplayNameArray[extendedConvAddress].push(output[i].joinedParticipants[j].displayName);
478 addedParticipantsClientGroupEventData.push(output[i].joinedParticipants[j].displayName);
479 }
480
481 preInsert('extendedConv',output[i].joinedParticipants[j].displayName);
482 extendedConversationParticipantsDisplayNameArray[extendedConvAddress].sort();
483 }
484
485 }
486
487 if (!$(extendedConvAddress+'_extendedConv')) {
488
489 renderExtendedConversationWindow(output[i].groupID.address,output[i].groupID.address);
490
491 } else {
492
493 IMWindows[extendedConvAddress].show();
494
495 }
496
497 var rcvdBox = $(extendedConvAddress+'_extendedConv_rcvd');
498
499 for (var j=0; j<addedParticipantsClientGroupEventData.length; j++) {
500 rcvdBox.innerHTML = rcvdBox.innerHTML + "<i><font color='gray'> --- " +
501 "<span>" +
502 addedParticipantsClientGroupEventData[j] + "</span> has joined the conversation ---</font></i><br>\n";
503 }
504
505 scrollToBottom(extendedConvAddress+"_extendedConv_rcvd");
506 insertConversation(extendedConvAddress);
507
508 } else {
509
510 alert('For CHat! :)');
511
512 outputClientGroupDataObj[chatAddress] = output[i];
513 var index = 0;
514
515 for (var i=0; i<outputClientGroupDataObj[chatAddress].joinedParticipants.length; i++) {
516
517 var inChatParticipantsArray = false;
518
519 //search within search(outputChatObj[chatAddress].joinedParticipants[i].displayName
520 for (var j=0; j<chatParticipantsArray[chatAddress].length; j++) {
521
522 if (chatParticipantsArray[chatAddress][j].userID.address == outputClientGroupDataObj[chatAddress].joinedParticipants[i].userID.address) {
523 inChatParticipantsArray = true;
524 index = j;
525 break;
526 }
527 }
528
529 if (!inChatParticipantsArray) {
530
531 chatParticipantsArray[chatAddress].push(outputClientGroupDataObj[chatAddress].joinedParticipants[i]);
532
533 var rndm = Math.floor(Math.random()*100);
534
535 //if with exactly the same displayName but with different address, append an '-' and a random number
536 if (chatParticipantsDisplayNameArray[chatAddress].search(outputClientGroupDataObj[chatAddress].joinedParticipants[i].displayName)) {
537
538 while (chatParticipantsDisplayNameArray[chatAddress].search(outputClientGroupDataObj[chatAddress].joinedParticipants[i].displayName+'_'+rndm)) {
539 rndm = Math.floor(random()*100);
540 }
541 chatParticipantsDisplayNameArray[chatAddress].push(outputClientGroupDataObj[chatAddress].joinedParticipants[i].displayName+'_'+rndm);
542
543 } else {
544 chatParticipantsDisplayNameArray[chatAddress].push(outputClientGroupDataObj[chatAddress].joinedParticipants[i].displayName);
545 }
546
547 preInsertBeta('chat',outputClientGroupDataObj[chatAddress].joinedParticipants[index].displayName);
548 }
549
550 }
551
552 alert('For Chat! :)');
553
554 }
555
556 } else if (output[i].senderMessage != null) { //class: ClientGroupEventData: messaging
557
558 extendedConvAddress = output[i].groupID.address;
559
560 var receivedContent = output[i].senderMessage.contentData.content;
561 var contentType = output[i].senderMessage.contentData.contentType;
562 var extendedConvFullAddress = output[i].groupID.fullAddress;
563 var SName = output[i].senderMessage.messageInfo.sender.group.screenName.SName;
564
565 if (getContactObjectInContactList(getContactFullAddress(extendedConvScreenNameArray[SName])).displayName == undefined) {
566 for (var i=0; i<extendedConversationParticipantsArray[extendedConvAddress].length; i++) {
567 if (extendedConversationParticipantsArray[extendedConvAddress][i].screenName == SName) {
568 var participant = extendedConversationParticipantsArray[extendedConvAddress][i].displayName;
569 break;
570 }
571 }
572 } else {
573 var participant = getContactObjectInContactList(getContactFullAddress(extendedConvScreenNameArray[SName])).displayName;
574 }
575
576 var rcvdBox = $(extendedConvAddress+'_extendedConv_rcvd');
577
578 Stamp = new Date();
579
580 var h = String(Stamp.getHours());
581 var m = String(Stamp.getMinutes());
582 var s = String(Stamp.getSeconds());
583 h = (h.length > 1) ? h : "0"+h; m = (m.length > 1) ? m : "0"+m;
584
585 var msgDateTime = output[i].senderMessage.messageInfo.dateTime;
586 var extendedConvDateTime = output[i].senderMessage.messageInfo.dateTime;
587
588 var msgHr = msgDateTime.indexOf("T") + 1;
589 var msgMin = msgDateTime.indexOf("T") + 3;
590 msgDateTime = msgDateTime.substring(msgHr, msgHr+2) +":"+ msgDateTime.substring(msgMin, msgMin+2);
591
592 $(extendedConvAddress+'_extendedConv_rcvd').style.height = '127px';
593 $(extendedConvAddress+'_dateTimeExtendedConv').style.visibility = 'visible';
594 timeReceived = $(extendedConvAddress+'_dateTimeExtendedConv');
595 timeReceived.innerHTML = "<span>Last message received "+msgDateTime+"</span>";
596
597 /*sentText = regExpEscape(sentText);*/
598 if (contentType == 'text/plain') {
599 receivedContent = emoteReplace(receivedContent, smilies);
600 receivedContent = receivedContent.replace(/\&nbsp;/,"");
601 } else {
602 var imageSrc = cacheStreamerUrl+'?key=message-pic-'+extendedConvFullAddress+extendedConvDateTime;
603 receivedContent = '<img src="'+imageSrc+'" alt="image" width="50px" height="50px" />';
604 }
605
606 if(receivedContent.replace(/<([^>]+)>/ig, '').indexOf('/me') == 0) {
607 rcvdBox.innerHTML = rcvdBox.innerHTML + "<b class=\"userA\"><i>&q