text: define("dojo/dnd/TimedMoveable", ["../_base/declare", "./Moveable" /*=====, "./Mover" =====*/], function(declare, Moveable /*=====, Mover =====*/){
  	// module:
  	//		dojo/dnd/TimedMoveable
  
  	/*=====
  	var __TimedMoveableArgs = declare([Moveable.__MoveableArgs], {
  		// timeout: Number
  		//		delay move by this number of ms,
  		//		accumulating position changes during the timeout
  		timeout: 0
  	});
  	=====*/
  
  	// precalculate long expressions
  	var oldOnMove = Moveable.prototype.onMove;
  
  	return declare("dojo.dnd.TimedMoveable", Moveable, {
  		// summary:
  		//		A specialized version of Moveable to support an FPS throttling.
  		//		This class puts an upper restriction on FPS, which may reduce
  		//		the CPU load. The additional parameter "timeout" regulates
  		//		the delay before actually moving the moveable object.
  
  		// object attributes (for markup)
  		timeout: 40,	// in ms, 40ms corresponds to 25 fps
  
  		constructor: function(node, params){
  			// summary:
  			//		an object that makes a node moveable with a timer
  			// node: Node||String
  			//		a node (or node's id) to be moved
  			// params: __TimedMoveableArgs
  			//		object with additional parameters.
  
  			// sanitize parameters
  			if(!params){ params = {}; }
  			if(params.timeout && typeof params.timeout == "number" && params.timeout >= 0){
  				this.timeout = params.timeout;
  			}
  		},
  
  		onMoveStop: function(/*Mover*/ mover){
  			if(mover._timer){
  				// stop timer
  				clearTimeout(mover._timer);
  				// reflect the last received position
  				oldOnMove.call(this, mover, mover._leftTop);
  			}
  			Moveable.prototype.onMoveStop.apply(this, arguments);
  		},
  		onMove: function(/*Mover*/ mover, /*Object*/ leftTop){
  			mover._leftTop = leftTop;
  			if(!mover._timer){
  				var _t = this;	// to avoid using dojo.hitch()
  				mover._timer = setTimeout(function(){
  					// we don't have any pending requests
  					mover._timer = null;
  					// reflect the last received position
  					oldOnMove.call(_t, mover, mover._leftTop);
  				}, this.timeout);
  			}
  		}
  	});
  });
  