Peter-Paul Koch has a good article at Digital Web on The Behavior Layer.
He talks about the different layers of a site, from XHTML as the structural layer, to CSS as the presentational layer. All good and valid points.
XHTML, the structural layer, should be simple as possible. (re: semantic). The key part there is simple as possible. Pure semantic markup isn't quite there yet. Close, but not quite yet. But that's another discussion.
CSS, the presentional layer, designs the page to make it pleasing to the eye. This layer doesn't need to be there for the page to be accessible. (whereas the structural layer MUST be there). This is also a valid point. Especially from an accessibility point of view. Your site must work without the style sheets. And by work, I mean having the content there.
JavaScript creates the behavior layer. Good, well-written JavaScript can really make the site more usable. This layer lays on top of the structural layer, and next to the presentational layer. The goal of any JavaScript should be to enhance the site's usability, extending the behavior of the site. This raises some interesting points, some that I like quite a bit.
The rules regarding these layers:
# The site should still work when the browser doesnít support JavaScript.
# The script should still work when the browser doesnít support CSS.
# Styles that hide content and are meant to be overruled by a script, should be set in JavaScript.
It's quite the good article. Well worth the read. Clagnut read this article and changed his drop-down menu to accomodate the rules set forth in this article.