     //--------------------------------------------------------------------------
     
     /**
-     *  Returns the amount one would have to add to the viewport's current 
-     *  verticalScrollPosition to scroll by the requested "scrolling" unit.
-     * 
-     *  The value of unit must be one of the following flash.ui.Keyboard
-     *  constants: UP, DOWN, PAGE_UP, PAGE_DOWN, HOME, END.
-     * 
-     *  To scroll by a single row use UP or DOWN and to scroll to the
-     *  first or last row, use HOME or END.
+     *  @copy flex.intf.IViewport#horizontalScrollPositionDelta
+     */
+    public function horizontalScrollPositionDelta(unit:uint):Number
+    {
+        var g:GroupBase = target;
+        if (!g)
+            return 0;     
+
+        var maxIndex:int = g.numLayoutItems -1;
+        if (maxIndex < 0)
+            return 0;
+
+        var scrollR:Rectangle = g.scrollRect;
+        if (!scrollR)
+            return 0;
+            
+        var maxDelta:Number = g.contentWidth - scrollR.width - scrollR.x;
+        var minDelta:Number = -scrollR.x; 
+            
+        switch (unit)
+        {
+            case Keyboard.UP:
+                return (scrollR.x <= 0) ? 0 : -1;
+                
+            case Keyboard.DOWN:
+                return (scrollR.x >= maxDelta) ? 0 : 1;
+                
+            case Keyboard.PAGE_UP:
+                return Math.max(minDelta, -scrollR.width);
+                
+            case Keyboard.PAGE_DOWN:
+                return Math.min(maxDelta, scrollR.width);
+                
+            case Keyboard.HOME: 
+                return minDelta;
+                
+            case Keyboard.END: 
+                return maxDelta;
+                
+            default:
+                return 0;
+        }       
+    }
+    
+    /**
+     *  @copy flex.intf.IViewport#verticalScrollPositionDelta
      */
     public function verticalScrollPositionDelta(unit:uint):Number
     {

    [Inspectable(category="General")]
    
    /**
     *  When scrolling is enabled, clip the target's contents by 
     *  setting its scrollRect.  If this property is set to false,
     *  then the target's scrollRect will be null, even if its
     *  scrollPosition is non-zero or its content size is larger
     *  than its actual size.
     * 
     *  @default true
     *  @see target
     *  @see updateScrollRect
     *  @see verticalScrollPosition
     *  @see horizontalScrollPosition
     */
    public function get clipContent():Boolean 
    {

                return 0;
        }    	
    } 
     
    /**
     *  Called when the verticalScrollPosition or horizontalScrollPosition 
