Habe mir nicht alles angeschaut, aber diese Abfrage ist absolut sinnlos.
Wie Sören schon geschrieben hat:
In startVisibility speicherst du ausschließlich boolsche-Werte und dann fragst du mit 'logischem oder' beide Werte ab. Also ist die Bedingung immer(!) erfüllt und dann setzt du als Höhe auch noch 'true' oder 'false', was dann natürlich nicht funktioniert. In den else-Zweig wird er nie kommen. Wenn die Sichtbarkeit 'false' ist, dann musst du als Höhe '0px' setzen und sonst (else) '22px', wie es ja auch schon dasteht.
Also etwas so: