Gemi Tours Itinerary Generator AI
๐ข V15 Enhanced - Distance-Based Pricing Active
๐ Distance-Based Pricing System V15 Enhanced
All pricing calculated from Accra, Ghana base - Real logistics costs, transparent breakdown, fair distance-based pricing
Accra Area (0-25km)
Base Price (1.0x)
Local transport, no distance premium
Nearby (26-75km)
+10% Premium
Short drive, minimal logistics
Medium (76-150km)
+20% Premium
Medium drive, fuel & time costs
Far (151-250km)
+35% Premium
Long drive, significant logistics
Very Far (251km+)
+50% Premium
Extended journey, overnight guides
๐ Your Enhanced Premium Itinerary
Generating personalized itinerary with V15 Enhanced distance-based pricing and real-time availability...
๐ฌ๐ญ Ghana Premium Experiences - Enhanced Distance-Based Selection
๐ V15 Enhanced Distance-Based Pricing Model
Tour Base: Accra, Greater Accra Region, Ghana
Revolutionary Transparent Pricing: All costs calculated based on actual distance from our Accra operations center to account for real transport costs, logistics coordination, guide travel time, fuel expenses, and operational complexity.
Enhanced Pricing Zones:
๐ข Accra Base (0-25km): Standard pricing โข Local transport โข No distance premium
๐ต Nearby Zone (26-75km): +10% distance premium โข Short drive logistics
๐ก Medium Zone (76-150km): +20% distance premium โข Fuel & time costs
๐ Far Zone (151-250km): +35% distance premium โข Significant logistics coordination
๐ด Extended Zone (251km+): +50% distance premium โข Complex logistics, overnight guides
`;
}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 = `
โ ๏ธ System Error
Unable to generate enhanced distance-based itinerary. Please check your inputs and try again.
`;
}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' }
];
}loadLiveCurrencyRates() {
const baseRates = {
'USD': 1.0, 'EUR': 0.85, 'GBP': 0.73, 'JPY': 110.0, 'CAD': 1.25,
'AUD': 1.35, 'CHF': 0.92, 'CNY': 6.45, 'INR': 74.0, 'GHS': 6.1,
'ZAR': 14.5, 'NGN': 411.0, 'KES': 108.0, 'EGP': 15.7, 'BRL': 5.2,
'MXN': 20.1, 'KRW': 1180, 'SGD': 1.35, 'THB': 33.0
};
const liveRates = {};
Object.keys(baseRates).forEach(currency => {
const fluctuation = (Math.random() - 0.5) * 0.04;
liveRates[currency] = baseRates[currency] * (1 + fluctuation);
});
return liveRates;
}loadWeatherPatterns() {
return {
tropical: ['Sunny', 'Partly Cloudy', 'Thunderstorms', 'Heavy Rain'],
temperate: ['Sunny', 'Cloudy', 'Light Rain', 'Partly Cloudy'],
arid: ['Sunny', 'Hot', 'Dusty', 'Clear Skies'],
cold: ['Cloudy', 'Snow', 'Foggy', 'Overcast'],
mediterranean: ['Sunny', 'Mild', 'Breezy', 'Pleasant']
};
}loadRealAttractions() {
return {
'GH': {
name: 'Ghana',
regions: {
'Volta Region': [
{ name: 'Mount Gemi Guided Expeditions', location: 'Amedzofe', type: 'Adventure', cost: 145 },
{ name: 'Amedzofe Canopy Walkway & Ote Waterfalls', location: 'Amedzofe', type: 'Nature', cost: 120 },
{ name: 'The Dark Forest Historical Experience', location: 'Amedzofe', type: 'Historical', cost: 95 },
{ name: 'Wli Waterfalls Exploration', location: 'Hohoe', type: 'Nature', cost: 110 },
{ name: 'Tafi Monkey Sanctuary', location: 'Tafi Atome', type: 'Wildlife', cost: 85 },
{ name: 'Kpetoe Kente Village Experience', location: 'Kpetoe', type: 'Cultural', cost: 105 }
],
'Central Region': [
{ name: 'Cape Coast Castle Historical Immersion', location: 'Cape Coast', type: 'Historical', cost: 75 },
{ name: 'Elmina Castle & Town Historical Journey', location: 'Elmina', type: 'Historical', cost: 80 },
{ name: 'Kakum National Park Canopy Walk Adventure', location: 'Cape Coast', type: 'Adventure', cost: 110 }
],
'Ashanti Region': [
{ name: 'Manhyia Palace Museum Royal Heritage Tour', location: 'Kumasi', type: 'Historical', cost: 70 },
{ name: 'Bonwire Royal Kente Village Experience', location: 'Bonwire', type: 'Cultural', cost: 90 },
{ name: 'Lake Bosumtwi Sacred Crater Lake Ecosystem Tour', location: 'Lake Bosumtwi', type: 'Nature', cost: 105 }
],
'Western Region': [
{ name: 'Nzulezu Ancient Stilt Village Cultural Immersion', location: 'Beyin', type: 'Cultural', cost: 125 }
],
'Greater Accra Region': [
{ name: 'Accra Cultural Heritage & Modern City Tour', location: 'Accra', type: 'Cultural', cost: 65 }
]
}
}
};
}
}function switchTripType(type) {
const generator = window.itineraryGenerator;
generator.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');
});
generator.selectedCategories = [];
generator.selectedPurposes = [];
generator.tryAutoGenerate();
}function switchDurationType(type) {
const generator = window.itineraryGenerator;
generator.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';
}
generator.tryAutoGenerate();
}document.addEventListener('DOMContentLoaded', () => {
window.itineraryGenerator = new EnhancedItineraryGenerator();
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;
});
}setTimeout(() => {
const ghanaCountry = window.itineraryGenerator.countryData.find(c => c.code === 'GH');
if (ghanaCountry) {
window.itineraryGenerator.addCountry(ghanaCountry);
}
syncNightsWithDays();
}, 1000);
});