/**
         *
         *  Called when the rollOverDelay Timer is up and we should show the drop down.
         */
        private void rollOverDelay_timerCompleteHandler(Event e)
        {
            OpenButton.RemoveEventListener(MouseEvent.ROLL_OUT, OpenButtonRollOutHandler);
            _rollOverOpenDelayTimer = null;

            OpenDropDownHelper();
        }
        /**
         *
         *  Called when the openButton's rollOut event is dispatched while waiting
         *  for the rollOverOpenDelay. This will cancel the timer so we don't open
         *  any more.
         */
        private void OpenButtonRollOutHandler(Event e)
        {
            if (null != _rollOverOpenDelayTimer && _rollOverOpenDelayTimer.IsRunning)
            {
                _rollOverOpenDelayTimer.Stop();
                _rollOverOpenDelayTimer = null;
            }

            OpenButton.RemoveEventListener(MouseEvent.ROLL_OUT, OpenButtonRollOutHandler);
        }
        /**
         *
         *  Called when the openButton's <code>rollOver</code> event is dispatched. This function opens
         *  the drop down, or opens the drop down after the length of time specified by the
         *  <code>rollOverOpenDelay</code> property.
         */
        internal void OpenButtonRollOverHandler(Event e)
        {
            if (null == RolloverOpenDelay)
            {
                return;
            }

            if (RolloverOpenDelay == 0)
            {
                OpenDropDownHelper();
            }
            else
            {
                OpenButton.AddEventListener(MouseEvent.ROLL_OUT, OpenButtonRollOutHandler);
                _rollOverOpenDelayTimer = new Timer((float)RolloverOpenDelay, 1);
                _rollOverOpenDelayTimer.AddEventListener(Timer.COMPLETE, rollOverDelay_timerCompleteHandler);
                _rollOverOpenDelayTimer.Start();
            }
        }
 /**
  *  
  *  Called when the rollOverDelay Timer is up and we should show the drop down.
  */ 
  private void rollOverDelay_timerCompleteHandler(Event e)
  {
      OpenButton.RemoveEventListener(MouseEvent.ROLL_OUT, OpenButtonRollOutHandler);
      _rollOverOpenDelayTimer = null;
  
      OpenDropDownHelper();
  }
 /**
  *   
  *  Called when the openButton's rollOut event is dispatched while waiting 
  *  for the rollOverOpenDelay. This will cancel the timer so we don't open
  *  any more.
  */ 
 private void OpenButtonRollOutHandler(Event e)
 {
     if (null != _rollOverOpenDelayTimer && _rollOverOpenDelayTimer.IsRunning)
     {
         _rollOverOpenDelayTimer.Stop();
         _rollOverOpenDelayTimer = null;
     }
 
     OpenButton.RemoveEventListener(MouseEvent.ROLL_OUT, OpenButtonRollOutHandler);
 }
        /**
         *  
         *  Called when the openButton's <code>rollOver</code> event is dispatched. This function opens 
         *  the drop down, or opens the drop down after the length of time specified by the 
         *  <code>rollOverOpenDelay</code> property.
         */ 
        internal void OpenButtonRollOverHandler(Event e)
        {
            if (null == RolloverOpenDelay)
                return;

            if (RolloverOpenDelay == 0)
                OpenDropDownHelper();
            else
            {
                OpenButton.AddEventListener(MouseEvent.ROLL_OUT, OpenButtonRollOutHandler);
                _rollOverOpenDelayTimer = new Timer((float) RolloverOpenDelay, 1);
                _rollOverOpenDelayTimer.AddEventListener(Timer.COMPLETE, rollOverDelay_timerCompleteHandler);
                _rollOverOpenDelayTimer.Start();
            }
        }