Paul, here is a cheat that you can at least dissect.

Fisheye.xar

I used https://ericleong.me/fisheye.js/ with the Primary image and twiddled with the distortion control.
Copy the distorted Fisheye and paste onto your design.

I created a square, rounded to a circle and then added a circular stepped transparency and again twiddled until I got a 'crystal ball' effect. I added Glow shadow to block most of the transparency revealing the underlying image.

The primary image was scaled up as a fisheye gets to show more of a scene.

The Method
Add the Primary to fisheye.js to get the Fisheye.
Drop the new Primary onto the old large one.
Drop the new Fisheye onto the old sphere.
Adjust Fill scale and position for both.
Reposition the Fisheye over the Primary.

Click image for larger version. 

Name:	An Eye for Fish.jpg 
Views:	43 
Size:	121.4 KB 
ID:	133820

Acorn