var timeout = 500; var closetimer = 0; var menuitem = 0; // open hidden layer function openMenu(id) { // cancel close timer cancelCloseMenuTimer(); // close old layer if(menuitem) menuitem.style.visibility = 'hidden'; // get new layer and show it menuitem = document.getElementById(id); menuitem.style.visibility = 'visible'; } // close showed layer function closeMenu() { if(menuitem) menuitem.style.visibility = 'hidden'; } // go close timer function closeMenuTimer() { closetimer = window.setTimeout(closeMenu, timeout); } // cancel close timer function cancelCloseMenuTimer() { if(closetimer) { window.clearTimeout(closetimer); closetimer = null; } } // close layer when click-out document.onclick = closeMenu;