         
         if (modal)
         {
-            // create a modal window shield which blocks input and sets up mouseDownOutside logic
+			// handles accessibility for modal popUps.
+			if(Capabilities.hasAccessibility && Accessibility.active)
+				window.addEventListener(FlexEvent.CREATION_COMPLETE, modalPopUpCreationCompleteHandler, false, 0, true);
+
+			// create a modal window shield which blocks input and sets up mouseDownOutside logic
             createModalWindow(parent, o, children, visibleFlag, smp, smp.getSandboxRoot());
         }
         else

import flash.events.MouseEvent;
import flash.geom.Point;
import flash.geom.Rectangle;

import mx.automation.IAutomationObject;
import mx.core.FlexGlobals;

                // modal
                if (modalWindow)
                {
					// restore accessibility to document
					removeModalPopUpAccessibility(popUp);
					
					// clean up all handlers
					sm.removeEventListener(Event.RESIZE, o.resizeHandler);
                    
                    popUp.removeEventListener(FlexEvent.SHOW, popupShowHandler);
                    popUp.removeEventListener(FlexEvent.HIDE, popupHideHandler);
