Не полностью моя работа, но потрудиться пришлось. Буду рад, если кому-то пригодится.