Please check this thread. I've described the design of the solution, but haven't posted the exact implementation steps yet.