        function Node(obRef)
        {
           this.obRef=obRef;
           this.timeRef=null;
        }
        myNodes=new Array();
         
        function isParent(kind, ouder)
        {
           oudere=kind.parentNode;
           do
           {
              oudere=oudere.parentNode;
              if (oudere==ouder)
              {
                 return true;
              }
           }
           while (oudere.nodeName!='BODY')
           return false;
        }
         
        function showSub(showNode)
        {
           if (isNaN(showNode.rIndex))
           {
              showNode.rIndex=myNodes.length;
              myNodes[showNode.rIndex]=new Node(showNode);
           }
           else
           {
              clearTimeout(myNodes[showNode.rIndex].timeRef);
           }
           temp='';
           for (i in myNodes)
           {
              if (!isParent(myNodes[i].obRef, showNode))
              {
                 clearTimeout(myNodes[i].timeRef);
                 doHide(myNodes[i].obRef);
              }
           }
           for (i in showNode.childNodes)
           {
              if (showNode.childNodes[i].nodeType==1)
              {
                 showNode.childNodes[i].style.display='block';
              }
           }
        }
         
        function hideSub(hideNode)
        {
           myNodes[hideNode.rIndex].timeRef=setTimeout('doHide(myNodes['+hideNode.rIndex+'].obRef)', 300);
        }
         
        function doHide(doNode)
        {
           for (i in doNode.childNodes)
           {
              if (doNode.childNodes[i].nodeType==1 && doNode.childNodes[i].nodeName=='UL')
              {
                 doNode.childNodes[i].style.display='none';
              }
           }
        }
        window.onload=function()
        {
           var li = document.getElementById('menu').getElementsByTagName('li');
           var ul;
           for (i in li)
           {
              if(!isNaN(i))
              {
                 ul = li[i].childNodes;
                 for(j in ul)
                 {
                    if(ul[j].nodeName == 'UL')
                    {
                       ul[j].className = li[i].className = 'sub';
                       li[i].onmouseover = function ()
                       {
                          showSub(this);
                       }
                       li[i].onmouseout = function ()
                       {
                          hideSub(this);
                       }
                    }
                 }
              }
           }
           
           
        }    
