You could try using either <div>s or PHP/MySQL and the XML HTTPRequest.
Using the <div> you can stack all of the content of your pages into <div> tags that are essentially on top of one another. And then depending on which link is clicked only the div specific to the link will be shown. Using this technique, you are building one monolithic .html page, that will should not need to be refreshed.
Here is an example of javascript code to show and hide <div> tags:
To Hide a <div>:
Code:
document.getElementById('divId').style.display = 'none';
To Show a <div>:
Code:
document.getElementById('divId').style.display = 'block';
The other way that I know of is storing your information in a database such as MySQL and then calling a server-side language, such as PHP, to extract from the database on the fly and have javascript to update your page without refreshes. This method would as well result usually in a single monolithic .php page. If you want more information on this, do some searches for XML HTTPRequest. It is a very powerful tool, and though I can use it for my pages, I am not 100% sure on the working parts behind it.
There are other solutions such as Ruby On Rails, but like the XML HTTPRequest, they would most likely require quite a bit of re-coding for the page.
Of all the solutions I think frames in this case would be the easiest to set up, though they may become bothersome later on.