complete js rewrite, one marker per location, other updates