Aquarium
About This Attraction
Okinawa Churaumi Aquarium is a remarkable destination located in Okinawa, Japan. It is renowned for its impressive Kuroshio Tank, which houses a variety of marine life, including whale sharks and manta rays. The aquarium offers visitors an opportunity to observe these magnificent creatures up close. Additionally, the facility features several other exhibits that display a range of aquatic environments from coral reefs to deep-sea habitats.
Practical information for visitors includes the Okinawa Churaumi Aquarium opening hours, which generally start from 8:30 AM to 6:30 PM, with extended hours during peak seasons. The aquarium is part of the larger Ocean Expo Park, offering additional attractions such as tropical gardens and cultural museums. With its educational exhibits and family-friendly environment, it provides a memorable experience for all age groups. Planning a visit can be both enjoyable and informative for anyone interested in marine life.
Location Details
Address
424 Ishikawa, Motobu, Kunigami District, Okinawa 905-0206, Japan
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
1880 JPY
Child
620 JPY
Student
1250 JPY
Senior
1500 JPY
Opening Hours & Booking
Open
Days
Daily
Hours
8:30 AM - 6:30 PM
Seasonality
Closed first Wednesday and Thursday of December
Booking
Booking Required?
No
Advance Booking
Weekends and holidays days recommended
Nearby Attractions
Shuri Castle is a historic site located in Okinawa, Japan. It served as the palace…
Learn More
Kokusai Street, located in Naha, Okinawa, is a well-known destination for shopping and dining. It…
Learn More
Ohori Park in Fukuoka is a popular destination for both locals and tourists, offering a…
Learn More
Fukuoka Tower, located in Fukuoka City, Japan, stands as one of the tallest seaside towers…
Learn More
Canal City Hakata is a large shopping and entertainment complex located in Fukuoka, Japan. It…
Learn More
Gamcheon Culture Village in Busan is a must-see destination for visitors interested in art and…
Learn More
Jagalchi Fish Market in Busan is one of South Koreas largest seafood markets, located near…
Learn More
Haeundae Beach is one of the most popular tourist destinations in Busan, South Korea. Known…
Learn More
Hahoe Folk Village, located in Andong, South Korea, is a well-preserved traditional village that offers…
Learn More
Andong Confucian Academy, also known as Dosan Seowon, is a significant historical site located in…
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';
}
});
});
}
});