]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojo/_base/window.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojo / _base / window.js
diff --git a/static/dojo-release-1.1.1/dojo/_base/window.js b/static/dojo-release-1.1.1/dojo/_base/window.js
new file mode 100644 (file)
index 0000000..892768d
--- /dev/null
@@ -0,0 +1,145 @@
+if(!dojo._hasResource["dojo._base.window"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.window"] = true;
+dojo.provide("dojo._base.window");
+
+dojo._gearsObject = function(){
+       // summary: 
+       //              factory method to get a Google Gears plugin instance to
+       //              expose in the browser runtime environment, if present
+       var factory;
+       var results;
+       
+       var gearsObj = dojo.getObject("google.gears");
+       if(gearsObj){ return gearsObj; } // already defined elsewhere
+       
+       if(typeof GearsFactory != "undefined"){ // Firefox
+               factory = new GearsFactory();
+       }else{
+               if(dojo.isIE){
+                       // IE
+                       try{
+                               factory = new ActiveXObject("Gears.Factory");
+                       }catch(e){
+                               // ok to squelch; there's no gears factory.  move on.
+                       }
+               }else if(navigator.mimeTypes["application/x-googlegears"]){
+                       // Safari?
+                       factory = document.createElement("object");
+                       factory.setAttribute("type", "application/x-googlegears");
+                       factory.setAttribute("width", 0);
+                       factory.setAttribute("height", 0);
+                       factory.style.display = "none";
+                       document.documentElement.appendChild(factory);
+               }
+       }
+
+       // still nothing?
+       if(!factory){ return null; }
+       
+       // define the global objects now; don't overwrite them though if they
+       // were somehow set internally by the Gears plugin, which is on their
+       // dev roadmap for the future
+       dojo.setObject("google.gears.factory", factory);
+       return dojo.getObject("google.gears");
+};
+
+/*=====
+dojo.isGears = {
+       // summary: True if client is using Google Gears
+};
+=====*/
+// see if we have Google Gears installed, and if
+// so, make it available in the runtime environment
+// and in the Google standard 'google.gears' global object
+dojo.isGears = (!!dojo._gearsObject())||0;
+
+/*=====
+dojo.doc = {
+       // summary:
+       //              Alias for the current document. 'dojo.doc' can be modified
+       //              for temporary context shifting. Also see dojo.withDoc().
+       // description:
+       //    Refer to dojo.doc rather
+       //    than referring to 'window.document' to ensure your code runs
+       //    correctly in managed contexts.
+       // example:
+       //      |       n.appendChild(dojo.doc.createElement('div'));
+}
+=====*/
+dojo.doc = window["document"] || null;
+
+dojo.body = function(){
+       // summary:
+       //              Return the body element of the document
+       //              return the body object associated with dojo.doc
+       // example:
+       //      |       dojo.body().appendChild(dojo.doc.createElement('div'));
+
+       // Note: document.body is not defined for a strict xhtml document
+       // Would like to memoize this, but dojo.doc can change vi dojo.withDoc().
+       return dojo.doc.body || dojo.doc.getElementsByTagName("body")[0]; // Node
+}
+
+dojo.setContext = function(/*Object*/globalObject, /*DocumentElement*/globalDocument){
+       // summary:
+       //              changes the behavior of many core Dojo functions that deal with
+       //              namespace and DOM lookup, changing them to work in a new global
+       //              context (e.g., an iframe). The varibles dojo.global and dojo.doc
+       //              are modified as a result of calling this function and the result of
+       //              `dojo.body()` likewise differs.
+       dojo.global = globalObject;
+       dojo.doc = globalDocument;
+};
+
+dojo._fireCallback = function(callback, context, cbArguments){
+       if(context && dojo.isString(callback)){
+               callback = context[callback];
+       }
+       return callback.apply(context, cbArguments || [ ]);
+}
+
+dojo.withGlobal = function(    /*Object*/globalObject, 
+                                                       /*Function*/callback, 
+                                                       /*Object?*/thisObject, 
+                                                       /*Array?*/cbArguments){
+       // summary:
+       //              Call callback with globalObject as dojo.global and
+       //              globalObject.document as dojo.doc. If provided, globalObject
+       //              will be executed in the context of object thisObject
+       // description:
+       //              When callback() returns or throws an error, the dojo.global
+       //              and dojo.doc will be restored to its previous state.
+       var rval;
+       var oldGlob = dojo.global;
+       var oldDoc = dojo.doc;
+       try{
+               dojo.setContext(globalObject, globalObject.document);
+               rval = dojo._fireCallback(callback, thisObject, cbArguments);
+       }finally{
+               dojo.setContext(oldGlob, oldDoc);
+       }
+       return rval;
+}
+
+dojo.withDoc = function(       /*Object*/documentObject, 
+                                                       /*Function*/callback, 
+                                                       /*Object?*/thisObject, 
+                                                       /*Array?*/cbArguments){
+       // summary:
+       //              Call callback with documentObject as dojo.doc. If provided,
+       //              callback will be executed in the context of object thisObject
+       // description:
+       //              When callback() returns or throws an error, the dojo.doc will
+       //              be restored to its previous state.
+       var rval;
+       var oldDoc = dojo.doc;
+       try{
+               dojo.doc = documentObject;
+               rval = dojo._fireCallback(callback, thisObject, cbArguments);
+       }finally{
+               dojo.doc = oldDoc;
+       }
+       return rval;
+};
+
+}