Правильное решение куда короче и изящнее, не спорю. Но мне очень интересно, почему мое решение не принимает валидатор.