var timeout = 250; var parenttimer = false; var menutimer = false; var menuitem = false; var parentitem = false; function keepParentActive( id ) { parentitem = id; $(parentitem).addClassName('active'); } function setParentUnactive() { if(parentitem != false) { $(parentitem).removeClassName('active'); } } // open hidden layer function mopen(id) { // cancel close timer mcancelclosetime(); // close old layer if(menuitem != false) { menuitem.setStyle({visibility: 'hidden'}); } if(parentitem != false) { setParentUnactive(); } // get new layer and show it menuitem = $(id); menuitem.setStyle({visibility: 'visible'}); } // close showed layer function mclose() { if(menuitem != false) { menuitem.setStyle({visibility: 'hidden'}); } } // go close timer function mclosetime() { if(menuitem != false) { menutimer = window.setTimeout(mclose, timeout); } parenttimer = window.setTimeout(setParentUnactive, timeout); } // cancel close timer function mcancelclosetime() { if(menutimer !== false) { window.clearTimeout(menutimer); menutimer = false; } if(parenttimer !== false) { window.clearTimeout(parenttimer); parenttimer = false; } }