source: trunk/instant_messenger/js/im_functions.js @ 72

Revision 72, 26.1 KB checked in by niltonneto, 17 years ago (diff)

* empty log message *

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1        function IM()
2        {
3           this.vcards      = false;
4           this.labelVcard  = [];
5           this.statusvcard = false;
6           this.UsersNot        = [];
7           this.userPrefe   = false;
8           this.count_Vcard = 0;
9        }
10
11        IM.prototype.load_im = function()
12        {
13                this.listen();
14            this.requireContacts();
15            this.atalho();
16
17            var handler_Status = function(XmlData)
18            {
19                        var data = XmlData.getElementsByTagName('retorno').item(0);
20                        data = data.firstChild.nodeValue;
21                        if( data )
22                        {
23                                statusFlag = data;
24                                setTimeout('IM.ImgStatus("'+data+'")',4000);
25                        }
26            };
27            XMLTools.request('$this.Ujabber.MyPresence', 'GET', handler_Status);
28        };
29
30        IM.prototype.listen = function()
31        {
32           var _this = this;
33           var handler = function(XMLdata)
34           {
35              try
36              {
37                                if( !_this.userPrefe )
38                                {
39                                        if(window.IM_Preferences)
40                                                IM_Preferences.GetYourPreferences();
41                                }
42
43                    _this.getContacts(XMLdata);
44                    _this.getPresence(XMLdata);
45                                _this.getComposing(XMLdata);
46                    _this.getMessages(XMLdata);
47                                _this.getVcard(XMLdata);
48
49                if(!_this.vcards)
50                {
51                        _this.Vcard();
52                        _this.vcards = true;
53                    }
54
55              }catch(e){}
56
57              setTimeout('IM.listen()', 3000);
58           };
59           this._listen = false;
60           XMLTools.__RETURN_MODE__ = 'XML';
61           XMLTools.request('$this.Ujabber.listen', 'GET', handler);
62        };
63
64   /*
65        *  Contacts
66        */
67
68        IM.prototype.requireContacts = function()
69        {
70           var handler = function(data)
71                {
72                };
73           XMLTools.request('$this.Ujabber.requireContacts', 'GET', handler);
74        };
75
76        IM.prototype.getContacts = function(data)
77        {
78           try
79           {
80              if ( data.getElementsByTagName('contacts').length > 0 )
81              {
82                 var node = data.documentElement.firstChild;
83                 while ( node.nodeName != 'contacts' )
84                        node = node.nextSibling;
85
86                 var div = document.getElementById("div_contacts");
87                 var xsl = XMLTools.load(im_path + 'xsl/contacts.xsl?' + Date.parse(new Date));
88                 var img = document.createElement('img');
89                 img.id  = 'img_all_groups';
90                 img.src = img_group_open.src;
91                 img.onclick = function(){IM.visible_group("all_groups")};
92
93                 var a = document.createElement('div');
94                 a.innerHTML = XMLTools.transform(node, xsl);
95
96                 div.innerHTML = '';
97                 div.appendChild(img);
98                 div.appendChild(document.createTextNode(this.get_lang('List of Contacts')));
99                 div.appendChild(a);
100
101                         var group = func.byId("all_groups").firstChild;
102                         while ( group )
103                 {
104                                        var contact = group.firstChild.nextSibling;
105                                        while ( contact = contact.nextSibling )
106                                        {
107                                                var img = func.newEl('img');
108                                                img.src = img_unavailable.src;
109
110                                                func.insElB(img, func.byId(contact.id).firstChild);
111                                        }
112
113                                        try
114                                        {
115                                                var img = document.createElement('img');
116                                                img.src = img_group_open.src;
117                                                img.id = "img_" + group.id;
118                                                var el_parent = group;
119
120                                                el_parent.insertBefore(img,el_parent.firstChild);
121
122                                        } catch(e){}
123                                        group = group.nextSibling;
124                 }
125                         //this.atalho();
126              }
127           }catch(e){}
128
129        };
130
131   /*
132        *  Visible / Unvisible
133        */
134
135        IM.prototype.visible_group = function(el)
136        {
137                var _this = this;
138                var divParent = document.getElementById(el);
139                divParent.style.display = "none";
140                var img = document.getElementById("img_" + el);
141                img.onclick = function(){_this.unvisible_group(el)};
142                img.src = img_group_close.src;
143        }
144
145        IM.prototype.unvisible_group = function(el)
146        {
147                var _this = this;
148                var div = document.getElementById(el);
149                div.style.display = "";
150                var img = document.getElementById("img_" + el);
151                img.onclick = function(){_this.visible_group(el)};
152                img.src = img_group_open.src;
153        }
154
155        /*
156         * Presence
157         */
158
159        IM.prototype.getPresence = function(data)
160        {
161           try
162           {
163              var presence = data.documentElement.firstChild;
164                  var _this = this;
165              while ( presence )
166              {
167                      if ( presence.nodeName != 'presence' )
168                      {
169                 presence = presence.nextSibling;
170                         continue;
171                      }
172
173                                var from = presence.getAttribute('from');
174                                var type = presence.getAttribute('type');
175                                if ( presence.hasChildNodes() )
176                                        var status_message = presence.firstChild.nodeValue;
177                                else
178                                        var status_message = false;
179
180                                if( from )
181                                {
182                                 switch ( type )
183                                 {
184                                        case 'subscribe' :
185                                                if ( !func.byId(from) )
186                                                                _this.UsersNot[_this.UsersNot.length] = from;
187                                                        else
188                                                        {
189                                                                Subscription.subscribed(from);
190                                                                this.setStatus(statusFlag);
191                                                        }
192                                                break;
193                                        case 'subscribed' :
194                                                //
195                                        break;
196                                        case 'unsubscribe' :
197                                                Subscription.unsubscribe(from);
198                                                type = 'unavailable';
199                                                func.byId(from).firstChild.src = eval('img_' + type + '.src');
200                                                break;
201                                        case 'unsubscribed' :
202                                                Subscription.unsubscribed(from);
203                                                type = 'unavailable';
204                                                func.byId(from).firstChild.src = eval('img_' + type + '.src');
205                                                break;
206                                        default :
207                                                if ( func.byId(from) )
208                                                {
209                                                        func.byId(from).firstChild.src = eval('img_' + type + '.src');
210                                                        var status;
211
212                                                        if ( (status = func.byId(from + '_im_window')) )
213                                                        {
214                                                                status.firstChild.style.background = 'url('+func.byId(from).firstChild.src+')';
215                                                                        status = func.byId(from + '_im_window_message');
216                                                                if( status_message && status_message != "available" )
217                                                                        status.innerHTML = from.substr(0, from.indexOf('@')) + ' : ' + status_message;
218                                                                else
219                                                                        status.innerHTML = '';
220                                                        }
221
222                                                        if( document.getElementById('status_message_' + from) == null)
223                                                        {
224                                                                var lbl = document.createElement('label');
225                                                                lbl.id = 'status_message_' + from;
226                                                                if(!status_message)
227                                                                        lbl.innerHTML = "";
228                                                                else
229                                                                        if( status_message != "available" )
230                                                                                lbl.innerHTML = "<span style='margin-left:10px'><br/> ( " + status_message + " )</span>";
231                                                                        func.byId(from).appendChild(lbl);
232                                                        }else{
233                                                                        var lbl = document.getElementById('status_message_' + from);
234                                                                if(!status_message)
235                                                                        lbl.innerHTML = "";
236                                                                else
237                                                                        if( status_message != "available" )
238                                                                                lbl.innerHTML = "<span style='margin-left:10px'><br/> ( " + status_message + " )</span>";
239                                                        }
240                                                }
241                                 }
242                                 }
243                            if( _this.UsersNot.length > 0 )
244                                        Templates.Users_Not_Auth(_this.UsersNot);
245                 presence = presence.nextSibling;
246              }
247              _this.Contacts_Offline();
248           }catch(e){}
249        };
250
251        /*
252         * Contatos - Offline
253         */
254
255        IM.prototype.Contacts_Offline = function()
256        {
257                 var offline = true;
258                 if(IM.userPrefe)
259                        offline = eval(IM_Preferences.LoadPreferences('ch_offline'));
260                 else
261                        offline = eval(IM_Preferences.LoadPreferences('ch_offline'));
262
263                 var group = func.byId("all_groups").firstChild;
264                 while ( group )
265         {
266                        var contact = group.firstChild;
267                        while ( contact )
268                        {
269                                if(contact.tagName == "DIV")
270                                {
271                                        var childF = contact.firstChild;
272                                        if( childF.src == img_unavailable.src && !offline)
273                                                func.byId(contact.id).style.display = "none";
274                                        else
275                                                func.byId(contact.id).style.display = "block";
276                                }
277                                contact = contact.nextSibling;
278                        }
279                        group = group.nextSibling;
280         }
281        }
282
283        /*
284         * Get / Send - Messages
285         */
286
287        IM.prototype.getMessages = function(data)
288        {
289           try
290           {
291              data = data.documentElement;
292              if ( data.childNodes.length > 0 )
293              {
294                 var message = data.firstChild;
295                 while ( message )
296                 {
297                    if ( message.tagName == 'messages' )
298                    {
299                       var from = message.getAttribute('from');
300                       with ( from )
301                          from = substr(0, indexOf('/'))
302
303                       if( document.getElementById('vcard_' + from) != null)
304                       {
305                                                var vcards = IM_Preferences.vCardLoad(from);
306                                                var nickname = vcards.substr(vcards.indexOf('NICKNAME'),vcards.length);
307                                                    nickname = nickname.substr(0,nickname.indexOf('|'));
308                                                    nickname = nickname.substr(nickname.indexOf(':') + 1 , nickname.length);
309                                                    nickname = ( func.trim(nickname) != "" ) ? nickname : from ;
310                                   }
311                                   else
312                                      var nickname = from;
313
314                       var win = document.getElementById(from + '_chatMessages');
315                       if ( !win )
316                       {
317                          im_win.open_chat(from);
318                          win = document.getElementById(from + '_chatMessages');
319                       }
320
321                       var el = message.firstChild;
322                       while ( el )
323                       {
324                          var xsl = XMLTools.load(im_path + 'xsl/message.xsl?' + Date.parse(new Date));
325                          var next = el.nextSibling;
326
327                          var label = document.createElement('strong');
328                          label.appendChild(document.createTextNode(nickname));
329
330                          win.appendChild(label);
331                          win.appendChild(document.createElement('br'));
332                          var msg = XMLTools.transform(el, xsl);
333                          win.innerHTML += this.emotions_icons(msg);
334                          win.appendChild(document.createElement('br'));
335                          win.appendChild(document.createElement('br'));
336                          win.scrollTop = win.scrollHeight;
337                                          im_win.newMessageNotification();
338
339                          el = next;
340                       }
341                    }
342
343                                if ( (composing = func.byId(from + '_composing')) )
344                                        if ( composing.style.display = 'block' )
345                                                composing.style.display = 'none';
346
347                    message = message.nextSibling;
348                 }
349              }
350           }catch(e){}
351        }
352
353        IM.prototype.sendMessage = function (pJID)
354        {
355           var _this = this;
356           var name_document = document.getElementById(pJID + '_edita');
357           var envio = name_document.contentWindow.document.getElementsByTagName('body').item(0);
358
359           var imgs = envio.getElementsByTagName('img');
360           var cod;
361           var emotion_regexp;
362
363           for ( i = imgs.length - 1; i > -1; i--)
364           {
365              if ( (cod = imgs[i].getAttribute('emotion')) )
366                  {
367                         emotion_regexp = new RegExp('<img[^>]*?emotion="' + cod_emotions[cod][1] + '"[^>]*?>', "i");
368             envio.innerHTML = envio.innerHTML.replace(emotion_regexp, cod);
369          }
370              else
371                 imgs[i].parentNode.removeChild(imgs[i]);
372           }
373
374           envio.innerHTML = func.trim(envio.innerHTML);
375           envio.innerHTML = envio.innerHTML.replace(/&nbsp;| +/gi, ' ');
376           envio.innerHTML = envio.innerHTML.replace(/<br[^>]*>/gi, '<br />');
377
378           if ( envio.innerHTML != "" )
379           {
380              var message_text  = "<div style='";
381              message_text += (envio.style.fontFamily != "") ? "font-family:"+envio.style.fontFamily+";" : "";
382              message_text += (envio.style.fontSize != "") ? "font-size:"+envio.style.fontSize+";" : "" ;
383              message_text += (envio.style.fontWeight != "") ? "font-weight:"+envio.style.fontWeight+";": "";
384              message_text += (envio.style.fontStyle != "" ) ? "font-style:"+envio.style.fontStyle+";" : "";
385              message_text += (envio.style.color != "") ? "color:"+envio.style.color+";" : "color:black";
386              message_text += "'>";
387              message_text += envio.innerHTML + "</div>";
388
389                  message_text = message_text.replace(/&nbsp;| +/gi, ' ');
390                  message_text = message_text.replace(/<br[^>]*>/gi, '<br />');
391
392              envio.innerHTML = '';
393
394              var message_element = document.getElementById(pJID + '_chatMessages');
395              var nickname = "me ";
396                  if( IM_Preferences.jid )
397                  {
398                          var vcards = IM_Preferences.vCardLoad(IM_Preferences.jid);
399                          nickname = vcards.substr(vcards.indexOf('NICKNAME'),vcards.length);
400                          nickname = nickname.substr(0,nickname.indexOf('|'));
401                          nickname = nickname.substr(nickname.indexOf(':') + 1 , nickname.length);
402                          nickname = (func.trim(nickname) != "") ? nickname : IM_Preferences.jid;       
403                  }
404
405              message_element.innerHTML += '<strong>' + nickname + ' ';
406              message_element.innerHTML += ' ' + _this.get_lang('speak') + ':</strong><br />';
407                  message_element.innerHTML += this.emotions_icons(message_text) + '<br />';
408              message_element.scrollTop = message_element.scrollHeight;
409
410              var handler_sendMessage = function(data)
411              {
412                         var data = func.interface(data);
413                 if(!data)
414                    alert(data);
415              }
416                  XMLTools.request('$this.Ujabber.SendMessage','POST',handler_sendMessage,"to="+pJID+"&body="+escape(message_text));
417           }
418        };
419
420        IM.prototype.getComposing = function(data)
421        {
422                if ( data.hasChildNodes() )
423                {
424                        var node = data.documentElement.firstChild;
425                        while ( node )
426                        {
427                                var composing;
428                                if ( node.nodeName == 'composing' )
429                                        if ( (composing = func.byId(node.getAttribute('from') + '_composing')) )
430                                                if ( composing.style.display = 'none' )
431                                                        composing.style.display = 'block';
432
433                                if ( node.nodeName == 'paused' )
434                                        if ( (composing = func.byId(node.getAttribute('from') + '_composing')) )
435                                                if ( composing.style.display = 'block' )
436                                                        composing.style.display = 'none';
437
438                                node = node.nextSibling;
439                        }
440                }
441        };
442
443        /*
444         * Get_lang
445         */
446
447        IM.prototype.get_lang = function(_key, _arg1, _arg2, _arg3, _arg4)
448        {
449           var _value = "";
450
451           if ( !lang_im[_key.toLowerCase()] )
452              return _key + "*";
453
454           _value = lang_im[_key.toLowerCase()];
455
456           if ( _arg1 || _arg2 ||_arg3 || _arg4 )
457           {
458              for (j = 1; j <= 4; j++ )
459                 if( eval("_arg"+j) )
460                 {
461                    var regExp = new RegExp("%" + j + "");
462                    _value = _value.replace(regExp, eval("_arg"+j));
463                 }
464           }
465
466           return _value;
467        };
468
469        IM.prototype.getWinContactsState = function()
470        {
471           try
472           {
473              var win_state = false;
474                  win_state = ( windowItems['contacts'].state == WINDOW_STATE_REGULAR ) ? true : false;
475                  win_state = ( win_state ) ? win_state : ( windowItems['contacts'].state == WINDOW_STATE_MAXIMIZED ) ? true : false;
476              return win_state;
477
478           }catch(e){}
479        };
480
481        IM.prototype.showContacts = function()
482        {
483           if ( this.getWinContactsState() )
484              im_win.windowClose('contacts_im');
485           else
486           {
487              im_win.windowMaximizeRestore('contacts_im');
488           }
489        };
490
491   /*
492        *  Smiles
493    */
494
495    IM.prototype.emotions_icons = function(pEmotion)
496    {
497           var emotion_regexp;
498           for ( i in cod_emotions )
499       {
500                  try
501                  {
502                         emotion_regexp = new RegExp(cod_emotions[i][1], 'gi');
503             if ( emotion_regexp.test(pEmotion) )
504             {
505                var image = eval('smile_' + cod_emotions[i][0] + '.src.substr(smile_' +cod_emotions[i][0]  + '.src.indexOf(im_path))');
506                            emotion_regexp = new RegExp(cod_emotions[i][1], 'gi');
507                pEmotion = pEmotion.replace(emotion_regexp, '<img emotion="' + i + '" src="' + image + '">');
508             }
509                  }
510                  catch(e)
511                  {
512                          //alert(e.description)
513                  }
514       }
515       return pEmotion;
516    }
517
518        IM.prototype.atalho = function()
519        {
520           if ( (local = func.byId('user_info')) && !(func.byId('myStatus')) )
521           {
522         var aux  = new Array();
523         var _mix = func.newEl('a', 'a', 'img', 'img', 'dl');
524
525         var fast_menu_link  = _mix[0];
526         var contacts_link   = _mix[1];
527         var fast_menu_image = _mix[2];
528         var contacts_image  = _mix[3];
529         var im_fast_menu    = _mix[4];
530
531         fast_menu_link.onclick = function(){IM.showFastMenu();};
532         contacts_link.onclick  = function(){IM.showContacts();};
533
534         aux['fast_menu_image'] = new Array();
535         aux['fast_menu_image']['element'] = fast_menu_image;
536         aux['fast_menu_image']['style']   = 'width:9px;height:9px';
537         aux['fast_menu_image']['src']     = im_path + 'templates/default/images/menuarwopen.gif';
538
539         aux['im_fast_menu'] = new Array();
540         aux['im_fast_menu']['element'] = im_fast_menu;
541         aux['im_fast_menu']['id']      = 'fast_menu_im';
542         aux['im_fast_menu']['class']   = 'menu_im';
543
544         aux['contacts_image'] = new Array();
545         aux['contacts_image']['element'] = contacts_image;
546         aux['contacts_image']['id']      = 'myStatus';
547         aux['contacts_image']['src']     = eval('img_' + statusFlag + '.src');
548         aux['contacts_image']['style']   = 'width:15px;height:15px';
549         func.confEl(aux);
550
551         func.insEl(fast_menu_image, fast_menu_link);
552         func.insEl(contacts_image, contacts_link);
553         func.insElB(fast_menu_link, contacts_link, im_fast_menu, document.createTextNode(' '), local.firstChild);
554           }
555           else
556              setTimeout('IM.atalho()', 5000);
557        };
558
559        /*
560         * Vcard
561         */
562
563        IM.prototype.Vcard = function()
564        {
565                var _this = this;
566                if( _this.count_Vcard < 4)
567                {
568                        var handler_getVcard = function(_XMLdata)
569                        {
570                                var data = _XMLdata.getElementsByTagName('retorno').item(0);
571                                data = eval(data.firstChild.nodeValue);
572                                if(!data)
573                                        setTimeout("IM.Vcard()",2000);
574                                _this.count_Vcard++;
575                        };
576                        XMLTools.request('$this.Ujabber.Vcard','GET',handler_getVcard);
577                }else{
578                        var handler_getVcardUser = function(XMLdata)
579                        {
580                        };
581                        XMLTools.request('$this.Ujabber.VcardUser','GET',handler_getVcardUser);
582                }
583
584        };
585
586        IM.prototype.getVcard = function(data)
587        {
588                  var _this = this;
589                  try
590                  {
591                             if ( data.getElementsByTagName('vcard').length > 0  && !_this.statusvcard )
592                             {
593                                 var div = document.getElementById("im_vcard_contacts");
594                                 var xsl = XMLTools.load(im_path + 'xsl/vcard_contacts.xsl?' + Date.parse(new Date));
595                                 _this.statusvcard = true;
596
597                                 div.innerHTML = "";
598                                 div.innerHTML += XMLTools.transform(data, xsl);
599                                 IM_Preferences.vCardInit();                             
600                                 }
601
602
603                  }catch(e){}
604        };
605
606        IM.prototype.open_chat = function(pJID)
607        {
608           im_win.open_chat(pJID);
609        };
610
611        IM.prototype.action_button = function(pEv, pJid)
612        {
613                try
614                {
615                        if ( pEv.button > 1 )
616                        {
617                                var posx = 0;
618                                var posy = 0;
619                                if (pEv.pageX || pEv.pageY)
620                                {
621                                        posx = pEv.pageX;
622                                        posy = pEv.pageY;
623                                }
624                                else if (pEv.clientX || pEv.clientY)
625                                {
626                                        posx = pEv.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
627                                        posy = pEv.clientY + document.body.scrollTop + document.documentElement.scrollTop;
628                                }
629                                this.menu_button_right(pJid, posx, posy);
630                                document.oncontextmenu = new Function("return false");
631                        }
632                        else
633                                if ( func.byId(pJid).firstChild.src != img_unavailable.src )
634                                        this.open_chat(pJid);
635                }catch(e){}
636        };
637
638        IM.prototype.menu_button_right = function(pElement, pX, pY)
639        {
640           var form_menu_button_right = '<dl style="z-index:99999">'+
641                                        '<dt><a href="javascript:void(0);" onclick="javascript:IM_Preferences.Update_NickName(\''+pElement+'\');"><img src="'+img_group_close.src+'">' + IM.get_lang('Nick') + '</a>'+
642                                        '<dt><a href="javascript:void(0);" onclick="javascript:IM_Preferences.Update_Group(\''+pElement+'\');"><img src="'+img_group_close.src+'">' + IM.get_lang('Group') + '</a>'+
643                                        '<dt><a href="javascript:void(0);" onclick="javascript:IM_Preferences.RemoveContact(\''+pElement+'\');"><img src="'+img_group_close.src+'">' + IM.get_lang('Delete') + '</a>'+
644                                                                        '<dt><a href="javascript:void(0);" onclick="javascript:Subscription.RequestAutorization(\''+pElement+'\');"><img src="'+img_group_close.src+'">' + IM.get_lang('(Re)-requisitar Autorização') + '</a>' +                                       
645                                        '<dt><a href="javascript:void(0);" onclick="javascript:IM_Preferences.vCardLoad_Contact(\''+pElement+'\');"><img src="'+img_group_close.src+'">' + IM.get_lang('See Info') + '</a>'+
646                                        '</dl>';
647           im_menu_action.menu('menu_contato', form_menu_button_right);
648           func.byId('menu_contato').style.top = pY-10;
649           func.byId('menu_contato').style.left = pX-10;
650           func.byId('menu_contato').style.zIndex = zValue + 10;
651        };
652
653        /*
654         * Menu
655         */
656
657        IM.prototype.menu_preferences = function()
658        {
659                  var posx = 0;
660                  var posy = 0;
661                  var pEv = arguments[0];
662
663                  if (pEv.pageX || pEv.pageY)
664                  {
665                          posx = pEv.pageX;
666                          posy = pEv.pageY;
667                  }
668                  else if (pEv.clientX || pEv.clientY)
669                  {
670                          posx = pEv.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
671                          posy = pEv.clientY + document.body.scrollTop + document.documentElement.scrollTop;
672                  }
673
674                  var p_element = document.getElementById(arguments[1]);
675                  var _xmlDoc = "";
676                  var _this = this;
677
678                  _xmlDoc = '<menu>' +
679                                                '<item function="IM_Preferences.Add_userLoad()" lang="'+IM.get_lang('Add Contact')+'"/>' +
680                                                '<item function="IM_Preferences.Remove_userLoad()" lang="'+IM.get_lang('Remove Contact')+'"/>' +
681                                                '<item function="IM_Preferences.vCard()" lang="'+IM.get_lang('Vcard')+'"/>' +
682                                                '<item function="IM_Preferences.yourPreferences()" lang="'+IM.get_lang('preferences')+'"/>' +
683                                        '</menu>';
684
685              im_menu_action.menu(p_element.id,parse_XmlXsl(_xmlDoc,'menu_preferences.xsl'));
686              func.byId(p_element).style.top = posy;
687              func.byId(p_element).style.left = posx;
688              func.byId(p_element).style.zIndex = zValue + 10;
689
690              _this.Load_Images_menu();
691        }
692
693        IM.prototype.Load_Images_menu = function(Element)
694        {
695                try
696                {
697                        var group = document.getElementById("dl_im_menu_preferences");
698                        var Child =  group.childNodes;
699
700                        for(var i = 0; i < Child.length; i++)
701                        {
702                                var img = document.createElement('img');
703                                img.src = img_menu.src;
704                                Child[i].firstChild.insertBefore(img, Child[i].firstChild.firstChild);
705                        }
706                }catch(e){}
707        }
708
709   /*
710        *  Função Provisória - By AlC
711        */
712
713        function parse_XmlXsl(_xmlDoc, form_xsl)
714        {
715                  var xslWin = false;
716
717                  if ( !xslWin ) xslWin = XMLTools.load(im_path + 'xsl/' + form_xsl + '?' + Date.parse(new Date));
718
719                  a = document.createElement('div');
720                  if (window.ActiveXObject)
721                  {
722                     var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
723                     xmlDoc.async = "false";
724                     xmlDoc.loadXML(_xmlDoc);
725                  }
726                  else
727                  {
728                     var parser = new DOMParser();
729                     var xmlDoc = parser.parseFromString(_xmlDoc, "text/xml");
730                  }
731                  a.innerHTML = XMLTools.transform(xmlDoc, xslWin);
732
733                  return a;
734
735        }
736
737   IM.prototype.showFastMenu = function()
738   {
739                 var _dt = func.newEl('dt', 'dt', 'dt', 'dt', 'dt');
740                 var _a  = func.newEl('a', 'a', 'a', 'a', 'a');
741
742                 for ( var i in _dt )
743                 {
744                    if ( typeof _dt[i] == 'function' )
745                       continue;
746                    eval('var option' + (parseInt(i)+1) + ' = _dt[' + i + '];');
747                    eval('var option' + (parseInt(i)+1) + '_link = _a[' + i + '];');
748                 }
749
750                 var _img = func.newEl('img', 'img', 'img', 'img','img');
751
752                 for ( var i in _img )
753                 {
754                    if ( typeof _dt[i] == 'function' )
755                       continue;
756                    eval('var option' + (parseInt(i)+1) + '_image = _img[' + i + '];');
757                 }
758
759                 option1_link.onclick = function(){statusFlag = 'available'; IM.setStatus('available');};
760                 option2_link.onclick = function(){statusFlag = 'xa'; IM.setStatus('xa');};
761                 option3_link.onclick = function(){statusFlag = 'dnd'; IM.setStatus('dnd');};
762                 option4_link.onclick = function(){statusFlag = 'unavailable'; IM.setStatus('unavailable');};
763                 option5_link.onclick = function(){IM.setStatus('custom')};
764
765                 func.confEl(option1_image, 'src', img_available.src);
766                 func.confEl(option1_image, 'style', 'width:16px;height:16px;cursor:pointer;');
767                 func.confEl(option2_image, 'src', img_xa.src);
768                 func.confEl(option2_image, 'style', 'width:16px;height:16px;cursor:pointer;');
769                 func.confEl(option3_image, 'src', img_dnd.src);
770                 func.confEl(option3_image, 'style', 'width:16px;height:16px;cursor:pointer;');
771                 func.confEl(option4_image, 'src', img_unavailable.src);
772                 func.confEl(option4_image, 'style', 'width:16px;height:16px;cursor:pointer;');
773                 func.confEl(option5_image, 'src', img_edit.src);
774                 func.confEl(option5_image, 'style', 'width:16px;height:16px;cursor:pointer;');
775
776                 func.insEl(option1_image, IM.get_lang('online'), option1_link);
777                 func.confEl(option1_link, 'style','cursor:pointer;');
778                 func.insEl(option1_link, option1);
779
780                 func.insEl(option2_image, IM.get_lang('away'), option2_link);
781                 func.confEl(option2_link, 'style','cursor:pointer;');
782                 func.insEl(option2_link, option2);
783
784                 func.insEl(option3_image, IM.get_lang('busy'), option3_link);
785                 func.confEl(option3_link, 'style','cursor:pointer;');
786                 func.insEl(option3_link, option3);
787
788                 func.insEl(option4_image, IM.get_lang('offline'), option4_link);
789                 func.confEl(option4_link, 'style','cursor:pointer;');
790                 func.insEl(option4_link, option4);
791
792                 func.insEl(option5_image, IM.get_lang('Custom message...'), option5_link);
793                 func.confEl(option5_link, 'style','cursor:pointer;');
794                 func.insEl(option5_link, option5);
795
796                 im_menu_action.menu('fast_menu_im', option1, option2, option3, option4, option5);
797   };
798
799        IM.prototype.setStatus = function(pStatus)
800        {
801                try
802                {
803                        var handler = function()
804                        {
805                        };
806
807                        if ( func.byId('fast_menu_im').style.display == 'block' )
808                                im_menu_action.menu('fast_menu_im', null);
809                       
810                        if ( pStatus == 'custom' )
811                        {
812                                pStatus = prompt('Personalize seu Status : ');
813                                pStatus = 'show=' + statusFlag + '&status=' + pStatus;
814                        }
815                        else
816                        {
817                                if ( pStatus == 'unavailable' )
818                                {
819                                        this.ImgStatus(pStatus);
820                                        pStatus = 'type=' + pStatus;
821                                }
822                                else
823                                {
824                                        try
825                                        {
826                                                this.ImgStatus(pStatus);
827                                                pStatus = 'show=' + pStatus;
828                                        }
829                                        catch(e)
830                                        {}
831                                }
832                        }
833                        XMLTools.request('$this.Ujabber.setPresence', 'POST', handler, pStatus);
834                }
835                catch(e)
836                {}
837        };
838
839   IM.prototype.ImgStatus = function(pStatus)
840   {
841                var myStatus;
842                if ( (myStatus = func.byId('myStatus')) )
843                        myStatus.src = eval('img_' + pStatus + '.src');
844   };
845
846   IM.prototype.setAway = function()
847   {
848      if ( statusFlag != 'available' || this._listen > 0 )
849         return false;
850
851      if ( awayFlag )
852      {
853             this.setStatus('available');
854         awayFlag = false;
855      }
856      else
857      {
858         this.setStatus('xa');
859         awayFlag = true;
860      }
861   };
862
863        IM.prototype.infoContact = function(pUid)
864        {
865                try
866                {
867                        var info = false;
868                        var div_allg = document.getElementById('all_groups');
869                        var elements = div_allg.firstChild;
870                        while ( elements )
871                        {
872                                var childs = elements.firstChild;
873                                while( childs )
874                                {
875                                        if(childs.tagName == "DIV" && childs.id.indexOf(pUid) === 0 )
876                                        {
877                                                info = {'jid':childs.id, 'src':childs.firstChild.src};
878                                                break;
879                                        }
880                                        childs = childs.nextSibling;
881                                }
882                                if ( !info )
883                                        elements = elements.nextSibling;
884                                else
885                                        break;
886                        }
887                        return info;
888                }
889                catch(e)
890                {
891                        return false;
892                }
893        };
894
895var IM = new IM();
Note: See TracBrowser for help on using the repository browser.