Если бы ширина была фиксированной, я бы не использовал обертку, я бы сделал так:
<div class="box-header">
</div>
<div class="middle">
my content
</div>
<div class="box-footer">
</div>
Для классов top
и bottom
я бы поместил верхнюю и нижнюю тени как фоновое изображение css.
Тогда я бы repeat-y
фоновое изображение, представляющее тени по обе стороны от поля.
Если вам не нужна совместимость с различными браузерами, предпочтите использование свойств CSS3.