docs: function Stage(canvas) {
  		this.Container_constructor();
  
  
  	// public properties:
  		/**
  		 * Indicates whether the stage should automatically clear the canvas before each render. You can set this to <code>false</code>
  		 * to manually control clearing (for generative art, or when pointing multiple stages at the same canvas for
  		 * example).
  		 *
  		 * <h4>Example</h4>
  		 *
  		 *      var stage = new createjs.Stage("canvasId");
  		 *      stage.autoClear = false;
  		 *
  		 * @property autoClear
  		 * @type Boolean
  		 * @default true
  		 **/
  		this.autoClear = true;
  
  		/**
  		 * The canvas the stage will render to. Multiple stages can share a single canvas, but you must disable autoClear for all but the
  		 * first stage that will be ticked (or they will clear each other's render).
  		 *
  		 * When changing the canvas property you must disable the events on the old canvas, and enable events on the
  		 * new canvas or mouse events will not work as expected. For example:
  		 *
  		 *      myStage.enableDOMEvents(false);
  		 *      myStage.canvas = anotherCanvas;
  		 *      myStage.enableDOMEvents(true);
  		 *
  		 * @property canvas
  		 * @type HTMLCanvasElement | Object
  		 **/
  		this.canvas = (typeof canvas == "string") ? document.getElementById(canvas) : canvas;
  
  		/**
  		 * The current mouse X position on the canvas. If the mouse leaves the canvas, this will indicate the most recent
  		 * position over the canvas, and mouseInBounds will be set to false.
  		 * @property mouseX
  		 * @type Number
  		 * @readonly
  		 **/
  		this.mouseX = 0;
  
  		/**
  		 * The current mouse Y position on the canvas. If the mouse leaves the canvas, this will indicate the most recent
  		 * position over the canvas, and mouseInBounds will be set to false.
  		 * @property mouseY
  		 * @type Number
  		 * @readonly
  		 **/
  		this.mouseY = 0;
  
  		/**
  		 * Specifies the area of the stage to affect when calling update. This can be use to selectively
  		 * re-draw specific regions of the canvas. If null, the whole canvas area is drawn.
  		 * @property drawRect
  		 * @type {Rectangle}
  		 */
  		this.drawRect = null;
  
  		/**
  		 * Indicates whether display objects should be rendered on whole pixels. You can set the
  		 * {{#crossLink "DisplayObject/snapToPixel"}}{{/crossLink}} property of
  		 * display objects to false to enable/disable this behaviour on a per instance basis.
  		 * @property snapToPixelEnabled
  		 * @type Boolean
  		 * @default false
  		 **/
  		this.snapToPixelEnabled = false;
  
  		/**
  		 * Indicates whether the mouse is currently within the bounds of the canvas.
  		 * @property mouseInBounds
  		 * @type Boolean
  		 * @default false
  		 **/
  		this.mouseInBounds = false;
  
  		/**
  		 * If true, tick callbacks will be called on all display objects on the stage prior to rendering to the canvas.
  		 * @property tickOnUpdate
  		 * @type Boolean
  		 * @default true
  		 **/
  		this.tickOnUpdate = true;
  
  		/**
  		 * If true, mouse move events will continue to be called when the mouse leaves the target canvas. See
  		 * {{#crossLink "Stage/mouseInBounds:property"}}{{/crossLink}}, and {{#crossLink "MouseEvent"}}{{/crossLink}}
  		 * x/y/rawX/rawY.
  		 * @property mouseMoveOutside
  		 * @type Boolean
  		 * @default false
  		 **/
  		this.mouseMoveOutside = false;
  
  
  		/**
  		 * Prevents selection of other elements in the html page if the user clicks and drags, or double clicks on the canvas.
  		 * This works by calling `preventDefault()` on any mousedown events (or touch equivalent) originating on the canvas.
  		 * @property preventSelection
  		 * @type Boolean
  		 * @default true
  		 **/
  		this.preventSelection = true;
  
  		/**
  		 * The hitArea property is not supported for Stage.
  		 * @property hitArea
  		 * @type {DisplayObject}
  		 * @default null
  		 */
  
  
  	// private properties:
  		/**
  		 * Holds objects with data for each active pointer id. Each object has the following properties:
  		 * x, y, event, target, overTarget, overX, overY, inBounds, posEvtObj (native event that last updated position)
  		 * @property _pointerData
  		 * @type {Object}
  		 * @private
  		 */
  		this._pointerData = {};
  
  		/**
  		 * Number of active pointers.
  		 * @property _pointerCount
  		 * @type {Object}
  		 * @private
  		 */
  		this._pointerCount = 0;
  
  		/**
  		 * The ID of the primary pointer.
  		 * @property _primaryPointerID
  		 * @type {Object}
  		 * @private
  		 */
  		this._primaryPointerID = null;
  
  		/**
  		 * @property _mouseOverIntervalID
  		 * @protected
  		 * @type Number
  		 **/
  		this._mouseOverIntervalID = null;
  
  		/**
  		 * @property _nextStage
  		 * @protected
  		 * @type Stage
  		 **/
  		this._nextStage = null;
  
  		/**
  		 * @property _prevStage
  		 * @protected
  		 * @type Stage
  		 **/
  		this._prevStage = null;
  
  
  	// initialize:
  		this.enableDOMEvents(true);
  	}