Skip to content
  • Home
  • About
    • Who Is KaliKosmos
    • Why Choose KaliKosmos
    • Specializations
    • Services
    • Our Commitment
  • Autism & Special Needs
  • Disney
  • Destinations
    • Adventure
    • Asia
    • Cruises
    • Couples
    • Destination Weddings
    • Domestic Getaways
    • Europe
    • Hawaii
    • Intercultural Immersion
    • River Cruise
    • Ski
  • Travel Essentials
    • The Travel Store
    • Customized Packing Guide
  • Inspiration
    • Travel Notes
    • Pinned Points of Interest
    • SELECT Travel
    • Clients’ Photo Gallery
  • Contact Us
  • For Clients
    • Passenger Information Form
    • Credit Card Form
    • Requested Documentation Form
    • General & COVID Disclaimer
    • Where In The World
    • FAQ
    • Agency Terms
    • Privacy Policy
KaliKosmos Logo

***OLD KaliKosmos Travel

Destinations

Whether you’re traveling to celebrate your independence, your honeymoon, your girlfriends, your family, or just to celebrate the fact that Friday is coming- what better way to celebrate than to explore a new corner of this beautiful world.

When you’re ready to take the next step, Contact Us.

Adventure
Asia
Cruises
Couples
Destination Weddings
Disney
Domestic Getaways
Europe
Hawaii
Intercultural Immersion
River Cruises
Ski
Edmond, Oklahoma

405.694.0506

Travel Leaders Logo
© Kalikosmos Travel 2021. All rights reserved.
document.addEventListener("DOMContentLoaded", function() { const SHEET_URL = "https://api.sheetbest.com/sheets/a1b91312-947f-4689-b10a-1ab876c556af"; function randomPick(arr) { return arr[Math.floor(Math.random()*arr.length)]; } async function fetchItems() { const res = await fetch(SHEET_URL); const data = await res.json(); return data; // array of items } function pickItem(items, category, weather, occasion=null, excludeTypes=[]) { let filtered = items.filter(i => i.Category === category); if(weather) filtered = filtered.filter(i => i['Suitable Weather']?.includes(weather)); if(occasion) filtered = filtered.filter(i => i['Occasion']?.includes(occasion)); if(excludeTypes.length) filtered = filtered.filter(i => !excludeTypes.includes(i[`${category} Type`] || i.Type)); return filtered.length ? randomPick(filtered) : null; } async function generateOutfit() { const weather = document.getElementById("weatherOption").value; const items = await fetchItems(); let outfit = []; // PICK dress OR top+bottom let dress = pickItem(items, "Dress", weather); if(dress) { outfit.push(dress); } else { let top = pickItem(items, "Top", weather); let bottom = pickItem(items, "Pants", weather) || pickItem(items, "Skirt", weather); if(top) outfit.push(top); if(bottom) outfit.push(bottom); } // Layer rules let excludeLayers = []; const topOrDress = outfit.find(i => i.Category === "Top" || i.Category === "Dress"); if(topOrDress?.['Top Type']?.toLowerCase()?.includes("sweater") || topOrDress?.['Dress Type']?.toLowerCase()?.includes("sweater")) { excludeLayers = ["vest","cardigan","blazer","sweater vest"]; } let layer = pickItem(items, "Layers", weather, null, excludeLayers); if(layer) outfit.push(layer); // Cold / Freezing coat rule if(["Cold","Freezing"].includes(weather)) { let coat = items.find(i => i['Layers Type']?.toLowerCase() === "coat"); if(coat) outfit.push(coat); if(layer && ["blazer","shacket","jacket","puffer vest"].includes(layer['Layers Type']?.toLowerCase())) { outfit = outfit.filter(i => i !== layer); } } // Shoes let shoes = pickItem(items, "Shoes", weather); if(shoes && shoes['Shoes Type']?.toLowerCase().includes("rain boots") && 0 /* skip rain check for now */ < 80) { shoes = pickItem(items, "Shoes", weather, null, ["rain boots"]); } if(shoes) outfit.push(shoes); // Purse let purse = pickItem(items, "Purse", weather); if(purse) outfit.push(purse); // Accessories (max 3, 2 for loungewear) const isLoungewear = outfit.some(i => i.Occasion?.toLowerCase()?.includes("loungewear")); const maxAccessories = isLoungewear ? 2 : 3; let accessories = []; const accCandidates = items.filter(i => i.Category === "Accessories"); while(accessories.length < maxAccessories) { let acc = randomPick(accCandidates); if(!acc) break; if(!accessories.find(a=>a['Accessories Type']===acc['Accessories Type'])) { if(acc['Accessories Type']?.toLowerCase()==="scarf" && accessories.find(a=>a['Accessories Type']?.toLowerCase()==="necklace")) continue; if(acc['Accessories Type']?.toLowerCase()==="necklace" && accessories.find(a=>a['Accessories Type']?.toLowerCase()==="scarf")) continue; if(acc['Accessories Type']?.toLowerCase()==="hat" && outfit.some(i=>i.Occasion?.toLowerCase()?.includes("special occasion"))) continue; accessories.push(acc); } } outfit.push(...accessories); // Display outfit const container = document.getElementById("outfit-results"); container.innerHTML = outfit.filter(Boolean).map(i => `
${i['Dress Type'] || i['Top Type'] || i['Pants Type'] || i['Layers Type'] || i['Accessories Type'] || i['Purse Type'] || i['Shoes Type'] || i.Type}
${i.Category}
` ).join(""); } document.getElementById("generate").addEventListener("click", generateOutfit); });