source: sandbox/jabberit_messenger/trophy_expresso/js/loadIM.js @ 2437

Revision 2437, 14.7 KB checked in by alexandrecorreia, 14 years ago (diff)

Ticket #986 - Adicao de contatos com resultados da busca do ldap e exclusao de contatos da lista.

  • Property svn:executable set to *
Line 
1(function()
2{
3        var fullName            = "";
4        var path                        = "";
5        var addUser                     = null;
6        var conn                        = null;
7        var selectEditable      = null;
8        var showhidden          = null;
9        var userCurrent         = null;
10        var Xtools                      = null;
11        var zIndex                      = 9001;
12       
13        // Images
14        var add_user = new Image();
15        add_user.src = path_jabberit + 'templates/default/images/adduser_azul.png';
16
17        var arrow_down = new Image();
18        arrow_down.src = path_jabberit + 'templates/default/images/arrow_down.gif';
19
20        var arrow_right = new Image();
21        arrow_right.src = path_jabberit + 'templates/default/images/arrow_right.gif';
22       
23        function actionButton()
24        {
25                if( arguments.length > 0 )
26                {
27                        var e   = arguments[0];
28                        var jid = arguments[1];
29               
30                        if ( !e )
31                                var e = window.event;
32                       
33                        ( ( e.target ) ? e.target : e.srcElement ).oncontextmenu = function(e)
34                        {
35                                return false;
36                        };
37       
38                        if ( ( e.which && e.which > 1 ) || ( e.button && e.button > 1 ) )
39                                optionsItensContact(e, jid);
40                        else
41                                TrophyIM.rosterClick(jid);
42                }
43        }
44
45        function addContact()
46        {
47                if( arguments.length > 0 )
48                        addUser.add();
49                else
50                        addUser.show();
51        }
52       
53        function addIcon()
54        {
55                var StatusBar = getElement('divStatusBar');
56
57                /**
58                 * @quando estiver habilitada a opção fora de escritório nos filtros.
59                 */
60               
61                if( div_write_msg = getElement('em_div_write_msg') )
62                {               
63                        var StatusBarIM = getElement('JabberMessenger');
64                                StatusBarIM.style.paddingLeft = '33px';
65                       
66                        div_write_msg.parentNode.insertBefore( StatusBarIM, div_write_msg );
67                       
68                        return;                 
69                }
70               
71                if( StatusBar )
72                {
73                        StatusBar.style.paddingLeft = '33px';
74                       
75                        var _div = document.createElement('div');
76                                _div.appendChild(StatusBar.parentNode.removeChild(StatusBar.previousSibling));
77                       
78                                StatusBar.parentNode.insertBefore( _div, StatusBar);
79                       
80                        var divJabber = document.createElement('div');
81                                divJabber.setAttribute('id', 'JabberMessenger');
82                       
83                        var _fastMenu = top.document.createElement('div');
84                                _fastMenu.setAttribute('id', 'fast_menu_jabber_expresso');
85                                _fastMenu.style.background              = 'no-repeat';
86                                _fastMenu.style.backgroundImage = 'url(' + arrow_down.src + ')';
87                                _fastMenu.style.float                   = 'left';
88                                _fastMenu.style.height                  = '15px';
89                                _fastMenu.style.left                    = '7px';
90                                _fastMenu.style.margin                  = '8 0 0 10px';
91                                _fastMenu.style.padding                 = '0px';
92                                _fastMenu.style.position                = 'absolute';
93                                _fastMenu.style.width                   = '15px';
94                                _fastMenu.style.cursor                  = 'pointer';
95
96                        divJabber.insertBefore( _fastMenu, divJabber.firstChild );
97                       
98                        // Add event onclick element _fastMenu
99                        configEvents( _fastMenu, 'onclick', function(){ fastMenu(_fastMenu); });
100
101                        var _statusJabber = top.document.createElement('div');
102                                _statusJabber.setAttribute('id','status_jabber_expresso');
103                                _statusJabber.style.background          = 'no-repeat';
104                                _statusJabber.style.backgroundImage = 'url(' + add_user.src +')';
105                                _statusJabber.style.float                       = 'left';
106                                _statusJabber.style.height                      = '18px';
107                                _statusJabber.style.left                        = '19px';
108                                _statusJabber.style.margin                      = '0 0 0 10px';
109                                _statusJabber.style.padding                     = '0px';
110                                _statusJabber.style.position            = 'absolute';
111                                _statusJabber.style.width                       = '18px';
112                                _statusJabber.style.cursor                      = 'pointer';
113                                _statusJabber.style.zindex                      = '999999';
114                       
115                        divJabber.insertBefore( _statusJabber, divJabber.firstChild );
116                       
117                        StatusBar.insertBefore( divJabber, StatusBar.firstChild );
118
119                        // Add event onclick element _statusJabber
120                        configEvents( _statusJabber, 'onclick', function(){ TrophyIM.load();});
121                }
122        }
123
124        function configEvents(pObj, pEvent, pHandler)
125        {
126                if ( typeof pObj == 'object' )
127                {
128                        if ( pEvent.substring(0, 2) == 'on' )
129                                pEvent = pEvent.substring(2, pEvent.length);
130
131                        if ( pObj.addEventListener )
132                                pObj.addEventListener(pEvent, pHandler, false);
133                        else if ( pObj.attachEvent )
134                                pObj.attachEvent('on' + pEvent, pHandler);
135                }
136        }
137       
138        function fastMenu()
139        {
140                if( arguments.length > 0 )
141                {
142                        var element = arguments[0];
143                       
144                        if( showhidden == null )
145                                showhidden = new ShowHidden(300);
146
147                        var _options = [
148                                                ['Adicionar Contato', 'loadIM.addContact();' ],
149                                                ['Ajuda', 'alert("2")' ],
150                                                ['Preferências', 'alert("3")'],
151                                                   ];
152
153                        var _itens = "";
154                       
155                        for( var i in _options )
156                        {
157                                _itens += '<img src="'+arrow_right.src+'"/>';
158                                _itens += '<span style="cursor:pointer; margin:3px;" onclick='+_options[i][1]+'>';
159                                _itens += _options[i][0] + '</span><br/>';
160                        }
161                       
162                        var _optionsItens = document.createElement("div");
163                                _optionsItens.setAttribute("style", "margin: 20px 0px 0px -4px;");
164                                _optionsItens.className         = "x-menu";
165                                _optionsItens.style.zIndex      = '99999';
166                                _optionsItens.innerHTML         = _itens; 
167                                                                                 
168                                showhidden.action('onmouseover', 'onmouseout', _optionsItens);
169                               
170                        element.parentNode.onmouseout   = function(){ showhidden.hiddenObject(false); };
171                        element.parentNode.onmouseover  = function(){ showhidden.hiddenObject(true); };
172                        element.parentNode.appendChild( _optionsItens );
173                       
174                }
175        }
176       
177        function getElement( elementId )
178        {
179                return document.getElementById( elementId );
180        }
181       
182        function getUserCurrent()
183        {
184                return userCurrent;
185        }
186       
187        function getZindex()
188        {
189                return zIndex++;
190        }
191       
192        function groupsHidden()
193        {
194                if( arguments.length > 0 )
195                {
196                        var _element = arguments[0];
197                                _element.style.background = "url('"+path_jabberit+"templates/default/images/arrow_right.gif')no-repeat center left";
198                                _element.onclick = function(){ groupsVisible(_element);};
199                               
200                                // Hidden all
201                                var _elementNext = _element.nextSibling;
202                               
203                                while( _elementNext )
204                                {       
205                                        _elementNext.style.display = "none";
206                                        _elementNext = _elementNext.nextSibling;
207                                }
208                }
209        }
210       
211        function groupsVisible()
212        {
213                if( arguments.length > 0 )
214                {
215                        var _element = arguments[0];
216                                _element.style.background = "url('"+path_jabberit+"templates/default/images/arrow_down.gif')no-repeat center left";
217                                _element.onclick = function(){ groupsHidden(_element);};
218
219                                // Display all
220                                var _elementNext = _element.nextSibling;
221                               
222                                while( _elementNext )
223                                {       
224                                        _elementNext.style.display = "block";
225                                        _elementNext = _elementNext.nextSibling;
226                                }
227                }
228        }
229       
230        function keyPressSearch()
231        {
232                if( arguments.length > 0 )
233                {
234                        var ev          = arguments[0];
235                        var element     = arguments[1];
236       
237                        if ( ev.keyCode == 13 )
238                                if( element.value.length >= 4 )
239                                        searchUser( element.value );   
240                                else
241                                        alert('Your search argument must be longer than 4 characters.');
242                }
243        }
244
245       
246        function loginPage()
247        {
248                var winLoginPage =
249                {       
250                         id_window              : "window_login_page",
251                         width                  : 260,
252                         height                 : 150,
253                         top                    : 100,
254                         left                   : 400,
255                         draggable              : true,
256                         visible                : "display",
257                         resizable              : true,
258                         zindex                 : zIndex++,
259                         title                  : "Login - Expresso Messenger",
260                         closeAction    : "remove",
261                         content                : Xtools.parse(Xtools.xml("login_page"), "loginPage.xsl")       
262                };
263
264                _winBuild( winLoginPage );
265        }
266
267        function loadScripts(pFiles)
268        {
269                // Load JavaScript
270                var loadJavaScript = function(pJs)
271                {
272                        var newScript = document.createElement("script");
273                                newScript.setAttribute("type", "text/javascript");
274                                newScript.setAttribute("src", pJs );
275                               
276                        return newScript;
277                };
278               
279                // Load CSS
280                var loadStyleSheet = function(pCss)
281                {
282                        var newStyle = document.createElement("link");
283                                newStyle.setAttribute("rel", "stylesheet");
284                                newStyle.setAttribute("type", "text/css");
285                                newStyle.setAttribute("href", pCss);
286                               
287                        return newStyle;
288                };
289               
290                for(var i = 0; i < pFiles.length; i++)
291                {
292                        if( pFiles[i].indexOf(".js") > -1 )
293                                document.getElementsByTagName("head")[0].appendChild(loadJavaScript(pFiles[i]));
294                               
295                        if( pFiles[i].indexOf(".css") > -1 )
296                                document.getElementsByTagName("head")[0].appendChild(loadStyleSheet(pFiles[i]));
297                }
298        }
299
300       
301        function optionsItensContact()
302        {
303                if( arguments.length > 0 )
304                {
305                        var element = ( arguments[0].target ) ? arguments[0].target : arguments[0].srcElement;
306                        var jid         = arguments[1];
307                       
308                        if( showhidden == null )
309                                showhidden = new ShowHidden(300);
310
311                        var _options = [
312                                                ['Autorizar', 'TrophyIM.setAutorization(\''+jid+'\')'],
313                                                ['Remover', 'loadIM.removeContact(\''+jid+'\')'],
314                                                ['Renomear', 'Renomear : ' + jid],
315                                                ['Trocar grupo', 'Trocar grupo : ' + jid],
316                                                   ];
317
318                        var _itens = "";
319                       
320                        for( var i in _options )
321                        {
322                                _itens += '<img src="'+arrow_right.src+'"/>';
323                                _itens += '<span style="cursor:pointer; margin:3px;" onclick='+_options[i][1]+'>';
324                                _itens += _options[i][0] + '</span><br/>';
325                        }
326                       
327                        var _optionsItens = document.createElement("div");
328                                _optionsItens.setAttribute("style", "margin: -5px 0px 0px 20px;");
329                                _optionsItens.className         = "x-menu";
330                                _optionsItens.style.zIndex      = '99999';
331                                _optionsItens.innerHTML         = _itens; 
332                                                                                 
333                                showhidden.action('onmouseover', 'onmouseout', _optionsItens);
334                               
335                        element.parentNode.onclick              = function(){ showhidden.hiddenObject(false); };
336                        element.parentNode.onmouseout   = function(){ showhidden.hiddenObject(false); };
337                        element.parentNode.onmouseover  = function(){ showhidden.hiddenObject(true); };
338                        element.parentNode.appendChild( _optionsItens );
339                }
340               
341        }
342
343        function parse()
344        {
345                if( arguments.length == 2 )
346                        return Xtools.parse(Xtools.xml(arguments[0]), arguments[1] );
347               
348                if( arguments.length === 3 )
349                        return Xtools.parse(Xtools.xml(arguments[0]), arguments[1], arguments[2] );
350        }
351       
352        function removeContact(jid)
353        {
354                TrophyIM.removeContact(jid);
355        }
356       
357        function rosterDiv()
358        {
359                var paramListContact =
360                {
361                        'path_jabberit' : path_jabberit,
362                        'full_name'             : (( fullName.length < 25 ) ? fullName : ( fullName.substring( 0, 25) + "..."))
363                };
364               
365                var winRosterDiv =
366                {
367                         id_window              : "window_Roster_im",
368                         width                  : 250,
369                         height                 : 410,
370                         top                    : 50,
371                         left                   : 50,
372                         draggable              : true,
373                         visible                : "display",
374                         resizable              : true,
375                         zindex                 : zIndex++,
376                         title                  : "Contatos - Expresso Messenger",
377                         closeAction    : "hidden",
378                         content                : Xtools.parse(Xtools.xml("contacts_list"),"contactsList.xsl", paramListContact)       
379                };
380               
381                _winBuild( winRosterDiv );
382        }
383
384        function searchUser()
385        {
386                var _input      = document.getElementById('search_user_jabber');
387               
388                if( _input.value.length >= 3 )
389                        addUser.search();
390                else
391                        alert('Your search argument must be longer than 3 characters.');
392        }
393       
394        function setSelectEditable(element)
395        {
396                if( document.getElementById('selectBox0') == null )
397                        selectEditable.create(element);
398        }
399       
400        function setPresence()
401        {
402                if( arguments.length > 0 )
403                {
404                        var element = arguments[0];
405                       
406                        if( showhidden == null )
407                                showhidden = new ShowHidden(300);
408                       
409                        var _status = [
410                                               ['Afastado', 'away', '<img src="'+path_jabberit+'templates/default/images/away.gif" />'],
411                                               ['Disponível', 'available', '<img src="'+path_jabberit+'templates/default/images/available.gif" />'],
412                                               ['Livre p/ Conversa', 'chat', '<img src="'+path_jabberit+'templates/default/images/chat.gif" />'],
413                                               ['Não Disponível', 'xa', '<img src="'+path_jabberit+'templates/default/images/xa.gif" />'],
414                                               ['Ocupado', 'dnd', '<img src="'+path_jabberit+'templates/default/images/dnd.gif" />'],
415                                          ];
416                       
417                        var _itens = "";
418                       
419                        for( var i in _status )
420                        {
421                                _itens += '<span style="cursor:pointer;" onclick="TrophyIM.setPresence(\''+_status[i][1]+'\'); loadIM.setStatusJabber(\''+_status[i][0]+'\',\''+_status[i][1]+'\');">';
422                                _itens += _status[i][2]+ "<span style='margin:3px;'>" + _status[i][0] + "</span></span><br/>";
423                        }
424                       
425                        var _statusItens = document.createElement("div");
426                                _statusItens.setAttribute("style", "margin: 62px 0px 0px 76px;");
427                                _statusItens.className          = "x-menu";
428                                _statusItens.style.zIndex       = '99999';
429                                _statusItens.innerHTML          = _itens; 
430                                                                                 
431                                showhidden.action('onmouseover', 'onmouseout', _statusItens);
432                               
433                        element.parentNode.onmouseout   = function(){ showhidden.hiddenObject(false); };
434                        element.parentNode.onmouseover  = function(){ showhidden.hiddenObject(true); };
435                        element.parentNode.appendChild(_statusItens);
436                }
437        }
438       
439        function setStatusJabber()
440        {
441                if( arguments.length > 0 )
442                {
443                        var _text       = arguments[0];
444                        var _img        = arguments[1];
445                       
446                        getElement('statusJabberImg').setAttribute("style", "background-image: url('"+path_jabberit+"templates/default/images/"+_img+".gif'); margin-left: 13px;width:15px; height:15px;");
447                        getElement('statusJabberText').innerHTML = _text;
448                        getElement('status_jabber_expresso').style.background = "url('"+path_jabberit+"templates/default/images/"+_img+".gif') no-repeat";
449                }       
450        }
451       
452        function setUserCurrent( _jid , _password )
453        {
454                userCurrent =
455                {
456                        'jid'           : _jid,
457                        'password'      : _password
458                }
459        }
460
461        function loadIM()
462        {
463                if( arguments.length > 0 )
464                {
465                        var files = [
466                                                path_jabberit + 'js/connector.js',
467                                                path_jabberit + 'js/xtools.js',
468                                                path_jabberit + 'js/dragdrop.js',
469                                                path_jabberit + 'js/makeW.js',
470                                                path_jabberit + 'js/show_hidden.js',
471                                                path_jabberit + 'js/trophyim.js',
472                                                path_jabberit + 'js/AddUser.js',
473                                                path_jabberit + 'js/SelectEditable.js',
474                                                path_jabberit + 'templates/default/css/button.css',
475                                                path_jabberit + 'templates/default/css/common.css',
476                                                path_jabberit + 'templates/default/css/selectEditableStyle.css',
477                                                path_jabberit + 'templates/default/css/' + theme_jabberit
478                                    ];
479                        // FullName
480                        fullName = arguments[0];
481                       
482                        loadScripts(files);
483                       
484                        // User & Password Jabber;
485                        setUserCurrent( arguments[1], arguments[2]);
486                       
487                        setTimeout(function()
488                        {
489                                // Object Xtools       
490                                if( Xtools == null )
491                                        Xtools = new xtools(path_jabberit);
492                               
493                                // Object Conector
494                                if( conn == null )
495                                        conn = new AjaxConnector(path_jabberit);
496                               
497                                // Object Add User
498                                if( addUser == null )
499                                        addUser = new addUserIM(Xtools, conn);
500
501                               
502                                // Object SelectEditable
503                                if( selectEditable == null )
504                                        selectEditable = new SelectEditable();
505                                       
506                                // Add Jabber in StatusBar;
507                                addIcon();
508                               
509                        }, 1000);
510                }
511        }
512       
513        loadIM.prototype.actionButton           = actionButton;
514        loadIM.prototype.addContact                     = addContact;
515        loadIM.prototype.configEvents           = configEvents;
516        loadIM.prototype.getUserCurrent         = getUserCurrent;
517        loadIM.prototype.getZIndex                      = getZindex;
518        loadIM.prototype.groupsHidden           = groupsHidden;
519        loadIM.prototype.groupsVisible          = groupsVisible;
520        loadIM.prototype.keyPressSearch         = keyPressSearch;       
521        loadIM.prototype.loginPage                      = loginPage;
522        loadIM.prototype.parse                          = parse;
523        loadIM.prototype.searchUser                     = searchUser
524        loadIM.prototype.setPresence            = setPresence;
525        loadIM.prototype.setStatusJabber        = setStatusJabber;
526        loadIM.prototype.setSelectEditable      = setSelectEditable;
527        loadIM.prototype.removeContact          = removeContact;
528        loadIM.prototype.rosterDiv                      = rosterDiv;
529       
530        window.loadIM = loadIM;
531       
532})();
Note: See TracBrowser for help on using the repository browser.