source: trunk/expressoCalendar/js/connector.js @ 665

Revision 665, 8.3 KB checked in by niltonneto, 15 years ago (diff)

Alterações feitas pelo desenvolvedor, referente ao expressoCalendar (nova agenda).
Alexandre MUller => amuller@…

  • 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">'+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.body.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        div.style.visibility = 'hidden';
76        this.isVisibleBar = false;
77}
78
79cConnector.prototype.showProgressBar = function(){
80        var div = document.getElementById('divProgressBar');
81        if (! div){
82                connector.buildBar();
83                connector.showProgressBar();
84                return;
85        }
86
87        div.style.visibility = 'visible';
88
89        this.isVisibleBar = true;
90}
91
92        function XMLTools()
93        {
94                this.path = "";
95        }
96var connector = new cConnector();
97        function _xml()
98        {
99                var a = false;
100                if ( document.implementation.createDocument )
101                        a = document.implementation.createDocument("", "", null);
102                else if ( ActiveXObject )
103                        a = new ActiveXObject("Msxml2.DOMDocument");
104                if ( arguments.length == 1 && typeof arguments[0] == 'string' )
105                        a.appendChild(a.createElement(arguments[0]));
106                return a;
107        }
108        XMLTools.prototype = {
109                "__DEBUG__" : false,
110                "__DEFAULT_URI__" : 'inc/controller.php?action=',
111                "__HTTP__" : null,
112                "__MODE__" : 'X',
113                "__RETURN_MODE_DEFAULT__" : 'JSON',
114                "__RETURN_MODE__" : false,
115                "__THREADS__" : [],
116                "http" : function()
117                {
118                        try
119                        {
120                                this.__HTTP__ = new XMLHttpRequest();
121                                this.__HTTP__.overrideMimeType('text/xml');
122                        }
123                        catch (e)
124                        {
125                                try
126                                {
127                                        this.__HTTP__ = new ActiveXObject('Msxml2.XMLHTTP');
128                                }
129                                catch (e1)
130                                {
131                                        try
132                                        {
133                                                this.__HTTP__ = new ActiveXObject('Microsoft.XMLHTTP');
134                                        }
135                                        catch (e2)
136                                        {
137                                                this.__HTTP__ = null;
138                                        }
139                                }
140                        }
141                },
142                "request" : function(pTarget, pMethod, pHandler, pData)
143                {
144                        if ( typeof pHandler != 'function' || this.__THREADS__[pTarget] )
145                                return false;
146                        connector.showProgressBar();
147
148                        var __this = this;
149                        var __pTarget = pTarget
150                                this.http();
151                        var __HTTP__ = this.__HTTP__;
152                        this.__THREADS__[pTarget] = pHandler;
153
154                        var __handler = function ()
155                        {
156                                try
157                                {
158                                        if ( __HTTP__.readyState == 4 )
159                                        {
160                                                switch ( __HTTP__.status )
161                                                {
162                                                        case 200:
163                                                                var data = ( __this.__MODE__ == 'X' ) ?
164                                                                        __HTTP__.responseXML :
165                                                                        __HTTP__.responseText;
166
167                                                                var handler = __this.__THREADS__[__pTarget];
168                                                                delete __this.__THREADS__[__pTarget];
169                                                                handler(data, __pTarget);
170                                                                break; /* [case : status 200] */
171                                                        case 404:
172                                                                alert('Page Not Found!');
173                                                                break; /* [case : status 404] */
174                                                        default:
175                                                }
176                                        }
177                                }
178                                catch(e)
179                                {
180                                        if ( __this.__DEBUG__ ) alert("request : #2\n\n" + e)
181                                }
182                        }
183
184                        try
185                        {
186                                var target = this.__DEFAULT_URI__ + pTarget;
187                                if ( this.__RETURN_MODE__ )
188                                {
189                                        target += '&returnMode=' + this.__RETURN_MODE__;
190                                        this.__RETURN_MODE__ = false;
191                                }
192                                else
193                                        target += '&returnMode=' + this.__RETURN_MODE_DEFAULT__;
194
195                                if ( pMethod == 'POST' )
196                                {
197                                        __HTTP__.open("POST", target, true);
198                                        __HTTP__.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
199                                        __HTTP__.setRequestHeader('Cache-Control',  'no-store, no-cache, must-revalidate');
200                                        __HTTP__.setRequestHeader('Cache-Control', 'post-check=0, pre-check=0');
201                                        __HTTP__.setRequestHeader('Pragma', 'no-cache');
202                                        __HTTP__.onreadystatechange = __handler;
203                                        pData = ( pData ) ? pData : null ;
204                                }
205                                else
206                                {
207                                        __HTTP__.open("GET", target, true);
208                                        __HTTP__.onreadystatechange = __handler;
209                                        pData = null;
210                                }
211                                __HTTP__.send(pData);
212                        }
213                        catch(e)
214                        {
215                                if ( this.__DEBUG__ ) alert("request : #1\n\n" + e)
216                        }
217                        setTimeout('connector.hideProgressBar()',100);
218                        return true;
219                },
220                "load" : function( pFile )
221                {
222                        connector.showProgressBar();
223                        var data = null;
224                        if ( document.implementation.createDocument )
225                                data = document.implementation.createDocument("", "", null);
226                        else
227                                data = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
228
229                        data.async = false;
230                        data.load(pFile);
231                        setTimeout('connector.hideProgressBar()',100);
232                        return data;
233                },
234
235                "ParseXmlXsl" : function( _xmlDoc, xslForm )
236                {
237                        var xslWin = false     
238
239                                //if( !xslWin ) xslWin = this.load(this.path + 'xsl/' + xslForm + '?' + Date.parse(new Date));
240
241                                var a = document.createElement('div');
242                        if ( window.ActiveXObject )
243                        {
244                                var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
245                                xmlDoc.async = "false";
246                                xmlDoc.loadXML(_xmlDoc);
247                        }
248                        else
249                        {
250                                var parser = new DOMParser();
251                                var xmlDoc = parser.parseFromString( _xmlDoc, "text/xml");                     
252                        }
253
254                        a.innerHTML = this.transform(xmlDoc,xslForm );
255
256                        return a;
257                },
258
259                "transform" : function( pXML, pXSL )
260                {
261                        try
262                        {
263                                var fragment = null;
264                                if ( window.XSLTProcessor )
265                                {
266                                        var xslProc = new XSLTProcessor();
267                                        xslProc.importStylesheet(pXSL);
268                                        fragment = xslProc.transformToFragment(pXML, document);
269
270                                        // para retornar valor igual ao ie.
271                                        var aux = document.createElement("div");
272                                        aux.appendChild(fragment);
273                                        fragment = aux.innerHTML;
274                                }
275                                else
276                                {
277                                        var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate");
278                                        xslTemplate.stylesheet = pXSL;
279
280                                        var myXslProc = xslTemplate.createProcessor();
281                                        myXslProc.input = pXML;
282
283                                        myXslProc.transform();
284                                        fragment = myXslProc.output;
285                                }
286                                return fragment;
287                        }catch(e)
288                        {
289                                alert("transform\n\n" + e + "\n\n" + e.description);
290                        }
291                }       
292        };
293
294function cExecuteForm(url, form, handler){
295        connector.showProgressBar();
296        var iframe_el = document.getElementById('nullFrame');
297        if (!iframe_el)
298        {
299                iframe_el = document.createElement('IFRAME');
300                iframe_el.id = "nullFrame";
301        }
302        iframe_el.style.width = "0px";
303        iframe_el.style.height = "0px";
304        iframe_el.style.border = '0px';
305        iframe_el.name = "nullFrame";
306        iframe = document.body.appendChild(iframe_el);
307        iframe_el.setAttribute('onload', 'javascript:'+handler+'()');
308        form.target = "nullFrame";
309        form.submit();
310}
311
312function cExecute(requestURL,handler,methmd){
313        var AjaxRequest = function () {
314                Ajax = false;
315                if (window.XMLHttpRequest) //Gecko
316                        Ajax = new XMLHttpRequest();
317                else
318                        if (window.ActiveXObject) //Other nav.
319                                try
320                                {
321                                        Ajax = new ActiveXObject("Msxml12.XMLHTTP");
322                                } catch (e)
323                {
324                        Ajax = new ActiveXObject("Microsoft.XMLHTTP");
325                }
326        }
327        var responseRequest = function (){
328                if (Ajax.readyState == 4)
329                        if (Ajax.status == 200)
330                                handler(Ajax.responseText);
331                        else
332                                alert("Erro temporario de conexão");
333        }
334
335
336        AjaxRequest();
337        if (!Ajax){
338                alert("Erro ao conectar-se");
339                return;
340        }
341
342        Ajax.onreadystatechange = responseRequest;
343        if (typeof(method) == 'undefined')
344                method = 'GET';
345        Ajax.open(method, requestURL, true);
346        Ajax.send(null);
347}
348        var XMLTools = new XMLTools();
349        var xtools = new XTools;
Note: See TracBrowser for help on using the repository browser.