﻿// Call this constructor function with an object defining the following properties:
// .sliderobj = the object to act on
// .pausebutton = the pause button to use with this
function LoopSlider(inob)
{
	var speed = inob.speed;
	// inob.wrapperid = the DOM id of the display element
	// var wrapperid = inob.wrapperid;
	var wrapperwidth = $('#' + inob.wrapperid).width();
	// inob.sliderid = the DOM id of the display element
	var slider = $('#' + inob.sliderid);
	var sliderwidth = $(slider).width();
	if(sliderwidth < wrapperwidth)
		return;
	$(slider).css({'position':'absolute','left':0});
	var sc = $(slider).children();
	for(var x = sc.length; x > 0; x--)
	{
		var p = $(sc[x-1]).position();
		$(sc[x-1]).css({'position':'absolute','left':p.left,'top':0});
	}
	var sliderfunc;
	var currentx;
	if(speed < 0)
	{
		sliderfunc = _left;
		currentx = sliderwidth;
	}
	else if(speed > 0)
	{
		sliderfunc = _right;
		currentx = 0;
	}
	var inslide = false;
	var cloned = false;
	var pauseloop = false;
	

	// The left slide action is performed in here
	function _left()
	{
		if(pauseloop)
			return;
		var sc = $(slider).children();
		for(var x = 0; x < sc.length; x++) {
			var e = sc[x];
			var p = $(e).position();
			if(x == 0)
			{
				if(p.left + $(e).width() < 0)
				{
					$(e).remove();
					cloned = false;
				}
				else if(p.left < 0 && !cloned)
				{
					var clone = $(e).clone();
					$(slider).append(clone);
					$(clone).css('left', currentx);
					currentx = currentx + $(e).width();
					cloned = true;
				}
			}
			$(e).css({'left':(p.left + speed)});
		}
		currentx += speed;
		setTimeout(sliderfunc, 0)
	}

	// The right slide action is performed in here
	function _right()
	{
		if(pauseloop)
			return;
		var sc = $(slider).children();
		for(var x = sc.length - 1; x > -1; x--) {
			var e = sc[x];
			var p = $(e).position();
			if(p.left > wrapperwidth && cloned)
			{
				$(e).remove();
				p.left = currentx;
				cloned = false;
			}
			else if(p.left + $(e).width() > wrapperwidth && !cloned)
			{
				var clone = $(e).clone();
				$(slider).append(clone);
				currentx = currentx - $(e).width();
				$(clone).css('left', currentx);
				cloned = true;
			}
			var nw = p.left + speed;
			$(e).css({'left':nw});
		}
		currentx += speed;
		setTimeout(sliderfunc, 0)
	}
	
	// The up/down slide action is performed in here
	function _down()
	{
	}
	this.down = _down;

	// The up/down slide action is performed in here
	function _up()
	{
	}
	this.up = _up;

	// The pause function
	function _stop()
	{
		pauseloop = true;
	}
	this.stop = _stop;
	
	function _start()
	{
		pauseloop = false;
		setTimeout(sliderfunc, 0)
	}
	this.start = _start;
}
