var oMenu, cMenu, cTimer, oTimer;
var incriment = 10;

function toggleMenu(element, inc)
{
	incriment = inc || incriment;
	if (element == oMenu) {
		oMenu = null;
		cTimer = setInterval(function () {closeMenu(element, 0, incriment);}, 10);
	} else {// This height figuring thing was much cleaner, but well, firefox sucks.
	
		var fakeli = element.parentNode.parentNode.appendChild(element.parentNode.cloneNode(false));
		var fakeul = fakeli.appendChild(element.cloneNode(true));

		fakeli.firstChild.style.height = '';
		fakeli.firstChild.style.display = 'block';
		
		element.style.display = 'block';
		element.style.height = '0px';
		
		var height = fakeli.offsetHeight;

		oTimer = setInterval(function () {openMenu(element, height, incriment)}, 10);
		
		element.parentNode.parentNode.removeChild(fakeli);
	}
}

function openMenu(element, end, inc)
{
	incriment = inc || incriment;
	if (element.offsetHeight+incriment < end) {
		element.style.height = element.offsetHeight+incriment+"px";
		if (oMenu && oMenu.offsetHeight-incriment > 0)
			oMenu.style.height = oMenu.offsetHeight-incriment+"px";
	} else {
		element.style.height = end+"px";
		clearInterval(oTimer);
		if (oMenu) {
			cMenu = oMenu;
			cTimer = setInterval(function () {closeMenu(cMenu, 0, incriment);}, 10);
		}
		oMenu = element;
	}
}

function closeMenu(element, end, inc)
{
	incriment = inc || incriment;
	if (element.offsetHeight-incriment > end) {
		element.style.height = element.offsetHeight-incriment+"px";
	} else {
		element.style.height = end+"px";
		clearInterval(cTimer);
		cMenu = null;
	}
}

window.onload = function () {
	oMenu = document.getElementById('defaultOpen');
	if (oMenu)
		oMenu.style.display = 'block';
}