I see some issues here. First is this in your mainApp.mxml:
private function onCreationComplete():void
{
lowest = new lowestLevel;
lowest.addEventListener('myEventType',mainAppListenerHandler);
}
You are creating an instance of lowestLevel and adding an event listener to this. But, this is not the same instance created in middleLevel. If you have two independent instances of a component; dispatching an event in one instance will not cause event listeners on the other instance to fire.
Since your mainApp's lowestLevel instance is never added to the stage in any manner; the user can never interact with it firing off the event.
You can try this:
private function onCreationComplete():void
{
this.addEventListener('myEventType',mainAppListenerHandler);
}
This will add the event listener on the mainApp file. As the event bubbles; the event is dispatched on every class in the display hierarchy. So, this should work.
The second issue I see is that the PopUpManager creates its windows as a child of the SystemManager component; which is independent of the current display hierarchy. To quote the docs:
all popups are parented by the SystemManager.
So, dispatching an event from the lowestLevel will not bubble to middleLevel or mainApp because it is not actually the "lowest level". It is almost as it exists in a parallel hierarchy.
The solution would be to listen for the event directly on the lowestLevel instance in middleLevel and redispatch it.