Помнится мне подобную статью публиковал еще Flying/DR
но у него там свой метод был чем то похожий.