http://codepad.org/HUFu2Rq8