 import flash.events.FocusEvent;
 import flash.events.KeyboardEvent;
 import flash.events.MouseEvent;
+import flash.geom.Point;
 import flash.ui.Keyboard;
 import flash.ui.Mouse;
 

    private function muteButton_mutedChangeHandler(event:FlexEvent):void
    {
        muted = muteButton.muted;
        dispatchEvent(event);
    }
    
    /**

    //  Overridden Methods
    //
    //--------------------------------------------------------------------------   
    
    /**
     *  @private
     *  Overridden to handle the muted case where the value's not actually changed, 
     *  but we want it to show up as 0.
     */
    override protected function updateSkinDisplayList():void
    {
        if (!thumb || !track)
            return;
    
        var thumbRange:Number = track.getLayoutBoundsHeight() - thumb.getLayoutBoundsHeight();
        var range:Number = maximum - minimum;
        
        // calculate new thumb position.
        var thumbPosTrackY:Number;
        
        // if muted, it's 0.  otherwise, calculate it normally
        // TODO (rfrishbe): should probably use setValue(0) and listen for CHANGE on the VideoPlayer 
        // instead of VALUE_COMMIT.
        if (!muted)
            thumbPosTrackY = (range > 0) ? thumbRange - (((pendingValue - minimum) / range) * thumbRange) : 0;
        else
            thumbPosTrackY = thumbRange;
        
        // convert to parent's coordinates.
        var thumbPos:Point = track.localToGlobal(new Point(0, thumbPosTrackY));
        var thumbPosParentY:Number = thumb.parent.globalToLocal(thumbPos).y;
        
        thumb.setLayoutBoundsPosition(thumb.getLayoutBoundsX(), Math.round(thumbPosParentY));
    }
    
    /**
     *  @private
