 	override protected function keyDownHandler(event:KeyboardEvent) : void
 	{
 		if(!enabled)
-            return;
+            return; 
         
-        // TODO (jszeto) Fix arrow key navigation. layout object is null.
         if (!dropDownController.processKeyDown(event))
-        	super.keyDownHandler(event);
+        {
+			if (dropDownController.isOpen)
+			{	
+	        	var navigationUnit:uint = mapEventToNavigationUnit(event);
+	        	var proposedNewIndex:int = layout.getDestinationIndex(navigationUnit, proposedSelectedIndex)
+	        	
+	        	if (proposedNewIndex != -1)
+	        	{
+	        		itemSelected(proposedSelectedIndex, false);
+	        		proposedSelectedIndex = proposedNewIndex;
+	        		itemSelected(proposedSelectedIndex, true);
+	        		ensureItemIsVisible(proposedSelectedIndex);
+	        	}
+	   		}
+	   		else
+	   		{
+	   			super.keyDownHandler(event);
+	   		}
+        }
 
 	}
 	

    	addEventListener(FlexEvent.UPDATE_COMPLETE, close_updateCompleteHandler);
    	invalidateSkinState();
    	
    	// TODO!! Add logic to handle commitData
    	// if (event.isDefaultPrevented())
    }

	/**

    override protected function item_clickHandler(event:MouseEvent):void
	{
		super.item_clickHandler(event);
		proposedSelectedIndex = selectedIndex;
		closeDropDown(true);
	}
            
