source: sandbox/expresso2.2/preferences/js/connector.js @ 1914

Revision 1914, 7.3 KB checked in by amuller, 14 years ago (diff)

Ticket #670 - Implementação de pref. obrig. por grupo

  • Property svn:executable set to *
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">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.send(null);
160}
161
162function unserialize(str)
163{
164
165        var matchB = function (str, iniPos)
166        {
167                var nOpen, nClose = iniPos;
168                do
169                {
170                        nOpen = str.indexOf('{', nClose+1);
171                        nClose = str.indexOf('}', nClose+1);
172
173                        if (nOpen == -1)
174                        {
175                                return nClose;
176                        }
177                        if (nOpen < nClose )
178                        {
179                                nClose = matchB(str, nOpen);
180                        }
181                } while (nOpen < nClose);
182
183                return nClose;
184        }
185
186        var f = function (str)
187        {
188                switch (str.charAt(0))
189                {
190                        case 'a':
191                                var data = new Array();
192                                var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) );
193                                var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}'));
194
195                                for (var i = 0; i < n; i++)
196                                {
197                                        var pos = 0;
198
199                                        /* Process Index */
200                                        var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1);
201                                        var index = f(indexStr);
202                                        pos = arrayContent.indexOf(';', pos)+1;
203
204                                        /* Process Content */
205                                        var part = null;
206                                        switch (arrayContent.charAt(pos))
207                                        {
208                                                case 'a':
209                                                        var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1;
210                                                        part = arrayContent.substring(pos, pos_);
211                                                        pos = pos_;
212                                                        data[index] = f(part);
213                                                        break;
214
215                                                case 's':
216                                                        var pval = arrayContent.indexOf(':', pos+2);
217                                                        var val  = parseInt(arrayContent.substring(pos+2, pval));
218                                                        pos = pval + val + 4;
219                                                        data[index] = arrayContent.substr(pval+2, val);
220                                                        break;
221
222                                                default:
223                                                        part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1);
224                                                        pos = arrayContent.indexOf(';', pos)+1;
225                                                        data[index] = f(part);
226                                                        break;
227                                        }
228                                        arrayContent = arrayContent.substr(pos);
229                                }
230                                break;
231
232                        case 's':
233                                var pos = str.indexOf(':', 2);
234                                var val = parseInt(str.substring(2,pos));
235                                var data = str.substr(pos+2, val);
236                                str = str.substr(pos + 4 + val);
237                                break;
238
239                        case 'i':
240                        case 'd':
241                                var pos = str.indexOf(';');
242                                var data = parseInt(str.substring(2,pos));
243                                str = str.substr(pos + 1);
244                                break;
245
246                        case 'N':
247                                var data = null;
248                                str = str.substr(str.indexOf(';') + 1);
249                                break;
250
251                        case 'b':
252                                var data = str.charAt(2) == '1' ? true : false;
253                                break;
254                }
255                return data;
256        }
257        unserialized = f(str);
258        return unserialized;
259}
260var unserialized = new Object();
261
262// Serialize Data Method
263function serialize(data)
264{
265        var f = function(data)
266        {
267                var str_data;
268
269                if (data == null ||
270                                (typeof(data) == 'string' && data == ''))
271                {
272                        str_data = 'N;';
273                }
274
275                else switch(typeof(data))
276                {
277                        case 'object':
278                                var arrayCount = 0;
279
280                                str_data = '';
281
282                                for (i in data)
283                                {
284                                        if (i == 'length')
285                                        {
286                                                continue;
287                                        }
288
289                                        arrayCount++;
290                                        switch (typeof(i))
291                                        {
292                                                case 'number':
293                                                        str_data += 'i:' + i + ';' + f(data[i]);
294                                                        break;
295
296                                                case 'string':
297                                                        str_data += 's:' + i.length + ':"' + i + '";' + f(data[i]);
298                                                        break;
299
300                                                default:
301                                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
302                                                        break;
303                                        }
304                                }
305                                if (!arrayCount)
306                                {
307                                        str_data = 'N;';       
308                                }
309                                else
310                                {
311                                        str_data = 'a:' + arrayCount + ':{' + str_data + '}';
312                                        }
313
314                                        break;
315
316                                        case 'string':
317                                        str_data = 's:' + data.length + ':"' + data + '";';
318                                        break;
319
320                                        case 'number':
321                                        str_data = 'i:' + data + ';';
322                                        break;
323
324                                        case 'boolean':
325                                        str_data = 'b:' + (data ? '1' : '0') + ';';
326                                        break;
327
328                                        default:
329                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
330                                        return null;
331                                }
332
333                                return str_data;
334                }
335
336                return f(data);
337        }
Note: See TracBrowser for help on using the repository browser.