Bug 435739 Poor performance of Firefox 3 with no X RENDER extension
[wine-gecko.git] / testing / mochitest / MochiKit / MochiKit.js
blobd0935e3655c96a5f45dcf320c456100c24b91736
1 /***
3 MochiKit.MochiKit 1.4
5 See <http://mochikit.com/> for documentation, downloads, license, etc.
7 (c) 2005 Bob Ippolito.  All rights Reserved.
9 ***/
11 if (typeof(MochiKit) == 'undefined') {
12     MochiKit = {};
15 if (typeof(MochiKit.MochiKit) == 'undefined') {
16     /** @id MochiKit.MochiKit */
17     MochiKit.MochiKit = {};
20 MochiKit.MochiKit.NAME = "MochiKit.MochiKit";
21 MochiKit.MochiKit.VERSION = "1.4";
22 MochiKit.MochiKit.__repr__ = function () {
23     return "[" + this.NAME + " " + this.VERSION + "]";
26 /** @id MochiKit.MochiKit.toString */
27 MochiKit.MochiKit.toString = function () {
28     return this.__repr__();
31 /** @id MochiKit.MochiKit.SUBMODULES */
32 MochiKit.MochiKit.SUBMODULES = [
33     "Base",
34     "Iter",
35     "Logging",
36     "DateTime",
37     "Format",
38     "Async",
39     "DOM",
40     "Style",
41     "LoggingPane",
42     "Color",
43     "Signal",
44     "Visual"
47 if (typeof(JSAN) != 'undefined' || typeof(dojo) != 'undefined') {
48     if (typeof(dojo) != 'undefined') {
49         dojo.provide('MochiKit.MochiKit');
50         dojo.require("MochiKit.*");
51     }
52     if (typeof(JSAN) != 'undefined') {
53         (function (lst) {
54             for (var i = 0; i < lst.length; i++) {
55                 JSAN.use("MochiKit." + lst[i], []);
56             }
57         })(MochiKit.MochiKit.SUBMODULES);
58     }
59     (function () {
60         var extend = MochiKit.Base.extend;
61         var self = MochiKit.MochiKit;
62         var modules = self.SUBMODULES;
63         var EXPORT = [];
64         var EXPORT_OK = [];
65         var EXPORT_TAGS = {};
66         var i, k, m, all;
67         for (i = 0; i < modules.length; i++) {
68             m = MochiKit[modules[i]];
69             extend(EXPORT, m.EXPORT);
70             extend(EXPORT_OK, m.EXPORT_OK);
71             for (k in m.EXPORT_TAGS) {
72                 EXPORT_TAGS[k] = extend(EXPORT_TAGS[k], m.EXPORT_TAGS[k]);
73             }
74             all = m.EXPORT_TAGS[":all"];
75             if (!all) {
76                 all = extend(null, m.EXPORT, m.EXPORT_OK);
77             }
78             var j;
79             for (j = 0; j < all.length; j++) {
80                 k = all[j];
81                 self[k] = m[k];
82             }
83         }
84         self.EXPORT = EXPORT;
85         self.EXPORT_OK = EXPORT_OK;
86         self.EXPORT_TAGS = EXPORT_TAGS;
87     }());
88     
89 } else {
90     if (typeof(MochiKit.__compat__) == 'undefined') {
91         MochiKit.__compat__ = true;
92     }
93     (function () {
94         if (typeof(document) == "undefined") {
95             return;
96         }
97         var scripts = document.getElementsByTagName("script");
98         var kXULNSURI = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
99         var base = null;
100         var baseElem = null;
101         var allScripts = {};
102         var i;
103         for (i = 0; i < scripts.length; i++) {
104             var src = scripts[i].getAttribute("src");
105             if (!src) {
106                 continue;
107             }
108             allScripts[src] = true;
109             if (src.match(/MochiKit.js$/)) {
110                 base = src.substring(0, src.lastIndexOf('MochiKit.js'));
111                 baseElem = scripts[i];
112             }
113         }
114         if (base === null) {
115             return;
116         }
117         var modules = MochiKit.MochiKit.SUBMODULES;
118         for (var i = 0; i < modules.length; i++) {
119             if (MochiKit[modules[i]]) {
120                 continue;
121             }
122             var uri = base + modules[i] + '.js';
123             if (uri in allScripts) {
124                 continue;
125             }
126             if (document.documentElement &&
127                 document.documentElement.namespaceURI == kXULNSURI) {
128                 // XUL
129                 var s = document.createElementNS(kXULNSURI, 'script');
130                 s.setAttribute("id", "MochiKit_" + base + modules[i]);
131                 s.setAttribute("src", uri);
132                 s.setAttribute("type", "application/x-javascript");
133                 baseElem.parentNode.appendChild(s);
134             } else {
135                 // HTML
136                 /*
137                     DOM can not be used here because Safari does
138                     deferred loading of scripts unless they are
139                     in the document or inserted with document.write
141                     This is not XHTML compliant.  If you want XHTML
142                     compliance then you must use the packed version of MochiKit
143                     or include each script individually (basically unroll
144                     these document.write calls into your XHTML source)
146                 */
147                 document.write('<script src="' + uri +
148                     '" type="text/javascript"></script>');
149             }
150         };
151     })();