     //
     //--------------------------------------------------------------------------
     
+    /**
+     *  @private
+     */ 
+    private var parentNavigator:ViewNavigatorBase;
+    
+    /**
+     *  @private
+     */
+    private var targetNavigator:ViewNavigatorBase;
+    
+    /**
+     *  @private
+     */
     private var actionBar:ActionBar;
-    private var doInternalActionBarAnimation:Boolean;
-    private var actionBarWasVisible:Boolean;
-    private var contentGroupY:Number;
-    
-    private var tabBar:ButtonBar;
-    private var tabBarWasVisible:Boolean;
-    
+    
+    /**
+     *  @private
+     */
+    private var cachedNavigator:Image;
+    
+    /**
+     *  @private
+     */
     private var cachedActionBar:Image;
+    
+    /**
+     *  @private
+     */
     private var cachedActionGroup:Image;
+    
+    /**
+     *  @private
+     */
     private var cachedTitleGroup:Image;
+    
+    /**
+     *  @private
+     */
     private var cachedNavigationGroup:Image;
-    private var cachedTabBar:Image;
-    
-    /**
-     * The following properties keep track of the include in layout
-     * settings of the individual navigator components
-     */
-    private var tabBarExplicitIncludeInLayout:Boolean;
-    private var actionBarExplicitIncludeInLayout:Boolean;
-    private var contentGroupExplicitIncludeInLayout:Boolean;
+    
+    /**
+     *  @private
+     */
+    private var currentViewProps:Object;
+    
+    /**
+     *  @private
+     */
+    private var nextViewProps:Object;
+    
+    /**
+     *  @private
+     */
+    private var explicitContentGroupIncludeInLayout:Boolean;
+    
+    /**
+     *  @private
+     */
+    private var explicitIncludeInLayout:Boolean;
+    
+    /**
+     *  @private
+     */
+    private var fullScreenAnimation:Boolean;
     
     //--------------------------------------------------------------------------
     //

     * 
     * @param event The effect complete event dispatched by the single
     * parallel effect this transition plays.
     */
    override public function transitionComplete(event:EffectEvent=null):void
    {
        event.target.removeEventListener(EffectEvent.EFFECT_END, transitionComplete);
        
        if (currentView)
        {
            currentView.includeInLayout = true;
            currentView.cacheAsBitmap = false;
        }
        
        if (nextView)
        {
            nextView.includeInLayout = true;
            nextView.cacheAsBitmap = false;
        }
        
        if (doInternalActionBarAnimation)
        {
            if (actionBar.titleGroup)
                actionBar.titleGroup.cacheAsBitmap = false;
            
            if (cachedTitleGroup)
            {
                if (actionBar.skin is IVisualElementContainer)
                    IVisualElementContainer(actionBar.skin).removeElement(cachedTitleGroup);
                else
                    actionBar.skin.removeChild(cachedTitleGroup);
                
                cachedTitleGroup = null;
            }
            
            if (cachedNavigationGroup)
            {
                if (actionBar.skin is IVisualElementContainer)
                    IVisualElementContainer(actionBar.skin).removeElement(cachedNavigationGroup);
                else
                    actionBar.skin.removeChild(cachedNavigationGroup);
                
                actionBar.navigationGroup.cacheAsBitmap = false;
                cachedNavigationGroup = null;
            }
            
            if (cachedActionGroup)
            {
                if (actionBar.skin is IVisualElementContainer)
                    IVisualElementContainer(actionBar.skin).removeElement(cachedActionGroup);
                else
                    actionBar.skin.removeChild(cachedActionGroup);
                
                actionBar.actionGroup.cacheAsBitmap = false;
                cachedActionGroup = null;
            }
        }
        else
        {
            if (cachedActionBar)
            {
                if (navigator.skin is IVisualElementContainer)
                    IVisualElementContainer(navigator.skin).removeElement(cachedActionBar)
                else
                    navigator.skin.removeChild(cachedActionBar);
                
                cachedActionBar = null;
            }
        }
        
        if (cachedTabBar)
        {
            if (navigator.skin is IVisualElementContainer)
                IVisualElementContainer(navigator.skin).removeElement(cachedTabBar);
            else
                navigator.skin.removeChild(cachedTabBar);
            
            cachedTabBar = null;
        }
        
        // Remove items from layout
        navigator.contentGroup.includeInLayout = contentGroupExplicitIncludeInLayout;
        
        if (actionBar)
            navigator.actionBar.includeInLayout = actionBarExplicitIncludeInLayout;
        
        if (tabBar)
            tabBar.includeInLayout = tabBarExplicitIncludeInLayout;

        // TODO (chiedozi): Comment why clean up happens before transitionComplete
        super.transitionComplete(event);
        effect = null;
    }
    
    //--------------------------------------------------------------------------

     * 
     * Convenience property to determine whether the action bar is 
     * visible. 
     * 
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 2.5
     *  @productversion Flex 4.5
     */
    private function componentIsVisible(component:UIComponent):Boolean
    {
        return component && component.visible && component.width > 0 && component.height > 0;
    }
}
}