a:25:{s:9:"#provides";s:4:"dojo";s:9:"#resource";s:31:"_base/_loader/hostenv_ff_ext.js";s:14:"dojo._loadInit";a:5:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:508:" dojo._initFired = true; // allow multiple calls, only first one will take effect // A bug in khtml calls events callbacks for document for event which isnt supported // for example a created contextmenu event calls DOMContentLoaded, workaround var type = (e && e.type) ? e.type.toLowerCase() : "load"; if(arguments.callee.initialized || (type != "domcontentloaded" && type != "load")){ return; } arguments.callee.initialized = true; if(dojo._inFlightCount == 0){ dojo._modulesLoaded(); }";s:7:"private";b:1;s:7:"summary";s:0:"";}s:11:"console.log";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"m";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:146:" var s = Components.classes["@mozilla.org/consoleservice;1"].getService( Components.interfaces.nsIConsoleService ); s.logStringMessage(m);";s:7:"summary";s:0:"";}s:13:"console.debug";a:3:{s:4:"type";s:8:"Function";s:6:"source";s:50:" console.log(dojo._toArray(arguments).join(" "));";s:7:"summary";s:0:"";}s:12:"dojo.baseUrl";a:1:{s:7:"summary";s:0:"";}s:14:"dojo.isMozilla";a:1:{s:7:"summary";s:0:"";}s:9:"dojo.isFF";a:1:{s:7:"summary";s:0:"";}s:13:"dojo.isQuirks";a:1:{s:7:"summary";s:0:"";}s:11:"dojo.locale";a:1:{s:7:"summary";s:0:"";}s:21:"dojo._windowUnloaders";a:2:{s:7:"private";b:1;s:7:"summary";s:0:"";}s:20:"dojo._defaultContext";a:2:{s:7:"private";b:1;s:7:"summary";s:0:"";}s:12:"dojo._xhrObj";a:4:{s:4:"type";s:8:"Function";s:6:"source";s:31:" return new XMLHttpRequest();";s:7:"private";b:1;s:7:"summary";s:0:"";}s:13:"dojo._loadUri";a:6:{s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:3:"uri";a:1:{s:4:"type";s:0:"";}s:2:"cb";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:553:" var handleLocal = ["file:", "chrome:", "resource:"].some(function(prefix){ return String(uri).indexOf(prefix) == 0; }); if(handleLocal){ // see: // http://developer.mozilla.org/en/mozIJSSubScriptLoader var l = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] .getService(Components.interfaces.mozIJSSubScriptLoader); var value = l.loadSubScript(uri, d.global) if(cb){ cb(value); } return true; }else{ // otherwise, call the pre-existing version return oldLoadUri.apply(d, arguments); }";s:6:"chains";a:1:{s:4:"call";a:1:{i:0;s:10:"oldLoadUri";}}s:7:"private";b:1;s:7:"summary";s:0:"";}s:18:"dojo._isDocumentOk";a:6:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"http";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:271:" var stat = http.status || 0; return (stat >= 200 && stat < 300) || // Boolean stat == 304 || // allow any 2XX response code stat == 1223 || // get it out of the cache (!stat && (location.protocol=="file:" || location.protocol=="chrome:") );";s:7:"returns";s:7:"Boolean";s:7:"private";b:1;s:7:"summary";s:0:"";}s:13:"dojo._getText";a:6:{s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:3:"uri";a:2:{s:4:"type";s:3:"URI";s:7:"summary";s:99:"A relative or absolute uri. If absolute, it still must be in the same "domain" as we are.";}s:7:"fail_ok";a:2:{s:4:"type";s:7:"Boolean";s:7:"summary";s:77:"Default false. If fail_ok and loading fails, return null instead of throwing.";}}s:6:"source";s:4558:"// a host environment specifically built for Mozilla extensions, but derived // from the browser host environment if(typeof window != 'undefined'){ dojo.isBrowser = true; dojo._name = "browser"; // FIXME: PORTME // http://developer.mozilla.org/en/mozIJSSubScriptLoader // attempt to figure out the path to dojo if it isn't set in the config (function(){ var d = dojo; // this is a scope protection closure. We set browser versions and grab // the URL we were loaded from here. // FIXME: need to probably use a different reference to "document" to get the hosting XUL environment d.baseUrl = d.config.baseUrl; // fill in the rendering support information in dojo.render.* var n = navigator; var dua = n.userAgent; var dav = n.appVersion; var tv = parseFloat(dav); d.isMozilla = d.isMoz = tv; if(d.isMoz){ d.isFF = parseFloat(dua.split("Firefox/")[1]) || undefined; } // FIXME var cm = document.compatMode; d.isQuirks = cm == "BackCompat" || cm == "QuirksMode"; // FIXME // TODO: is the HTML LANG attribute relevant? d.locale = dojo.config.locale || n.language.toLowerCase(); d._xhrObj = function(){ return new XMLHttpRequest(); } // monkey-patch _loadUri to handle file://, chrome://, and resource:// url's var oldLoadUri = d._loadUri; d._loadUri = function(uri, cb){ var handleLocal = ["file:", "chrome:", "resource:"].some(function(prefix){ return String(uri).indexOf(prefix) == 0; }); if(handleLocal){ // see: // http://developer.mozilla.org/en/mozIJSSubScriptLoader var l = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] .getService(Components.interfaces.mozIJSSubScriptLoader); var value = l.loadSubScript(uri, d.global) if(cb){ cb(value); } return true; }else{ // otherwise, call the pre-existing version return oldLoadUri.apply(d, arguments); } } // FIXME: PORTME d._isDocumentOk = function(http){ var stat = http.status || 0; return (stat >= 200 && stat < 300) || // Boolean stat == 304 || // allow any 2XX response code stat == 1223 || // get it out of the cache (!stat && (location.protocol=="file:" || location.protocol=="chrome:") ); } // FIXME: PORTME // var owloc = window.location+""; // var base = document.getElementsByTagName("base"); // var hasBase = (base && base.length > 0); var hasBase = false; d._getText = function(/*URI*/ uri, /*Boolean*/ fail_ok){ // summary: Read the contents of the specified uri and return those contents. // uri: // A relative or absolute uri. If absolute, it still must be in // the same "domain" as we are. // fail_ok: // Default false. If fail_ok and loading fails, return null // instead of throwing. // returns: The response text. null is returned when there is a // failure and failure is okay (an exception otherwise) // alert("_getText: " + uri); // NOTE: must be declared before scope switches ie. this._xhrObj() var http = this._xhrObj(); if(!hasBase && dojo._Url){ uri = (new dojo._Url(uri)).toString(); } if(d.config.cacheBust){ //Make sure we have a string before string methods are used on uri uri += ""; uri += (uri.indexOf("?") == -1 ? "?" : "&") + String(d.config.cacheBust).replace(/\W+/g,""); } var handleLocal = ["file:", "chrome:", "resource:"].some(function(prefix){ return String(uri).indexOf(prefix) == 0; }); if(handleLocal){ // see: // http://forums.mozillazine.org/viewtopic.php?p=921150#921150 var ioService = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var scriptableStream=Components .classes["@mozilla.org/scriptableinputstream;1"] .getService(Components.interfaces.nsIScriptableInputStream); var channel = ioService.newChannel(uri, null, null); var input = channel.open(); scriptableStream.init(input); var str = scriptableStream.read(input.available()); scriptableStream.close(); input.close(); return str; }else{ http.open('GET', uri, false); try{ http.send(null); // alert(http); if(!d._isDocumentOk(http)){ var err = Error("Unable to load "+uri+" status:"+ http.status); err.status = http.status; err.responseText = http.responseText; throw err; } }catch(e){ if(fail_ok){ return null; } // null // rethrow the exception throw e; } return http.responseText; // String }";s:7:"summary";s:65:"Read the contents of the specified uri and return those contents.";s:7:"returns";s:19:"Boolean|null|String";s:7:"private";b:1;}s:19:"dojo.windowUnloaded";a:3:{s:4:"type";s:8:"Function";s:6:"source";s:81:" var mll = this._windowUnloaders; while(mll.length){ (mll.pop())(); }";s:7:"summary";s:202:"signal fired by impending window destruction. You may use dojo.addOnWIndowUnload() or dojo.connect() to this method to perform page/application cleanup methods. See dojo.addOnWindowUnload for more info.";}s:22:"dojo.addOnWindowUnload";a:5:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:3:"obj";a:2:{s:8:"optional";b:1;s:4:"type";s:6:"Object";}}s:6:"source";s:50:" d._onto(d._windowUnloaders, obj, functionName);";s:7:"summary";s:290:"registers a function to be triggered when window.onunload fires. Be careful trying to modify the DOM or access JavaScript properties during this phase of page unloading: they may not always be available. Consider dojo.addOnUnload() if you need to modify the DOM or do heavy JavaScript work.";s:8:"examples";a:1:{i:0;s:147:" dojo.addOnWindowUnload(functionPointer) dojo.addOnWindowUnload(object, "functionName") dojo.addOnWindowUnload(object, function(){ /* ... */});";}}s:16:"dojo.pushContext";a:7:{s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:1:"g";a:3:{s:8:"optional";b:1;s:4:"type";s:13:"Object|String";s:7:"summary";s:90:"The global context. If a string, the id of the frame to search for a context and document.";}s:1:"d";a:3:{s:8:"optional";b:1;s:4:"type";s:16:"MDocumentElement";s:7:"summary";s:53:"The document element to execute subsequent code with.";}}s:6:"source";s:387:" var old = [dojo.global, dojo.doc]; contexts.push(old); var n; if(!g && !d){ n = dojo._defaultContext; }else{ n = [ g, d ]; if(!d && dojo.isString(g)){ var t = document.getElementById(g); if(t.contentDocument){ n = [t.contentWindow, t.contentDocument]; } } } current = n; dojo.setContext.apply(dojo, n); return old; // Array";s:7:"summary";s:191:"causes subsequent calls to Dojo methods to assume the passed object and, optionally, document as the default scopes to use. A 2-element array of the previous global and document are returned.";s:11:"description";s:819:"dojo.pushContext treats contexts as a stack. The auto-detected contexts which are initially provided using dojo.setContext() require authors to keep state in order to "return" to a previous context, whereas the dojo.pushContext and dojo.popContext methods provide a more natural way to augment blocks of code to ensure that they execute in a different window or frame without issue. If called without any arguments, the default context (the context when Dojo is first loaded) is instead pushed into the stack. If only a single string is passed, a node in the intitial context's document is looked up and its contextWindow and contextDocument properties are used as the context to push. This means that iframes can be given an ID and code can be executed in the scope of the iframe's document in subsequent calls easily.";s:7:"returns";s:5:"Array";s:6:"chains";a:1:{s:4:"call";a:1:{i:0;s:15:"dojo.setContext";}}}s:15:"dojo.popContext";a:4:{s:4:"type";s:8:"Function";s:6:"source";s:127:" var oc = current; if(!contexts.length){ return oc; } dojo.setContext.apply(dojo, contexts.pop()); return oc;";s:7:"summary";s:184:"If the context stack contains elements, ensure that subsequent code executes in the *previous* context to the current context. The current context set ([global, document]) is returned.";s:6:"chains";a:1:{s:4:"call";a:1:{i:0;s:15:"dojo.setContext";}}}s:15:"dojo._inContext";a:5:{s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:1:"g";a:1:{s:4:"type";s:0:"";}s:1:"d";a:1:{s:4:"type";s:0:"";}s:1:"f";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:171:" var a = dojo._toArray(arguments); f = a.pop(); if(a.length == 1){ d = null; } dojo.pushContext(g, d); var r = f(); dojo.popContext(); return r;";s:7:"private";b:1;s:7:"summary";s:0:"";}s:14:"dojo.isBrowser";a:1:{s:7:"summary";s:0:"";}s:10:"dojo._name";a:2:{s:7:"private";b:1;s:7:"summary";s:0:"";}s:15:"dojo._initFired";a:2:{s:7:"private";b:1;s:7:"summary";s:0:"";}s:4:"dojo";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}