<div class="main">
<div class="top">
div top
</div>
<div id="content">
Блок с прокруткой, при переполнении.
</div>
<div class="bottom">
div bottom
</div>
</div>
.top, .bottom{height: 50px;}
#content{height: 300px; overflow: auto;}
Ну и че, ставь main в нужное место, а нужную высоту меняй для content (высота main минус 100рх и получаешь высоту content). Т.к. content имеет фиксированную высоту, то для прокрутки используешь overflow. Main будет обрамлять три блока, т.к. высота не задана.
А менять и считать - скриптом, или пользователь задаст.