Take on the ultimate Caribbean adventure with our Virtual Challenge Series. This series includes individual challenges for Jamaica, Puerto Rico, the Dominican Republic, The Bahamas, and Caribbean Islands route. Earn unique medals for each and celebrate the full Caribbean experience. Bahamas 396 km / 246 miles Puerto Rico 177 km / 110 miles Jamaica 275 km / 171 miles Dominican Republic 209 km / 130 miles Caribbean islands 396 km / 246 miles When and Where - This is a virtual challenge. Participate and complete at any time, from anywhere in the world. How - Set your own timeframe and finish the required distance with walk, run, bike, or any distance-based activities of your choice. Rewards - Receive a gorgeous finisher medal at your doorstep with worldwide shipping! You will also receive an E-certificate in your email and unlock an E-badge in the Pacer app. GET INSPIRED, BE ACTIVE, AND EARN A MEDAL Stunning Finisher Medal Each medal is created with deliberate design and exquisite craftsmanship, and comes in a cushioned showcase box. It's guaranteed not to be like any other medals that you've earned before. FUN VIRTUAL EXPERIENCE Works With What You Have Connect Pacer app with your favorite wearables/apps and easily sync over your workout. Not a fan of fancy stuff? Your phone works just fine too! Global Leaderboards You don’t have to be alone during the journey! See and compare your performance with other participants with global and friends leaderboards. Digital Perks Upon completion of each challenge the participant will unlock an unique badge as well as a E-certificate to print or brag about! × const modalImageContainerClassName = 'modal_image' const medalImages = document.querySelectorAll('.medal_img') const modalImage = document.querySelector('.modal_image') const modalImageImg = document.querySelector('.modal_image img') const modalImageClose = document.querySelector('.modal_image .close') const modalImageUtils = (function () { const showModalImage = (src) => { if (!src) return modalImageImg.src = src modalImage.style.display = 'flex' udpateModalImageWidth() } const udpateModalImageWidth = () => { const windowWidth = window.innerWidth const windowHeight = window.innerHeight if (windowWidth < windowHeight) { modalImageImg.style.width = windowWidth + 'px' modalImageImg.style.height = 'auto' } else { modalImageImg.style.width = 'auto' modalImageImg.style.height = windowHeight + 'px' } } const hideModalImage = () => { modalImage.style.display = 'none' } return { showModalImage, udpateModalImageWidth, hideModalImage, } })() const modalImageListner = (function () { const listenWindowResize = () => { window.addEventListener('resize', () => { modalImageUtils.udpateModalImageWidth() }) } const listenMedalImageClick = () => { medalImages.forEach((img) => { if (img.classList.contains('video_item')) return img.addEventListener('click', () => { const imgSrc = img.src || '' modalImageUtils.showModalImage(imgSrc) }) }) } const listenModalImageCloseClick = () => { modalImageClose.addEventListener('click', () => { modalImageUtils.hideModalImage() }) modalImage.addEventListener('click', (e) => { if (e.target.classList.contains(modalImageContainerClassName)) { modalImageUtils.hideModalImage() } }) } const init = () => { listenWindowResize() listenMedalImageClick() listenModalImageCloseClick() } return { init, } })() const modalImageMain = () => { modalImageListner.init() } modalImageMain()