You can do this several ways. A simple and flexible way is to float the boxes. You need to give them a width (don't make all widths + padding/margin/border add up to 100% - buggy). If you want the wrapper box to be visible you need to add an element with 'clear: left' at the bottom of it, after the other boxes. otherwise it will have no height since floats don't take up any space.
I scaled it down to the bare basics just so you can see how it works.
_________________________
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<style type="text/css">
#cols { border: 2px solid red }
#cols .col { width: 23%; float: left; border: 1px solid blue }
div.clearit { clear: both }
</style>
</head>
<body>
<div id="cols">
<div class="col">contents01</div>
<div class="col">contents02</div>
<div class="col">contents03</div>
<div class="col">
This is a layer with a lot of contents. If
this does <i>not</i> wrap so that it is under the other
columns, it is good. I would like it to wrap in a box.
</div>
<div class="clearit"></div>
</div>
</body>
</html>
(o<
//\ =^..^=