| /* |
| Copyright (c) 2004-2006, The Dojo Foundation |
| All Rights Reserved. |
| |
| Licensed under the Academic Free License version 2.1 or above OR the |
| modified BSD license. For more information on Dojo licensing, see: |
| |
| http://dojotoolkit.org/community/licensing.shtml |
| */ |
| |
| |
| |
| if (typeof window == "undefined") { |
| dojo.raise("attempt to use adobe svg hostenv when no window object"); |
| } |
| with (dojo.render) { |
| name = navigator.appName; |
| ver = parseFloat(navigator.appVersion, 10); |
| switch (navigator.platform) { |
| case "MacOS": |
| os.osx = true; |
| break; |
| case "Linux": |
| os.linux = true; |
| break; |
| case "Windows": |
| os.win = true; |
| break; |
| default: |
| os.linux = true; |
| break; |
| } |
| svg.capable = true; |
| svg.support.builtin = true; |
| svg.adobe = true; |
| } |
| dojo.hostenv.println = function (s) { |
| try { |
| var ti = document.createElement("text"); |
| ti.setAttribute("x", "50"); |
| var yPos = 25 + 15 * document.getElementsByTagName("text").length; |
| ti.setAttribute("y", yPos); |
| var tn = document.createTextNode(s); |
| ti.appendChild(tn); |
| document.documentElement.appendChild(ti); |
| } |
| catch (e) { |
| } |
| }; |
| dojo.debug = function () { |
| if (!djConfig.isDebug) { |
| return; |
| } |
| var args = arguments; |
| if (typeof dojo.hostenv.println != "function") { |
| dojo.raise("attempt to call dojo.debug when there is no dojo.hostenv println implementation (yet?)"); |
| } |
| var isJUM = dj_global["jum"]; |
| var s = isJUM ? "" : "DEBUG: "; |
| for (var i = 0; i < args.length; ++i) { |
| s += args[i]; |
| } |
| if (isJUM) { |
| jum.debug(s); |
| } else { |
| dojo.hostenv.println(s); |
| } |
| }; |
| dojo.hostenv.startPackage("dojo.hostenv"); |
| dojo.hostenv.name_ = "adobesvg"; |
| dojo.hostenv.anonCtr = 0; |
| dojo.hostenv.anon = {}; |
| dojo.hostenv.nameAnonFunc = function (anonFuncPtr, namespaceObj) { |
| var ret = "_" + this.anonCtr++; |
| var nso = (namespaceObj || this.anon); |
| while (typeof nso[ret] != "undefined") { |
| ret = "_" + this.anonCtr++; |
| } |
| nso[ret] = anonFuncPtr; |
| return ret; |
| }; |
| dojo.hostenv.modulesLoadedFired = false; |
| dojo.hostenv.modulesLoadedListeners = []; |
| dojo.hostenv.getTextStack = []; |
| dojo.hostenv.loadUriStack = []; |
| dojo.hostenv.loadedUris = []; |
| dojo.hostenv.modulesLoaded = function () { |
| if (this.modulesLoadedFired) { |
| return; |
| } |
| if ((this.loadUriStack.length == 0) && (this.getTextStack.length == 0)) { |
| if (this.inFlightCount > 0) { |
| dojo.debug("couldn't initialize, there are files still in flight"); |
| return; |
| } |
| this.modulesLoadedFired = true; |
| var mll = this.modulesLoadedListeners; |
| for (var x = 0; x < mll.length; x++) { |
| mll[x](); |
| } |
| } |
| }; |
| dojo.hostenv.getNewAnonFunc = function () { |
| var ret = "_" + this.anonCtr++; |
| while (typeof this.anon[ret] != "undefined") { |
| ret = "_" + this.anonCtr++; |
| } |
| eval("dojo.nostenv.anon." + ret + " = function(){};"); |
| return [ret, this.anon[ret]]; |
| }; |
| dojo.hostenv.displayStack = function () { |
| var oa = []; |
| var stack = this.loadUriStack; |
| for (var x = 0; x < stack.length; x++) { |
| oa.unshift([stack[x][0], (typeof stack[x][2])]); |
| } |
| dojo.debug("<pre>" + oa.join("\n") + "</pre>"); |
| }; |
| dojo.hostenv.unwindUriStack = function () { |
| var stack = this.loadUriStack; |
| for (var x in dojo.hostenv.loadedUris) { |
| for (var y = stack.length - 1; y >= 0; y--) { |
| if (stack[y][0] == x) { |
| stack.splice(y, 1); |
| } |
| } |
| } |
| var next = stack.pop(); |
| if ((!next) && (stack.length == 0)) { |
| return; |
| } |
| for (var x = 0; x < stack.length; x++) { |
| if ((stack[x][0] == next[0]) && (stack[x][2])) { |
| next[2] == stack[x][2]; |
| } |
| } |
| var last = next; |
| while (dojo.hostenv.loadedUris[next[0]]) { |
| last = next; |
| next = stack.pop(); |
| } |
| while (typeof next[2] == "string") { |
| try { |
| dj_eval(next[2]); |
| next[1](true); |
| } |
| catch (e) { |
| dojo.debug("we got an error when loading " + next[0]); |
| dojo.debug("error: " + e); |
| } |
| dojo.hostenv.loadedUris[next[0]] = true; |
| dojo.hostenv.loadedUris.push(next[0]); |
| last = next; |
| next = stack.pop(); |
| if ((!next) && (stack.length == 0)) { |
| break; |
| } |
| while (dojo.hostenv.loadedUris[next[0]]) { |
| last = next; |
| next = stack.pop(); |
| } |
| } |
| if (next) { |
| stack.push(next); |
| dojo.debug("### CHOKED ON: " + next[0]); |
| } |
| }; |
| dojo.hostenv.loadUri = function (uri, cb) { |
| if (dojo.hostenv.loadedUris[uri]) { |
| return; |
| } |
| var stack = this.loadUriStack; |
| stack.push([uri, cb, null]); |
| var tcb = function (contents) { |
| if (contents.content) { |
| contents = contents.content; |
| } |
| var next = stack.pop(); |
| if ((!next) && (stack.length == 0)) { |
| dojo.hostenv.modulesLoaded(); |
| return; |
| } |
| if (typeof contents == "string") { |
| stack.push(next); |
| for (var x = 0; x < stack.length; x++) { |
| if (stack[x][0] == uri) { |
| stack[x][2] = contents; |
| } |
| } |
| next = stack.pop(); |
| } |
| if (dojo.hostenv.loadedUris[next[0]]) { |
| dojo.hostenv.unwindUriStack(); |
| return; |
| } |
| stack.push(next); |
| if (next[0] != uri) { |
| if (typeof next[2] == "string") { |
| dojo.hostenv.unwindUriStack(); |
| } |
| } else { |
| if (!contents) { |
| next[1](false); |
| } else { |
| var deps = dojo.hostenv.getDepsForEval(next[2]); |
| if (deps.length > 0) { |
| eval(deps.join(";")); |
| } else { |
| dojo.hostenv.unwindUriStack(); |
| } |
| } |
| } |
| }; |
| this.getText(uri, tcb, true); |
| }; |
| dojo.hostenv.loadModule = function (modulename, exact_only, omit_module_check) { |
| var module = this.findModule(modulename, 0); |
| if (module) { |
| return module; |
| } |
| if (typeof this.loading_modules_[modulename] !== "undefined") { |
| dojo.debug("recursive attempt to load module '" + modulename + "'"); |
| } else { |
| this.addedToLoadingCount.push(modulename); |
| } |
| this.loading_modules_[modulename] = 1; |
| var relpath = modulename.replace(/\./g, "/") + ".js"; |
| var syms = modulename.split("."); |
| var nsyms = modulename.split("."); |
| if (syms[0] == "dojo") { |
| syms[0] = "src"; |
| } |
| var last = syms.pop(); |
| syms.push(last); |
| var _this = this; |
| var pfn = this.pkgFileName; |
| if (last == "*") { |
| modulename = (nsyms.slice(0, -1)).join("."); |
| var module = this.findModule(modulename, 0); |
| if (module) { |
| _this.removedFromLoadingCount.push(modulename); |
| return module; |
| } |
| var nextTry = function (lastStatus) { |
| if (lastStatus) { |
| module = _this.findModule(modulename, false); |
| if ((!module) && (syms[syms.length - 1] != pfn)) { |
| dojo.raise("Module symbol '" + modulename + "' is not defined after loading '" + relpath + "'"); |
| } |
| if (module) { |
| _this.removedFromLoadingCount.push(modulename); |
| dojo.hostenv.modulesLoaded(); |
| return; |
| } |
| } |
| syms.pop(); |
| syms.push(pfn); |
| relpath = syms.join("/") + ".js"; |
| if (relpath.charAt(0) == "/") { |
| relpath = relpath.slice(1); |
| } |
| _this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry); |
| }; |
| nextTry(); |
| } else { |
| relpath = syms.join("/") + ".js"; |
| modulename = nsyms.join("."); |
| var nextTry = function (lastStatus) { |
| if (lastStatus) { |
| module = _this.findModule(modulename, false); |
| if ((!module) && (syms[syms.length - 1] != pfn)) { |
| dojo.raise("Module symbol '" + modulename + "' is not defined after loading '" + relpath + "'"); |
| } |
| if (module) { |
| _this.removedFromLoadingCount.push(modulename); |
| dojo.hostenv.modulesLoaded(); |
| return; |
| } |
| } |
| var setPKG = (syms[syms.length - 1] == pfn) ? false : true; |
| syms.pop(); |
| if (setPKG) { |
| syms.push(pfn); |
| } |
| relpath = syms.join("/") + ".js"; |
| if (relpath.charAt(0) == "/") { |
| relpath = relpath.slice(1); |
| } |
| _this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry); |
| }; |
| this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry); |
| } |
| return; |
| }; |
| dojo.hostenv.async_cb = null; |
| dojo.hostenv.unWindGetTextStack = function () { |
| if (dojo.hostenv.inFlightCount > 0) { |
| setTimeout("dojo.hostenv.unWindGetTextStack()", 100); |
| return; |
| } |
| dojo.hostenv.inFlightCount++; |
| var next = dojo.hostenv.getTextStack.pop(); |
| if ((!next) && (dojo.hostenv.getTextStack.length == 0)) { |
| dojo.hostenv.inFlightCount--; |
| dojo.hostenv.async_cb = function () { |
| }; |
| return; |
| } |
| dojo.hostenv.async_cb = next[1]; |
| window.getURL(next[0], function (result) { |
| dojo.hostenv.inFlightCount--; |
| dojo.hostenv.async_cb(result.content); |
| dojo.hostenv.unWindGetTextStack(); |
| }); |
| }; |
| dojo.hostenv.getText = function (uri, async_cb, fail_ok) { |
| try { |
| if (async_cb) { |
| dojo.hostenv.getTextStack.push([uri, async_cb, fail_ok]); |
| dojo.hostenv.unWindGetTextStack(); |
| } else { |
| return dojo.raise("No synchronous XMLHTTP implementation available, for uri " + uri); |
| } |
| } |
| catch (e) { |
| return dojo.raise("No XMLHTTP implementation available, for uri " + uri); |
| } |
| }; |
| dojo.hostenv.postText = function (uri, async_cb, text, fail_ok, mime_type, encoding) { |
| var http = null; |
| var async_callback = function (httpResponse) { |
| if (!httpResponse.success) { |
| dojo.raise("Request for uri '" + uri + "' resulted in " + httpResponse.status); |
| } |
| if (!httpResponse.content) { |
| if (!fail_ok) { |
| dojo.raise("Request for uri '" + uri + "' resulted in no content"); |
| } |
| return null; |
| } |
| async_cb(httpResponse.content); |
| }; |
| try { |
| if (async_cb) { |
| http = window.postURL(uri, text, async_callback, mimeType, encoding); |
| } else { |
| return dojo.raise("No synchronous XMLHTTP post implementation available, for uri " + uri); |
| } |
| } |
| catch (e) { |
| return dojo.raise("No XMLHTTP post implementation available, for uri " + uri); |
| } |
| }; |
| function dj_last_script_src() { |
| var scripts = window.document.getElementsByTagName("script"); |
| if (scripts.length < 1) { |
| dojo.raise("No script elements in window.document, so can't figure out my script src"); |
| } |
| var li = scripts.length - 1; |
| var xlinkNS = "http://www.w3.org/1999/xlink"; |
| var src = null; |
| var script = null; |
| while (!src) { |
| script = scripts.item(li); |
| src = script.getAttributeNS(xlinkNS, "href"); |
| li--; |
| if (li < 0) { |
| break; |
| } |
| } |
| if (!src) { |
| dojo.raise("Last script element (out of " + scripts.length + ") has no src"); |
| } |
| return src; |
| } |
| if (!dojo.hostenv["library_script_uri_"]) { |
| dojo.hostenv.library_script_uri_ = dj_last_script_src(); |
| } |
| dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug"); |
| |