Premetto che non ho letto il codice (troppo lungo).

Pero` per l'esperienza maturata in questo forum, posso intuire che hai due problemi:
1. fare una pagina che segua gli standard
2. adattare POI la pagina alle esigenze dei vari IE (che notoriamente non seguono gli standard ma possiedono i "commenti condizionali" per le correzioni a loro riservate)

Scambiare l'ordine porta ai risultati che hai visto.

Dal mio punto di vista, conviene anche usare la DTD XHTML Strict, che dimezza circa le correzioni da apportare ad IE6 e IE7; questo comporta fare pagine corrette e standard, ed usare i validatori.

PS: per tutti i termini che non riuscissi a capire, ci sono i tutorial del sito HTML.it, e i "link utili" di questo forum.