function DivObject(htmlId, visible, objectVar)
{
	this.visible = visible;
	this.htmlId = htmlId;
	this.slider = new Slider(document.getElementById(htmlId), objectVar);

	this.show = function()
	{
		new Effect.BlindDown(this.htmlId);
		this.visible = true;
	}
	this.hide = function()
	{
		new Effect.BlindUp(this.htmlId);
		this.visible = false;
	}
	this.toggleVisibility = function()
	{
		if (this.visible)
			this.hide();
		else
			this.show();
	}
	this.resetPosition = function(positionX)
	{
		this.slider.resetPosition(positionX);
	}
	this.slideToX = function(positionX)
	{
		this.slider.slideToX(positionX);
	}
	this.slideByX = function(differenceX)
	{
		this.slider.slideByX(differenceX);
	}
}

function Slider(object, objectVar)
{
	this.object = object;
	this.objectVar = objectVar;

	this.initialized = false;
	this.activated = false;
	this.targetX;
	this.step = 0;
	this.absoluteStep = 95;
	this.timeout = 13;

	this.initialize = function(positionX)
	{
		if (!this.initialized)
		{
			this.currentX = positionX;
			this.initialX = positionX;
			this.initialized = true;
		}
	}
	this.slideToX = function(positionX)
	{
		this.initialize(object.style.left.substring(0, this.object.style.left.indexOf('px')) * 1);
		if (this.activated)
			return;
		this.targetX = positionX;
		this.activated = true;
		this.setTimeout();
	}
	this.slideByX = function(differenceX)
	{
		this.slideToX(this.currentX + differenceX);
	}
	this.resetPosition = function(positionX)
	{
		this.initialize(positionX);
		this.currentX = this.initialX;
		this.setObjectPosition();
	}
	this.setTimeout = function()
	{
		window.setTimeout(this.objectVar + '.slider.partialSlideX();', this.timeout);
	}
	this.partialSlideX = function()
	{
		var step = this.getStep(this.targetX);
		this.currentX += step;
		if ((step < 0 && this.currentX < this.targetX) || (step > 0 && this.currentX > this.targetX))
			this.currentX = this.targetX;
		this.setObjectPosition();
		if (this.currentX == this.targetX)
			this.activated = false;
		else
			this.setTimeout();
	}
	this.setObjectPosition = function()
	{
		this.object.style.left = this.currentX + 'px';
	}
	this.getStep = function(positionX)
	{
		if (this.currentX > positionX)
			return -1 * this.absoluteStep;
		return this.absoluteStep;
	}
}