text: define("dojox/dgauges/CircularGauge", ["dojo/_base/declare", "dojo/dom-geometry", "dojox/gfx", "./GaugeBase"], function(declare, domGeom, gfx, GaugeBase){
  	return declare("dojox.dgauges.CircularGauge", GaugeBase, {
  		// summary:
  		//		The base class for circular gauges.
  		//		You can create custom circular or semi-circular gauges by extending this class.
  		//		See dojox.dgauges.components.default.CircularLinearGauge.js for an example of circular gauge.
  		
  		_transformProperties: null,
  		
  		refreshRendering: function(){
  			if(this._widgetBox.w <= 0 || this._widgetBox.h <= 0){
  				return;
  			}
  			
  			for(var key in this._elementsIndex){
  				this._elementsRenderers[key] = this._elementsIndex[key].refreshRendering();
  			}
  			
  			// Maximize the drawing area and center the gauge
  			var bb = this._computeBoundingBox(this._gfxGroup);
  			
  			var naturalRatio = (bb.x + bb.width) / (bb.y + bb.height);
  			var widgetWidth = this._widgetBox.w;
  			var widgetHeight = this._widgetBox.h;
  			var widgetRatio = this._widgetBox.w / this._widgetBox.h;
  			
  			var xpos = 0;
  			var ypos = 0;
  			var h = 0;
  			var w = 0;
  			if(naturalRatio > widgetRatio){
  				w = widgetWidth;
  				h = w / naturalRatio;
  				ypos = (widgetHeight - h) / 2;
  			}else{
  				h = widgetHeight;
  				w = h * naturalRatio;
  				xpos = (widgetWidth - w) / 2;
  			}
  			var scaleFactor = Math.max(w / (bb.x + bb.width), h / (bb.y + bb.height));
  			this._transformProperties = {scale:scaleFactor, tx:xpos, ty:ypos};
  			this._gfxGroup.setTransform([gfx.matrix.scale(scaleFactor), gfx.matrix.translate(xpos / scaleFactor, ypos / scaleFactor)]);
  		},
  		
  		_gaugeToPage: function(px, py){
  			// summary:
  			//		Internal method.
  			// tags:
  			//		private
  			if(this._transformProperties){
  				var np = domGeom.position(this.domNode, true);
  				return {x: np.x + px * this._transformProperties.scale + this._transformProperties.tx, y: np.y + py * this._transformProperties.scale + this._transformProperties.ty};
  			}else{
  				return null;
  			}
  		}
  	});
  });
  