     {
         // Screen resize might require a new arrow direction and callout position
         invalidatePosition();
-        determineMaxSize(owner);
     }
 }
 }
    
    /**
     *  @private
     */
    mx_internal function determineMaxSize(owner:DisplayObject = null):void
    {
        var calloutOwner:UIComponent = owner as UIComponent;
        var sbRoot:DisplayObject = (calloutOwner) ? calloutOwner.systemManager.getSandboxRoot() : null;
        
        // Sanity check
        if (!sbRoot)
            return;
        
        // Clear previous max size values
        calloutMaxWidth = calloutMaxHeight = NaN;
        
        // Set maxWidth and maxHeight based on owner bounds. Prefer top/bottom
        // and left/right max based on most available space. The owner can 
        // still be obscured only if horizontalPosition and verticalPosition 
        // are explicitly set START or END.
        var screen:Rectangle = calloutOwner.screen;
        var ownerBounds:Rectangle = calloutOwner.getBounds(sbRoot);
        var isLandscape:Boolean = (screen.width > screen.height);
    
        var ownerLeft:Number = ownerBounds.left;
        var ownerRight:Number = ownerBounds.right;
        var calloutMaxW:Number = NaN;
        
        // Compute max width based on preferred position. Actual position
        // is later based on this max width.
        switch (horizontalPosition)
        {
            case CalloutPosition.AUTO:
            {
                // fall through to middle when portrait
                if (isLandscape)
                    break;
            }
            case CalloutPosition.MIDDLE:
            {
                // Callout matches screen width
                calloutMaxW = screen.width - (margin * 2);
                break;
            }
            case CalloutPosition.START:
            case CalloutPosition.END:
            {
                // Swap left and right when using inner positions
                ownerLeft = ownerBounds.right;
                ownerRight = ownerBounds.left;
                break;
            }
        }
        
        if (!isNaN(calloutMaxW))
            calloutMaxWidth = calloutMaxW;
        else
            calloutMaxWidth = Math.max(ownerLeft, screen.right - ownerRight) - margin;
        
        var ownerTop:Number = ownerBounds.top;
        var ownerBottom:Number = ownerBounds.bottom;
        var calloutMaxH:Number = NaN;
        
        // Compute max height based on preferred position. Actual position
        // is later based on this max height.
        switch (verticalPosition)
        {
            case CalloutPosition.AUTO:
            {
                // fall through to middle when landscape
                if (!isLandscape)
                    break;
            }
            case CalloutPosition.MIDDLE:
            {
                // Callout matches screen height
                calloutMaxH = screen.height - (margin * 2);
                break;
            }
            case CalloutPosition.START:
            case CalloutPosition.END:
            {
                // Swap top and bottom when using inner positions
                ownerTop = ownerBounds.bottom;
                ownerBottom = ownerBounds.top;
                break;
            }
        }
        
        if (!isNaN(calloutMaxH))
            calloutMaxHeight = calloutMaxH;
        else
            calloutMaxHeight = Math.max(ownerTop, screen.bottom - ownerBottom) - margin;
        
        // invalidate size if no explicit max sizes are set
        if (skin && ((isNaN(super.explicitMaxWidth) || isNaN(super.explicitMaxHeight))))
            skin.invalidateSize();
    }

    /**

        if (isOpen)
            return;
        
        // reset state
        invalidatePositionFlag = false;
        arrowDirectionAdjusted = false;

        // Add to PopUpManager, calls updatePopUpPosition(), and change state
        super.open(owner, modal);
