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

Revision 2397, 13.1 KB checked in by alexandrecorreia, 14 years ago (diff)

Ticket #986 - Importacao do modulo trophy integrado ao expresso.

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