     //---------------------------------- 
     
     /**
-     *  A value of true means when a descendant element gains focus, the Scroller will scroll
-     *  that element into view. 
-     * 
+     *  Some devices do not support a hardware keyboard. 
+     *  Instead, these devices use a keyboard that opens on 
+     *  the screen when necessary. 
+     *  A value of <code>true</code> means that when a component in 
+     *  the container wrapped by the scroller receives focus, 
+     *  the Scroller scrolls that component into view.
+     *
+     *  <p>When the keyboard closes, the parent container might be smaller 
+     *  than the available screen space. 
+     *  If the container is smaller than the available screen space, 
+     *  then the Scroller restores the scroll positions to 0, 
+     *  the top of the wrapped container.</p>
+     *
      *  @default true
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */ 
     public var ensureFocusedElementIsVisible:Boolean = true;
     

        
        return new Point(velX,velY);
    }
	
	/**
	 *  @private
	 *  Helper method to dispatch bubbling events on mouseDownDisplayObject.  Since this 
	 *  object can be off the display list, this may be tricky.  Technically, we should 
	 *  grab all the live objects at the time of mouseDown and dispatch events to them 
	 *  manually, but instead, we just use this heuristic, which is dispatch it to 
	 *  mouseDownedDisplayObject.  If it's not inside of scroller and off the display list,
	 *  then dispatch to scroller as well.
	 * 
	 *  <p>If you absolutely need to know the touch event ended, add event listeners 
	 *  to the mouseDownedDisplayObject directly and don't rely on event 
	 *  bubbling.</p>
	 */
	private function dispatchBubblingEventOnMouseDownedDisplayObject(event:Event):Boolean
	{
		var eventAccepted:Boolean = true;
		if (mouseDownedDisplayObject)
		{
			eventAccepted = eventAccepted && mouseDownedDisplayObject.dispatchEvent(event);
			if (!mouseDownedDisplayObject.stage)
			{
				if (scroller && !scroller.contains(mouseDownedDisplayObject))
					eventAccepted = eventAccepted && scroller.dispatchEvent(event);
			}
		}
		else
		{
			eventAccepted = eventAccepted && scroller.dispatchEvent(event);
		}
		
		return eventAccepted;
	}
	
    /**
     *  @private
     *  When the touchScrollThrow is over, we should dispatch a touchInteractionEnd.

                var scrollStartEvent:TouchInteractionEvent = new TouchInteractionEvent(TouchInteractionEvent.TOUCH_INTERACTION_START, true, true);
                scrollStartEvent.relatedObject = scroller;
                scrollStartEvent.reason = TouchInteractionReason.SCROLL;
                dispatchBubblingEventOnMouseDownedDisplayObject(scrollStartEvent);
                
                isScrolling = true;
                
