source: trunk/instant_messenger/bkp/instant_messenger_32/js/XMLTools.js @ 151

Revision 151, 4.8 KB checked in by niltonneto, 16 years ago (diff)

Commit da nova versão do módulo, usando agente em C.
Vide Página do módulo do Trac:
http://www.expressolivre.org/dev/wiki/messenger

A versão anterior encontra-se na subpasta bkp (32/64).

Line 
1var XMLTools = {
2   "__DEBUG__" : false,
3   "__DEFAULT_URI__" : im_path + 'controller.php?action=',
4   "__HTTP__" : null,
5   "__MODE__" : 'X',
6   "__RETURN_MODE_DEFAULT__" : 'JSON',
7   "__RETURN_MODE__" : false,
8   "__THREADS__" : [],
9   "http" : function()
10   {
11      try
12      {
13         this.__HTTP__ = new XMLHttpRequest();
14         this.__HTTP__.overrideMimeType('text/xml');
15      }
16      catch (e)
17      {
18         try
19         {
20            this.__HTTP__ = new ActiveXObject('Msxml2.XMLHTTP');
21         }
22         catch (e1)
23         {
24            try
25            {
26               this.__HTTP__ = new ActiveXObject('Microsoft.XMLHTTP');
27            }
28            catch (e2)
29            {
30               this.__HTTP__ = null;
31            }
32         }
33      }
34   },
35   "load" : function(pFile)
36   {
37      var data = null;
38      if ( document.implementation.createDocument )
39             data = document.implementation.createDocument("", "", null);
40      else
41         data = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
42
43      data.async = false;
44      data.load(pFile);
45      return data;
46   },
47   "request" : function(pTarget, pMethod, pHandler, pData)
48   {
49      if ( typeof pHandler != 'function' || this.__THREADS__[pTarget] )
50         return false;
51
52      var __this = this;
53      var __pTarget = pTarget
54      this.http();
55      var __HTTP__ = this.__HTTP__;
56      this.__THREADS__[pTarget] = pHandler;
57
58      var __handler = function ()
59      {
60         try
61         {
62            if ( __HTTP__.readyState == 4 )
63            {
64               switch ( __HTTP__.status )
65               {
66                  case 200:
67                        var data = ( __this.__MODE__ == 'X' ) ?
68                                    __HTTP__.responseXML :
69                                    __HTTP__.responseText;
70
71                        var handler = __this.__THREADS__[__pTarget];
72                        delete __this.__THREADS__[__pTarget];
73                        handler(data, __pTarget);
74                  break; /* [case : status 200] */
75                  case 404:
76                        alert('Page Not Found!');
77                  break; /* [case : status 404] */
78                  default:
79               }
80            }
81         }
82         catch(e)
83         {
84            if ( __this.__DEBUG__ ) alert("request : #2\n\n" + e)
85         }
86      }
87
88      try
89      {
90         var target = this.__DEFAULT_URI__ + pTarget;
91         if ( this.__RETURN_MODE__ )
92         {
93            target += '&returnMode=' + this.__RETURN_MODE__;
94            this.__RETURN_MODE__ = false;
95         }
96         else
97            target += '&returnMode=' + this.__RETURN_MODE_DEFAULT__;
98
99         if ( pMethod == 'POST' )
100         {
101            __HTTP__.open("POST", target, true);
102            __HTTP__.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
103            __HTTP__.setRequestHeader('Cache-Control',  'no-store, no-cache, must-revalidate');
104            __HTTP__.setRequestHeader('Cache-Control', 'post-check=0, pre-check=0');
105            __HTTP__.setRequestHeader('Pragma', 'no-cache');
106            __HTTP__.onreadystatechange = __handler;
107            pData = ( pData ) ? pData : null ;
108         }
109         else
110         {
111            __HTTP__.open("GET", target, true);
112            __HTTP__.onreadystatechange = __handler;
113            pData = null;
114         }
115         __HTTP__.send(pData);
116      }
117      catch(e)
118      {
119         if ( this.__DEBUG__ ) alert("request : #1\n\n" + e)
120      }
121      return true;
122   },
123   "transform" : function(pXML, pXSL)
124   {
125                try
126                {
127                        var fragment = null;
128                        if ( window.XSLTProcessor )
129                        {
130                                var xslProc = new XSLTProcessor();
131                                xslProc.importStylesheet(pXSL);
132                                fragment = xslProc.transformToFragment(pXML, document);
133
134                                // para retornar valor igual ao ie.
135                                var aux = document.createElement("div");
136                                aux.appendChild(fragment);
137                                fragment = aux.innerHTML;
138                        }
139                        else
140                        {
141                                var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate");
142                                xslTemplate.stylesheet = pXSL;
143
144                                var myXslProc = xslTemplate.createProcessor();
145                                myXslProc.input = pXML;
146
147                                myXslProc.transform();
148                                fragment = myXslProc.output;
149                        }
150                        return fragment;
151                }
152                catch(e)
153                {
154                        alert("transform\n\n" + e + "\n\n" + e.description);
155                }
156   },
157        "create" : function()
158        {
159                try
160                {
161                        var a = false;
162                        if ( document.implementation.createDocument )
163                                a = document.implementation.createDocument("", "", null);
164                        else if ( ActiveXObject )
165                                a = new ActiveXObject("Msxml2.DOMDocument");
166
167                        with ( a )
168                                appendChild(createProcessingInstruction("xml", "version='1.0'"));
169
170                        return a;
171                }
172                catch(e)
173                {
174                        alert("create\n\n" + e + "\n\n" + e.description);
175                }
176        }
177}
Note: See TracBrowser for help on using the repository browser.