Ну, тут довольно много JS кода. (шучу).
Всё, как мне кажется, можно организовать простым CSS. Для этого там есть ".elem:hover{tranform: translate(x, y)}".
Просто задаешь сначала позиции при загрузке, потом, когда на кружок наводятся - меняешь размер и позицию.