Javascript based Map

closes #529