         e.newIndex = caretIndex;
         dispatchEvent(e);
     }
+    
+    /**
+     *  @private 
+     */ 
+    mx_internal function positionIndexInView(index:int, topOffset:Number = NaN, 
+                                             bottomOffset:Number = NaN, 
+                                             leftOffset:Number = NaN,
+                                             rightOffset:Number = NaN):void
+    {
+        if (!layout)
+            return;
+        
+        var spDelta:Point = 
+            dataGroup.layout.getScrollPositionDeltaToElementHelper(index, topOffset, bottomOffset,
+                                                                   leftOffset, rightOffset);
+        
+        if (spDelta)
+        {
+            dataGroup.horizontalScrollPosition += spDelta.x;
+            dataGroup.verticalScrollPosition += spDelta.y;
+        }
+    }
       
+ 
     
     //--------------------------------------------------------------------------
     //

    {
        if (!enabled)
            return; 
        
        if (!dropDownController.processKeyDown(event))
        {
            var navigationUnit:uint = event.keyCode;

    mx_internal function open_updateCompleteHandler(event:FlexEvent):void
    {   
        removeEventListener(FlexEvent.UPDATE_COMPLETE, open_updateCompleteHandler);
        positionIndexInView(selectedIndex, 0);
        
        dispatchEvent(new DropDownEvent(DropDownEvent.OPEN));
    }
