Quand un Div a ses éléments de flotté il ne prend que la hauteur du contenu non flotté (celui resté dans le flux), c'est ce qui t'arrive.
Pour résoude ton pb tu as plusieurs choix possibles :
1) Dans le HTML
Tu rajoutes un div vide avec la classe clear.
cette classe fait tout simplement en CSS :
.clear {clear:both}
OU BIEN en 2 eme choix (celui que je préfère) :
tu peux appliquer le contexte de formatage à ton block #page en ajoutant ceci dans ta CSS :
#page {
overflow:hidden;
_overflow:visible; zoom:1
}