наконец допилил, код хрен разберешь но вроде норм=)