text: require({cache:{
  'url:dojox/widget/Dialog/Dialog.html':"<div class=\"dojoxDialog\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"${id}_title\">\n\t<div dojoAttachPoint=\"titleBar\" class=\"dojoxDialogTitleBar\">\n\t\t<span dojoAttachPoint=\"titleNode\" class=\"dojoxDialogTitle\" id=\"${id}_title\">${title}</span>\n\t</div>\n\t<div dojoAttachPoint=\"dojoxDialogWrapper\">\n\t\t<div dojoAttachPoint=\"containerNode\" class=\"dojoxDialogPaneContent\"></div>\n\t</div>\n\t<div dojoAttachPoint=\"closeButtonNode\" class=\"dojoxDialogCloseIcon\" dojoAttachEvent=\"onclick: onCancel\">\n\t\t\t<span dojoAttachPoint=\"closeText\" class=\"closeText\">x</span>\n\t</div>\n</div>\n"}});
  define("dojox/widget/Dialog", [
  	"dojo", "dojox", "dojo/text!./Dialog/Dialog.html", 
  	"dijit/Dialog", "dojo/window", "dojox/fx", "./DialogSimple"
  ], function(dojo, dojox, template){
  
  	dojo.getObject('widget', true, dojox);
  	
  	dojo.declare('dojox.widget.Dialog', dojox.widget.DialogSimple,
  		{
  		// summary:
  		//		A Lightbox-like Modal-dialog for HTML Content
  		// description:
  		//		An HTML-capable Dialog widget with advanced sizing
  		//		options, animated show/hide and other useful options.
  		//
  		//		This Dialog is also very easy to apply custom styles to.
  		//
  		//		It works identically to a `dijit.Dialog` with several
  		//		additional parameters.
  
  		templateString: template,
  
  		// sizeToViewport: Boolean
  		//		If true, fix the size of the dialog to the Viewport based on
  		//		viewportPadding value rather than the calculated or natural
  		//		style. If false, base the size on a passed dimension attribute.
  		//		Either way, the viewportPadding value is used if the the content
  		//		extends beyond the viewport size for whatever reason.
  		sizeToViewport: false,
  
  		// viewportPadding: Integer
  		//		If sizeToViewport="true", this is the amount of padding in pixels to leave
  		//		between the dialog border and the viewport edge.
  		//		This value is also used when sizeToViewport="false" and dimensions exceeded
  		//		by dialog content to ensure dialog does not go outside viewport boundary
  		viewportPadding: 35,
  
  		// dimensions: Array
  		//		A two-element array of [width,height] to animate the Dialog to if sizeToViewport="false"
  		//		Defaults to [300,300]
  		dimensions: null,
  
  		// easing: Function?|String?
  		//		An easing function to apply to the sizing animation.
  		easing: null,
  
  		// sizeDuration: Integer
  		//		Time (in ms) to use in the Animation for sizing.
  		sizeDuration: dijit._defaultDuration,
  
  		// sizeMethod: String
  		//		To be passed to dojox.fx.sizeTo, one of "chain" or "combine" to effect
  		//		the animation sequence.
  		sizeMethod: "chain",
  
  		// showTitle: Boolean
  		//		Toogle to show or hide the Title area. Can only be set at startup.
  		showTitle: false,
  
  		// draggable: Boolean
  		//		Make the pane draggable. Differs from dijit.Dialog by setting default to false
  		draggable: false, // simply over-ride the default from dijit.Dialog
  
  		// modal: Boolean
  		//		If true, this Dialog instance will be truly modal and prevent closing until
  		//		explicitly told to by calling hide() - Defaults to false to preserve previous
  		//		behaviors.
  		modal: false,
  
  		constructor: function(props, node){
  			this.easing = props.easing || dojo._defaultEasing;
  			this.dimensions = props.dimensions || [300, 300];
  		},
  
  		_setup: function(){
  			// summary:
  			//		Piggyback on dijit.Dialog's _setup for load-time options, deferred to
  
  			this.inherited(arguments);
  			if(!this._alreadyInitialized){
  				this._navIn = dojo.fadeIn({ node: this.closeButtonNode });
  				this._navOut = dojo.fadeOut({ node: this.closeButtonNode });
  				if(!this.showTitle){
  					dojo.addClass(this.domNode,"dojoxDialogNoTitle");
  				}
  			}
  		},
  
  		layout: function(e){
  			this._setSize();
  			this.inherited(arguments);
  		},
  
  		_setSize: function(){
  			// summary:
  			//		cache and set our desired end position
  			this._vp = dojo.window.getBox();
  			var tc = this.containerNode,
  				vpSized = this.sizeToViewport
  			;
  			return this._displaysize = {
  				w: vpSized ? tc.scrollWidth : this.dimensions[0],
  				h: vpSized ? tc.scrollHeight : this.dimensions[1]
  			}; // Object
  		},
  
  		show: function(){
  			if(this.open){ return; }
  
  			this._setSize();
  			dojo.style(this.closeButtonNode,"opacity", 0);
  			dojo.style(this.domNode, {
  				overflow: "hidden",
  				opacity: 0,
  				width: "1px",
  				height: "1px"
  			});
  			dojo.style(this.containerNode, {
  				opacity: 0,
  				overflow: "hidden"
  			});
  
  			this.inherited(arguments);
  
  			if(this.modal){
  				// prevent escape key from closing dialog
  				// connect to body to trap this event from the Dialog a11y code, and stop escape key
  				// from doing anything in the modal:true case:
  				this._modalconnects.push(dojo.connect(dojo.body(), "onkeypress", function(e){
  					if(e.charOrCode == dojo.keys.ESCAPE){
  						dojo.stopEvent(e);
  					}
  				}));
  			}else{
  				// otherwise, allow clicking on the underlay to close
  				this._modalconnects.push(dojo.connect(dijit._underlay.domNode, "onclick", this, "onCancel"));
  			}
  			this._modalconnects.push(dojo.connect(this.domNode,"onmouseenter",this,"_handleNav"));
  			this._modalconnects.push(dojo.connect(this.domNode,"onmouseleave",this,"_handleNav"));
  
  		},
  
  		_handleNav: function(e){
  			// summary:
  			//		Handle's showing or hiding the close icon
  
  			var navou = "_navOut",
  				navin = "_navIn",
  				animou = (e.type == "mouseout" ? navin : navou),
  				animin = (e.type == "mouseout" ? navou : navin)
  			;
  
  			this[animou].stop();
  			this[animin].play();
  
  		},
  
  		// an experiment in a quicksilver-like hide. too choppy for me.
  		/*
  		hide: function(){
  			// summary:
  			//		Hide the dialog
  
  			// if we haven't been initialized yet then we aren't showing and we can just return
  			if(!this._alreadyInitialized){
  				return;
  			}
  
  			this._fadeIn && this._fadeIn.stop();
  
  			if (this._scrollConnected){
  				this._scrollConnected = false;
  			}
  			dojo.forEach(this._modalconnects, dojo.disconnect);
  			this._modalconnects = [];
  			if(this.refocus){
  				this.connect(this._fadeOut,"onEnd",dojo.hitch(dijit,"focus",this._savedFocus));
  			}
  			if(this._relativePosition){
  				delete this._relativePosition;
  			}
  
  			dojox.fx.sizeTo({
  				node: this.domNode,
  				duration:this.sizeDuration || this.duration,
  				width: this._vp.w - 1,
  				height: 5,
  				onBegin: dojo.hitch(this,function(){
  					this._fadeOut.play(this.sizeDuration / 2);
  				})
  			}).play();
  
  			this.open = false;
  		}, */
  
  		_position: function(){
  
  			if(!this._started){ return; } // prevent content: from firing this anim #8914
  
  			if(this._sizing){
  				this._sizing.stop();
  				this.disconnect(this._sizingConnect);
  				delete this._sizing;
  			}
  
  			this.inherited(arguments);
  
  			if(!this.open){ dojo.style(this.containerNode, "opacity", 0); }
  			var pad = this.viewportPadding * 2;
  
  			var props = {
  				node: this.domNode,
  				duration: this.sizeDuration || dijit._defaultDuration,
  				easing: this.easing,
  				method: this.sizeMethod
  			};
  
  			var ds = this._displaysize || this._setSize();
  			props['width'] = ds.w = (ds.w + pad >= this._vp.w || this.sizeToViewport)
  				? this._vp.w - pad : ds.w;
  
  			props['height'] = ds.h = (ds.h + pad >= this._vp.h || this.sizeToViewport)
  				? this._vp.h - pad : ds.h;
  
  			this._sizing = dojox.fx.sizeTo(props);
  			this._sizingConnect = this.connect(this._sizing,"onEnd","_showContent");
  			this._sizing.play();
  
  		},
  
  		_showContent: function(e){
  			// summary:
  			//		Show the inner container after sizing animation
  
  			var container = this.containerNode;
  			dojo.style(this.domNode, {
  				overflow: "visible",
  				opacity: 1
  			});
  			dojo.style(this.closeButtonNode,"opacity",1);
  			dojo.style(container, {
  				height: this._displaysize.h - this.titleNode.offsetHeight + "px",
  				width: this._displaysize.w + "px",
  				overflow:"auto"
  			});
  			dojo.anim(container, { opacity:1 });
  		}
  
  	});
  
  	return dojox.widget.Dialog;
  
  });
  
  