             const o:PopUpData = findPopupInfoByOwner(popUp);
             if (o)
             {
-				var dynamicEvent:DynamicEvent = new DynamicEvent("bringToFront", false, true);
-				dynamicEvent.popUpData = o;
-				dynamicEvent.popUp = popUp;
-				if (!dispatchEvent(dynamicEvent))
-					return;
+                if (hasEventListener("bringToFront"))
+                {
+				    var dynamicEvent:DynamicEvent = new DynamicEvent("bringToFront", false, true);
+				    dynamicEvent.popUpData = o;
+				    dynamicEvent.popUp = popUp;
+				    if (!dispatchEvent(dynamicEvent))
+					    return;
+                }
                 const sm:ISystemManager = ISystemManager(popUp.parent);
                 if (o.topMost)
                     sm.popUpChildren.setChildIndex(DisplayObject(popUp), sm.popUpChildren.numChildren - 1);

        g.drawRect(s.x, s.y, s.width, s.height);
        g.endFill();

		dynamicEvent = new DynamicEvent("updateModalMask");
		dynamicEvent.popUpData = o;
		dynamicEvent.popUp = popup;
		dynamicEvent.childrenList = childrenList;
		dispatchEvent(dynamicEvent);

        // a modal mousedownoutside handler just dispatches the event
        o._mouseDownOutsideHandler  = dispatchMouseDownOutsideEvent;

            var isTopLevelRoot:Boolean;
            var sbRoot:DisplayObject = systemManager.getSandboxRoot();

            var request:Request;
            if (hasEventListener("isTopLevelRoot"))
            {
    			request = new Request("isTopLevelRoot", false, true);
            }
			if (request && !dispatchEvent(request))
				isTopLevelRoot = Boolean(request.value);
            else
                isTopLevelRoot = systemManager.isTopLevelRoot();
