146 lines
4.5 KiB
JavaScript
146 lines
4.5 KiB
JavaScript
|
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;
|
||
|
};
|
||
|
|
||
|
}
|