/* Slider Object */
function Sliders(idRoot)
{
	this.elements = new Array();
	
	var parseElements = document.getElementsByTagName('div');
	
	var j = 0;
	for (i = 0; i < parseElements.length; i++) {
		currentId = parseElements[i].id
		if (currentId.substr(0,idRoot.length) == idRoot) {
			this.elements[j] = new BlockElement(currentId);
			j++;
		}
	}
}
Sliders.prototype.closeAll = function()
{
	for (i = 0; i < this.elements.length; i++) {
		this.elements[i].block.style.height = '0px';
	}
}
Sliders.prototype.closeElements = function(elementIds)
{
	for (i = 0; i < elementIds.length; i++) {
		element = this.findElement(elementIds[i]);
		element.block.style.height = '0px';
	}
}
Sliders.prototype.toggleElement = function(elementId)
{
	element = this.findElement(elementId);
	
	if (element) {
		if (parseInt(element.block.style.height) > 0) {
			resizeBlock(element.toString(), 0);
		} else {
			resizeBlock(element.toString(), element.openHeight);
		}
	}
}
Sliders.prototype.findElement = function(elementId)
{
	for (j = 0; j < this.elements.length; j++) {
		element = this.elements[j];
		
		if (element.id == elementId) {
			return this.elements[j];
			break;
		}
	}
	
	return NULL;
}

/* Block Object */
function BlockElement(elementId)
{
	var block = document.getElementById(elementId);
	
	block.style.height = parseInt(block.offsetHeight) + 'px';
	
	this.id         = elementId;
	this.openHeight = parseInt(block.offsetHeight);
	this.block      = block;
}
BlockElement.prototype.toString = function()
{
	return this.id;
}


/**
 * resizeBlock - Nicely resizes your block elements.
 * by Fred LeBlanc [fl] <fred@imarc.net>
 * 
 * param string  id           Element ID to change height of
 * param int     finalHeight  Where the block should end up
 * return false	
 */
function resizeBlock(id, finalHeight)
{
	var changeDiv     = document.getElementById(id);		
	var currentHeight = parseInt(changeDiv.style.height);
	var speed         = 7; // changes the resize speed
	
	// if heights differ, change and loop again
	if (currentHeight != finalHeight) {
		var newHeight;
		var roundedChange;
		var changeInHeight = (finalHeight - currentHeight) / speed;
		
		if (changeInHeight > 0) {
			roundedChange = Math.ceil(changeInHeight);
		} else {
			roundedChange = Math.floor(changeInHeight);
		}
		
		newHeight = currentHeight + roundedChange;
		changeDiv.style.height = newHeight + 'px';
		
		// creates loop
		setTimeout("resizeBlock('" + id + "', '" + finalHeight + "')", 10);
	}
	
	// prevent your links from actually going anywhere
	return false;		
}