Tu código está muy mal identado. Es muy díficil debuguearlo.
Cualquiera que quiera seguir ayudando en este hilo puede hacerlo en el siguiente enlace
http://jsfiddle.net/Y2WKU/
Si guardas/n un cambio, jsFiddle crea una nueva copia, por lo cual habría que compartir el enlace de la copia acá.
Te recomiendo que empieces por identar correctamente tu código. Es mucho más fácil de trabajar así.