
var ContentHeight = 250;
var TimeToSlide = 250.0;

var expandedElement = '';

function CollapseExpand(index) {
	var nID = "nav_item_" + index + "_content";
	if (expandedElement == nID) {
		nID = '';
	}
	
	setTimeout("animate(" + new Date().getTime() + "," + TimeToSlide + ",'" + expandedElement + "','" + nID + "')", 33);
	expandedElement = nID;
}

function setBackGroundColor(elem, bStatus) {
	var id = elem.getAttribute('id');
	id = id.replace('content', 'caption');
	
	elem = document.getElementById(id);
	if (elem) {
		if (bStatus) {
			elem.className = 'nav_caption_expanded';
		}
		else {
			elem.className = 'nav_caption_collapsed';
		}
	}
}

function getItemsCount(elem) {
	var list = elem.getElementsByTagName('UL')[0];
	var counter = 0;
	
	if (list == undefined) {
		return counter;
	}
	
	if (!list.hasChildNodes()) {
		return counter;
	}
	
	for (var item = 0; item < list.childNodes.length; item++) {
		if (list.childNodes[item].nodeName == 'LI') {
			counter++;
			if (list.childNodes[item].hasChildNodes()) {
				var elems = list.childNodes[item].childNodes;
				for (var i = 0; i < elems.length; i++) {
					if (elems[i].nodeName == 'UL') {
						counter++;
						counter += getItemsCount(list.childNodes[item]);
					}
				}
			}
		}
	}
	return counter;
}

function setElementHeight(container) {
	var items_c = getItemsCount(container);
	var height = (items_c * 25) + 25;
	
	if (height < 25) {
		return ContentHeight;
	}
	return height;
}

function animate(lastTick, timeLeft, closingId, openingId) {
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;
	
	var opening = (openingId == '') ? null : document.getElementById(openingId);
	var closing = (closingId == '') ? null : document.getElementById(closingId);
	
	if(timeLeft <= elapsedTicks) {
		if (opening != null) {
			opening.style.height = setElementHeight(opening) + 'px';
			//opening.style.display = 'block';
			setBackGroundColor(opening, true);
		}
		if (closing != null) {
			closing.style.display = 'none';
			closing.style.height = '0px';
			setBackGroundColor(closing, false);
		}
		return;
	}
	
	timeLeft -= elapsedTicks;
	
	if (opening != null) {
		if (opening.style.display != 'block') {
			opening.style.display = 'block';
		}
		//opening.style.display = 'none';
		
		var tmp = setElementHeight(opening);
		var xxx = Math.round((timeLeft/TimeToSlide) * tmp);
		opening.style.height = (tmp - xxx) + 'px';
		
		setBackGroundColor(opening, true);
	}
	
	if (closing != null) {
		var tmp = setElementHeight(closing);
		closing.style.height = Math.round((timeLeft/TimeToSlide) * tmp) + 'px';
	}
	
	setTimeout("animate(" + curTick + "," + timeLeft + ",'" + closingId + "','" + openingId + "')", 33);
}

