function sideslider()
{
	this.slider;
	this.targetWidth;
	this.activeID;
	this.sliding = false;
	this.restoring = false;
	this.slideItems = new Array;
	this.targets = new Array;
	this.speed="1.3";
	this.makeSlider = makeSlider;
	this.sliderAnim = sliderAnim;
	this.selectslideItem = selectslideItem;
	this.deselectslideItem = deselectslideItem;
}

function makeSlider(sliderID, myRevealedWidth, slidersID)
{
	this.targetWidth = parseInt(myRevealedWidth);
	this.slider = document.getElementById(sliderID);
	this.slider.className = "active";
	this.slider.style.position = "absolute";
	this.slider.style.overflow = "hidden";
	for(i=0;i<this.slider.childNodes.length;i++)
	{
		if(this.slider.childNodes[i].nodeName == "LI")
		{
			this.slideItems.push(this.slider.childNodes[i]);
		}
	}
	for(i=0;i<this.slideItems.length;i++)
	{
		this.slideItems[i].style.position = "absolute";
		this.slideItems[i].style.overflow = "hidden";
		this.slideItems[i].style.display = "block";
		this.slideItems[i].style.zIndex = i + 10;
		this.slideItems[i].style.height = this.slider.offsetHeight + "px";
		this.slideItems[i].style.marginLeft = (i * (this.slider.offsetWidth/this.slideItems.length)) + "px";
		this.slideItems[i].style.width = this.targetWidth + "px";
		this.targets.push(i * (this.slider.offsetWidth/this.slideItems.length));
		this.slideItems[i].id = slidersID + "_item_" + i;
		this.slideItems[i].onmouseover = function() { selectslideItem(this) };
		this.slideItems[i].onmouseout = function() { deselectslideItem(this)};
	}
	animation = setInterval(sliderAnim,70);
}

function sliderAnim()
{
	for(a=0;a<sliders.length;a++)
	{
	if(sliders[a].sliding)
	{
		var otherWidth = (sliders[a].slider.offsetWidth - sliders[a].targetWidth)/(sliders[a].slideItems.length-1);
		var targetLeft = 0;
		var afterActive = 0;
		for(i=0;i<sliders[a].slideItems.length;i++)
		{
			var strrealLeft = sliders[a].slideItems[i].style.marginLeft;
			var realLeft = parseInt(strrealLeft.substring(0,strrealLeft.length-2));
			sliders[a].slideItems[i].style.marginLeft = targetLeft + "px";
			if(i+1 < sliders[a].slideItems.length)
			{
				nextLeft = parseInt(sliders[a].slideItems[i+1].style.marginLeft.substring(0,sliders[a].slideItems[i+1].style.marginLeft.length-2));
				if(i == sliders[a].activeID)
				{
					targetLeft = Math.round(((i * otherWidth)+sliders[a].targetWidth) + (nextLeft - ((i * otherWidth)+sliders[a].targetWidth))/sliders[a].speed);
					afterActive = Math.round(((i * otherWidth)+sliders[a].targetWidth) + (nextLeft - ((i * otherWidth)+sliders[a].targetWidth))/sliders[a].speed);
				}
				else
				{
					if(afterActive != 0)
					{
						targetLeft = Math.round((afterActive + ((i-sliders[a].activeID) * otherWidth)) + (nextLeft - (afterActive + ((i-sliders[a].activeID) * otherWidth)))/sliders[a].speed);
					}
					else
					targetLeft = Math.round(((i+1) * otherWidth) + (nextLeft - ((i+1) * otherWidth))/sliders[a].speed);
				}
			}
		}
	}
	if(sliders[a].restoring)
	{
		var count = 0;
		for(i=0;i<sliders[a].slideItems.length;i++)
		{
			var strrealLeft = sliders[a].slideItems[i].style.marginLeft;
			var realLeft = parseInt(strrealLeft.substring(0,strrealLeft.length-2));
			sliders[a].slideItems[i].style.marginLeft = Math.round((i * (sliders[a].slider.offsetWidth/sliders[a].slideItems.length)) + (realLeft - (i * (sliders[a].slider.offsetWidth/sliders[a].slideItems.length)))/sliders[a].speed) + "px";
			if(realLeft == Math.round((i * (sliders[a].slider.offsetWidth/sliders[a].slideItems.length)) + (realLeft - (i * (sliders[a].slider.offsetWidth/sliders[a].slideItems.length)))/sliders[a].speed))
			{
				count++;
			}
		}
		if(count == sliders[a].slideItems.length)
		{
			sliders[a].restoring = false;
		}
	}
	}
}

function selectslideItem(slideItem)
{
	sliderID = slideItem.id;
	sliderID = sliderID.substring(0, sliderID.indexOf('_'));
	sliders[sliderID].restoring = false;
	sliders[sliderID].sliding = true;
	newID = slideItem.id;
	newID = newID.substring(newID.lastIndexOf('_')+1,newID.length);
	sliders[sliderID].activeID = parseInt(newID);
}

function deselectslideItem(slideItem)
{
	sliderID = slideItem.id;
	sliderID = sliderID.substring(0, sliderID.indexOf('_'));
	sliders[sliderID].sliding = false;
	sliders[sliderID].restoring = true;
	sliders[sliderID].activeID = 0;
}

var sliders = new Array();
var animation;

function addslider(sliderID, myRevealedWidth)
{
	var myslider = new sideslider();
	sliders.push(myslider);
	sliders[sliders.length-1].makeSlider(sliderID, myRevealedWidth, sliders.length-1);
}