Я не могу сказать многое другое об этом... Посмотрите на заголовок, он говорит всё.
Это ещё не протестировано, но оно должно справиться с задачей.