Вот блин. У меня в принципе есть решение этой задачи, но написанная полтора года назад статья совершенно не годится для выкладывания сюда.