A large canvas exists in memory, on which is drawn the full image and some text.
A small canvas on the dom acts as a viewport. It is drawn by copying from the memory canvas with drawImage()

Press arrow keys to slide the viewport around the larger image.
Animation is done with a series of drawImage() calls

A sample application for calling drawImage using a canvas as its own source.
Press arrow keys, and the canvas will draw to itself slightly offset
(edges of the image will be duplicated. This is expected)