Se vuoi uno spunto per confrontare il tuo codice con una soluzione collaudata dai un'occhiata a questo articolo:

- www.alistapart.com/articles/holygrail

Scusa se non riesco a dare un'occhiata al tuo problema ma sono un po' di fretta. Spero comunque di esserti in qualche modo utile.