the minute i hit the replay to say that i have made some progress i sow your post!so i tried it, but it didn't work.my changes are:
dropit:function(obj, e, dropmenuID){ if (this.dropmenuobj!=null) //hide previous menu this.dropmenuobj.style.visibility="hidden" this.clearhidemenu() if (this.ie||this.firefox){ obj.onmouseout=function(){cssdropdown.delayhidemenu()} obj.onmouseover=function(){cssdropdown.delayshowmenu()} // <-----NEW CODE this.dropmenuobj=document.getElementById(dropmenuID) this.dropmenuobj.onmouseover=function(){cssdropdown.clearhidemenu()} this.dropmenuobj.onmouseout=function(){cssdropdown.dynamichide(this.ze)} this.dropmenuobj.onclick=function(){cssdropdown.delayhidemenu()} this.showhide(this.dropmenuobj.style, e, "visible", "hidden") this.dropmenuobj.x=this.getposOffset(obj, "left") this.dropmenuobj.y=this.getposOffset(obj, "top") this.dropmenuobj.style.left=this.dropmenuobj.x-this.clearbrowseredge(obj, "rightedge")+"px" this.dropmenuobj.style.top=this.dropmenuobj.y-this.clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+1+"px" }},------------------dynamicshow:function(e){var evtobj=window.event? window.event : eif (this.ie&&!this.dropmenuobj.contains(evtobj.toElement))this.delayshowmenu()else if (this.firefox&&e.currentTarget!= evtobj.relatedTarget&& !this.contains_firefox(evtobj.currentTarget, evtobj.relatedTarget))this.delayshowmenu()},delayshowmenu:function(){this.delayshow=setTimeout("cssdropdown.dropmenuobj.style.visibility='visible'",this.showdelay)},clearshowmenu:function(){if (this.delayshow!="undefined")clearTimeout(this.delayshow)}
that almost does the job! it delays the showmenu but after the delay the menu appears anyway, and also after a few show hide it gets stuck...here is an example link: My Webpagehere