Mountain
About This Attraction
Pico do Castelo is a prominent hill located on the island of Porto Santo, which is part of the Madeira archipelago in Portugal. It offers stunning views of the island and its surrounding ocean. Visitors can hike to the top, where they will find a small fortification built in the 16th century to protect against pirate attacks. The hike is relatively easy and well-marked, making it accessible for most visitors.
For those planning a visit, its important to note that there are no specific Pico do Castelo opening hours since it is an open natural site. However, it is advisable to visit during daylight hours for safety reasons. The path to the summit is lush with native vegetation, providing both shade and scenic beauty along the way. The site is perfect for families and individuals who enjoy outdoor activities in a serene environment.
Location Details
Address
Pico do Castelo, Porto Santo, Madeira, Portugal
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
Free
Child
Free
Student
Free
Senior
Free
Opening Hours & Booking
Open
Days
Daily
Hours
Open 24 hours
Seasonality
Year-round
Booking
Booking Required?
No
Nearby Attractions
Porto Santo Beach is a notable destination located on the island of Porto Santo in…
Learn More
Pico Ruivo is the highest peak in Madeira, standing at an impressive 1,862 meters. It…
Learn More
Monte Palace Madeira is a popular attraction located in Funchal, Madeira. It features a stunning…
Learn More
Cabo Girão Skywalk is a popular tourist destination located on the southern coast of Madeira,…
Learn More
Anaga Rural Park is a protected natural area located in the northeastern part of Tenerife,…
Learn More
Timanfaya National Park, located on the island of Lanzarote in Spains Canary Islands, is renowned…
Learn More
The Auditorio de Tenerife is an architectural marvel located in Santa Cruz de Tenerife, Spain.…
Learn More
Cueva de los Verdes is a fascinating volcanic cave located in Lanzarote, part of the…
Learn More
Jameos del Agua is a popular tourist attraction located in Lanzarote, one of the Canary…
Learn More
Loro Parque in Tenerife is a popular zoo and aquarium that attracts visitors from around…
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';
}
});
});
}
});