buenas,
el código en realidad funciona bien. el problema más bien se debe a la falta de entendimiento en como funciona algunas características del lenguaje. en este caso particular del scope de las variables y el runtime de javascirpt. un detalle que de vez en cuando se ignora es que los bucles en javascript no generan un nuevo scope. de forma resumida, el problema consiste en que javascript lee las variables en último momento -por decirlo de una forma. lo que significa que si creas dinámicamente funciones que accesan a variables externas, dichas funciones no adquieren el valor de las variables al momento de definirse, sino al momento de invocarse. algunos artículos que encontre que pudieran ayudarte...
http://haveacafe.wordpress.com/2008/...rnal-function/ http://robertnyman.com/2008/10/09/ex...-and-closures/