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

Revision 632, 6.7 KB checked in by niltonneto, 15 years ago (diff)

Modulo calendar_new renomeado para expressoCalendar

  • 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
98        XMLTools.prototype = {
99                "__DEBUG__" : false,
100                "__DEFAULT_URI__" : 'inc/controller.php?action=',
101                "__HTTP__" : null,
102                "__MODE__" : 'X',
103                "__RETURN_MODE_DEFAULT__" : 'JSON',
104                "__RETURN_MODE__" : false,
105                "__THREADS__" : [],
106                "http" : function()
107                {
108                        try
109                        {
110                                this.__HTTP__ = new XMLHttpRequest();
111                                this.__HTTP__.overrideMimeType('text/xml');
112                        }
113                        catch (e)
114                        {
115                                try
116                                {
117                                        this.__HTTP__ = new ActiveXObject('Msxml2.XMLHTTP');
118                                }
119                                catch (e1)
120                                {
121                                        try
122                                        {
123                                                this.__HTTP__ = new ActiveXObject('Microsoft.XMLHTTP');
124                                        }
125                                        catch (e2)
126                                        {
127                                                this.__HTTP__ = null;
128                                        }
129                                }
130                        }
131                },
132                "request" : function(pTarget, pMethod, pHandler, pData)
133                {
134                        if ( typeof pHandler != 'function' || this.__THREADS__[pTarget] )
135                                return false;
136                        connector.showProgressBar();
137
138                        var __this = this;
139                        var __pTarget = pTarget
140                                this.http();
141                        var __HTTP__ = this.__HTTP__;
142                        this.__THREADS__[pTarget] = pHandler;
143
144                        var __handler = function ()
145                        {
146                                try
147                                {
148                                        if ( __HTTP__.readyState == 4 )
149                                        {
150                                                switch ( __HTTP__.status )
151                                                {
152                                                        case 200:
153                                                                var data = ( __this.__MODE__ == 'X' ) ?
154                                                                        __HTTP__.responseXML :
155                                                                        __HTTP__.responseText;
156
157                                                                var handler = __this.__THREADS__[__pTarget];
158                                                                delete __this.__THREADS__[__pTarget];
159                                                                handler(data, __pTarget);
160                                                                break; /* [case : status 200] */
161                                                        case 404:
162                                                                alert('Page Not Found!');
163                                                                break; /* [case : status 404] */
164                                                        default:
165                                                }
166                                        }
167                                }
168                                catch(e)
169                                {
170                                        if ( __this.__DEBUG__ ) alert("request : #2\n\n" + e)
171                                }
172                        }
173
174                        try
175                        {
176                                var target = this.__DEFAULT_URI__ + pTarget;
177                                if ( this.__RETURN_MODE__ )
178                                {
179                                        target += '&returnMode=' + this.__RETURN_MODE__;
180                                        this.__RETURN_MODE__ = false;
181                                }
182                                else
183                                        target += '&returnMode=' + this.__RETURN_MODE_DEFAULT__;
184
185                                if ( pMethod == 'POST' )
186                                {
187                                        __HTTP__.open("POST", target, true);
188                                        __HTTP__.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
189                                        __HTTP__.setRequestHeader('Cache-Control',  'no-store, no-cache, must-revalidate');
190                                        __HTTP__.setRequestHeader('Cache-Control', 'post-check=0, pre-check=0');
191                                        __HTTP__.setRequestHeader('Pragma', 'no-cache');
192                                        __HTTP__.onreadystatechange = __handler;
193                                        pData = ( pData ) ? pData : null ;
194                                }
195                                else
196                                {
197                                        __HTTP__.open("GET", target, true);
198                                        __HTTP__.onreadystatechange = __handler;
199                                        pData = null;
200                                }
201                                __HTTP__.send(pData);
202                        }
203                        catch(e)
204                        {
205                                if ( this.__DEBUG__ ) alert("request : #1\n\n" + e)
206                        }
207                        setTimeout('connector.hideProgressBar()',100);
208                        return true;
209                },
210                "load" : function( pFile )
211                {
212                        connector.showProgressBar();
213                        var data = null;
214                        if ( document.implementation.createDocument )
215                                data = document.implementation.createDocument("", "", null);
216                        else
217                                data = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
218
219                        data.async = false;
220                        data.load(pFile);
221                        setTimeout('connector.hideProgressBar()',100);
222                        return data;
223                },
224
225                "ParseXmlXsl" : function( _xmlDoc, xslForm )
226                {
227                        var xslWin = false     
228
229                                //if( !xslWin ) xslWin = this.load(this.path + 'xsl/' + xslForm + '?' + Date.parse(new Date));
230
231                                var a = document.createElement('div');
232                        if ( window.ActiveXObject )
233                        {
234                                var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
235                                xmlDoc.async = "false";
236                                xmlDoc.loadXML(_xmlDoc);
237                        }
238                        else
239                        {
240                                var parser = new DOMParser();
241                                var xmlDoc = parser.parseFromString( _xmlDoc, "text/xml");                     
242                        }
243
244                        a.innerHTML = this.transform(xmlDoc,xslForm );
245
246                        return a;
247                },
248
249                "transform" : function( pXML, pXSL )
250                {
251                        try
252                        {
253                                var fragment = null;
254                                if ( window.XSLTProcessor )
255                                {
256                                        var xslProc = new XSLTProcessor();
257                                        xslProc.importStylesheet(pXSL);
258                                        fragment = xslProc.transformToFragment(pXML, document);
259
260                                        // para retornar valor igual ao ie.
261                                        var aux = document.createElement("div");
262                                        aux.appendChild(fragment);
263                                        fragment = aux.innerHTML;
264                                }
265                                else
266                                {
267                                        var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate");
268                                        xslTemplate.stylesheet = pXSL;
269
270                                        var myXslProc = xslTemplate.createProcessor();
271                                        myXslProc.input = pXML;
272
273                                        myXslProc.transform();
274                                        fragment = myXslProc.output;
275                                }
276                                return fragment;
277                        }catch(e)
278                        {
279                                alert("transform\n\n" + e + "\n\n" + e.description);
280                        }
281                }       
282        };
283
284        var XMLTools = new XMLTools();
285        var xtools = new XTools;
Note: See TracBrowser for help on using the repository browser.