Дописал пару (возможно) нужных функций + изменил систему позиционирования полей. (Антон, можно как-то уменьшить количество первых if'ов, когда меняю положение полей?)