Ten kod jest... okropny. Nie bierz mi tego za złe, taki jest fakt. Wchodząc w pierwszego case'a już się zgubiłem. Porozdzielaj kod jakoś sensowniej, chociażby wydziel odpowiednie funkcje. Jak będziesz miał czytelny kod, sam dojdziesz do tego, dlaczego nie działa on zgodnie z oczekiwaniem. ;)