         return "normal";
     }
     
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden Methods
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     */ 
+    override protected function commitProperties():void
+    {
+    	super.commitProperties();
+    	
+        if (rendererStateIsDirty)
+        {
+            currentState = getCurrentRendererState();
+            rendererStateIsDirty = false;
+        }
+    }
+    
+    /**
+     *  @private
+     */ 
+    override public function styleChanged(styleName:String):void
+    {
+        var allStyles:Boolean = styleName == null || styleName == "styleName";
+        
+        super.styleChanged(styleName);
+        
+        if (allStyles || styleName == "alternatingItemColors")
+        {
+            conditionalEventDispatch("contentBackgroundColorChanged");
+        }
+        
+        if (allStyles || styleName == "contentBackgroundColor")
+        {
+            conditionalEventDispatch("contentBackgroundColorChanged");
+        }
+        
+        if (allStyles || styleName == "rollOverColor")
+        {
+            conditionalEventDispatch("rollOverColorChanged");
+        }
+        
+        if (allStyles || styleName == "selectionColor")
+        {
+            conditionalEventDispatch("selectionColorChanged");
+        }
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Event handling
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     *  Attach the mouse events.
+     */
+    private function addHandlers():void
+    {
+        addEventListener(MouseEvent.ROLL_OVER, itemRenderer_rollOverHandler);
+        addEventListener(MouseEvent.ROLL_OUT, itemRenderer_rollOutHandler);
+        addEventListener(MouseEvent.MOUSE_DOWN, itemRenderer_mouseDownHandler);
+    }
+    
     /**
      *  @private
      */

    
    //--------------------------------------------------------------------------
    //
    //  Event handling
    //
    //--------------------------------------------------------------------------
    
    override public function styleChanged(styleName:String):void
    {
        var allStyles:Boolean = styleName == null || styleName == "styleName";
        
        super.styleChanged(styleName);
        
        if (allStyles || styleName == "alternatingItemColors")
        {
            conditionalEventDispatch("contentBackgroundColorChanged");
        }
        
        if (allStyles || styleName == "contentBackgroundColor")
        {
            conditionalEventDispatch("contentBackgroundColorChanged");
        }
        
        if (allStyles || styleName == "rollOverColor")
        {
            conditionalEventDispatch("rollOverColorChanged");
        }
        
        if (allStyles || styleName == "selectionColor")
        {
            conditionalEventDispatch("selectionColorChanged");
        }
    }
    
    //--------------------------------------------------------------------------
    //
    //  Methods
    //
    //--------------------------------------------------------------------------
    
    /**
     *  @private
     */ 
    override protected function commitProperties():void
    {
    	super.commitProperties();
    	
        if (rendererStateIsDirty)
        {
            currentState = getCurrentSkinState();
            rendererStateIsDirty = false;
        }
    }
    
    /**
     *  @private
     *  Attach the mouse events.
     */
    protected function addHandlers():void
    {
        addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
        addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
        addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
    }
    
    /**
     *  @private
     *  Return the skin state. This can be overridden by subclasses to add more states.
     *  NOTE: Undocumented for now since MXMLComponent class has not been fleshed out.
     */
    protected function getCurrentSkinState():String
    {
        if (selected)
            return "selected";

    }
    
    /**
     * 
     *  Mouse rollOver event handler.
     */
    protected function itemRenderer_rollOverHandler(event:MouseEvent):void
    {
        hovered = true;
        currentState = getCurrentRendererState();
    }
    
    /**
     *  
     *  Mouse rollOut event handler.
     */
    protected function itemRenderer_rollOutHandler(event:MouseEvent):void
    {
        hovered = false;
        currentState = getCurrentRendererState();
    }
    
    /**
     *  
     *  Mouse down event handler.
     */
    protected function itemRenderer_mouseDownHandler(event:MouseEvent):void
    {
        dispatchEvent(new MouseEvent("click"));
    }
