Karl, I'm honoured that you are getting some use out of Superfish.
I didn't want to give you more work so I just gave the horizontal stuff a shot and I can't get it right. I just can't get my head around all these similar sounding measurements! Would you be so kind...? O:) Here's where I got to, just for a giggle: onBeforeShow = function(){ this.each(function(){ var $u = $(this); $u.css('display','block'); var windowWidth = $w.width(), offsetLeft = $u.offset().left, menuWidth = $u.width(), totalWidth = menuWidth + _offset('x'), parentWidth = $u.parents('ul').width(); /*I've lost where to use this*/ var expandLeft = (offsetLeft + menuWidth > totalWidth); if (expandLeft) { $u.css('margin-left','-' + totalWidth - (menuWidth + offsetLeft)+'px'); /*this ain't right*/ } var windowHeight = $w.height(), offsetTop = $u.offset().top, menuHeight = $u.height(), baseline = windowHeight + _offset('y'); var expandUp = (offsetTop + menuHeight > baseline); if (expandUp) { $u.css('margin-top', baseline - (menuHeight + offsetTop)); } $u.css('display','none'); }); } Many thanks, Joel.