source: trunk/jabberit_messenger/js/xtools.js @ 382

Revision 382, 3.2 KB checked in by niltonneto, 16 years ago (diff)

Inclusão do módulo JabberIt? Messenger, novo módulo de mensagens
instantâneas do Expresso. É uma customização do projeto original
Jeti, e foi desenvolvido em Java.

  • Property svn:executable set to *
Line 
1(function()
2{
3        var _FILES = [];
4
5        function _convert(pString)
6        {
7                if ( typeof pString != 'string' )
8                        return false;
9
10                if ( window.ActiveXObject )
11                {
12                        var _xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
13                        _xmlDoc.async = "false";
14                        _xmlDoc.loadXML(pString);
15                }
16                else
17                {
18                        var parser = new DOMParser();
19                        var _xmlDoc = parser.parseFromString(pString, "text/xml");
20                }
21
22                return _xmlDoc;
23        }
24
25        function _load(pFile)
26        {
27                pFile = this._PATH + 'xsl/' + pFile;
28                if ( !(_FILES[pFile]) )
29                {
30                        var _data = null;
31                        if ( document.implementation.createDocument )
32                                _data = document.implementation.createDocument("", "", null);
33                        else
34                                _data = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
35
36                        _data.async = false;
37                        _data.load(pFile + '?' + Date.parse(new Date));
38                        _FILES[pFile] = _data;
39                }
40                return _FILES[pFile];
41        }
42
43        function _parse()
44        {
45                if ( arguments.length == 1 )
46                {
47                        pXML = _xml('root');
48                        pXSL = arguments[0];
49                }
50                else
51                {
52                        pXML = arguments[0];
53                        pXSL = arguments[1];
54                }
55                switch ( typeof pXML )
56                {
57                        case 'object' :
58                        break;
59                        case 'string' :
60                                if ( pXML.indexOf('<') == 0 )
61                                        pXML = _convert(pXML);
62                                else
63                                        pXML = _load.call(this, pXML);
64                        break;
65                        default :
66                                return {'error':'invalid xml'}
67                }
68                switch ( typeof pXSL )
69                {
70                        case 'object' :
71                        break;
72                        case 'string' :
73                                pXSL = _load.call(this, pXSL);
74                        break;
75                        default :
76                                return {'error':'invalid xsl'}
77                }
78
79                var fragment = null;
80                if ( window.XSLTProcessor )
81                {
82                        var xslProc = new XSLTProcessor();
83                        xslProc.importStylesheet(pXSL);
84
85                        if ( (arguments.length == 3) && (typeof arguments[2] == 'object') )
86                        {
87                                var params = arguments[2];
88                                for (var i in params )
89                                         xslProc.setParameter(null, i, params[i]);
90                        }
91
92                        fragment = xslProc.transformToFragment(pXML, document);
93
94                        // para retornar valor igual ao ie.
95                        var aux = document.createElement("div");
96                        aux.appendChild(fragment);
97                        fragment = aux.innerHTML;
98                }
99                else
100                {
101                        var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate");
102                        xslTemplate.stylesheet = pXSL;
103
104                        var xslProc = xslTemplate.createProcessor();
105                        xslProc.input = pXML;
106
107                        if ( (arguments.length == 3) && (typeof arguments[2] == 'object') )
108                        {
109                                var params = arguments[2];
110                                for (var i in params )
111                                         xslProc.addParameter(i, params[i], '');
112                        }
113
114                        xslProc.transform();
115                        fragment = xslProc.output;
116                }
117                return fragment;
118        }
119
120        function _xml()
121        {
122                var a = false;
123                if ( document.implementation.createDocument )
124                        a = document.implementation.createDocument("", "", null);
125                else if ( ActiveXObject )
126                        a = new ActiveXObject("Msxml2.DOMDocument");
127
128                if ( arguments.length == 1 && typeof arguments[0] == 'string' )
129                        a.appendChild(a.createElement(arguments[0]));
130                //with ( a )
131                //      appendChild(createProcessingInstruction("xml", "version='1.0'"));
132
133                return a;
134        }
135
136        function XTools()
137        {
138                var _argv = arguments;
139                this._PATH = ( _argv.length > 0 ) ?
140                        _argv[0] : '';
141                if ( this._PATH != '' && this._PATH.lastIndexOf('/') != (this._PATH.length - 1) )
142                        this._PATH += '/';
143        }
144
145        XTools.prototype.convert = _convert;
146        XTools.prototype.load = _load;
147        XTools.prototype.parse = _parse;
148        XTools.prototype.xml = _xml;
149        window.JITXTools = XTools;
150}
151)();
Note: See TracBrowser for help on using the repository browser.