This is a update to my previous blog post. Essentialy it's a same code with some small adjustments.
Click here to download source code