Versión completamente probada.
Faltan los comentarios en el codigo unicamente