source: trunk/filemanager/js/jscode/connector.js @ 2610

Revision 2610, 7.4 KB checked in by rodsouza, 14 years ago (diff)

Ticket #1009 - Empacotando javascript do ExpressoDocs?.

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        if(! (divUpload = document.getElementById('divUpload'))) {
103                divUpload               = document.createElement('DIV');               
104                divUpload.id    = 'divUpload';
105                document.body.appendChild(divUpload);
106        }
107
108        handlerExecuteForm = handler;
109        var form_handler = function (data){
110                handlerExecuteForm(data);
111                handlerExecuteForm = null;
112        }
113        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>";
114        form.target ="uploadFile";
115        form.submit();
116}
117
118function cExecute_(requestURL,handler){
119        if (connector.isVisibleBar == true){
120                setTimeout('cExecute_("'+requestURL+'",'+handler+')',150);
121                return;
122        }
123        connector.showProgressBar();
124        var AjaxRequest = function () {
125                Ajax = false;
126                if (window.XMLHttpRequest) //Gecko
127                        Ajax = new XMLHttpRequest();
128                else
129                        if (window.ActiveXObject) //Other nav.
130                                try
131                                {
132                                        Ajax = new ActiveXObject("Msxml12.XMLHTTP");
133                                } catch (e)
134                {
135                        Ajax = new ActiveXObject("Microsoft.XMLHTTP");
136                }
137        }
138        var responseRequest = function (){
139                if (Ajax.readyState == 4)
140                        if (Ajax.status == 200){
141                                handler(Ajax.responseText);
142                                connector.hideProgressBar();
143                        }
144                        else
145                                throw("Connection error!");
146        }
147
148
149        AjaxRequest();
150        if (!Ajax){
151                throw("No connection");
152                return;
153        }
154
155        Ajax.onreadystatechange = responseRequest;
156        if (typeof(method) == 'undefined')
157                method = 'GET';
158        Ajax.open(method, requestURL, true);
159        Ajax.setRequestHeader( 'BackgroundRequest', Date.parse( new Date ) );
160        Ajax.send(null);
161}
162
163function unserialize(str)
164{
165
166        var matchB = function (str, iniPos)
167        {
168                var nOpen, nClose = iniPos;
169                do
170                {
171                        nOpen = str.indexOf('{', nClose+1);
172                        nClose = str.indexOf('}', nClose+1);
173
174                        if (nOpen == -1)
175                        {
176                                return nClose;
177                        }
178                        if (nOpen < nClose )
179                        {
180                                nClose = matchB(str, nOpen);
181                        }
182                } while (nOpen < nClose);
183
184                return nClose;
185        }
186
187        var f = function (str)
188        {
189                switch (str.charAt(0))
190                {
191                        case 'a':
192                                var data = new Array();
193                                var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) );
194                                var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}'));
195
196                                for (var i = 0; i < n; i++)
197                                {
198                                        var pos = 0;
199
200                                        /* Process Index */
201                                        var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1);
202                                        var index = f(indexStr);
203                                        pos = arrayContent.indexOf(';', pos)+1;
204
205                                        /* Process Content */
206                                        var part = null;
207                                        switch (arrayContent.charAt(pos))
208                                        {
209                                                case 'a':
210                                                        var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1;
211                                                        part = arrayContent.substring(pos, pos_);
212                                                        pos = pos_;
213                                                        data[index] = f(part);
214                                                        break;
215
216                                                case 's':
217                                                        var pval = arrayContent.indexOf(':', pos+2);
218                                                        var val  = parseInt(arrayContent.substring(pos+2, pval));
219                                                        pos = pval + val + 4;
220                                                        data[index] = arrayContent.substr(pval+2, val);
221                                                        break;
222
223                                                default:
224                                                        part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1);
225                                                        pos = arrayContent.indexOf(';', pos)+1;
226                                                        data[index] = f(part);
227                                                        break;
228                                        }
229                                        arrayContent = arrayContent.substr(pos);
230                                }
231                                break;
232
233                        case 's':
234                                var pos = str.indexOf(':', 2);
235                                var val = parseInt(str.substring(2,pos));
236                                var data = str.substr(pos+2, val);
237                                str = str.substr(pos + 4 + val);
238                                break;
239
240                        case 'i':
241                        case 'd':
242                                var pos = str.indexOf(';');
243                                var data = parseInt(str.substring(2,pos));
244                                str = str.substr(pos + 1);
245                                break;
246
247                        case 'N':
248                                var data = null;
249                                str = str.substr(str.indexOf(';') + 1);
250                                break;
251
252                        case 'b':
253                                var data = str.charAt(2) == '1' ? true : false;
254                                break;
255                }
256                return data;
257        }
258        unserialized = f(str);
259        return unserialized;
260}
261var unserialized = new Object();
262
263// Serialize Data Method
264function serialize(data)
265{
266        var f = function(data)
267        {
268                var str_data;
269
270                if (data == null ||
271                                (typeof(data) == 'string' && data == ''))
272                {
273                        str_data = 'N;';
274                }
275
276                else switch(typeof(data))
277                {
278                        case 'object':
279                                var arrayCount = 0;
280
281                                str_data = '';
282
283                                for (i in data)
284                                {
285                                        if (i == 'length')
286                                        {
287                                                continue;
288                                        }
289
290                                        arrayCount++;
291                                        switch (typeof(i))
292                                        {
293                                                case 'number':
294                                                        str_data += 'i:' + i + ';' + f(data[i]);
295                                                        break;
296
297                                                case 'string':
298                                                        str_data += 's:' + i.length + ':"' + i + '";' + f(data[i]);
299                                                        break;
300
301                                                default:
302                                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
303                                                        break;
304                                        }
305                                }
306                                if (!arrayCount)
307                                {
308                                        str_data = 'N;';       
309                                }
310                                else
311                                {
312                                        str_data = 'a:' + arrayCount + ':{' + str_data + '}';
313                                        }
314
315                                        break;
316
317                                        case 'string':
318                                        str_data = 's:' + data.length + ':"' + data + '";';
319                                        break;
320
321                                        case 'number':
322                                        str_data = 'i:' + data + ';';
323                                        break;
324
325                                        case 'boolean':
326                                        str_data = 'b:' + (data ? '1' : '0') + ';';
327                                        break;
328
329                                        default:
330                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
331                                        return null;
332                                }
333
334                                return str_data;
335                }
336
337                return f(data);
338        }
Note: See TracBrowser for help on using the repository browser.