var Slider = {

	// The slider container will be added here later
	sliderObject : false,
	
	// Represents the current offset
	xPos : 0,
	
	slideInterval : false,
	
	canScrollLeft : true,
	
	canScrollRight : true,
	
	init : function (slideData)
	{
		this.sliderObject = slideData.sliderObject;
			
		if (slideData.triggerMode == 0)
		{
			var startEvent = 'mouseover';
			var stopEvent = 'mouseout';
		}
		if (slideData.triggerMode == 1)
		{
			var startEvent = 'mousedown';
			var stopEvent = 'mouseup';
		}
				
		Utils._doRegisterEvent(slideData.leftHandle, startEvent, Slider.startMovement, { self : this, direction : true, speed : slideData.slideSpeed });
		Utils._doRegisterEvent(slideData.rightHandle, startEvent, Slider.startMovement, { self : this, direction : false, speed : slideData.slideSpeed });
		
		Utils._doRegisterEvent(slideData.leftHandle, stopEvent, Slider.stop, { self : this, direction : true, speed : slideData.slideSpeed });
		Utils._doRegisterEvent(slideData.rightHandle, stopEvent, Slider.stop, { self : this, direction : false, speed : slideData.slideSpeed });	
				
		this.sliderData = slideData;
	},
	
	stop :  function (event, data)
	{
		clearInterval(data.self.slideInterval);
	},
	
	startMovement : function (event, data)
	{
		
		data.self.slideInterval = setInterval (function ()
		{
			
			if (data.direction)
			{
				if (data.self.canScrollLeft)
				{
					if (data.self.xPos > (data.self.sliderData.minCap + 1))
					{
						Slider.move(data);
						data.self.canScrollRight = true;
					}
					else
					{
						clearInterval(Slider.slideInterval);
						data.self.sliderData.sliderObject.style.marginLeft =  data.self.sliderData.minCap + 'px';
						data.self.canScrollRight = true;
						data.self.canScrollLeft = false;						
					}
				}
			}
			else
			{
				if (data.self.canScrollRight)
				{
					if (data.self.xPos < (data.self.sliderData.plusCap - 1))
					{
						Slider.move(data);
						data.self.canScrollLeft = true;
					}
					else
					{
						clearInterval(Slider.slideInterval);
						data.self.sliderData.sliderObject.style.marginLeft =  data.self.sliderData.plusCap + 'px';
						
						data.self.canScrollRight = false;
						data.self.canScrollLeft = true;				
					}
				}
			}			
		}, data.self.sliderData.slideRate, data);
	},
	
	move : function (data)
	{
		if (!data.speed)
		var speed = 10;
		else
		var speed = data.speed;
		
		// True for left, otherwise right
		if (data.direction)
			data.self.xPos -= speed;
		else
			data.self.xPos += speed;
		
		data.self.sliderData.sliderObject.style.marginLeft = data.self.xPos + 'px';		
	}
}