For a very long time, I was using a home-grown JavaScript navigational menu.
It was capable of displaying in many different ways—drop downs, slide downs (like jQuery-UI accordions), fade-ins.
It had built-in collision checks to make sure it was always visible and didn't try to render past the sides, bottom, or top of a screen.
It was complex, and I would only ever touch it when I was asked to add yet another feature to it by a client, or when a bug was discovered.
That's never the ideal situation. In an ideal situation, the components you use in your system are constantly being improved and added to, even when you are not working on it yourself.
That's where open source comes into its own. I really do love using a piece of software for a few months, then finding it has been updated by the developers and now has a load of new features that I wasn't aware that I wanted, but now "need".
In my CMS, I've replaced my home-grown solution with an existing project by the Filament...