Cultural Heritage Site
About This Attraction
Ancient Town in Hoi An is a UNESCO World Heritage Site located in Vietnam. It is known for its well-preserved architecture that reflects a mix of local and foreign influences, including Chinese, Japanese, and European styles. Walking through the town, you will find a variety of historic buildings, temples, and old houses that offer insights into its past as a major trading port from the 15th to the 19th century.
For practical Ancient Town travel information, visitors should know that the town is best explored on foot or by bicycle. Motorized vehicles are restricted in certain areas to preserve the tranquil atmosphere. Many travelers enjoy visiting during the evening when traditional lanterns illuminate the streets, creating a unique ambiance. Additionally, there are numerous tailor shops where you can have custom clothing made quickly and affordably.
Location Details
Address
Old Town, Hoi An, Quang Nam Province, Vietnam
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
120,000 VND
Child
Free
Student
120,000 VND
Senior
120,000 VND
Opening Hours & Booking
Open
Days
Daily
Hours
8:00 AM - 9:30 PM
Seasonality
Year-round
Booking
Booking Required?
No
Nearby Attractions
The Japanese Covered Bridge in Hoi An is an iconic historical landmark, showcasing the unique…
Learn More
Tra Que Vegetable Village is a small farming community located just outside Hoi An, Vietnam.…
Learn More
An Bang Beach in Hoi An, Vietnam, is a popular destination known for its long…
Learn More
The Perfume River in Hue, Vietnam is a significant waterway that flows through the city,…
Learn More
The Imperial City in Hue is a fascinating historical site in Vietnam, known for its…
Learn More
Thien Mu Pagoda, located in the city of Hue, Vietnam, is an iconic Buddhist temple…
Learn More
Vinpearl Safari in Phu Quoc is Vietnams first and largest semi-wildlife conservation park. It covers…
Learn More
Tad Fane Waterfall is located in the Bolaven Plateau near Pakse, Laos. Known for its…
Learn More
The Bolaven Plateau in Pakse, Laos, is a popular destination known for its cool climate…
Learn More
Wat Phou is an ancient Khmer temple complex located in southern Laos, near the town…
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';
}
});
});
}
});