     //
     //--------------------------------------------------------------------------
     /**
+     *  @private
+     *  Returns the name of the component.
+     *
+     *  @param childID uint.
+     *
+     *  @return Name of the component.
+     *
+     *  @tiptext Returns the name of the component
+     */
+    override public function get_accName(childID:uint):String
+    {
+        if (childID <= 1)
+            return super.get_accName(0);
+        else
+            return super.get_accName(childID - 1);
+    }
+    
+    
+    /**
+     *  @private
+     *  Gets the role for the component.
+     *
+     *  @param childID children of the component
+     */
+    override public function get_accRole(childID:uint):uint
+    {
+        if (childID == 1)
+            return AccConst.ROLE_SYSTEM_TEXT;
+        else if (childID == 0)
+            return super.get_accRole(0);
+        else 
+            return super.get_accRole(childID - 1);
+    }
+    
+    /**
+     *  @private
+     *  IAccessible method for returning the state of the ComboBox.
+     *  States are predefined for all the components in MSAA.
+     *  Values are assigned to each state.
+     *
+     *  @param childID uint
+     *
+     *  @return State uint
+     */
+    override public function get_accState(childID:uint):uint
+    {
+        if (childID <= 1)
+            return  super.get_accState(0);
+        else {
+            return super.get_accState(ComboBox(master).isDropDownOpen ? childID -1 : 0);
+        }
+    }
+    
+    /**
+     *  @private
+     *  IAccessible method for returning the Default Action.
+     *
+     *  @param childID uint
+     *
+     *  @return DefaultAction String
+     */
+    override public function get_accDefaultAction(childID:uint):String
+    {
+        if (childID <= 1)
+            return null;
+        
+        return super.get_accDefaultAction(childID - 1);
+    }
+    
+    /**
+     *  @private
+     *  IAccessible method for executing the Default Action.
+     *
+     *  @param childID uint
+     */
+    override public function accDoDefaultAction(childID:uint):void
+    {
+        if (childID > 1)
+            super.accDoDefaultAction(childID -1);
+    }
+    
+    /**
+     *  @private
+     *  Method to return an array of childIDs.
+     *
+     *  @return Array
+     */
+    override public function getChildIDArray():Array
+    {
+        var childIDArray:Array = super.getChildIDArray();
+        childIDArray[childIDArray.length] = childIDArray.length;
+        return childIDArray;
+    }
+    
+    /**
+     *  @private
+     *  IAccessible method for returning the childFocus of the List.
+     *
+     *  @param childID uint
+     *
+     *  @return focused childID.
+     */
+    override public function get_accFocus():uint
+    {
+        var index:uint = super.get_accFocus();
+        return index > 0 ? index + 1 : 0;
+    }
+    
+    /**
+     *  @private
+     *  IAccessible method for returning the bounding box of the ListItem.
+     *
+     *  @param childID uint
+     *
+     *  @return Location Object
+     */
+    override public function accLocation(childID:uint):*
+    {
+        if (childID == 0)
+            return super.accLocation(0);
+        else if (childID == 1)
+            return ComboBox(master).textInput;
+        else
+            return super.accLocation(childID - 1);
+    }
+    
+    /**
+     *  @private
+     *  IAccessible method for selecting an item.
+     *
+     *  @param childID uint
+     */
+    override public function accSelect(selFlag:uint, childID:uint):void
+    {
+        if (childID > 1 )
+            super.accSelect(selFlag, childID - 1)
+    }
     
     /**
      *  @private

     */
    override protected function eventHandler(event:Event):void
    {
		var textInput:TextInput;
		
        switch (event.type)
        {
            case "IndexChangeEvent":
            {
                var tweaked_event:Event = event.clone();
                IndexChangeEvent(tweaked_event).oldIndex += 1;
                IndexChangeEvent(tweaked_event).newIndex += 1;
                super.eventHandler(tweaked_event);
                break;
            }
				
            case "open":
            {
                Accessibility.sendEvent(master, 0, AccConst.EVENT_OBJECT_STATECHANGE);
                break;
            }
				
            case "focusIn":
            {
                Accessibility.sendEvent(master, 0, AccConst.EVENT_OBJECT_FOCUS);
                break;
            }
				
			case SkinPartEvent.PART_ADDED:
			{
				textInput = ComboBox(master).textInput;
				if (SkinPartEvent(event).instance == textInput)
				{
					textInput.addEventListener(Event.CHANGE,
											   textInputChangeHandler);
				}
				break;
			}
				
			case SkinPartEvent.PART_REMOVED:
			{
				textInput = ComboBox(master).textInput;
				if (SkinPartEvent(event).instance == textInput)
				{
					textInput.removeEventListener(Event.CHANGE,
												  textInputChangeHandler);
				}
				break;
			}
				
            default:
            {
                super.eventHandler(event);
            }
        }
    }
	
	/**
	 *  @private
	 */
	private function textInputChangeHandler(event:Event):void
	{
		Accessibility.sendEvent(master, 0, AccConst.EVENT_OBJECT_VALUECHANGE);
	}
}
    
}



package spark.accessibility
{
    
import flash.accessibility.Accessibility;
import flash.events.Event;
import flash.events.FocusEvent;
