For #1 and #3, you can use Tween.js. Have a look at this showcase and see how the fish is moving there.