De verdad que no me gusta criticar por criticar y que me parece muy bien cuando alguien comparte su código, pero... Creo que deberías revisarlo bastante y limpiarlo.
Quiero decir, funcionará, no lo dudo, pero, sin ánimo de ofender, es un código bastante feo y en algunas cosas incluso parece chapucero y desorganizado. Por poner un ejemplo tan sólo, no sé qué crees que hace una línea que sólo pone