 import flash.events.Event;
 import flash.events.KeyboardEvent;
 import flash.events.MouseEvent;
+import flash.events.TimerEvent;
 import flash.geom.Point;
 import flash.ui.Keyboard;
+import flash.utils.Timer;
 
 import mx.core.IDataRenderer;
 import mx.core.IFactory;

     */
    private var clickOffset:Point;  
        
    //--------------------------------------------------------------------------
    //
    //  Overridden properties

            updateDataTip(dataTipInstance, dataTipInitialPosition);
        }
    }
    
    /**
     *  @private
     */
    private function handleMousePoint(p:Point):void
    {
        var newValue:Number = pointToValue(p.x - clickOffset.x, p.y - clickOffset.y);
        newValue = nearestValidValue(newValue, snapInterval);
        
        if (newValue != pendingValue)
        {
            dispatchEvent(new TrackBaseEvent(TrackBaseEvent.THUMB_DRAG));
            if (getStyle("liveDragging") === true)
            {
                setValue(newValue);
                dispatchEvent(new Event(Event.CHANGE));
            }
            else
            {
                pendingValue = newValue;
            }
        }
        
        if (dataTipInstance && showDataTip)
        { 
            dataTipInstance.data = formatDataTipText(pendingValue);
            
            // Force the dataTip to render so that we have the correct size since
            // updateDataTip might need the size
            var tipAsUIComponent:UIComponent = dataTipInstance as UIComponent; 
            if (tipAsUIComponent)
            {
                tipAsUIComponent.validateNow();
                tipAsUIComponent.setActualSize(tipAsUIComponent.getExplicitOrMeasuredWidth(),tipAsUIComponent.getExplicitOrMeasuredHeight());
            }

            updateDataTip(dataTipInstance, dataTipInitialPosition);
        }
    }

    /**
     *  @private
