     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
-    override public function page(increase:Boolean = true):void
-    {
-        if (!viewport)
-            super.page(increase);
-        else
-            updateViewportVSP((increase) ? ScrollUnit.PAGE_DOWN : ScrollUnit.PAGE_UP);
+     override public function page(increase:Boolean = true):void
+    {
+        var oldPageSize:Number;
+        if (viewport)
+        {
+            // Want to use ScrollBar's page() implementation to get the same
+            // animated behavior for scrollbars with and without viewports.
+            // For now, just change pageSize temporarily and call the superclass
+            // implementation.
+            oldPageSize = pageSize;
+            pageSize = Math.abs(viewport.getVerticalScrollPositionDelta(
+                (increase) ? ScrollUnit.PAGE_DOWN : ScrollUnit.PAGE_UP));
+        }
+        super.page(increase);
+        if (viewport)
+            pageSize = oldPageSize;
+    } 
+
+    /**
+     * @private
+     */
+    override protected function animatePaging(newValue:Number, pageSize:Number):void
+    {
+        if (viewport)
+        {
+            var vpPageSize:Number = Math.abs(viewport.getVerticalScrollPositionDelta(
+                (newValue > value) ? ScrollUnit.PAGE_DOWN : ScrollUnit.PAGE_UP));
+            super.animatePaging(newValue, vpPageSize);
+            return;
+        }        
+        super.animatePaging(newValue, pageSize);
     }
     
     /**

     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
    override public function step(increase:Boolean = true):void
    {
        if (!viewport)
            super.step(increase);
        else
            updateViewportVSP((increase) ? ScrollUnit.DOWN : ScrollUnit.UP);
    }
    
    /**
     *  @private


package spark.components
{
import mx.core.ILayoutElement;
import mx.events.PropertyChangeEvent;
import mx.events.ResizeEvent;

import spark.components.supportClasses.ScrollBar;
import spark.core.IViewport;
import spark.core.ScrollUnit;

[IconFile("VScrollBar.png")]

