I think you have to give #right_b
also a minimal height:
#right_b{
background:transparent url('img/right.png');
background-position: right top;
background-repeat: repeat-y;
min-height: 30px;
}
Float elements are took out of the normal document flow, so if an element does not contain other "normal" elements, this element has a height of 0
(as it has no content).