source: sandbox/2.3-MailArchiver/filemanager/js/connector.js @ 6779

Revision 6779, 7.8 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado Expresso(branch 2.3) integrado ao MailArchiver?.

Line 
1var progressBar;
2
3if (document.all)
4{
5        navigator.userAgent.toLowerCase().indexOf('msie 5') != -1 ? is_ie5 = true : is_ie5 = false;
6        is_ie = true;
7        is_moz1_6 = false;
8        is_mozilla = false;
9        is_ns4 = false;
10}
11else if (document.getElementById)
12{
13        navigator.userAgent.toLowerCase().match('mozilla.*rv[:]1\.6.*gecko') ? is_moz1_6 = true : is_moz1_6 = false;
14        is_ie = false;
15        is_ie5 = false;
16        is_mozilla = true;
17        is_ns4 = false;
18}
19else if (document.layers)
20{
21        is_ie = false;
22        is_ie5 = false
23        is_moz1_6 = false;
24        is_mozilla = false;
25        is_ns4 = true;
26}
27
28/****************************************** Connector Class *************************************************/
29// Constructor
30function cConnector()
31{
32        this.requests = new Array();
33        this.oxmlhttp = null;
34        this.isVisibleBar = false;
35        this.tid = 0;
36        this.progressBar = null;
37        this.oldX = 0;
38        this.oldY = 0;
39        this.updateVersion = "";
40}
41cConnector.prototype.buildBar = function()
42{
43        var div = document.getElementById('divProgressBar');
44
45        if(! div) {
46                div = document.createElement("DIV");
47                //div.style.visibility  = "hidden";
48                div.style.width = "103px";
49                div.id = 'divProgressBar';
50                div.align = "center";
51                div.innerHTML = '&nbsp;&nbsp;<font face="Verdana" size="2" color="WHITE">'+get_lang('loading')+'...</font>&nbsp;';
52                div.style.background = "#cc4444";
53                div.style.position = 'fixed';
54                div.style.top = '0px';
55                div.style.right = '0px';
56                document.getElementById('divAppboxHeader').appendChild(div);
57
58                if(is_ie) {
59                        var elem = document.all[div.id];
60                        elem.style.position="absolute";
61                        var root = document.body;
62                        var posX = elem.offsetLeft-root.scrollLeft;
63                        var posY = elem.offsetTop-root.scrollTop;
64                        root.onscroll = function() {
65                                elem.style.right = '0px';
66                                elem.style.top = (posY + root.scrollTop) + "px";
67                        };
68                }
69        }
70}
71
72cConnector.prototype.hideProgressBar = function ()
73{
74        var div = document.getElementById('divProgressBar');
75        if (div != null)
76                div.style.visibility = 'hidden';
77        else
78                setTimeout('connector.hideProgressBar()',100);
79        this.isVisibleBar = false;
80}
81
82cConnector.prototype.showProgressBar = function(){
83        var div = document.getElementById('divProgressBar');
84        if (! div){
85                connector.buildBar();
86                return;
87        }
88
89        div.style.visibility = 'visible';
90
91        this.isVisibleBar = true;
92}
93
94        function XMLTools()
95        {
96                this.path = "";
97        }
98var connector = new cConnector();
99
100function cExecuteForm_(form, handler){
101        connector.showProgressBar();
102       
103        if( ! ( divUpload = document.getElementById('divUpload') ) )
104        {
105                divUpload                = document.createElement('DIV');               
106                divUpload.id             = 'divUpload';
107                document.body.appendChild(divUpload);
108        }
109
110        handlerExecuteForm = handler;
111       
112        var form_handler = function (data)
113        {
114                handlerExecuteForm(data);
115                handlerExecuteForm = null;
116        }
117       
118        divUpload.innerHTML= "<iframe onload=\"connector.hideProgressBar();cExecute_('./index.php/index.php?menuaction=filemanager.uifilemanager.getReturnExecuteForm',"+form_handler+");\"  style='display:none;width:0;height:0;' name='uploadFile'></iframe>";
119       
120        form.target ="uploadFile";
121        form.submit();
122}
123
124function cExecute_( requestURL, handler, params)
125{
126        if (connector.isVisibleBar == true)
127        {
128                setTimeout('cExecute_("'+requestURL+'",'+handler+')',150);
129                return;
130        }
131       
132        connector.showProgressBar();
133       
134        var AjaxRequest = function ()
135        {
136                Ajax = false;
137                if (window.XMLHttpRequest) //Gecko
138                        Ajax = new XMLHttpRequest();
139                else
140                        if (window.ActiveXObject) //Other nav.
141                                try
142                                {
143                                        Ajax = new ActiveXObject("Msxml12.XMLHTTP");
144                                } catch (e)
145                {
146                        Ajax = new ActiveXObject("Microsoft.XMLHTTP");
147                }
148        }
149       
150        var responseRequest = function()
151        {
152                try
153                {
154                        if ( Ajax.readyState == 4 )
155                        {
156                                switch ( Ajax.status )
157                                {
158                                        case 200:
159                                                if (typeof(handler) == 'function')
160                                                {                                                                                                                               
161                                                        connector.hideProgressBar();
162                                                        var data = Ajax.responseText;
163                                                        handler(data);
164                                                }
165
166                                                break;
167
168                                        case 404:
169                                               
170                                                alert(get_lang('Page Not Found!'));
171                                                break;
172
173                                        default:                                                                                               
174                                }
175                        }
176                }
177                catch (e)
178                {                       
179                        connector.hideProgressBar();
180                        // View Exception in Javascript Console
181                        throw(e);
182                }
183        }
184       
185        AjaxRequest();
186       
187        if (!Ajax){
188                throw("No connection");
189                return;
190        }
191
192        if( typeof(params) == 'undefined' )
193        {
194                Ajax.open('GET', requestURL, true);
195                Ajax.onreadystatechange = responseRequest;
196                Ajax.send(null);
197        }       
198        else
199        {
200                Ajax.open("POST", requestURL, true);
201                Ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
202                Ajax.onreadystatechange = responseRequest;
203                Ajax.send( params );
204        }
205}
206
207function unserialize(str)
208{
209
210        var matchB = function (str, iniPos)
211        {
212                var nOpen, nClose = iniPos;
213                do
214                {
215                        nOpen = str.indexOf('{', nClose+1);
216                        nClose = str.indexOf('}', nClose+1);
217
218                        if (nOpen == -1)
219                        {
220                                return nClose;
221                        }
222                        if (nOpen < nClose )
223                        {
224                                nClose = matchB(str, nOpen);
225                        }
226                } while (nOpen < nClose);
227
228                return nClose;
229        }
230
231        var f = function (str)
232        {
233                switch (str.charAt(0))
234                {
235                        case 'a':
236                                var data = new Array();
237                                var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) );
238                                var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}'));
239
240                                for (var i = 0; i < n; i++)
241                                {
242                                        var pos = 0;
243
244                                        /* Process Index */
245                                        var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1);
246                                        var index = f(indexStr);
247                                        pos = arrayContent.indexOf(';', pos)+1;
248
249                                        /* Process Content */
250                                        var part = null;
251                                        switch (arrayContent.charAt(pos))
252                                        {
253                                                case 'a':
254                                                        var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1;
255                                                        part = arrayContent.substring(pos, pos_);
256                                                        pos = pos_;
257                                                        data[index] = f(part);
258                                                        break;
259
260                                                case 's':
261                                                        var pval = arrayContent.indexOf(':', pos+2);
262                                                        var val  = parseInt(arrayContent.substring(pos+2, pval));
263                                                        pos = pval + val + 4;
264                                                        data[index] = arrayContent.substr(pval+2, val);
265                                                        break;
266
267                                                default:
268                                                        part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1);
269                                                        pos = arrayContent.indexOf(';', pos)+1;
270                                                        data[index] = f(part);
271                                                        break;
272                                        }
273                                        arrayContent = arrayContent.substr(pos);
274                                }
275                                break;
276
277                        case 's':
278                                var pos = str.indexOf(':', 2);
279                                var val = parseInt(str.substring(2,pos));
280                                var data = str.substr(pos+2, val);
281                                str = str.substr(pos + 4 + val);
282                                break;
283
284                        case 'i':
285                        case 'd':
286                                var pos = str.indexOf(';');
287                                var data = parseInt(str.substring(2,pos));
288                                str = str.substr(pos + 1);
289                                break;
290
291                        case 'N':
292                                var data = null;
293                                str = str.substr(str.indexOf(';') + 1);
294                                break;
295
296                        case 'b':
297                                var data = str.charAt(2) == '1' ? true : false;
298                                break;
299                }
300                return data;
301        }
302        unserialized = f(str);
303        return unserialized;
304}
305var unserialized = new Object();
306
307// Serialize Data Method
308function serialize(data)
309{
310        var f = function(data)
311        {
312                var str_data;
313
314                if (data == null ||
315                                (typeof(data) == 'string' && data == ''))
316                {
317                        str_data = 'N;';
318                }
319
320                else switch(typeof(data))
321                {
322                        case 'object':
323                                var arrayCount = 0;
324
325                                str_data = '';
326
327                                for (i in data)
328                                {
329                                        if (i == 'length')
330                                        {
331                                                continue;
332                                        }
333
334                                        arrayCount++;
335                                        switch (typeof(i))
336                                        {
337                                                case 'number':
338                                                        str_data += 'i:' + i + ';' + f(data[i]);
339                                                        break;
340
341                                                case 'string':
342                                                        str_data += 's:' + i.length + ':"' + i + '";' + f(data[i]);
343                                                        break;
344
345                                                default:
346                                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
347                                                        break;
348                                        }
349                                }
350                                if (!arrayCount)
351                                {
352                                        str_data = 'N;';       
353                                }
354                                else
355                                {
356                                        str_data = 'a:' + arrayCount + ':{' + str_data + '}';
357                                        }
358
359                                        break;
360
361                                        case 'string':
362                                        str_data = 's:' + data.length + ':"' + data + '";';
363                                        break;
364
365                                        case 'number':
366                                        str_data = 'i:' + data + ';';
367                                        break;
368
369                                        case 'boolean':
370                                        str_data = 'b:' + (data ? '1' : '0') + ';';
371                                        break;
372
373                                        default:
374                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
375                                        return null;
376                                }
377
378                                return str_data;
379                }
380
381                return f(data);
382        }
Note: See TracBrowser for help on using the repository browser.