         // keeping this DisplayObjectContainer since parent returns
         // that as root is not a UIComponent.
         var par:DisplayObjectContainer = component.parent; 
+
         // continue looking up the parent chain
-        // until root (or application) or FormItem is found.
+        // until a disabled UIComponent is found
+		// stopping at the root or system manager
         while (par && (par is UIComponent && UIComponent(par).enabled) &&
-               !(par is SystemManager) && par != component.root)
+               !(par is ISystemManager) && par != component.root)
         {
             par = par.parent;
         }

import flash.accessibility.Accessibility;
import flash.accessibility.AccessibilityImplementation;
import flash.accessibility.AccessibilityProperties;
import flash.display.DisplayObjectContainer;
import flash.events.Event;

import mx.accessibility.AccConst;
import mx.containers.Form;
import mx.containers.FormHeading;
import mx.containers.FormItem;
import mx.controls.Label;
import mx.core.Container;
import mx.core.UIComponent;
import mx.core.mx_internal;
import mx.managers.SystemManager;
import mx.resources.ResourceManager;
import mx.resources.IResourceManager;


    /**
     *  @private
     *  Method for supporting Form Accessibility.
     * 
     *  @param formItem Object of type FormItem. Object is used here to avoid
     *  linking in FormItem. 
     */
    private static function updateFormItemString(formItem:Object):String
    {
        var formName:String = "";
        var resourceManager:IResourceManager = ResourceManager.getInstance();
        
        var formClass:Class = Class(getDefinition("mx.containers.Form", formItem.moduleFactory));
        var form:UIComponent = UIComponent(formItem.parent);

        // If we are located within a Form, then look for the first FormHeading
        // that is a sibling that is above us in the parent's child hierarchy
        if (formClass && form is formClass)
        {
            var formHeadingClass:Class = Class(getDefinition("mx.containers.FormHeading", formItem.moduleFactory));
            var formItemIndex:int = form.getChildIndex(DisplayObject(formItem));
            for (var i:int = formItemIndex; i >= 0; i--)
            {
                var child:UIComponent = UIComponent(form.getChildAt(i));
                if (formHeadingClass && child is formHeadingClass)
                {
                    // Accessible name if it exists, else label text.
                    if (formHeadingClass(child).accessibilityProperties)
                        formName = 
                            formHeadingClass(child).accessibilityProperties.name;
                    if (formName == "") 
                        formName = formHeadingClass(child).label;
                    break;
                }
            }
