Here\'s a somewhat complex puzzle, I\'d love some feedback on how others would approach this.
Here's the solution I came up with.
http://jsfiddle.net/tXUwZ/
If anyone has ideas on how to clean it up or make it tighter, please let me know!
Many thanks to @Jamie for the push in the right direction!