     
     /**
      *  @private
+     *  Return the original height if the soft keyboard is active. This height
+     *  is used to stabilize AUTO positioning so that the position is based
+     *  on the original height of the Callout instead of a possibly shorter
+     *  height due to soft keyboard effects.
+     */
+    mx_internal function get calloutHeight():Number
+    {
+        return (isSoftKeyboardEffectActive) ? softKeyboardEffectCachedHeight : getLayoutBoundsHeight();
+    }
+    
+    /**
+     *  @private
      *  Compute max width and max height. Uses the the owner and screen bounds 
      *  as well as preferred positions to determine max width and max height  
      *  for all possible exterior and interior positions.

        var ownerWidth:Number = (ownerVisualElement) ? ownerVisualElement.getLayoutBoundsWidth() : owner.width;
        var ownerHeight:Number = (ownerVisualElement) ? ownerVisualElement.getLayoutBoundsHeight() : owner.height;
        var calloutWidth:Number = getLayoutBoundsWidth();
        var calloutHeight:Number = getLayoutBoundsHeight();

        switch (horizontalPos)
        {

            default:
            {
                // Maximum is the larger of the actual position or flipped position
                maxH = Math.max(ownerTop, screen.bottom - ownerBottom) - margin;
                break;
            }
        }
