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

Revision 27, 22.3 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// Instant Messenger
2// im_functions.js
3
4   function IM()
5   {
6      this.array_lang_im  = new Array();
7      this.array_users    = new Array();
8      this.vcard_user     = new Array();
9      this.load_photo     = false;
10   }
11
12   /*
13    * Load Contatos
14    */
15
16   IM.prototype.load_im = function()
17   {
18          var force = ( arguments.length ) ? true : false;
19      var _this = this;
20      Sincro.count = 0;
21
22      var handler_contacts = function(data)
23      {
24            _this.array_users.splice(0,_this.array_users.length);
25            _this.array_users = data;
26            _this.mount_list(data);
27            _this.conf_VcardUser(data[0]);
28      }
29
30      if ( force || this.getWinContactsState() )
31         cIM.cExecute("$this.Ujabber.list_user",handler_contacts);
32   }
33       
34   /*
35    * Update Contatos
36    */
37
38   IM.prototype.UpdateContacts = function()
39   {
40      var _this = this;
41      _this.load_im();
42   }
43
44   IM.prototype.showContacts = function()
45   {
46      if ( this.getWinContactsState() )
47         im_win.windowClose('contacts_im');
48      else
49      {
50         im_win.windowMaximizeRestore('contacts_im');
51         this.load_im();
52      }
53   }
54
55   IM.prototype.getWinContactsState = function()
56   {
57      try
58      {
59         var win_state = false;
60             win_state = ( windowItems['contacts'].state == WINDOW_STATE_REGULAR ) ? true : false;
61             win_state = ( win_state ) ? win_state : ( windowItems['contacts'].state == WINDOW_STATE_MAXIMIZED ) ? true : false;
62         return win_state;
63      }
64      catch(e)
65      {
66         return false;
67      }
68   }
69   /*
70        * Monta Lista de Contatos
71        */
72       
73        IM.prototype.mount_list = function(pList)
74        {
75
76                // Manutencao
77        //
78        //   var div_manutencao = document.getElementById('contacts_im_window_body_inner');
79        //       div_manutencao.innerHTML = '<p align="center"><img src='+img_manutencao_im.src+'></p>';
80                //       return false;
81                //
82                //
83               
84                var _this = this;
85                var group = "";
86                var div   = document.getElementById("div_contacts");
87                        div.innerHTML = "";
88
89                        div.innerHTML += '<img id="img_all_groups" src=' + img_group_open.src +
90                                         ' onclick=javascript:IM.visible_group("all_groups")>' +
91                                                 '<b>'+_this.get_lang('list of contacts') + ' - ' + ( pList.length - 1 ) + '</b><br>' +
92                                         '<div id="all_groups"></div>';
93
94                for(var i=1; i < pList.length; i++){
95
96                        var div_agroups = document.getElementById("all_groups");
97                        group = decodeURI(pList[i].group);
98                        group = group.rm_space();
99                        if(document.getElementById("img_" + group) == null ){
100
101                                div_agroups.innerHTML += '<img id="img_' + group + '" src="' + img_group_open.src + '" onclick="javascript:IM.visible_group(\'' + group + '\')" style="margin-left:16px;">';
102                                div_agroups.innerHTML += '<b>' + decodeURI(pList[i].group) + '</b></br>';
103
104                                if(group != 'sem_grupo'){
105                                        var div_group = document.createElement('DIV');
106                                                div_group.id = group;
107                                                if(pList[i].subscription.rm_space() == "both")
108                                                        div_group.innerHTML += '<div id="' + pList[i].jid + '" nuncontact="'+ i +'" onmouseover="this.className=\'contato_hover\'" onmouseout="this.className=\'\'" onmousedown="javascript:IM.action_button(event, \''+pList[i].online + '\', \'' + pList[i].jid + '\' ,false);" style="cursor:pointer;padding-left:32px;"><img src="' + ((pList[i].online) == parseInt(1) ? img_online.src : img_offline.src) + '">' + decodeURI(pList[i].name) + '</div><span id="_span_' + pList[i].jid + '" class="menu_im"></span>';
109                                                else
110                                                        div_group.innerHTML += '<div id="' + pList[i].jid + '" nuncontact="'+ i +'" onmouseover="this.className=\'contato_hover\'" onmouseout="this.className=\'\'" onmousedown="javascript:IM.action_button(event, \''+parseInt(0)+'\', \'' + pList[i].jid + '\' ,true);" style="cursor:pointer;padding-left:32px;"><img src="' + img_not_authorized.src + '">' + decodeURI(pList[i].name) + '</div><span id="_span_' + pList[i].jid + '" class="menu_im"></span>';
111                                                div_agroups.appendChild(div_group);
112                                }else{
113                                        var div_group = document.createElement('DIV');
114                                                div_group.id = group;
115                                                div_group.innerHTML += '<div id="'+pList[i].jid+'" onclick=Preferences.updateLoad("'+pList[i].jid+'") style="cursor:pointer;padding-left:32px;">'+
116                                                                                           '<img src="'+img_not_authorized.src+'">'+pList[i].jid+'</div>';
117                                                div_agroups.appendChild(div_group);                                     
118                                }
119                        }else{
120
121                                if(group != 'sem_grupo'){
122                                        var div_group = document.getElementById(group);
123                                        if(pList[i].subscription.rm_space() == "both")
124                                                div_group.innerHTML += '<div id="' + pList[i].jid + '" nuncontact="'+ i +'" onmouseover="this.className=\'contato_hover\'" onmouseout="this.className=\'\'" onmousedown="javascript:IM.action_button(event, \''+pList[i].online + '\', \'' + pList[i].jid + '\',false);" style="cursor:pointer;padding-left:32px;"><img src="' + ((pList[i].online) == parseInt(1) ? img_online.src : img_offline.src) + '">' + decodeURI(pList[i].name) + '</div><span id="_span_' + pList[i].jid + '" class="menu_im"></span>';
125                                        else
126                                                div_group.innerHTML += '<div id="' + pList[i].jid + '" nuncontact="'+ i +'" onmouseover="this.className=\'contato_hover\'" onmouseout="this.className=\'\'" onmousedown="javascript:IM.action_button(event, \''+parseInt(0)+'\', \'' + pList[i].jid + '\',true);" style="cursor:pointer;padding-left:32px;"><img src="' + img_not_authorized.src + '">' + decodeURI(pList[i].name) + '</div><span id="_span_' + pList[i].jid + '" class="menu_im"></span>';                                     
127                                        div_agroups.appendChild(div_group);
128                                }else{
129                                        var div_group = document.getElementById(group);
130                                                div_group.innerHTML += '<div id="'+pList[i].jid+'" onclick=Preferences.updateLoad("'+pList[i].jid+'") style="cursor:pointer;padding-left:32px;">'+
131                                                                                           '<img src="'+img_not_authorized.src+'">'+pList[i].jid+'</div>';
132                                                div_agroups.appendChild(div_group);
133                                }       
134                        }
135                }
136                setTimeout("Templates.Users_Not_Auth()",2500);
137        }
138
139   /*   
140        *  Requisitar autorização;
141        */
142
143        IM.prototype.Authorization = function(pJid,pSubscription)
144        {
145                if(confirm("Enviar pedido?")){
146                        var handler_accept_request = function(data){
147                                if(!data)
148                                        alert("Pedido já foi enviado!");
149                        }
150                        cIM.cExecute("$this.Ujabber.AcceptRequest",handler_accept_request,"jid="+pJid+"&subscription="+pSubscription);
151                }
152        }
153
154   /*   
155        *  Grupos dos Contatos;
156        */
157
158        IM.prototype.visible_group = function(el)
159        {
160                var _this = this;
161                el = el.rm_space();
162                var div = document.getElementById(el);
163                div.style.display = "none";
164                var img = document.getElementById("img_" + el);
165                img.onclick = function(){_this.unvisible_group(el)};
166                img.src = img_group_close.src;
167       
168        }
169       
170        IM.prototype.unvisible_group = function(el)
171        {
172                var _this = this;
173                el = el.rm_space();
174                var div = document.getElementById(el);
175                div.style.display = "";
176                var img = document.getElementById("img_" + el);
177                img.onclick = function(){_this.visible_group(el)};
178                img.src = img_group_open.src;
179       
180        }
181
182        /*
183         *  Conf. Vcard
184         */
185       
186        IM.prototype.conf_VcardUser = function(data)
187        {
188                var _this = this;
189
190                // Vcard pessoal;
191                if ( !_this.load_photo ){
192
193                        _this.vcard_user['VCARD_FN'] = decodeURI(data.VCARD_FN);
194                        _this.vcard_user['VCARD_NICKNAME'] = decodeURI(data.VCARD_NICKNAME);
195                        _this.vcard_user['VCARD_ORGNAME']  = decodeURI(data.VCARD_ORGNAME);
196                        _this.vcard_user['VCARD_ORGUNIT']  = decodeURI(data.VCARD_ORGUNIT);
197                        _this.vcard_user['VCARD_ROLE'] = decodeURI(data.VCARD_ROLE);
198                        _this.vcard_user['VCARD_BDAY'] = decodeURI(data.VCARD_BDAY);
199                        _this.vcard_user['VCARD_DESC'] = decodeURI(data.VCARD_DESC);
200                        _this.vcard_user['VCARD_JID']  = decodeURI(data.VCARD_JID);
201                       
202                        im_win.get_photo_ldap(decodeURI(data['VCARD_JID']));
203                        _this.load_photo = true;
204                }
205       
206                // NickName;
207                if(_this.vcard_user['VCARD_NICKNAME'] != "")
208                        document.getElementById('span_nickname').innerHTML = "<b>&nbsp;" + _this.vcard_user['VCARD_NICKNAME'].substring(0,30) + "</b>";
209                else
210                        document.getElementById('span_nickname').innerHTML = "<b>&nbsp;" + IM.get_lang('your nickname') + "</b>";
211               
212                // Custom Message;
213                if(_this.vcard_user['VCARD_DESC'] != "")
214                        document.getElementById('span_message').innerHTML = "<b>&nbsp;" + _this.vcard_user['VCARD_DESC'].substring(0,30) + "</b>";
215                else
216                        document.getElementById('span_message').innerHTML = "<b>&nbsp;" + IM.get_lang('your message') + "</b>";                 
217       
218        }
219
220   /*   
221        *  Menu
222        */
223
224        IM.prototype.visible_box = function()
225        {
226                var _this = this;
227                document.getElementById('list_users').style.display = "";
228                var img = document.getElementById('box_menu');
229                img.onclick = function(){_this.unvisible_box()};
230                img.src = img_open_box.src;
231        }
232
233        IM.prototype.unvisible_box = function()
234        {
235                var _this = this;
236                document.getElementById('list_users').style.display = "none";
237                var img = document.getElementById('box_menu');
238                img.onclick = function(){_this.visible_box()};
239                img.src = img_close_box.src;
240        }
241
242   /*   
243        *  Traduções
244        */
245
246        // Translate words and phrases using user language from eGroupware.
247        IM.prototype.get_lang = function(_key,_arg1,_arg2,_arg3,_arg4)
248        {
249                var _this = this;
250                if(!_this.array_lang_im[0]){           
251                        return _key+"*";
252                }
253                _value = "";   
254                for(i = 0; i < _this.array_lang_im[0].length;i++){
255                        if(_this.array_lang_im[0][i] == _key.toLowerCase()) {
256                                _value = _this.array_lang_im[1][i];                                     
257                                break;
258                        }
259                }       
260               
261                if(!_value)
262                        return _key+"*";
263                               
264                if(_arg1 || _arg2 ||_arg3 || _arg4) {
265                        for(j = 1; j <= 4; j++){
266                                if(eval("_arg"+j)) {
267                                        var regExp = new RegExp("%"+j+"");             
268                                        _value = _value.replace(regExp,eval("_arg"+j));
269                                }
270                        }
271                }
272               
273                return _value;
274        }
275
276        /*
277         *  Pega Mensagens
278         */
279
280        IM.prototype.getMessage = function()
281        {
282                var _this = this;
283                var handler_message = function(data)
284                {
285                        if( data.length > 0)
286                        {
287                                var TimeStamp           = "";
288                                var jid                     = "";
289                                var nickname            = "";
290                                var body_message        = "";
291                                var window_message  = "";
292
293                                for( var i=0; i < data.length; i++)
294                                {                       
295                                        jid          = data[i].from;
296                                        body_message = data[i].body;
297                                        TimeStamp        = data[i].timestamp;
298                                       
299                                        jid = jid.substr(0,jid.indexOf('/'));
300                                        body_message = decodeURI(body_message.replace(/\\\'/g, '\''));
301
302                                        window_message  = document.getElementById(jid + "_chatMessages");
303                                        nickname = jid;
304
305                                        for( var j=1; j < IM.array_users.length; j++ )
306                                        {
307                                                if( jid == IM.array_users[j].jid ){
308                                                        nickname = IM.array_users[j].VCARD_NICKNAME;
309                                                }
310                                        }
311
312                        if ( window_message )
313                        {
314                           window_message.innerHTML += '<strong>' + '['+ TimeStamp +']' + nickname + ' fala:</strong><br/> ' + _this.emotions_icons(body_message) + '<br/><br/>';
315                       if ( windowItems[jid].state != WINDOW_STATE_REGULAR && windowItems[jid].state != WINDOW_STATE_MAXIMIZED )
316                          im_win.showWindowItem(jid);
317                        }
318                        else
319                        {
320                           im_win.open_chat(jid);
321                           window_message = document.getElementById(jid + '_chatMessages');
322                           window_message.innerHTML += '<strong>' + '['+ TimeStamp +']' + nickname + ' fala:</strong><br/> ' + _this.emotions_icons(body_message) + '<br/><br/>';
323                        }
324                                }
325                               
326                                window_message.scrollTop = window_message.scrollHeight;
327                                im_win.newMessageNotification();
328                        }       
329                }
330                cIM.cExecute("$this.Ujabber.getMessages", handler_message);                     
331        }
332
333   /*
334        * Envia Mensagens
335        */
336
337   IM.prototype.sendMessage = function (pJID)
338   {
339      var _this = this;
340      var name_document = document.getElementById(pJID + '_edita');
341      var envio = name_document.contentWindow.document.getElementsByTagName('body').item(0);
342
343      envio.innerHTML = func.trim(envio.innerHTML.replace(/^(&nbsp;|<br>| )*|(&nbsp;|<br>| )*$/g, ''));
344
345      if ( envio.innerHTML != "" )
346      {
347         var message_text  = "<div style='";
348         message_text += (envio.style.fontFamily != "") ? "font-family:"+envio.style.fontFamily+";" : "";
349         message_text += (envio.style.fontSize != "") ? "font-size:"+envio.style.fontSize+";" : "" ;
350         message_text += (envio.style.fontWeight != "") ? "font-weight:"+envio.style.fontWeight+";": "";
351         message_text += (envio.style.fontStyle != "" ) ? "font-style:"+envio.style.fontStyle+";" : "";
352         message_text += (envio.style.color != "") ? "color:"+envio.style.color+";" : "color:black";
353         message_text += "'>";
354         message_text += envio.innerHTML + "</div>";
355
356         envio.innerHTML = '';
357
358         var message_element = document.getElementById(pJID + '_chatMessages');
359         message_element.innerHTML += '<strong>' + ((_this.vcard_user['VCARD_NICKNAME'] != "") ? _this.vcard_user['VCARD_NICKNAME'] : _this.vcard_user['VCARD_JID'] );
360         message_element.innerHTML += ' ' + _this.get_lang('speak') + ':</strong><br/>';
361         message_element.innerHTML += _this.emotions_icons(message_text.replace(/^(&nbsp;|<br>| )*|(&nbsp;|<br>| )*$/g, '')) + '<br/>';
362
363         message_element.scrollTop = message_element.scrollHeight;
364
365         var handler_sendMessage = function(data)
366         {
367            if(!data)
368               alert(data);
369         }
370         cIM.cExecute("$this.Ujabber.SendMessage",handler_sendMessage,"to="+pJID+"&body="+url_encode(encodeURI(message_text)));
371      }
372   }
373       
374        /*
375         *  Smiles
376         */
377
378   IM.prototype.emotions_icons = function(pMessage)
379   {
380      for ( i = 1; i < cod_emotions.length; i++ )
381      {
382         var image = eval('smile_' + i + '.src.substr(smile_' + i + '.src.indexOf(im_path))')
383         pMessage  = pMessage.replace(cod_emotions[i], '<img src="' + image + '">');
384      }
385      return pMessage;
386   }
387
388   IM.prototype.atalho = function()
389   {
390      if ( local = func.byId('user_info') )
391      {
392         var aux  = new Array();
393         var _mix = func.newEl('a', 'a', 'img', 'img', 'dl');
394
395         var fast_menu_link  = _mix[0];
396         var contacts_link   = _mix[1];
397         var fast_menu_image = _mix[2];
398         var contacts_image  = _mix[3];
399         var im_fast_menu    = _mix[4];
400
401         fast_menu_link.onclick = function(){IM.showFastMenu();};
402         contacts_link.onclick  = function(){IM.showContacts();};
403
404         aux['fast_menu_image'] = new Array();
405         aux['fast_menu_image']['element'] = fast_menu_image;
406         aux['fast_menu_image']['style']   = 'width:9px;height:9px';
407         aux['fast_menu_image']['src']     = im_path + 'templates/default/images/menuarwopen.gif';
408
409         aux['im_fast_menu'] = new Array();
410         aux['im_fast_menu']['element'] = im_fast_menu;
411         aux['im_fast_menu']['id']      = 'fast_menu_im';
412         aux['im_fast_menu']['class']   = 'menu_im';
413
414         aux['contacts_image'] = new Array();
415         aux['contacts_image']['element'] = contacts_image;
416         aux['contacts_image']['id']      = 'chat_bubble';
417         aux['contacts_image']['src']     = im_path + 'templates/default/images/navbar.png';
418         aux['contacts_image']['style']   = 'width:15px;height:15px';
419         func.confEl(aux);
420
421         func.insEl(fast_menu_image, fast_menu_link);
422         func.insEl(contacts_image, contacts_link);
423         func.insElB(fast_menu_link, contacts_link, im_fast_menu, document.createTextNode(' '), local.firstChild);
424      }
425      else
426         setTimeout('IM.atalho()', 5000);
427   }
428
429   IM.prototype.showFastMenu = function()
430   {
431      if ( !messages_timeout )
432      {
433         var option       = func.newEl('dt');
434         var option_link  = func.newEl('a');
435         var option_image = func.newEl('img');
436
437         option_link.onclick = function(){IM.login();};
438
439         func.confEl(option_image, 'src', img_online.src);
440         func.confEl(option_image, 'style', 'width:16px;height:16px;');
441
442         func.insEl(option_image, IM.get_lang('login'), option_link);
443         func.insEl(option_link, option);
444
445         im_menu_action.menu('fast_menu_im', option);
446      }
447      else
448      {
449         var _dt = func.newEl('dt', 'dt', 'dt', 'dt', 'dt');
450         var _a  = func.newEl('a', 'a', 'a', 'a', 'a');
451
452         for ( var i in _dt )
453         {
454            if ( typeof _dt[i] == 'function' )
455               continue;
456            eval('var option' + (parseInt(i)+1) + ' = _dt[' + i + '];');
457            eval('var option' + (parseInt(i)+1) + '_link = _a[' + i + '];');
458         }
459
460         var _img = func.newEl('img', 'img', 'img', 'img');
461
462         for ( var i in _img )
463         {
464            if ( typeof _dt[i] == 'function' )
465               continue;
466            eval('var option' + (parseInt(i)+1) + '_image = _img[' + i + '];');
467         }
468
469         option1_link.onclick = function(){IM.setStatus('online');};
470         option2_link.onclick = function(){IM.setStatus('idle');};
471         option3_link.onclick = function(){IM.setStatus('busy');};
472         option4_link.onclick = function(){IM.logout();};
473         option5_link.onclick = function(){IM.setStatus('custom')};
474
475         func.confEl(option1_image, 'src', img_online.src);
476         func.confEl(option1_image, 'style', 'width:16px;height:16px;');
477         func.confEl(option2_image, 'src', img_idle.src);
478         func.confEl(option2_image, 'style', 'width:16px;height:16px;');
479         func.confEl(option3_image, 'src', img_busy.src);
480         func.confEl(option3_image, 'style', 'width:16px;height:16px;');
481         func.confEl(option4_image, 'src', img_offline.src);
482         func.confEl(option4_image, 'style', 'width:16px;height:16px;');
483
484         func.insEl(option1_image, IM.get_lang('online'), option1_link);
485         func.insEl(option1_link, option1);
486         func.insEl(option2_image, IM.get_lang('????'), option2_link);
487         func.insEl(option2_link, option2);
488         func.insEl(option3_image, IM.get_lang('busy'), option3_link);
489         func.insEl(option3_link, option3);
490         func.insEl(option4_image, IM.get_lang('offline'), option4_link);
491         func.insEl(option4_link, option4);
492         func.insEl(IM.get_lang('Custom message...'), option5_link);
493         func.insEl(option5_link, option5);
494
495         im_menu_action.menu('fast_menu_im', option1, option2, option3, option4, option5);
496      }
497   }
498
499   IM.prototype.setStatus = function(pStatus)
500   {
501      im_menu_action.menu('fast_menu_im', null);
502   }
503
504   IM.prototype.getStatus = function()
505   {
506   }
507
508   IM.prototype.login = function()
509   {
510      try
511      {
512         im_menu_action.menu('fast_menu_im', null);
513         Sincro.get_list();
514         Sincro.get_Message();
515         var contacts_image = func.byId('chat_bubble');
516         contacts_image.parentNode.onclick = function(){IM.showContacts()};
517         func.confEl(contacts_image, 'src', im_path + 'templates/default/images/navbar.png');
518      }
519      catch (e)
520      {
521      }
522   }
523
524   IM.prototype.logout = function()
525   {
526      im_menu_action.menu('fast_menu_im', null);
527      clearTimeout(messages_timeout);
528      clearTimeout(contacts_timeout);
529      messages_timeout = false;
530      contacts_timeout = false;
531      var contacts_image = func.byId('chat_bubble');
532      contacts_image.parentNode.onclick = function(){IM.showFastMenu()};
533      func.confEl(contacts_image, 'src', img_chat_bubble.src);
534   }
535
536   IM.prototype.menu_preferences = function(pElement)
537   {
538      if ( document.getElementById(pElement).innerHTML == "" )
539      {
540         var form_pref  = "<dl>";
541            form_pref += "<dt><a href='javascript:void(0)' onclick='javascript:Preferences.Add_userLoad()'>";
542            form_pref += "<img src="+img_menu.src+">&nbsp;"+IM.get_lang('Add Contact')+"</a></dt>";
543            form_pref += "<dt><a href='javascript:void(0)' onclick='javascript:Preferences.Remove_userLoad()'>";
544            form_pref += "<img src="+img_menu.src+">&nbsp;"+IM.get_lang('Remove Contact')+"</a></dt>";
545            form_pref += "<dt><a href='javascript:void(0)' onclick='javascript:Preferences.vCardLoad()'>";
546            form_pref += "<img src="+img_menu.src+">&nbsp;"+IM.get_lang('Information')+"</a></dt>";
547            form_pref += "</dl>";
548         im_menu_action.menu(pElement, form_pref);
549      }
550   }
551
552   IM.prototype.menu_button_right = function(pElement,pReq)
553   {
554      var form_menu_button_right = '<dl>';
555              if(pReq)
556              {
557                    form_menu_button_right += '<dt><a href="javascript:void(0);" onclick="javascript:IM.Authorization(\''+pElement+'\',\'from\');"><img src="'+img_group_close.src+'">' + IM.get_lang('Authorization') + '</a>';                                   
558                  }
559          form_menu_button_right += '<dt><a href="javascript:void(0);" onclick="javascript:Preferences.Update_NickName(\''+pElement+'\');"><img src="'+img_group_close.src+'">' + IM.get_lang('Nick') + '</a>'+
560                                    '<dt><a href="javascript:void(0);" onclick="javascript:Preferences.SendFile(\''+pElement+'\');"><img src="'+img_group_close.src+'">' + IM.get_lang('Send File') + '</a>'+
561                                    '<dt><a href="javascript:void(0);" onclick="javascript:Preferences.Update_Group(\''+pElement+'\');"><img src="'+img_group_close.src+'">' + IM.get_lang('Group') + '</a>'+
562                                    '<dt><a href="javascript:void(0);" onclick="javascript:Preferences.Remove_Contact(\''+pElement+'\');"><img src="'+img_group_close.src+'">' + IM.get_lang('Delete') + '</a>'+
563                                                                    '<dt><a href="javascript:void(0);" onclick="javascript:Preferences.vCardLoad_Contact(\''+pElement+'\');"><img src="'+img_group_close.src+'">' + IM.get_lang('See Info') + '</a>'+
564                                    '</dl>';
565      im_menu_action.menu("_span_" + pElement, form_menu_button_right);
566   }
567
568        /*
569         * url_encode
570         */
571       
572        function url_encode(str)
573    {
574            var hex_chars = "0123456789ABCDEF";
575            var noEncode = /^([a-zA-Z0-9\_\-\.])$/;
576            var n, strCode, hex1, hex2, strEncode = "";
577       
578            for( n = 0; n < str.length; n++ )
579       {
580                if ( noEncode.test(str.charAt(n)) )
581           {
582                    strEncode += str.charAt(n);
583                }
584           else
585           {
586                    strCode = str.charCodeAt(n);
587                    hex1 = hex_chars.charAt(Math.floor(strCode / 16));
588                    hex2 = hex_chars.charAt(strCode % 16);
589                    strEncode += "%" + (hex1 + hex2);
590                }
591            }
592            return strEncode;
593        } 
594
595        /*
596         *  Ação do botão onclick da lista de contatos;
597         */
598
599        IM.prototype.action_button = function(pEv,pStatus,pJid,pReq)
600        {
601                var _this = this;
602                if(pEv.button > 1){
603                        _this.menu_button_right(pJid,pReq);
604                        document.oncontextmenu = new Function("return false");
605                }else{
606                        if(pStatus == parseInt(1))
607                                _this.open_chat(pJid);
608                }
609        }
610       
611        /*
612         * Abre Conversa
613         */
614
615        IM.prototype.open_chat = function(pJID)
616        {
617      func.byId(pJID).firstChild.src = img_chat_bubble.src;
618      im_win.open_chat(pJID);
619        }
620
621
622        String.prototype.rm_space = function()
623        {
624        return this.replace(/( *)/g,"");
625        }
626
627// Build Object
628        var IM = new IM();
Note: See TracBrowser for help on using the repository browser.