для блока меню: onouseout="setTimeout('some_func()', 2000)"
Через две секунды вызовется ф-ия some_func().
Рекомендую учесть тот факт, что, покинув пределы меню, пользователь может захотеть в него вернуться. Т.е. установленный таймаут нужно будет снять.
<script type="text/javascript>"
var menu_to = null;
var menu_div;
function menu_mouseout(menu)
{
menu_div = menu;
menu_to = window.setTimeout('menu_close()', 2000);
}
function menu_mouseover()
{
if (menu_to)
{
window.clearTimeout(menu_to);
menu_to = null;
}
}
function menu_close()
{
menu_div.style.dispaly = 'none';
}
</script>
<div id="menu" onmouseover="menu_mouseover()" onmouseout="menu_mouseout(this)">...</div>
Кроме того, пользователь может выйти из одного меню и, пока оно не закрылось, войти в другое. Т.е. надо проверять теущее и предыдущее: предыдущее надо закрыть принудительно, без задержки.