Adding a delay to a cascading menu mouseout

Adding a delay to a cascading menu mouseout

Hello Forum,
Thanks in advanced for your help!

I am working on a website that requires a cascading navigation system. I got the following code from www.dynamicdrive.com and have tweaked a few things to work for my needs

  1. //Nested Side Bar Menu (Mar 20th, 09)
  2. //By Dynamic Drive: http://www.dynamicdrive.com/style/

  3. var menuids = ["sidebarmenu1"] //Enter id(s) of each Side Bar Menu's main UL, separated by commas

  4. function initsidebarmenu() {
  5.     
  6.     for (var i = 0; i < menuids.length; i++) {
  7.         var ultags = document.getElementById(menuids[i]).getElementsByTagName("ul")
  8.         for (var t = 0; t < ultags.length; t++) {
  9.             ultags[t].parentNode.getElementsByTagName("a")[0].className += " subfolderstyle"
  10.             if (ultags[t].parentNode.parentNode.id == menuids[i]) //if this is a first level submenu
  11.                 ultags[t].style.left = ultags[t].parentNode.offsetWidth + "px" //dynamically position first level submenus to be width of main menu item
  12.             else //else if this is a sub level submenu (ul)
  13.                 ultags[t].style.left = ultags[t - 1].getElementsByTagName("a")[0].offsetWidth + "px";  //position menu to the right of menu item that activated it

  14.             ultags[t].parentNode.onmouseover = function() 
  15.             {
  16.                 this.getElementsByTagName("ul")[0].style.display = "block";
  17.             }
  18.             ultags[t].parentNode.onmouseout = function() 
  19.             {
  20.                 this.getElementsByTagName("ul")[0].style.display = "none";
  21.             }
  22.         }
  23.         for (var t = ultags.length - 1; t > -1; t--) { //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
  24.             ultags[t].style.visibility = "visible";

  25.             ultags[t].style.display = "none";
  26.         }
  27.     }
  28. }

  29. if (window.addEventListener)
  30.     window.addEventListener("load", initsidebarmenu, false)
  31. else if (window.attachEvent)
  32.     window.attachEvent("onload", initsidebarmenu)


The problem i am facing is that the onmouseout action is happening too fast. When the user moves the mouse out of the list item element, the navigation sub-items disappear too quickly. I need to find a way to slow their disappearance. I have tried adding setTimeout as well as setInterval where i se the the style display to none. However this is not working.

I would appreciate any assitance you may give in letting me know how i can set a specific delay for the item to disappear after the user has moved the mouse out of the element.

Thank you.