var EnMenu = {
	Nodes : new Array(),

	fetch_handler : function(handler) {
		var hider = handler.parentNode.childNodes[1].childNodes[0];

		return this.Nodes.push({
			'handler':handler,
			'speed':10,
			'hider':hider,
			'submenu':hider.childNodes[0],
			'pull':false,
			'in_progress':false
		})
	}
}

function init_menu() {
	fetch_link('menu_a');
	fetch_link('menu_b');
//			debug_obj(EnMenu.Nodes[0]);
}

function fetch_link(linkId) {
	var h1 = gebi(linkId);
	var id = EnMenu.fetch_handler(h1);
	h1.onmouseover = function() {move_hider(id - 1, 0)};
	h1.onmouseout = function() {move_hider(id - 1, 1)};
	EnMenu.Nodes[id - 1].submenu.onmouseover = function() {move_hider(id - 1, 0)};
	EnMenu.Nodes[id - 1].submenu.onmouseout = function() {move_hider(id - 1, 1)};
}

function debug_obj(Obj)
{
	var str = '';
	for (i in Obj)
		str += "Obj." + i + " = " + Obj[i] + "\n";
	alert(str);
}

function move_hider(id, direction) {
	var childdiv = EnMenu.Nodes[id].submenu;

	if (direction) {
		EnMenu.Nodes[id].speed = -10;
	} else {
		EnMenu.Nodes[id].speed = 10;
	}

	if (!EnMenu.Nodes[id].in_progress) {
		EnMenu.Nodes[id].pull = setInterval("move_it("+id+', '+parseInt(childdiv.offsetHeight)+", "+direction+")", 10);
		EnMenu.Nodes[id].in_progress = true;
	}
}
function move_it(id, max_height, direction) {
	speed = EnMenu.Nodes[id].speed;
	h_style = EnMenu.Nodes[id].hider.style;

	if (parseInt(h_style.height) < max_height || speed < 0) {
		if (parseInt(h_style.height) > 0 || speed > 0) {
			if (parseInt(h_style.height) + speed > max_height) {
				h_style.height = max_height;
				clearInterval(EnMenu.Nodes[id].pull);
				EnMenu.Nodes[id].in_progress = false;
			} else if (parseInt(h_style.height) + speed < 0) {
				h_style.height = 0;
				clearInterval(EnMenu.Nodes[id].pull);
				EnMenu.Nodes[id].in_progress = false;
			} else
				h_style.height = parseInt(h_style.height) + speed;// + 'px';

			//gebi('debug').innerHTML = "id: "+id+" max_height:"+max_height+" direction:"+direction+" h_style.height:"+h_style.height;
			//var tempO = gebi('debug2')
			//tempO.innerHTML = morph(tempO.innerHTML);
		} else {
			clearInterval(EnMenu.Nodes[id].pull);
			EnMenu.Nodes[id].in_progress = false;
		}
	} else {
		clearInterval(EnMenu.Nodes[id].pull);
		EnMenu.Nodes[id].in_progress = false;
	}
}

function gebi(objId) {
	return document.getElementById(objId);
}

function morph(ichar) {
	switch (ichar) {
		case '-': return '\\';
		case '\\': return '|';
		case '|': return '/';
		case '/': return '-';
		default:
			return '-';
	}
}

