michael@0: /***
michael@0:
michael@0: MochiKit.MochiKit 1.4
michael@0:
michael@0: See for documentation, downloads, license, etc.
michael@0:
michael@0: (c) 2005 Bob Ippolito. All rights Reserved.
michael@0:
michael@0: ***/
michael@0:
michael@0: if (typeof(MochiKit) == 'undefined') {
michael@0: MochiKit = {};
michael@0: }
michael@0:
michael@0: if (typeof(MochiKit.MochiKit) == 'undefined') {
michael@0: /** @id MochiKit.MochiKit */
michael@0: MochiKit.MochiKit = {};
michael@0: }
michael@0:
michael@0: MochiKit.MochiKit.NAME = "MochiKit.MochiKit";
michael@0: MochiKit.MochiKit.VERSION = "1.4";
michael@0: MochiKit.MochiKit.__repr__ = function () {
michael@0: return "[" + this.NAME + " " + this.VERSION + "]";
michael@0: };
michael@0:
michael@0: /** @id MochiKit.MochiKit.toString */
michael@0: MochiKit.MochiKit.toString = function () {
michael@0: return this.__repr__();
michael@0: };
michael@0:
michael@0: /** @id MochiKit.MochiKit.SUBMODULES */
michael@0: MochiKit.MochiKit.SUBMODULES = [
michael@0: "Base",
michael@0: "Iter",
michael@0: "Logging",
michael@0: "DateTime",
michael@0: "Format",
michael@0: "Async",
michael@0: "DOM",
michael@0: "Style",
michael@0: "LoggingPane",
michael@0: "Color",
michael@0: "Signal",
michael@0: "Visual"
michael@0: ];
michael@0:
michael@0: if (typeof(JSAN) != 'undefined' || typeof(dojo) != 'undefined') {
michael@0: if (typeof(dojo) != 'undefined') {
michael@0: dojo.provide('MochiKit.MochiKit');
michael@0: dojo.require("MochiKit.*");
michael@0: }
michael@0: if (typeof(JSAN) != 'undefined') {
michael@0: (function (lst) {
michael@0: for (var i = 0; i < lst.length; i++) {
michael@0: JSAN.use("MochiKit." + lst[i], []);
michael@0: }
michael@0: })(MochiKit.MochiKit.SUBMODULES);
michael@0: }
michael@0: (function () {
michael@0: var extend = MochiKit.Base.extend;
michael@0: var self = MochiKit.MochiKit;
michael@0: var modules = self.SUBMODULES;
michael@0: var EXPORT = [];
michael@0: var EXPORT_OK = [];
michael@0: var EXPORT_TAGS = {};
michael@0: var i, k, m, all;
michael@0: for (i = 0; i < modules.length; i++) {
michael@0: m = MochiKit[modules[i]];
michael@0: extend(EXPORT, m.EXPORT);
michael@0: extend(EXPORT_OK, m.EXPORT_OK);
michael@0: for (k in m.EXPORT_TAGS) {
michael@0: EXPORT_TAGS[k] = extend(EXPORT_TAGS[k], m.EXPORT_TAGS[k]);
michael@0: }
michael@0: all = m.EXPORT_TAGS[":all"];
michael@0: if (!all) {
michael@0: all = extend(null, m.EXPORT, m.EXPORT_OK);
michael@0: }
michael@0: var j;
michael@0: for (j = 0; j < all.length; j++) {
michael@0: k = all[j];
michael@0: self[k] = m[k];
michael@0: }
michael@0: }
michael@0: self.EXPORT = EXPORT;
michael@0: self.EXPORT_OK = EXPORT_OK;
michael@0: self.EXPORT_TAGS = EXPORT_TAGS;
michael@0: }());
michael@0:
michael@0: } else {
michael@0: if (typeof(MochiKit.__compat__) == 'undefined') {
michael@0: MochiKit.__compat__ = true;
michael@0: }
michael@0: (function () {
michael@0: if (typeof(document) == "undefined") {
michael@0: return;
michael@0: }
michael@0: var scripts = document.getElementsByTagName("script");
michael@0: var kXULNSURI = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
michael@0: var base = null;
michael@0: var baseElem = null;
michael@0: var allScripts = {};
michael@0: var i;
michael@0: for (i = 0; i < scripts.length; i++) {
michael@0: var src = scripts[i].getAttribute("src");
michael@0: if (!src) {
michael@0: continue;
michael@0: }
michael@0: allScripts[src] = true;
michael@0: if (src.match(/MochiKit.js$/)) {
michael@0: base = src.substring(0, src.lastIndexOf('MochiKit.js'));
michael@0: baseElem = scripts[i];
michael@0: }
michael@0: }
michael@0: if (base === null) {
michael@0: return;
michael@0: }
michael@0: var modules = MochiKit.MochiKit.SUBMODULES;
michael@0: for (var i = 0; i < modules.length; i++) {
michael@0: if (MochiKit[modules[i]]) {
michael@0: continue;
michael@0: }
michael@0: var uri = base + modules[i] + '.js';
michael@0: if (uri in allScripts) {
michael@0: continue;
michael@0: }
michael@0: if (document.documentElement &&
michael@0: document.documentElement.namespaceURI == kXULNSURI) {
michael@0: // XUL
michael@0: var s = document.createElementNS(kXULNSURI, 'script');
michael@0: s.setAttribute("id", "MochiKit_" + base + modules[i]);
michael@0: s.setAttribute("src", uri);
michael@0: s.setAttribute("type", "application/x-javascript");
michael@0: baseElem.parentNode.appendChild(s);
michael@0: } else {
michael@0: // HTML
michael@0: /*
michael@0: DOM can not be used here because Safari does
michael@0: deferred loading of scripts unless they are
michael@0: in the document or inserted with document.write
michael@0:
michael@0: This is not XHTML compliant. If you want XHTML
michael@0: compliance then you must use the packed version of MochiKit
michael@0: or include each script individually (basically unroll
michael@0: these document.write calls into your XHTML source)
michael@0:
michael@0: */
michael@0: document.write('');
michael@0: }
michael@0: };
michael@0: })();
michael@0: }