Reverse animation implementation

This added the reverse animation. It also makes a change regarding how the current value is read at each frame: we cache the value instead of checking the element at each time.
Code format + reverse animation option
actually implemented blockUserInput