function arrayIndexOf(a, searchElement)
{
	for (var i = 0; i < a.length; i++)
		if (a[i] == searchElement)
			return i;
	return -1;
}

function elementSetClasses(e, classes)
{
	e.className = classes.join(" ");
}

function elementGetClasses(e)
{
	return e.className ? e.className.split(" ") : [];
}

function elementHasClass(e, className)
{
	return (arrayIndexOf(elementGetClasses(e), className) != -1);
}

function elementAddClass(e, className)
{
	var classes = elementGetClasses(e);
	if (arrayIndexOf(classes, className) != -1)
		return;
	classes.push(className);
	elementSetClasses(e, classes);
}

function elementRemoveClass(e, className)
{
	var classes = elementGetClasses(e);
	var index;
	while ((index = arrayIndexOf(classes, className)) != -1)
		classes.splice(index, 1);
	elementSetClasses(e, classes);
}

function elementToggleClass(e, className)
{
	elementHasClass(e, className) ?
	elementRemoveClass(e, className) :
	elementAddClass(e, className);
}




var	BOX_HEIGHT_COLLAPSED = 34, // [px]
//	BOX_HEIGHT_EXPANDED = 150, // [px]
	BOX_HEIGHT_EXPANDED = 70, // [px]
	BOX_ANIMATION_STEP = 5, // [px]
	BOX_ANIMATION_INTERVAL = 50; // [ms]



function toggleBox(box)
{
	if (elementHasClass(box, 'collapsed'))
		expandBox(box);
	else
		collapseBox(box);
}

function expandBox(box)
{
	if (!elementHasClass(box, 'collapsed'))
		return;

	for (var i = 0; i < box.parentNode.childNodes.length; i++)
//		if (box.parentNode.childNodes[i] instanceof Element)
		if (box.parentNode.childNodes[i].tagName)
if(!elementHasClass(box.parentNode.childNodes[i],'current'))
			collapseBox(box.parentNode.childNodes[i]);

	if (box._animInterval)
		clearInterval(box._animInterval);

	box._animInterval = setInterval(function (event)
	{
		box._animHeight += BOX_ANIMATION_STEP;		
		
		if (box._animHeight < BOX_HEIGHT_EXPANDED)
			box.style.height = box._animHeight + "px";
		else
		{
			box.style.height = "auto";
			clearInterval(box._animInterval);
		}
	
	}, BOX_ANIMATION_INTERVAL);

	elementRemoveClass(box, 'collapsed');
	box.style.overflow = 'hidden';
	box._animHeight = BOX_HEIGHT_COLLAPSED;
	box.style.height = box._animHeight + "px";
}


function collapseBox(box)
{
	if (elementHasClass(box, 'collapsed'))
		return;

	if (box._animInterval)
		clearInterval(box._animInterval);

	box._animInterval = setInterval(function (event)
	{
		box._animHeight -= BOX_ANIMATION_STEP;		
		
		if (box._animHeight > BOX_HEIGHT_COLLAPSED)
			box.style.height = box._animHeight + "px";
		else
		{
			box.style.height = BOX_HEIGHT_COLLAPSED + "px";
			elementAddClass(box, 'collapsed');
			clearInterval(box._animInterval);
		}
	
	}, BOX_ANIMATION_INTERVAL);
}

