If I were you I'd look at using jQuery to AJAX in the main body and then replace the current one with that. Even if you've never written a line of javascript before, it's so easy to do with jQuery there's really no reason not to.
For example, if you're doing a good layout you're going to have plenty of divs, and for the sake of the example one of them will have id="gladImNotAFrame", and further that the page you want the contents of is called newPage.html. The jQuery to do the AJAXing for you is:
Code:
$("#navButton").click(function (){
$.ajax({
url: "http://www.example.com/newPage.html",
data: {}, //if you need to pass get args to newpage this is how you do it
success: function(data){
$("#gladImNotAFrame").html($(data).find("#gladImNotAFrame").html());
},
dataType: "html"
});
}
As for having one definition of the top bar etc look at either PHP, ASP.NET, or SHTML (http://en.wikipedia.org/wiki/Shtml).
Getting nice nav is a tricky business, but the way I prefer is to have an image with no text that is much much wider than you need, then set that as the background image of a li, fill the li with the text of the button and a div that has the very thin image for the other side of the tab. The result is buttons that resize automatically as the text size changes, look good from an SEO perspective, and work in every browser (even the lamentable ones). I realize this is pretty high level, but I don't know exactly what you're trying to do so I'm covering bases.
Bookmarks