var MENU_STEP = 30;

var menuMaxHeights = Array();
var menuIntervalIds = Array();
var menuAnimationDirection = Array();
var menuCloseTimeoutId;


function menuInit() {
	var obj;
	var i = 0;
	while ( obj = document.getElementById('menu' + i) ) {
		menuMaxHeights.push(obj.clientHeight);
		obj.style.left = (4 + i * 110) + 'px';
		obj.style.height = '0px';
		obj.style.visibility = 'visible';
		i++;
	}
}


function menuOpen(id) {
	menuAnimate(id, true);
}

function menuClose() {
	window.clearTimeout(menuCloseTimeoutId);
	menuCloseTimeoutId = window.setTimeout('menuAnimateClose()', 250);
}

function menuAnimateClose() {
	for ( var i = 0; i < menuMaxHeights.length; i++ ) {
		menuAnimate(i, false);
	}		
}

function menuAnimate(id, doOpen) {
	if ( doOpen ) {
		window.clearTimeout(menuCloseTimeoutId);	
	}
	
	if ( menuAnimationDirection[id] !== doOpen ) {
		if ( doOpen ) {
			for ( var i = 0; i < menuMaxHeights.length; i++ ) {
				if ( i != id ) {
					menuAnimate(i, false);
				}
			}
		}
		
		window.clearInterval(menuIntervalIds[id]);
		menuAnimationDirection[id] = doOpen;
		menuIntervalIds[id] = window.setInterval('menuResize(' + id + ', ' + doOpen + ')', 20);	
	}
}

function menuResize(id, doOpen) {	
	var obj = document.getElementById('menu' + id);
	var menuHeight = obj.clientHeight;

	if ( doOpen ) {
		menuHeight += MENU_STEP;
		if ( menuHeight >= menuMaxHeights[id] ) {
			menuHeight = menuMaxHeights[id];
			window.clearInterval(menuIntervalIds[id]);
			menuIntervalIds[id] = null;
			menuAnimationDirection[id] = null;
		}
	}
	else {
		menuHeight -= MENU_STEP;
		if ( menuHeight <= 0 ) {
			menuHeight = 0;
			window.clearInterval(menuIntervalIds[id]);
			menuIntervalIds[id] = null;
			menuAnimationDirection[id] = null;
		}		
	}
	
	obj.style.height = menuHeight + 'px';
}

function mse() {
	var s = '';
	
	for (var i = 0; i < mse.arguments.length; ++i) {
    	s += String.fromCharCode(mse.arguments[i] - (i%25));
	}
	
	document.write(s);
}
