source: trunk/instant_messenger/js/XMLTools.js @ 27

Revision 27, 3.8 KB checked in by niltonneto, 17 years ago (diff)

* empty log message *

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