var dm_int;
var dm_at_depth = Array();

function dyn_menu_over(div_obj, depth, h_or_v)
{
	clearTimeout(dm_int);
	var tdmd = Array();
	for(var dc=depth; dc<dm_at_depth.length; dc++)
	{
		hide_dyn_menu(dm_at_depth[dc]);
	}
	if(div_obj && div_obj.id)
	{
		div_obj.className += '_over';
		var evoked = div_obj.id + '_holder';
		var pos = find_pos(div_obj);
		if(depth > 1 || h_or_v == 'vertical') pos[0] += div_obj.offsetWidth;
		else pos[1] += div_obj.offsetHeight;
		if(document.getElementById(evoked))
		{
			var ev = document.getElementById(evoked);
			ev.style.left = pos[0]+'px';
			ev.style.top = pos[1]+'px';
			ev.style.display = '';
			dm_at_depth[depth] = div_obj.id;
		}//end of if the evoked holder object is valid
	}//end of if the div_obj is valid
}//end of function dyn_menu_over

function dyn_menu_out(div_obj)
{
	clearTimeout(dm_int);
	if(div_obj && div_obj.id)
	{
		div_obj.className = div_obj.className.replace(/_over/,'');
		dm_int = setTimeout('hide_dyn_menu(\'all\');',1000);
	}
}

function hide_dyn_menu(div_obj_id)
{
	clearTimeout(dm_int);
	if(div_obj_id == 'all')
	{
		for(var dc=1; dc<dm_at_depth.length; dc++)
		{
			hide_dyn_menu(dm_at_depth[dc]);
		}
		dm_at_depth = Array();
	}
	else if(document.getElementById(div_obj_id))
	{
		var evoked = div_obj_id + '_holder';
		if(document.getElementById(evoked))
		{
			var ev = document.getElementById(evoked);
			ev.style.display = 'none';
		}
	}	
}//end of function dyn_menu_out

function find_pos(obj)
{
	var ox = 0;
	var oy = 0;
	while(obj)
	{
		ox += obj.offsetLeft;
		oy += obj.offsetTop;
		obj = obj.offsetParent;
	}
	var xy = Array();
	xy[0] = ox;
	xy[1] = oy;
	return xy;
}//end of find_pos
