     public function get lastIndexInView():int
     {
         return _lastIndexInView;
+    }
+    
+    //----------------------------------
+    //  verticalAlign
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _verticalAlign:String = VerticalAlign.TOP;
+
+    [Inspectable(category="General")]
+
+    /** Horizontal alignment of children in the container.
+     *  Possible values are <code>"top"</code>, <code>"middle"</code>,
+     *  <code>"bottom"</code>, <code>"justify"</code>, 
+     *  and <code>"contentJustify"</code>.
+     *  The default value is <code>"top"</code>, but some containers,
+     *  such as List, use a different default value.  There are constants 
+     *  for these values in <code>mx.layout.VerticalAlign</code>.
+     */
+    public function get verticalAlign():String
+    {
+        return _verticalAlign;
+    }
+
+    /**
+     *  @private
+     */
+    public function set verticalAlign(value:String):void
+    {
+        if (value == _verticalAlign) 
+            return;
+        
+        _verticalAlign = value;
+        invalidateTargetDisplayList();
     }
 
     /**

                                                                spaceToDistribute,
                                                                totalPercentWidth,
                                                                childInfoArray);
            for each (childInfo in childInfoArray)
            {
            	newHeight = NaN;
            	if (hasPercentHeight(childInfo.layoutItem))
            	   newHeight = calculatePercentHeight(childInfo.layoutItem, height);

                childInfo.layoutItem.setActualSize(childInfo.size, newHeight);
            }
        }
        return spaceToDistribute;

        var maxY:Number = 0;     
        var firstColInView:int = -1;
        var lastColInView:int = -1;
                
        for (var index:int = 0; index < count; index++)
        {
            layoutItem = layoutTarget.getLayoutItemAt(index);
            if (!layoutItem || !layoutItem.includeInLayout)
                continue;
                
            // Set the layout item's position
            var y:Number = (contentHeight - layoutItem.actualSize.y) * vAlign;
            layoutItem.setActualPosition(x, y);
            
            // Update maxX,Y, first,lastVisibleIndex, and x
            var dx:Number = layoutItem.actualSize.x;
            var dy:Number = layoutItem.actualSize.y;
            maxX = Math.max(maxX, x + dx);
            maxY = Math.max(maxY, y + dy);            
            if (!clipContent || 
