source: companies/celepar/jabberit_messenger/js/windows.js @ 763

Revision 763, 8.6 KB checked in by niltonneto, 15 years ago (diff)

Importação inicial do Expresso da Celepar

Line 
1(function()
2{
3        var _drag_drop = new JITDragDrop();
4
5        var _xtools;
6        var index = 10000;
7        var _all_windows = [];
8
9        function _load(pId)
10        {
11                if ( !(document.getElementById(pId + '__window_master')) )
12                {
13                        var xml = _xtools.xml('window');
14
15                        var name = xml.createElement('name');
16                        name.appendChild(xml.createTextNode(pId));
17                        xml.documentElement.appendChild(name);
18
19                        var _window = document.createElement("div");
20                        _window.innerHTML = _xtools.parse(xml, 'window.xsl');
21                        _window.setAttribute('id', pId + '__window_master');
22                        _window.setAttribute('class', 'window');
23                        _window.setAttribute('className', 'window');
24
25                        _window = this._TARGET.appendChild(_window);
26
27                        _focus(_window);
28
29                        function _click(e)
30                        {
31                                _focus(e);
32                                _window.oncontextmenu = new Function("return false");
33                                return false;
34                        }
35
36                        _config(_window, 'onmousedown', _click);
37
38                        _drag_drop.drag(_window);
39                        _window.childNodes[1].setAttribute('dragdrop_child','true');
40                        _window.childNodes[1].childNodes[0].setAttribute('dragdrop_child','true');
41                        _window.childNodes[1].childNodes[1].setAttribute('dragdrop_child','true');
42
43                        _config(_window.childNodes[1].childNodes[2].childNodes[0], 'onclick', _button);
44                        _config(_window.childNodes[1].childNodes[2].childNodes[1], 'onclick', _button);
45                        _config(_window.childNodes[1].childNodes[2].childNodes[2], 'onclick', _button);
46
47                        _all_windows[pId + '__window_master'] = {
48                                'id' : pId,
49                                'wm' : _window, // wm - window master
50                                'ic' : _window.childNodes[1].firstChild, // wt - window title
51                                'wt' : _window.childNodes[1].childNodes[1], // wt - window title
52                                'bc' : _window.childNodes[1].childNodes[2].childNodes[0], // bc - button close
53                                'bx' : _window.childNodes[1].childNodes[2].childNodes[1], // bx - button maximize
54                                'bz' : _window.childNodes[1].childNodes[2].childNodes[2], // bz - button minimize
55                                'wc' : _window.childNodes[2].firstChild, // wc - window content
56                                'wf' : _window.childNodes[3], // wf - window footer
57                                'button' : _button,
58                                'content' : _content,
59                                'close' : function()
60                                {
61                                        _button(_window.childNodes[1].childNodes[2].childNodes[0]);
62                                },
63                                'focus' : _focus,
64                                'hidden' : function()
65                                {
66                                        _button(_window.childNodes[1].childNodes[2].childNodes[2]);
67                                },
68                                'icon' : _icon,
69                                'loading' : function()
70                                {
71                                        var _information = document.createElement('span');
72                                                _information.appendChild(
73                                                        document.createTextNode(imGetLang('Loading'))
74                                                );
75
76                                        var _loading = document.createElement('div');
77                                                _loading.className = 'loading';
78                                                _loading.appendChild(_information);
79
80                                        _content.call(this, _loading);
81                                },
82                                'position' : _position,
83                                'show' : function()
84                                {
85                                        _window.style.display = 'block';
86                                },
87                                'size' : _size,
88                                'title' : _title
89                        };
90
91                }
92                return _all_windows[pId + '__window_master'];
93        }
94
95        function _browser()
96        {
97                var _width = 0, _height = 0;
98                if ( typeof( window.innerWidth ) == 'number' )
99                {
100                        //Non-IE
101                        _width = window.innerWidth;
102                        _height = window.innerHeight;
103                }
104                else if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
105                {
106                        //IE 6+ in 'standards compliant mode'
107                        _width = document.documentElement.clientWidth;
108                        _height = document.documentElement.clientHeight;
109                }
110                else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
111                {
112                        //IE 4 compatible
113                        _width = document.body.clientWidth;
114                        _height = document.body.clientHeight;
115                }
116
117                return {'width' : _width, 'height' : _height}
118        }
119
120        function _button()
121        {
122                var b = arguments[0];
123                b = ( !b.type ) ?
124                        b : ( b.target ) ?
125                                b.target : b.srcElement;
126
127                var w = b.parentNode.parentNode.parentNode;
128                switch ( b.title )
129                {
130                        case 'close' :
131                                w.parentNode.removeChild(w);
132                                delete _all_windows[w.id];
133                        break;
134                        case 'minimize' :
135                                w.style.display = 'none';
136                        break;
137                        case 'maximize' :
138                                if ( !w.getAttribute('wParams') )
139                                {
140                                        var _wParams  = (parseFloat(w.style.width) - 13);
141                                                _wParams += ':' + parseFloat(w.childNodes[2].firstChild.style.maxHeight);
142                                                _wParams += ':' + parseFloat(w.style.left);
143                                                _wParams += ':' + parseFloat(w.style.right);
144                                                _wParams += ':' + parseFloat(w.style.top);
145                                                _wParams += ':' + parseFloat(w.style.bottom);
146                                        w.setAttribute('wParams', _wParams);
147
148                                        var _bwr = _browser();
149                                        w.style.top = "0px";
150                                        w.style.left = "0px";
151                                        w.style.height = "100%";
152                                        w.style.width = "100%";
153
154                                        var _style = w.childNodes[2].firstChild.getAttribute('style');
155                                        if ( typeof _style == 'object' && _style.cssText )
156                                                _style = _style.cssText;
157
158                                        if ( w.childNodes[2].firstChild.style.cssText )
159                                                w.childNodes[2].firstChild.style.cssText = '';
160
161                                        _style = _style.replace(/max-height: ?\d+;?/i, '');
162
163                                        w.childNodes[2].firstChild.setAttribute('style', _style);
164
165                                        w.childNodes[2].firstChild.style.height = (_bwr.height - 41) + "px";
166                                }
167                                else
168                                {
169                                        var _wParams = w.getAttribute('wParams').split(':');
170                                        w.removeAttribute('wParams');
171
172                                        var _style = w.getAttribute('style');
173                                        if ( typeof _style == 'object' && _style.cssText )
174                                                _style = _style.cssText;
175
176                                        _style = _style.replace(/height: ?100%;?/i, '').replace(/width: ?100%;?/i, '');
177                                        _style = _style.replace(/left: ?0px;?/i, '').replace(/top: ?0px;?/i, '');
178
179                                        // for IE
180                                        if ( w.style.cssText )
181                                                w.style.cssText = '';
182
183                                        w.setAttribute('style', _style);
184
185                                        w = _all_windows[w.id];
186
187                                        _style = w.wc.getAttribute('style');
188                                        if ( typeof _style == 'object' && _style.cssText )
189                                                _style = _style.cssText;
190
191                                        _style = _style.replace(/height: ?\d+px;?/i, '');
192
193                                        // for IE
194                                        if ( w.wc.style.cssText )
195                                                w.wc.style.cssText = '';
196
197                                        w.wc.setAttribute('style', _style);
198
199                                        w.size(parseFloat(_wParams[0]), parseFloat(_wParams[1]));
200
201                                        var x = '';
202                                        var _right = false;
203                                        if ( !isNaN(_wParams[2]) )
204                                                x = parseFloat(_wParams[2]);
205                                        else if ( !isNaN(_wParams[3]) )
206                                        {
207                                                x = parseFloat(_wParams[3]);
208                                                _right = true;
209                                        }
210
211                                        var y = '';
212                                        var _bottom = false;
213                                        if ( !isNaN(_wParams[4]) )
214                                                y = parseFloat(_wParams[4]);
215                                        else if ( !isNaN(_wParams[5]) )
216                                        {
217                                                y = parseFloat(_wParams[5]);
218                                                _bottom = true;
219                                        }
220
221                                        w.position(x, y, _right, _bottom);
222                                }
223                        break;
224                }
225        }
226
227        function _config(pObj, pEvent, pHandler)
228        {
229                if ( typeof pObj == 'object' )
230                {
231                        if ( pEvent.substring(0, 2) == 'on' )
232                                pEvent = pEvent.substring(2, pEvent.length);
233
234                        if ( pObj.addEventListener )
235                                pObj.addEventListener(pEvent, pHandler, false);
236                        else if ( pObj.attachEvent )
237                                pObj.attachEvent('on' + pEvent, pHandler);
238                }
239        }
240
241        function _content()
242        {
243                var _content = this.wc;
244                while ( _content.hasChildNodes() )
245                        _content.removeChild(_content.firstChild);
246                var l = arguments.length;
247                for ( var i = 0; i < l; i++ )
248                        if ( typeof arguments[i] == 'object' )
249                                _content.appendChild(arguments[i]);
250                        else if ( typeof arguments[i] == 'string' )
251                                _content.innerHTML += arguments[i];
252        }
253
254        function _focus()
255        {
256                var w;
257                if ( arguments.length )
258                        w = arguments[0];
259                else
260                        w = this.wm;
261
262                w = ( !w.type ) ?
263                        w : ( w.target ) ?
264                                w.target : w.srcElement;
265
266                while ( w.id.indexOf('__window_master') == -1 )
267                        w = w.parentNode;
268
269                index += 10;
270                w.style.zIndex = index;
271        }
272
273        function _get(_pId)
274        {
275                var _win = false;
276                if ( _all_windows[_pId + '__window_master'] )
277                        _win = _all_windows[_pId + '__window_master'];
278                return _win;
279        }
280
281        function _icon(_pIcon)
282        {
283                if ( typeof _pIcon == 'string' )
284                        this.ic.style.backgroundImage = 'url(' + _pIcon + ')';
285        }
286
287        function _position(pX, pY)
288        {
289                // for IE
290                //if ( window.ActiveXObject )
291                //      this.wm.style.position = 'absolute';
292
293                if ( typeof pX == 'number' )
294                        if ( arguments[2] === true )
295                                this.wm.style.right = pX + 'px';
296                        else
297                                this.wm.style.left = pX + 'px';
298
299                if ( typeof pY == 'number' )
300                        if ( arguments[3] === true )
301                                this.wm.style.bottom = pY + 'px';
302                        else
303                                this.wm.style.top = pY + 'px';
304        }
305
306        function _size(pWidth, pHeight)
307        {
308                if ( typeof pWidth == 'number' && !isNaN(pWidth) )
309                        this.wm.style.width = (13 + pWidth) + 'px';
310
311                if ( typeof pHeight == 'number' && !isNaN(pHeight) )
312                        this.wc.style.maxHeight = pHeight + 'px';
313        }
314
315        function _title(pTitle)
316        {
317                var _title = this.wt;
318                while ( _title.hasChildNodes() )
319                        _title.removeChild(_title.firstChild);
320                _title.appendChild(document.createTextNode(pTitle));
321        }
322
323        function Windows()
324        {
325                var _argv = arguments;
326                var _argc = _argv.length;
327                if ( (_argv[_argc - 1] != null) && (_argv[_argc - 1]).id )
328                                this._TARGET = _argv[_argc - 1];
329                else
330                        this._TARGET = document.body;
331
332                _xtools = arguments[0];
333        }
334
335        Windows.prototype.load = _load;
336        Windows.prototype.get = _get;
337        window.JITWindows = Windows;
338}
339)();
Note: See TracBrowser for help on using the repository browser.