                                             localY:Number):Number
     {
         return 0;
+    }   
+   
+    /**
+     *  Used to position the data tip when it is visible. Subclasses must implement
+     *  this function and can use the dataTipOriginalPosition and dataTipInstance
+     *  properties. 
+     */
+    protected function positionDataTip():void
+    {
+		// Override in the subclasses
     }
 
     //--------------------------------------------------------------------------

        
        // Save the current value also.
        currValue = value;
    }

    /**

        {
            setValue(currValue)
            dispatchEvent(new Event("change"));
        }
        
        if (dataTipInstance && showDataTip)
        { 
	        dataTipInstance.data = formatDataTipText(currValue);
	        
	        // Force the dataTip to render so that we have the correct size since
	        // positionDataTip might need the size
	        var tipAsUIComponent:UIComponent = dataTipInstance as UIComponent; 
	        if (tipAsUIComponent)
	        {
	        	tipAsUIComponent.validateNow();
	        	tipAsUIComponent.setActualSize(tipAsUIComponent.getExplicitOrMeasuredWidth(),tipAsUIComponent.getExplicitOrMeasuredHeight());
	        }
	        
			positionDataTip();
        }
        
        event.updateAfterEvent();
