The linear wave scripts are a set of demos drawn on an HTML5 <canvas>
element.
linwave.js animates the linear surface gravity wave equations. Wave parameters can be adjusted on the fly for the sake of exploration.
internalwave.js (unfinished) shows internal wave vectors and group velocities, and demonstrates how wave properties change on reflection from a boundary.
See the live version here