Because sometimes, CSS is more trouble than it's worth. Sometimes you just need a table.
Though, I'm not sure that's the case in this situation. Err, by "side by side vertically" you mean one on top of the other? Well I'll assume so...
Seems there's a lot of redundant tags there. Anyway, I suggest you remove all the widths. For webdesign, in general, absolute widths or heights are a big no-no. If you must set a width, do it on the outer-most DIV.
Also, it will be less of a headache if you decide now whether to code all the layout in the CSS or the HTML. In other words, if you want to set width/height, do it in the CSS or HTML only, but not both. Otherwise the clashing will result in major headaches.