Historic Church
About This Attraction
San Juan Cathedral, also known as Catedral Metropolitana Basílica de San Juan Bautista, is one of the oldest buildings in San Juan, Puerto Rico. Constructed in 1540, it serves as a key religious site and a beautiful example of Gothic architecture in the Caribbean. The cathedral houses the tomb of Spanish explorer Juan Ponce de León and features intricate stained glass windows. Visitors can explore its historical significance and architectural beauty during their trip to Old San Juan.
For those planning a visit, its important to check the San Juan Cathedral opening hours to make the most of your experience. Generally, the cathedral is open to the public daily, but specific hours may vary. This allows visitors ample time to appreciate its art and historical artifacts. Additionally, attending a mass or taking a guided tour can provide deeper insights into its cultural importance.
Location Details
Address
151 Calle del Cristo, San Juan, 00901, Puerto Rico
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
Free
Child
Free
Student
Free
Senior
Free
Opening Hours & Booking
Open
Days
Monday to Sunday
Hours
8:00 AM to 4:00 PM
Seasonality
Year-round
Booking
Booking Required?
No
Nearby Attractions
Old San Juan is a historic district in Puerto Ricos capital, San Juan. Known for…
Learn More
Castillo San Felipe del Morro, commonly known as El Morro, is a historic fortress located…
Learn More
Condado Beach in San Juan is a popular destination for both locals and tourists. It…
Learn More
El Yunque National Forest in Luquillo, Puerto Rico, is the only tropical rainforest in the…
Learn More
Luquillo Beach is a popular destination in Puerto Rico known for its stunning crescent-shaped shoreline…
Learn More
The Malecón in Santo Domingo is a popular oceanfront avenue stretching along the Caribbean Sea.…
Learn More
Alcázar de Colón, located in Santo Domingo, Dominican Republic, is a historical landmark with significant…
Learn More
Zona Colonial in Santo Domingo is a historic neighborhood that is known for its colonial…
Learn More
The National Palace in Santo Domingo is an important government building and the official workplace…
Learn More
Baconao Park in Santiago de Cuba is a UNESCO Biosphere Reserve known for its natural…
Learn More
";
}
// Initialize modal controls
const initModalControls = function() {
console.log('Initializing modal controls');
const modal = document.getElementById('attraction-modal');
const closeBtn = document.querySelector('.attraction-modal-close');
if (closeBtn) {
closeBtn.addEventListener('click', function() {
modal.style.display = 'none';
document.body.style.overflow = '';
});
}
window.addEventListener('click', function(event) {
if (event.target === modal) {
modal.style.display = 'none';
document.body.style.overflow = '';
}
});
// Make attraction cards clickable
const attractionCards = document.querySelectorAll('.attraction-card');
console.log('Found ' + attractionCards.length + ' attraction cards');
attractionCards.forEach(card => {
card.addEventListener('click', function(e) {
openModalWithCardData(this);
});
});
};
// Function to open modal with card data
const openModalWithCardData = function(card) {
// Get data from hidden div
const data = card.querySelector('.attraction-full-data');
if (!data) {
console.error('No attraction data found in card');
return;
}
const modal = document.getElementById('attraction-modal');
if (!modal) {
console.error('Modal element still not found after creation attempt');
return;
}
// Helper function to safely get element text
function getElementText(selector) {
const element = data.querySelector(selector);
return element ? element.textContent : '';
}
try {
// Basic Info
document.getElementById('attraction-modal-title').textContent = getElementText('.attraction-name');
document.getElementById('attraction-modal-type').textContent = getElementText('.attraction-type-full');
document.getElementById('attraction-modal-description').textContent = getElementText('.attraction-description-full');
// Reset all containers to hidden
['attraction-modal-hours-container', 'attraction-modal-price-container',
'attraction-modal-address-container', 'attraction-modal-image-container'].forEach(id => {
const container = document.getElementById(id);
if (container) container.style.display = 'none';
});
// Rating
const ratingText = getElementText('.attraction-rating-full');
if (ratingText) {
const ratingValue = parseFloat(ratingText);
if (!isNaN(ratingValue)) {
const ratingValueEl = document.getElementById('attraction-modal-rating-value');
const ratingFillEl = document.getElementById('attraction-modal-rating-fill');
if (ratingValueEl) ratingValueEl.textContent = ratingValue.toFixed(1) + '/10';
if (ratingFillEl) ratingFillEl.style.width = (ratingValue * 10) + '%';
}
}
// Show the modal
modal.style.display = 'block';
document.body.style.overflow = 'hidden'; // Prevent background scrolling
console.log('Modal opened successfully');
} catch (error) {
console.error('Error opening modal:', error);
}
};
// Try to create the modal
const created = createModal();
console.log('Modal created:', created);
// If not created (already exists), initialize the controls
if (!created) {
initModalControls();
}
// Also initialize distance toggle
const distanceToggle = document.getElementById('distance-unit-toggle');
if (distanceToggle) {
distanceToggle.addEventListener('change', function() {
const showKm = this.checked;
// Update toggle labels
const labels = document.querySelectorAll('.toggle-label');
if (labels.length >= 2) {
labels[0].style.opacity = showKm ? '0.5' : '1';
labels[1].style.opacity = showKm ? '1' : '0.5';
}
// Update all distance displays
document.querySelectorAll('.nearby-attraction-card').forEach(card => {
const kmEl = card.querySelector('.distance-km');
const miEl = card.querySelector('.distance-mi');
if (kmEl && miEl) {
kmEl.style.display = showKm ? 'inline' : 'none';
miEl.style.display = showKm ? 'none' : 'inline';
}
});
});
}
});