Non ci siamo capiti, ma va bene lo stesso....

Il codice che hai postato è comunque troppo lungo e contorto, per cui ci vuole un po' per capirlo....