 			addListeners();
 		}
 		
+		override protected function beforeFirstDraw():void
+		{
+			applyValue();
+		}
+		
 		protected function createTrack():void
 		{
 			m_track = addComponent('track');

			{
				return;
			}
			removeEventListener(Event.ENTER_FRAME, self_enterFrame);
			m_isDragging = false;
			applyCurrentDragValue();
			dispatchEvent(new Event(Event.CHANGE));
		}
		
		protected function self_click(e:MouseEvent):void
		{
			setValue(positionToValue(mouseX - m_thumb.width / 2));
			dispatchEvent(new Event(Event.CHANGE));

			applyValue();
		}
		
		protected function addFrameListener():void
		{
			if (m_frameListenerActive) return;

			addEventListener(Event.ENTER_FRAME, self_enterFrame);
			m_frameListenerActive = true;
		}
		
		protected function removeFrameListener():void
		{
			if (!m_frameListenerActive) return;
			var animationActive:Boolean = m_thumb.left != valueToPosition(m_value, m_minValue, 
				m_maxValue);
			if (animationActive || m_isDragging) return;
			removeEventListener(Event.ENTER_FRAME, self_enterFrame);
			m_frameListenerActive = false;
		}
		
		
		
		//*****************************************************************************************
		//*                                         Events                                        *
		//*****************************************************************************************
		protected function thumb_click(e:MouseEvent):void
		{
			m_dragStartThumbPosition = m_thumb.left;
			m_dragStartMousePosition = m_track.mouseX;
			m_isDragging = true;
			addFrameListener();
		}
		
		protected function stage_mouseUp(e:MouseEvent):void
