Очень большой и кривой (в том плане, что я его не проверял) пост! Просто меня понесло))