Gemi Tours - Professional AI Travel Planning System
๐ข Professional AI Travel Planning โข Live System Active
๐ง Smart Distance Planning System
Professional AI-powered planning from Accra, Ghana - Route optimization, weather integration, traffic optimization, environmental awareness
Local Area (0-25km)
Standard Rates
Local transport, optimal planning
Regional (26-75km)
Smart Adjustment
Short journey planning
Extended (76-150km)
Route Optimization
Medium journey with traffic optimization
Long Distance (151km+)
Comprehensive Planning
Advanced logistics coordination
๐ Your Personalized Itinerary
Generating personalized itinerary with AI-powered planning, weather integration, and route optimization...
๐ฌ๐ญ Ghana Premium Experiences - Smart Planning Selection
๐ Professional AI Travel Planning Model
Planning Base: Accra, Greater Accra Region, Ghana
Smart Distance Planning: All experiences optimized for efficient routes, weather considerations, traffic optimization, and environmental awareness. Professional logistics coordination with transparent planning.
`;
}showLoading(show) {
const loader = document.getElementById('loadingIndicator');
const result = document.getElementById('itineraryResult');
if (show) {
loader.classList.add('active');
result.innerHTML = '';
} else {
loader.classList.remove('active');
}
}displayError() {
document.getElementById('itineraryResult').innerHTML = `
โ ๏ธ Planning System Error
Unable to generate professional travel plan. Please check your inputs and try again.
If the problem persists, please contact our support team.
`;
}loadCountryData() {
return [
{ name: '๐ฆ๐ซ Afghanistan', code: 'AF', currency: 'AFN', capital: 'Kabul' },
{ name: '๐ฆ๐ฑ Albania', code: 'AL', currency: 'ALL', capital: 'Tirana' },
{ name: '๐ฉ๐ฟ Algeria', code: 'DZ', currency: 'DZD', capital: 'Algiers' },
{ name: '๐ฆ๐ฉ Andorra', code: 'AD', currency: 'EUR', capital: 'Andorra la Vella' },
{ name: '๐ฆ๐ด Angola', code: 'AO', currency: 'AOA', capital: 'Luanda' },
{ name: '๐ฆ๐ท Argentina', code: 'AR', currency: 'ARS', capital: 'Buenos Aires' },
{ name: '๐ฆ๐ฒ Armenia', code: 'AM', currency: 'AMD', capital: 'Yerevan' },
{ name: '๐ฆ๐บ Australia', code: 'AU', currency: 'AUD', capital: 'Canberra' },
{ name: '๐ฆ๐น Austria', code: 'AT', currency: 'EUR', capital: 'Vienna' },
{ name: '๐ง๐ฉ Bangladesh', code: 'BD', currency: 'BDT', capital: 'Dhaka' },
{ name: '๐ง๐ช Belgium', code: 'BE', currency: 'EUR', capital: 'Brussels' },
{ name: '๐ง๐ท Brazil', code: 'BR', currency: 'BRL', capital: 'Brasรญlia' },
{ name: '๐ง๐ซ Burkina Faso', code: 'BF', currency: 'XOF', capital: 'Ouagadougou' },
{ name: '๐จ๐ฆ Canada', code: 'CA', currency: 'CAD', capital: 'Ottawa' },
{ name: '๐จ๐ณ China', code: 'CN', currency: 'CNY', capital: 'Beijing' },
{ name: '๐จ๐ฎ Ivory Coast', code: 'CI', currency: 'XOF', capital: 'Yamoussoukro' },
{ name: '๐จ๐ฟ Czech Republic', code: 'CZ', currency: 'CZK', capital: 'Prague' },
{ name: '๐ฉ๐ฐ Denmark', code: 'DK', currency: 'DKK', capital: 'Copenhagen' },
{ name: '๐ช๐ฌ Egypt', code: 'EG', currency: 'EGP', capital: 'Cairo' },
{ name: '๐ช๐น Ethiopia', code: 'ET', currency: 'ETB', capital: 'Addis Ababa' },
{ name: '๐ซ๐ฎ Finland', code: 'FI', currency: 'EUR', capital: 'Helsinki' },
{ name: '๐ซ๐ท France', code: 'FR', currency: 'EUR', capital: 'Paris' },
{ name: '๐ฉ๐ช Germany', code: 'DE', currency: 'EUR', capital: 'Berlin' },
{ name: '๐ฌ๐ญ Ghana', code: 'GH', currency: 'GHS', capital: 'Accra' },
{ name: '๐ฌ๐ท Greece', code: 'GR', currency: 'EUR', capital: 'Athens' },
{ name: '๐ฎ๐ณ India', code: 'IN', currency: 'INR', capital: 'New Delhi' },
{ name: '๐ฎ๐ฉ Indonesia', code: 'ID', currency: 'IDR', capital: 'Jakarta' },
{ name: '๐ฎ๐ช Ireland', code: 'IE', currency: 'EUR', capital: 'Dublin' },
{ name: '๐ฎ๐น Italy', code: 'IT', currency: 'EUR', capital: 'Rome' },
{ name: '๐ฏ๐ต Japan', code: 'JP', currency: 'JPY', capital: 'Tokyo' },
{ name: '๐ฐ๐ช Kenya', code: 'KE', currency: 'KES', capital: 'Nairobi' },
{ name: '๐ฒ๐พ Malaysia', code: 'MY', currency: 'MYR', capital: 'Kuala Lumpur' },
{ name: '๐ฒ๐ฝ Mexico', code: 'MX', currency: 'MXN', capital: 'Mexico City' },
{ name: '๐ฒ๐ฆ Morocco', code: 'MA', currency: 'MAD', capital: 'Rabat' },
{ name: '๐ณ๐ฑ Netherlands', code: 'NL', currency: 'EUR', capital: 'Amsterdam' },
{ name: '๐ณ๐ฟ New Zealand', code: 'NZ', currency: 'NZD', capital: 'Wellington' },
{ name: '๐ณ๐ฌ Nigeria', code: 'NG', currency: 'NGN', capital: 'Abuja' },
{ name: '๐ณ๐ด Norway', code: 'NO', currency: 'NOK', capital: 'Oslo' },
{ name: '๐ต๐ฐ Pakistan', code: 'PK', currency: 'PKR', capital: 'Islamabad' },
{ name: '๐ต๐ฑ Poland', code: 'PL', currency: 'PLN', capital: 'Warsaw' },
{ name: '๐ต๐น Portugal', code: 'PT', currency: 'EUR', capital: 'Lisbon' },
{ name: '๐ท๐บ Russia', code: 'RU', currency: 'RUB', capital: 'Moscow' },
{ name: '๐ธ๐ฆ Saudi Arabia', code: 'SA', currency: 'SAR', capital: 'Riyadh' },
{ name: '๐ธ๐ณ Senegal', code: 'SN', currency: 'XOF', capital: 'Dakar' },
{ name: '๐ธ๐ฌ Singapore', code: 'SG', currency: 'SGD', capital: 'Singapore' },
{ name: '๐ฟ๐ฆ South Africa', code: 'ZA', currency: 'ZAR', capital: 'Cape Town' },
{ name: '๐ฐ๐ท South Korea', code: 'KR', currency: 'KRW', capital: 'Seoul' },
{ name: '๐ช๐ธ Spain', code: 'ES', currency: 'EUR', capital: 'Madrid' },
{ name: '๐ธ๐ช Sweden', code: 'SE', currency: 'SEK', capital: 'Stockholm' },
{ name: '๐จ๐ญ Switzerland', code: 'CH', currency: 'CHF', capital: 'Bern' },
{ name: '๐น๐ญ Thailand', code: 'TH', currency: 'THB', capital: 'Bangkok' },
{ name: '๐น๐ฌ Togo', code: 'TG', currency: 'XOF', capital: 'Lomรฉ' },
{ name: '๐น๐ท Turkey', code: 'TR', currency: 'TRY', capital: 'Ankara' },
{ name: '๐บ๐ฌ Uganda', code: 'UG', currency: 'UGX', capital: 'Kampala' },
{ name: '๐ฆ๐ช United Arab Emirates', code: 'AE', currency: 'AED', capital: 'Abu Dhabi' },
{ name: '๐ฌ๐ง United Kingdom', code: 'GB', currency: 'GBP', capital: 'London' },
{ name: '๐บ๐ธ United States', code: 'US', currency: 'USD', capital: 'Washington, D.C.' },
{ name: '๐ป๐ณ Vietnam', code: 'VN', currency: 'VND', capital: 'Hanoi' }
];
}
}// Global functions for HTML onclick events
function switchTripType(type) {
const planner = window.planner;
planner.currentTripType = type;
document.querySelectorAll('.trip-type-btn').forEach(btn => {
btn.classList.remove('active');
});
event.target.classList.add('active');
document.querySelectorAll('.section').forEach(section => {
section.classList.remove('active');
});
document.getElementById(type + 'Section').classList.add('active');
document.querySelectorAll('.tour-category, .purpose-category').forEach(cat => {
cat.classList.remove('selected');
});
planner.selectedCategories = [];
planner.selectedPurposes = [];
planner.tryAutoGenerate();
}function switchDurationType(type) {
const planner = window.planner;
planner.currentDurationType = type;
document.querySelectorAll('.duration-toggle-btn').forEach(btn => {
btn.classList.remove('active');
});
event.target.classList.add('active');
if (type === 'custom') {
document.getElementById('customDuration').style.display = 'block';
document.getElementById('presetDuration').style.display = 'none';
} else {
document.getElementById('customDuration').style.display = 'none';
document.getElementById('presetDuration').style.display = 'block';
}
planner.tryAutoGenerate();
}// Initialize the application
document.addEventListener('DOMContentLoaded', () => {
window.planner = new ProfessionalItineraryPlanner();
const syncNightsWithDays = () => {
const daysInput = document.getElementById('customDays');
const nightsInput = document.getElementById('nights');
if (daysInput && nightsInput) {
const days = parseInt(daysInput.value) || 0;
const nights = Math.max(0, days - 1);
nightsInput.value = nights;
}
};const daysInput = document.getElementById('customDays');
const presetDaysInput = document.getElementById('presetDays');
if (daysInput) {
daysInput.addEventListener('input', syncNightsWithDays);
daysInput.addEventListener('change', syncNightsWithDays);
}
if (presetDaysInput) {
presetDaysInput.addEventListener('change', () => {
const days = parseInt(presetDaysInput.value) || 0;
const nights = Math.max(0, days - 1);
document.getElementById('nights').value = nights;
});
}// Auto-add Ghana as default destination after a delay
setTimeout(() => {
const ghanaCountry = window.planner.countryData.find(c => c.code === 'GH');
if (ghanaCountry) {
window.planner.addCountry(ghanaCountry);
}
syncNightsWithDays();
}, 1000);
});