source: sandbox/jabberit_messenger/trophy/js/loadIM.js @ 2339

Revision 2339, 8.5 KB checked in by alexandrecorreia, 14 years ago (diff)

Ticket #986 - Refeita a lista de contatos para o uso de forms xsl.

  • Property svn:executable set to *
Line 
1(function()
2{
3        var path                        = "/jmessenger/";
4        var _showhidden         = null;
5        var _xtools                     = null;
6        var zIndex                      = 9001;
7       
8        function configEvents(pObj, pEvent, pHandler)
9        {
10                if ( typeof pObj == 'object' )
11                {
12                        if ( pEvent.substring(0, 2) == 'on' )
13                                pEvent = pEvent.substring(2, pEvent.length);
14
15                        if ( pObj.addEventListener )
16                                pObj.addEventListener(pEvent, pHandler, false);
17                        else if ( pObj.attachEvent )
18                                pObj.attachEvent('on' + pEvent, pHandler);
19                }
20        }
21       
22        function TrophyIMChatArea()
23        {
24                /*
25                var winImChatArea =
26                {
27                         id_window              : "window_chat_area",
28                         width                  : 490,
29                         height                 : 395,
30                         top                    : 100,
31                         left                   : 400,
32                         draggable              : true,
33                         visible                : "display",
34                         resizable              : true,
35                         zindex                 : zIndex++,
36                         title                  : "Mensagens - Expresso Messenger",
37                         closeAction    : "remove",
38                         content                : '<div id="trophyimchat"><div id="trophyimchattabs"/></div>'   
39                };
40               
41                _winBuild( winImChatArea );
42               
43                return '<div id="trophyimchat"><div id="trophyimchattabs"/></div>';
44                */
45        }
46       
47        function TrophyIMChatBox()
48        {
49                var chatBox = '<div>' +
50                                                '<div id="trophyimchattabs"/>' +
51                                                '<div class="trophyimchatbox"/>' +
52                                                        '<form name="chat" onsubmit="TrophyIM.sendMessage(this); return(false);">' +
53                                                                '<textarea class="trophyimchatinput" rows="3" cols="50"></textarea>' +
54                                                                '<input type="button" value="Send" onclick="TrophyIM.sendMessage(this)"/>' +
55                                                        '</form>' +
56                                           '</div>';
57               
58                return chatBox;
59        }
60       
61        function TrophyIMChatTab()
62        {
63        var chatTab     =       '<div class="trophyimchattab" onclick="TrophyIM.tabClick(this);">' +
64                                        '<div class="trophyimchattabjid" />' +
65                                                '<div class="trophyimtabclose" onclick="TrophyIM.tabClose(this);">X</div>' +
66                                        '<div class="trophyimchattabname" />' +
67                                '</div>';
68                return chatTab;
69        }
70       
71        function TrophyIMLoggingDiv()
72        {
73                return '<div id="trophyimlog"/>';
74        }
75       
76        function TrophyIMLoginPage()
77        {
78                setXTools();
79               
80                var winLoginPage =
81                {       
82                         id_window              : "window_login_page",
83                         width                  : 260,
84                         height                 : 150,
85                         top                    : 100,
86                         left                   : 400,
87                         draggable              : true,
88                         visible                : "display",
89                         resizable              : true,
90                         zindex                 : zIndex++,
91                         title                  : "Login - Expresso Messenger",
92                         closeAction    : "remove",
93                         content                : _xtools.parse(_xtools.xml("login_page"), "loginPage.xsl")     
94                };
95
96                _winBuild( winLoginPage );
97        }
98       
99        function TrophyIMRosterDiv()
100        {
101                setXTools();                   
102
103                var winRosterDiv =
104                {
105                         id_window              : "window_Roster_im",
106                         width                  : 250,
107                         height                 : 410,
108                         top                    : 50,
109                         left                   : 50,
110                         draggable              : true,
111                         visible                : "display",
112                         resizable              : true,
113                         zindex                 : zIndex++,
114                         title                  : "Contatos - Expresso Messenger",
115                         closeAction    : "hidden",
116                         content                : _xtools.parse(_xtools.xml("contacts_list"),"contactsList.xsl")       
117                };
118               
119                _winBuild( winRosterDiv );
120        }
121       
122        function TrophyIMRosterGroup()
123        {
124                return '<div class="trophyimrostergroup"><div class="trophyimrosterlabel"/></div>';
125        }
126       
127        function TrophyIMRosterItem()
128        {
129                var rosterItem = '<div class="trophyimrosteritem" onclick="TrophyIM.rosterClick(this)">' +
130                                                '<div class="trophyimrosterjid" />' +
131                                                '<div class="trophyimrostername" />' +
132                                         '</div>';
133       
134        return rosterItem;
135        }
136       
137        function HTMLSnippets( pType )
138        {
139                return new ( function( )
140                {
141                        //this.chatArea         = TrophyIMChatArea;
142       
143                        this.chatBox            = TrophyIMChatBox;
144       
145                        this.chatTab            = TrophyIMChatTab;
146                               
147                        this.loggingDiv         = TrophyIMLoggingDiv;
148               
149                        this.loginPage          = TrophyIMLoginPage;
150                               
151                        this.rosterDiv          = TrophyIMRosterDiv;
152                               
153                        this.rosterGroup        = TrophyIMRosterGroup;
154       
155                        this.rosterItem         = TrophyIMRosterItem;
156
157                } );
158        }
159       
160       
161        function getZindex()
162        {
163                return zIndex++;
164        }
165       
166        function groupsHidden()
167        {
168                if( arguments.length > 0 )
169                {
170                        var _element = arguments[0];
171                                _element.style.background = "url('images/arrow_right.gif')no-repeat center left";
172                                _element.onclick = function(){ groupsVisible(_element);};
173                               
174                                // Hidden all
175                                var _elementNext = _element.nextSibling;
176                               
177                                while( _elementNext )
178                                {       
179                                        _elementNext.style.display = "none";
180                                        _elementNext = _elementNext.nextSibling;
181                                }
182                }
183        }
184       
185        function groupsVisible()
186        {
187                if( arguments.length > 0 )
188                {
189                        var _element = arguments[0];
190                                _element.style.background = "url('images/arrow_down.gif')no-repeat center left";
191                                _element.onclick = function(){ groupsHidden(_element);};
192
193                                // Display all
194                                var _elementNext = _element.nextSibling;
195                               
196                                while( _elementNext )
197                                {       
198                                        _elementNext.style.display = "block";
199                                        _elementNext = _elementNext.nextSibling;
200                                }
201                }
202        }
203       
204        function parse()
205        {
206                if( arguments.length == 2 )
207                        return _xtools.parse(_xtools.xml(arguments[0]), arguments[1] );
208               
209                if( arguments.length === 3 )
210                        return _xtools.parse(_xtools.xml(arguments[0]), arguments[1], arguments[2] );
211        }
212       
213        function loadScripts(pFiles)
214        {
215                // Load JavaScript
216                var loadJavaScript = function(pJs)
217                {
218                        var newScript = document.createElement("script");
219                                newScript.setAttribute("type", "text/javascript");
220                                newScript.setAttribute("src", pJs );
221                               
222                        return newScript;
223                };
224               
225                // Load CSS
226                var loadStyleSheet = function(pCss)
227                {
228                        var newStyle = document.createElement("link");
229                                newStyle.setAttribute("rel", "stylesheet");
230                                newStyle.setAttribute("type", "text/css");
231                                newStyle.setAttribute("href", pCss);
232                               
233                        return newStyle;
234                };
235               
236                for(var i = 0; i < pFiles.length; i++)
237                {
238                        if( pFiles[i].indexOf(".js") > -1 )
239                                document.getElementsByTagName("head")[0].appendChild(loadJavaScript(pFiles[i]));
240                               
241                        if( pFiles[i].indexOf(".css") > -1 )
242                                document.getElementsByTagName("head")[0].appendChild(loadStyleSheet(pFiles[i]));
243                }
244        }
245
246       
247        function setPresence()
248        {
249                if( arguments.length > 0 )
250                {
251                        var element = arguments[0];
252                       
253                        if( _showhidden == null )
254                                _showhidden = new ShowHidden(300);
255                       
256                        var _status = [
257                                               ['Afastado', 'away', '<img src="images/away.gif" />'],
258                                               ['Disponível', 'available', '<img src="images/available.gif" />'],
259                                               ['Livre p/ Conversa', 'chat', '<img src="images/chat.gif" />'],
260                                               ['Não Disponível', 'xa', '<img src="images/xa.gif" />'],
261                                               ['Ocupado', 'dnd', '<img src="images/dnd.gif" />'],
262                                          ];
263                       
264                        var _itens = "";
265                       
266                        for( var i in _status )
267                        {
268                                _itens += '<span style="cursor:pointer;" onclick="TrophyIM.setPresence(\''+_status[i][1]+'\'); loadIM.setStatusJabber(\''+_status[i][0]+'\',\''+_status[i][1]+'\');">';
269                                _itens += _status[i][2]+ "<span style='margin:3px;'>" + _status[i][0] + "</span></span><br/>";
270                        }
271                       
272                        var _statusItens = document.createElement("div");
273                                _statusItens.setAttribute("style", "margin: 62px 0px 0px 76px;");
274                                _statusItens.className          = "x-menu";
275                                _statusItens.style.zIndex       = '99999';
276                                _statusItens.innerHTML          = _itens; 
277                                                                                 
278                                _showhidden.action('onmouseover', 'onmouseout', _statusItens);
279                               
280                        element.parentNode.onmouseout   = function(){ _showhidden.hiddenObject(false); };
281                        element.parentNode.onmouseover  = function(){ _showhidden.hiddenObject(true); };
282                        element.parentNode.appendChild(_statusItens);
283                }
284        }
285       
286        function setStatusJabber()
287        {
288                if( arguments.length > 0 )
289                {
290                        var _text       = arguments[0];
291                        var _img        = arguments[1];
292                       
293                        document.getElementById('statusJabberImg').setAttribute("style", "background-image: url('images/"+_img+".gif'); margin-left: 13px;width:15px; height:15px;");
294                        document.getElementById('statusJabberText').innerHTML = _text;
295                }       
296        }
297       
298        function setXTools()
299        {
300                if( _xtools == null )
301                        _xtools = new xtools(path);
302        }
303       
304        function loadIM()
305        {
306                var files =     [
307                                 'js/xtools.js',
308                                 'js/dragdrop.js',
309                                 'js/makeW.js',
310                                 'js/show_hidden.js',
311                                 'css/trophyim.css',
312                                 'css/window_azul.css'
313                                 //'css/window_cataratas.css'
314                                 //'css/window_celepar.css'
315                                 //'css/window_comics.css'
316                                 //'css/window_default.css'
317                                 //'css/window_escritorio.css'
318                                 //'css/window_metropole.css'
319                                 //'css/window_rochas.css'
320                            ];
321               
322                loadScripts(files);
323               
324        }
325       
326        loadIM.prototype.configEvents           = configEvents;
327        loadIM.prototype.getZIndex                      = getZindex;
328        loadIM.prototype.groupsHidden           = groupsHidden;
329        loadIM.prototype.groupsVisible          = groupsVisible;
330        loadIM.prototype.parse                          = parse;
331        loadIM.prototype.setPresence            = setPresence;
332        loadIM.prototype.setStatusJabber        = setStatusJabber;
333       
334        loadIM.prototype.HTMLSnippets           = new HTMLSnippets;
335        window.loadIM                                           = new loadIM;
336       
337})();
Note: See TracBrowser for help on using the repository browser.