     
     /**
      *  @private
+     *  X-value before going in to full screen mode.  This way we 
+     *  can reset it to this afterwards.
+     */
+    private var beforeFullScreenX:Number;
+    
+    /**
+     *  @private
+     *  Y-value before going in to full screen mode.  This way we 
+     *  can reset it to this afterwards.
+     */
+    private var beforeFullScreenY:Number;
+    
+    /**
+     *  @private
+     *  Timer, which waits for 3 seconds by default to hide the 
+     *  playback controls.  If there's interaction by the user, then 
+     *  these playback controls are show again, and the timer will reset 
+     *  and start the countdown.
+     */
+    private var fullScreenHideControlTimer:Timer;
+    
+    /**
+     *  @private
      */
     private function fullScreenButton_clickHandler(event:MouseEvent):void
     {
         if (!fullScreen)
         {
-            // TODO (rfrishbe): What should we do on full screen?
             fullScreen = true;
+            
+            // need it to go into full screen state for the skin
             invalidateSkinState();
+            
+            // let's get it off of our layout system so it doesn't interfere with 
+            // the sizing and positioning. Then let's resize it to be 
+            // the full size of our screen.  Then let's position it off-screen so
+            // there are no other elements in the way. 
+            beforeFullScreenX = this.x;
+            beforeFullScreenY = this.y;
             includeInLayout = false;
             setLayoutBoundsSize(stage.fullScreenWidth, stage.fullScreenHeight);
+            this.validateNow();
+            this.x = -(2*width);
+            this.y = -(2*height);
+            
+            // this is for video performance reasons
             videoElement.mx_internal::videoPlayer.smoothing = false;
             videoElement.mx_internal::videoPlayer.deblocking = 0;
-            validateNow();
+            
+            // now into full screen we go
+            // TODO: what if we're sandboxed...can we get the stage?
+            stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenEventHandler);
+            stage.fullScreenSourceRect = new Rectangle(x, y, width, height);
             stage.displayState = StageDisplayState.FULL_SCREEN;
-            stage.fullScreenSourceRect = new Rectangle(0, 0, width, height);
-            stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenEventHandler);
+            
+            // start timer for detecting for mouse movements/clicks to hide the controls
+            fullScreenHideControlTimer = new Timer(FULL_SCREEN_HIDE_CONTROLS_DELAY, 1);
+            fullScreenHideControlTimer.addEventListener(TimerEvent.TIMER_COMPLETE, 
+                fullScreenHideControlTimer_timerCompleteHandler, false, 0, true);
+            
+            // use stage or systemManager?
+            systemManager.addEventListener(MouseEvent.MOUSE_DOWN, resetFullScreenHideControlTimer);
+            systemManager.addEventListener(MouseEvent.MOUSE_MOVE, resetFullScreenHideControlTimer);
+            systemManager.addEventListener(MouseEvent.MOUSE_WHEEL, resetFullScreenHideControlTimer);
+            
+            // keyboard events don't happen when in fullScreen mode, but could be in fullScreen and interactive mode
+            systemManager.addEventListener(KeyboardEvent.KEY_DOWN, resetFullScreenHideControlTimer);
+            fullScreenHideControlTimer.start();
         }
         else
         {

            videoElement.removeEventListener(spark.events.VideoEvent.PLAYHEAD_UPDATE, videoElement_playHeadUpdateHandler);
            videoElement.removeEventListener(ProgressEvent.PROGRESS, videoElement_progressHandler);
            videoElement.removeEventListener(fl.video.VideoEvent.STATE_CHANGE, videoElement_stateChangeHandler);
            
            // just strictly for binding purposes
            videoElement.removeEventListener("sourceChanged", dispatchEvent);

     *  @productversion Flex 4
     */
    public var playButton:ButtonBase;
    
    [SkinPart(required="false")]
    
    /**
     *  An optional skin part for all of the player controls.  We 
     *  need this skin part to know what to hide when in full screen 
     *  mode and there's been no user-interaction.
     *  
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
    public var playerControls:DisplayObject;
    
    [SkinPart(required="false")]
    
