I wrote this for somebody. I don't remember who.

Source Code