text: /*
  	Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
  	Available via Academic Free License >= 2.1 OR the modified BSD license.
  	see: http://dojotoolkit.org/license for details
  */
  
  
  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.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.withGlobal = function(	/*Object*/globalObject,
  							/*Function*/callback,
  							/*Object?*/thisObject,
  							/*Array?*/cbArguments){
  	// summary:
  	//		Invoke callback with globalObject as dojo.global and
  	//		globalObject.document as dojo.doc.
  	// description:
  	//		Invoke callback with globalObject as dojo.global and
  	//		globalObject.document as dojo.doc. If provided, globalObject
  	//		will be executed in the context of object thisObject
  	//		When callback() returns or throws an error, the dojo.global
  	//		and dojo.doc will be restored to its previous state.
  
  	var oldGlob = dojo.global;
  	try{
  		dojo.global = globalObject;
  		return dojo.withDoc.call(null, globalObject.document, callback, thisObject, cbArguments);
  	}finally{
  		dojo.global = oldGlob;
  	}
  };
  
  dojo.withDoc = function(	/*DocumentElement*/documentObject,
  							/*Function*/callback,
  							/*Object?*/thisObject,
  							/*Array?*/cbArguments){
  	// summary:
  	//		Invoke callback with documentObject as dojo.doc.
  	// description:
  	//		Invoke callback with documentObject as dojo.doc. If provided,
  	//		callback will be executed in the context of object thisObject
  	//		When callback() returns or throws an error, the dojo.doc will
  	//		be restored to its previous state.
  
  	var oldDoc = dojo.doc,
  		oldLtr = dojo._bodyLtr,
  		oldQ = dojo.isQuirks;
  
  	try{
  		dojo.doc = documentObject;
  		delete dojo._bodyLtr; // uncache
  		dojo.isQuirks = dojo.doc.compatMode == "BackCompat"; // no need to check for QuirksMode which was Opera 7 only
  
  		if(thisObject && typeof callback == "string"){
  			callback = thisObject[callback];
  		}
  
  		return callback.apply(thisObject, cbArguments || []);
  	}finally{
  		dojo.doc = oldDoc;
  		delete dojo._bodyLtr; // in case it was undefined originally, and set to true/false by the alternate document
  		if(oldLtr !== undefined){ dojo._bodyLtr = oldLtr; }
  		dojo.isQuirks = oldQ;
  	}
  };
  
  }
  