Getting image to stretch a div
In the markup after the image, insert something like <div style="clear:left"/>
. A bit messy, but it's the easiest way I've found.
And while you're at it, put a bit of margin on that image so the text doesn't butt up against it.
Assuming @John Millikin is correct, the code
.product + * { clear: left; }
would suffice to do the same thing without forcing you to manually adjust the code after the div.
Add overflow:auto;
to .product1