Черт его знает, почему оно работает, тот редкий случай, когда я не вполне понимаю, почему код ведет себя так, как ведет, но способ удобный и рабочий.

читать дальше