var $=function(s){return document.querySelector(s)}; var SODA_BASES=["Coke","Diet Coke","Coke Zero","Sprite","Sprite Zero","Root Beer","Pepsi","Pepsi Zero","Mountain Dew","Diet Mountain Dew","Mountain Dew Zero","Dr Pepper","Diet Dr Pepper","Dr Pepper Zero","Dr Pepper Blackberry","Lemonade","Ginger Ale","Fresca","Big Red","Agave Vanilla Cream Soda","Sparkling Water"]; var FLAVORS=["Apple","Blackberry","Blue Raspberry","Butterscotch","Cherry","Cinnamon","Coconut","Cranberry","Cupcake","English Toffee","Fresh Lemon","Fresh Lime","Fresh Orange","Grape","Grapefruit","Green Apple","Guava","Hazelnut","Mango","Passion Fruit","Peach","Peppermint","Pineapple","Pomegranate","Raspberry","SF Coconut","SF Mango","SF Peach","SF Pineapple","SF Raspberry","SF Strawberry","SF Vanilla","SF Watermelon","Strawberry","Tiger's Blood","Toasted Marshmallow","Vanilla","Watermelon","Mojito Mint"]; var PUREES=["Green Apple Puree","Mango Puree","Peach Puree","Pineapple Puree","Raspberry Puree","Strawberry Puree","Pumpkin Sauce","Frozen Apples","Frozen Mango","Frozen Strawberry","Passion Fruit Pearls","Strawberry Pearls"]; var CREAMS=["None","Coconut Cream","Vanilla Cream","Half & Half","Whipped Cream"]; var MODES={ soda:{label:"Sodas",bases:SODA_BASES,multiBase:3,sizes:[[12,1.89],[16,2.19],[24,2.69],[32,2.89],[44,3.09]],flavorP:.40,pureeP:.65,creamP:{def:.65,whipped:.50},blendP:1.50,ices:["NO Ice","Lite Ice","Extra Ice","Extra Extra Ice","BLENDED"],extras:["Gummy Sharks","Cinnamon Stick","Caramel Drizzle"],splash:SODA_BASES.concat(["Swig Energy Splash","SF Swig Energy Splash"]),splashLabel:"Splash (optional)",baseCal:{def:12,"Mountain Dew":14,"Big Red":13,"Lemonade":10,"Ginger Ale":11,"Fresca":0,"Sparkling Water":0},dietBases:["Diet Coke","Coke Zero","Sprite Zero","Pepsi Zero","Diet Mountain Dew","Mountain Dew Zero","Diet Dr Pepper","Dr Pepper Zero","Fresca","Sparkling Water"]}, energy:{label:"Swig Energy",bases:["Swig Energy","SF Swig Energy"],multiBase:1,sizes:[["Small",3.49],["Medium",5.25],["Large",6.99]],sizeOz:{"Small":20,"Medium":32,"Large":44},flavorP:0,pureeP:0,creamP:{def:0,whipped:0},blendP:0,ices:["BLENDED","Extra Ice","Extra Extra Ice"],extras:["Gummy Sharks"],splash:SODA_BASES,splashLabel:"Top-Off (optional)",baseCal:{"Swig Energy":12,"SF Swig Energy":0},dietBases:["SF Swig Energy"]}, refresher:{label:"Refreshers",bases:["Water","Sparkling Water"],multiBase:1,sizes:[[12,1.75],[16,1.99],[24,2.55],[32,2.79],[44,2.99]],flavorP:.40,pureeP:.65,creamP:{def:.65,whipped:.50},blendP:1.50,ices:["NO Ice","Lite Ice","Extra Ice","Extra Extra Ice","Full of Ice","BLENDED"],extras:["Gummy Sharks"],splash:[],splashLabel:"",baseCal:{"Water":0,"Sparkling Water":0},dietBases:["Water","Sparkling Water"]}, tea:{label:"Sweet Tea",bases:["Sweet Tea","Unsweetened Tea"],multiBase:1,sizes:[[12,1.75],[16,1.99],[24,2.55],[32,2.79],[44,2.99]],flavorP:.40,pureeP:.65,creamP:{def:.65,whipped:.50},blendP:1.50,ices:["NO Ice","Lite Ice","Extra Ice","Extra Extra Ice","BLENDED"],extras:["Gummy Sharks","Sour Patch Kids Bitz"],splash:SODA_BASES.concat(["Swig Energy Splash","SF Swig Energy Splash"]),splashLabel:"Splash (optional)",baseCal:{"Sweet Tea":10,"Unsweetened Tea":0},dietBases:["Unsweetened Tea"]}, hot:{label:"Hot Chocolate",bases:["Hot Chocolate"],multiBase:1,sizes:[["One size",3.49]],flavorP:0,pureeP:0,creamP:{def:0,whipped:0},blendP:0,ices:[],extras:["Whipped Cream","Gummy Sharks"],splash:[],splashLabel:"",baseCal:{"Hot Chocolate":0},fixedCal:240,dietBases:[]}, frozen:{label:"Frozen Hot Chocolate",bases:["Frozen Hot Chocolate"],multiBase:1,sizes:[["One size",5.75]],flavorP:0,pureeP:0,creamP:{def:0,whipped:0},blendP:0,ices:[],extras:["Whipped Cream","Chocolate Drizzle","Strawberry Drizzle","Heart Sprinkles","Gummy Sharks"],splash:[],splashLabel:"",baseCal:{"Frozen Hot Chocolate":0},fixedCal:600,dietBases:[]} }; function P(n,m,b,f,p,c,e,s,i,r,card,fl,url){return{name:n,mode:m,bases:b,flavors:f,purees:p,cream:c,extras:e,splash:s,ice:i,range:r,card:card,flag:fl||"",url:url||""}} var GUIDE="https://swigmenu.net/swig-"; var PRESETS=[ P("Birthday Girl","soda",["Dr Pepper Blackberry"],["Raspberry"],["Mango Puree"],"Coconut Cream",[],[],"Regular",null,3.59,"",GUIDE+"birthday-girl/"), P("Dirty Little Secret","soda",["Dr Pepper"],["Coconut","Pineapple"],[],"Vanilla Cream",[],[],"Regular",null,3.34,"",GUIDE+"dirty-little-secret/"), P("Dr Spice","soda",["Dr Pepper"],["Cinnamon","Coconut"],[],"Half & Half",["Cinnamon Stick"],[],"Regular","140-490",3.74,""), P("Life's a Peach","soda",["Dr Pepper"],["Vanilla","Peach"],[],"Half & Half",[],[],"Regular","130-480",3.34,"",GUIDE+"lifes-a-peach/"), P("Malibu","soda",["Dr Pepper"],["Coconut","Vanilla"],[],"None",[],[],"Regular","120-430",2.69,""), P("Princess Peach","soda",["Dr Pepper"],["Peach"],[],"Coconut Cream",[],[],"Regular","140-510",2.94,"",GUIDE+"princess-peach/"), P("Raspberry Dream","soda",["Dr Pepper"],[],["Raspberry Puree"],"Coconut Cream",[],[],"Regular","150-550",3.19,"",GUIDE+"raspberry-dream/"), P("Spice Spice Baby","soda",["Dr Pepper"],["Vanilla","Cinnamon"],["Pumpkin Sauce"],"Half & Half",["Cinnamon Stick"],[],"Regular","160-590",4.39,"",GUIDE+"spice-spice-baby/"), P("Save Me Jade","soda",["Diet Dr Pepper"],["SF Vanilla","SF Coconut"],[],"None",[],[],"Regular","0",2.69,"",GUIDE+"save-me-jade/"), P("Spring Fling","soda",["Dr Pepper"],["Vanilla"],["Strawberry Puree"],"Coconut Cream",[],[],"Regular","170-610",3.59,"",GUIDE+"spring-fling/"), P("Texas Tab","soda",["Dr Pepper"],["Vanilla"],[],"Coconut Cream",[],[],"Regular","140-500",2.94,"",GUIDE+"texas-tab/"), P("The Ring King","soda",["Dr Pepper"],["Cupcake"],["Strawberry Puree"],"Vanilla Cream",[],[],"Regular","170-620",3.59,"",GUIDE+"the-ring-king/"), P("Big Al","soda",["Diet Coke"],["Coconut","Fresh Lime"],[],"None",[],[],"Regular","15-40",2.69,"",GUIDE+"big-al/"), P("This Bliss","soda",["Diet Coke"],["Cranberry","Fresh Lime"],[],"None",[],[],"Regular","25-80",2.69,"",GUIDE+"this-bliss/"), P("The Founder","soda",["Diet Coke"],["SF Coconut","Fresh Lime"],[],"Coconut Cream",[],[],"Regular","20-80",3.34,"",GUIDE+"the-founder/"), P("Just Peachy","soda",["Coke Zero"],["Pineapple","Fresh Lime"],["Peach Puree"],"Coconut Cream",[],[],"Regular","60-220",3.99,"",GUIDE+"just-peachy/"), P("Waikiki","soda",["Coke"],["Pineapple"],[],"Coconut Cream",[],[],"Regular","150-540",2.94,"",GUIDE+"waikiki/"), P("Cherry Bomb","soda",["Pepsi"],["Cherry","Coconut"],[],"Vanilla Cream",[],[],"Regular","150-520",3.34,"",GUIDE+"cherry-bomb/"), P("Beach Babe","soda",["Mountain Dew"],["Raspberry","Peach"],[],"Vanilla Cream",[],[],"Regular","160-570",3.34,"",GUIDE+"beach-babe/"), P("Bloody Wild","soda",["Mountain Dew"],[],["Mango Puree","Strawberry Puree"],"None",[],[],"Regular","150-590",3.19,"",GUIDE+"bloody-wild/"), P("Caramel Apple Elixir","soda",["Diet Mountain Dew"],["Green Apple"],["Green Apple Puree","Frozen Apples"],"None",["Caramel Drizzle"],[],"BLENDED","300-580",5.09,"S",GUIDE+"caramel-apple/"), P("Dew Gooder","soda",["Mountain Dew"],["Pineapple","Fresh Lime"],["Raspberry Puree"],"Coconut Cream",[],[],"Regular","170-650",3.99,"",GUIDE+"dew-gooder/"), P("Endless Summer","soda",["Mountain Dew"],["Pomegranate","Grapefruit","Fresh Lime"],[],"None",[],[],"Regular","140-500",3.09,"",GUIDE+"endless-summer/"), P("Guava Have It!","soda",["Mountain Dew"],["Guava","Strawberry"],[],"Coconut Cream",[],[],"Regular","160-560",3.34,"",GUIDE+"guava-have-it/"), P("Watermelon Sugar","soda",["Mountain Dew"],["Mango","Watermelon"],[],"Coconut Cream",["Passion Fruit Pearls"],[],"Regular","180-590",3.99,"",GUIDE+"watermelon-sugar/"), P("Crimson Cauldron","soda",["Sprite"],["Strawberry","Pineapple"],["Mango Puree"],"None",["Strawberry Pearls"],[],"Regular",null,3.99,"S",""), P("Hula Girl","soda",["Sprite","Lemonade"],["Mango","Pineapple","Strawberry"],[],"Coconut Cream",[],[],"Regular","160-600",3.74,"",GUIDE+"hula-girl/"), P("Loop-T-Loop","soda",["Sprite"],["Strawberry","Watermelon","Peach"],[],"None",[],[],"Regular","120-500",3.09,"",GUIDE+"loop-t-loop/"), P("Poppin' Pineapple","soda",["Sprite"],["Pineapple","Watermelon"],[],"None",["Strawberry Pearls"],[],"Regular","150-520",3.34,"",GUIDE+"poppin-pineapple/"), P("Riptide","soda",["Sprite"],["Cranberry","Fresh Lime"],["Raspberry Puree"],"None",[],[],"Regular","140-590",3.34,"",GUIDE+"riptide/"), P("Shark Attack","soda",["Sprite","Lemonade"],["Blue Raspberry"],[],"None",["Gummy Sharks"],[],"Regular","140-460",2.69,"",GUIDE+"shark-attack/"), P("Unlucky Ducky","soda",["Sprite","Lemonade"],["Strawberry"],[],"None",["Gummy Sharks"],[],"Regular","140-450",2.69,"",GUIDE+"unlucky-ducky/"), P("Beach Bum","soda",["Lemonade"],["Guava","Grapefruit","Fresh Orange"],[],"None",[],[],"Regular",null,3.09,""), P("The Tropic","soda",["Lemonade"],["Mango","Passion Fruit"],[],"Vanilla Cream",[],[],"Regular",null,3.34,""), P("Buttery Beer","soda",["Root Beer"],["Butterscotch"],[],"Vanilla Cream",[],[],"Regular","140-490",2.94,"",GUIDE+"buttery-beer/"), P("Happy Camper","soda",["Root Beer"],["Toasted Marshmallow"],[],"Half & Half",[],[],"Regular","130-460",2.94,"",GUIDE+"happy-camper/"), P("Island Time","soda",["Fresca"],["Passion Fruit","Fresh Orange"],["Mango Puree"],"Coconut Cream",[],[],"Regular","60-240",3.99,"",GUIDE+"island-time/"), P("Pink Bahama","soda",["Fresca"],["Peach","Strawberry","Raspberry","Fresh Lemon"],[],"None",[],[],"Regular","25-80",3.49,"",GUIDE+"pink-bahama/"), P("Heartthrob","soda",["Big Red"],["Vanilla"],["Strawberry Puree"],"Vanilla Cream",[],[],"Regular",null,3.59,"",GUIDE+"heartthrob/"), P("Cupid's Crush","soda",["Dr Pepper"],["Cherry","Raspberry"],["Strawberry Puree"],"Vanilla Cream",[],[],"Regular",null,null,"R",GUIDE+"cupids-crush/"), P("Dr De Leche","soda",["Dr Pepper"],["Dulce de Leche","Vanilla"],[],"Vanilla Cream",[],[],"Regular",null,null,"R",GUIDE+"dr-de-leche/"), P("Dragonada","soda",["Sprite"],["Pineapple","Dragon Fruit"],["Pineapple Puree","Frozen Pineapple"],"Coconut Cream",[],[],"BLENDED",null,null,"R",GUIDE+"dragonada/"), P("Flame Kissed","soda",["Sprite"],["Strawberry","Peach"],["Dragon Fruit Puree","Frozen Dragon Fruit"],"None",[],[],"Regular",null,null,"R",GUIDE+"flame-kissed/"), P("Sour Patch Kids Blue Raspberry","soda",["Mountain Dew"],["Blue Raspberry"],[],"None",["Sour Patch Kids Bitz"],[],"Regular",null,null,"R",GUIDE+"sour-patch-kids-blue-raspberry/"), P("Sour Patch Kids Watermelon Wave","soda",["Sprite"],["Watermelon"],["Watermelon Puree"],"Coconut Cream",["Sour Patch Kids Bitz"],[],"Regular",null,null,"R",GUIDE+"sour-patch-kids-watermelon-wave/"), P("Sour Patch Kids Redberry","soda",["Sprite"],["Redberry"],["Raspberry Puree"],"None",["Sour Patch Kids Bitz"],[],"Regular",null,null,"R",GUIDE+"sour-patch-kids-redberry/"), P("Aloha Horizon","energy",["Swig Energy"],["Passion Fruit","Guava","Coconut","Fresh Orange"],[],"None",[],[],"Regular","250-510",3.49,""), P("Cabana Colada","energy",["SF Swig Energy"],["SF Coconut","SF Pineapple"],["Mango Puree"],"Coconut Cream",[],["Ginger Ale"],"Regular","160-290",3.49,""), P("Coastal Kiss","energy",["Swig Energy"],["Blue Raspberry","Coconut","Fresh Lime"],[],"None",[],[],"Regular","250-500",3.49,""), P("Lemon Berry Bliss","energy",["SF Swig Energy"],["Fresh Lemon"],["Frozen Strawberry"],"None",[],[],"Regular","25-35",3.49,""), P("Midnight Hex","energy",["SF Swig Energy"],["Blue Raspberry","Green Apple","Watermelon"],[],"None",[],[],"Regular",null,3.49,"S",""), P("Weekend Dream","energy",["SF Swig Energy"],["Peach","Raspberry","Strawberry","Watermelon"],[],"Coconut Cream",[],[],"Regular","130-250",3.49,""), P("Passion Swirl","energy",["Swig Energy"],["Passion Fruit","Peach","Strawberry"],["Mango Puree"],"None",[],[],"BLENDED","350-690",3.49,""), P("Sweet Skies","energy",["Swig Energy"],["Raspberry","Blue Raspberry","Vanilla"],[],"Vanilla Cream",[],[],"BLENDED","270-530",3.49,""), P("Autumn Blush","refresher",["Water"],["Apple","Raspberry"],["Mango Puree"],"Vanilla Cream",[],[],"Regular","120-430",3.85,""), P("Fruit Water","refresher",["Water"],["SF Coconut","SF Vanilla"],["Frozen Strawberry","Frozen Mango"],"None",[],[],"Regular","25-80",3.85,""), P("Mango Breeze","refresher",["Water"],["SF Coconut","SF Vanilla"],["Mango Puree","Frozen Mango"],"Coconut Cream",[],[],"Regular","110-340",4.50,""), P("Pretty in Pink","refresher",["Water"],["Guava","Grapefruit","Fresh Orange"],[],"None",[],[],"Regular","50-140",2.95,""), P("Sandy Cheeks","refresher",["Water"],["SF Peach","Fresh Lemon"],[],"None",[],[],"Regular","0-5",2.55,""), P("Strawberry Breeze","refresher",["Water"],["SF Coconut","SF Vanilla"],["Strawberry Puree","Frozen Strawberry"],"Coconut Cream",[],[],"Regular","90-310",4.50,""), P("Summer Splash","refresher",["Sparkling Water"],["SF Pineapple","Fresh Lemon"],["Strawberry Puree"],"None",[],[],"Regular","60-230",3.20,""), P("The Fighter","refresher",["Water"],["SF Vanilla","SF Peach","SF Pineapple","Fresh Lime"],["Raspberry Puree"],"None",[],[],"Regular","60-230",4.00,""), P("Unbreakable","refresher",["Water"],["Grapefruit","Fresh Lemon"],["Mango Puree"],"None",[],[],"Regular","100-350",3.20,""), P("Bless Your Heart","tea",["Sweet Tea"],["SF Peach","SF Vanilla","SF Pineapple","Fresh Lime"],[],"None",[],["Lemonade"],"Regular","90-340",3.35,""), P("Oklahomie","tea",["Sweet Tea"],["Guava","Fresh Orange"],["Strawberry Puree"],"None",[],["Lemonade"],"Regular","190-680",3.20,""), P("Southern Belle","tea",["Sweet Tea"],["Peach","Fresh Lemon"],[],"None",[],[],"Regular","140-460",2.55,""), P("The Big Friendly","tea",["Sweet Tea"],["Peach","Raspberry","Vanilla"],[],"None",[],[],"Regular","130-440",2.95,""), P("Dream Coco","hot",["Hot Chocolate"],["Raspberry"],[],"Coconut Cream",[],[],"Regular","310",3.49,""), P("The Nutcracker","hot",["Hot Chocolate"],["Hazelnut"],[],"Vanilla Cream",[],[],"Regular","300",3.49,""), P("Fancy Cocoa","frozen",["Frozen Hot Chocolate"],["Vanilla"],[],"Coconut Cream",["Whipped Cream","Chocolate Drizzle"],[],"Regular","750",5.75,""), P("Ninny Muggins","frozen",["Frozen Hot Chocolate"],["English Toffee"],[],"Vanilla Cream",["Whipped Cream","Chocolate Drizzle"],[],"Regular","750",5.75,""), P("Serendipity","frozen",["Frozen Hot Chocolate"],["Peppermint"],[],"Coconut Cream",["Whipped Cream","Chocolate Drizzle"],[],"Regular","760",5.75,"") ]; var S={mode:"soda",bases:["Dr Pepper"],size:24,flavors:["Vanilla"],addons:[],cream:"Coconut Cream",splash:[],ice:"Extra Ice",name:"Texas Tab",customName:false}; var showAllB=false,showAllF=false; var SODA_FAMILY=SODA_BASES; function M(){return MODES[S.mode]} function inferMode(b){ if(b==="Swig Energy"||b==="SF Swig Energy")return "energy"; if(b==="Water")return "refresher"; if(b==="Sweet Tea"||b==="Unsweetened Tea")return "tea"; if(b==="Hot Chocolate")return "hot"; if(b==="Frozen Hot Chocolate")return "frozen"; return "soda"; } function modeFlavors(){if(S.mode==="soda")return FLAVORS.filter(function(f){return f!=="Mojito Mint"});if(S.mode==="energy")return FLAVORS.filter(function(f){return f!=="Cinnamon"&&f!=="Mojito Mint"});return FLAVORS} function modePurees(){if(S.mode==="energy"||S.mode==="hot"||S.mode==="frozen")return PUREES.filter(function(f){return f!=="Pumpkin Sauce"});return PUREES} function modeExtras(){if(S.mode==="soda")return["Gummy Sharks","Cinnamon Stick","Caramel Drizzle"];if(S.mode==="energy")return["Gummy Sharks"];if(S.mode==="tea")return["Gummy Sharks","Sour Patch Kids Bitz"];if(S.mode==="hot")return["Whipped Cream","Gummy Sharks"];if(S.mode==="frozen")return["Whipped Cream","Chocolate Drizzle","Strawberry Drizzle","Heart Sprinkles","Gummy Sharks"];return["Gummy Sharks"]} function addonList(){var l=modePurees().concat(modeExtras());return l.filter(function(x,i){return l.indexOf(x)===i})} function defaultIce(){if(S.mode==="hot"||S.mode==="frozen")return "";return "Extra Ice"} function defaultSize(){if(S.mode==="energy")return "Medium";if(S.mode==="hot"||S.mode==="frozen")return "One size";return 24} function fmt(n){return "$"+n.toFixed(2)} function sizePrice(){var m=M();for(var i=0;i-1} function isSF(x){return x.indexOf("SF ")===0} function addonPrice(a){ if(isPearl(a))return 0.65; if(PUREES.indexOf(a)>-1)return M().pureeP; if(a==="Gummy Sharks"||a==="Cinnamon Stick"||a==="Sour Patch Kids Bitz")return 0.40; return 0; } function addonCal(a){ if(isPearl(a))return 20; if(PUREES.indexOf(a)>-1){if(a.indexOf("Frozen")===0)return 15;return 25} if(a==="Gummy Sharks")return 15;if(a==="Caramel Drizzle")return 25;if(a==="Chocolate Drizzle")return 20;if(a==="Strawberry Drizzle")return 15;if(a==="Heart Sprinkles")return 10;if(a==="Sour Patch Kids Bitz")return 20;if(a==="Whipped Cream")return 20;return 0; } function creamPrice(){if(S.cream==="None")return 0;if(S.cream==="Whipped Cream")return M().creamP.whipped;return M().creamP.def} function splashPrice(){var t=0;S.splash.forEach(function(s){if(s==="Swig Energy Splash"||s==="SF Swig Energy Splash")t+=1.50});return t} function priceTotal(){var m=M(),t=sizePrice()+S.flavors.length*m.flavorP+creamPrice()+splashPrice()+(S.ice==="BLENDED"?m.blendP:0);S.addons.forEach(function(a){t+=addonPrice(a)});return t} function iceFactor(){var f={"NO Ice":1,"Lite Ice":0.85,"Extra Ice":0.70,"Extra Extra Ice":0.65,"Full of Ice":0.60,"BLENDED":0.90};return f[S.ice]||0.75} function baseOzCal(b){var m=M();if(m.baseCal[b]!==undefined)return m.baseCal[b];return m.baseCal.def||12} function flavCal(f){if(isSF(f))return 0;if(f==="Fresh Lemon"||f==="Fresh Lime"||f==="Fresh Orange")return 5;return 20} function crCal(c){if(c==="Coconut Cream"||c==="Vanilla Cream")return 40;if(c==="Half & Half")return 30;if(c==="Whipped Cream")return 20;return 0} function calTotal(){ var m=M(); if(m.fixedCal){var t=m.fixedCal;S.flavors.forEach(function(f){t+=flavCal(f)});S.addons.forEach(function(a){t+=addonCal(a)});t+=crCal(S.cream);return Math.round(t/10)*10} var oz=(S.mode==="energy")?m.sizeOz[S.size]:S.size; var avg=0;S.bases.forEach(function(b){avg+=baseOzCal(b)});avg/=S.bases.length; var t=oz*iceFactor()*avg; S.flavors.forEach(function(f){t+=flavCal(f)});S.addons.forEach(function(a){t+=addonCal(a)});t+=crCal(S.cream); return Math.round(t/10)*10; } var ADJ={"Vanilla":"Vanilla","SF Vanilla":"Vanilla Light","Coconut":"Coco","SF Coconut":"Coco Light","Peach":"Peachy","SF Peach":"Peachy Light","Raspberry":"Razzy","Strawberry":"Berry","Mango":"Mango","Pineapple":"Pineapple","SF Pineapple":"Pineapple Light","Cherry":"Cherry","Blue Raspberry":"Blue","Watermelon":"Melon","Guava":"Guava","Passion Fruit":"Passion","Grapefruit":"Grape","Pomegranate":"Pom","Green Apple":"Apple","Apple":"Apple","Cupcake":"Cupcake","English Toffee":"Toffee","Butterscotch":"Butterscotch","Toasted Marshmallow":"Mallow","Cranberry":"Cranberry","Dragon Fruit":"Dragon","Blackberry":"Blackberry","Redberry":"Redberry","Cinnamon":"Cinnamon","Pumpkin Sauce":"Pumpkin","Dulce de Leche":"Dulce","Hazelnut":"Hazelnut","Peppermint":"Mint","Lemonade":"Lemonade","Tiger's Blood":"Tiger","Mojito Mint":"Mojito","Grape":"Grape","SF Mango":"Mango Light","SF Raspberry":"Razzy Light","SF Strawberry":"Berry Light","SF Watermelon":"Melon Light","Fresh Lime":"Lime","Fresh Lemon":"Lemon","Fresh Orange":"Orange"}; var NICKS={"Dr Pepper":"Pepper","Diet Dr Pepper":"Pepper Light","Dr Pepper Zero":"Pepper Light","Dr Pepper Blackberry":"Blackberry Pepper","Coke":"Cola","Diet Coke":"Cola Light","Coke Zero":"Cola Zero","Pepsi":"Pepsi","Pepsi Zero":"Pepsi Light","Sprite":"Sprite","Sprite Zero":"Sprite Light","Mountain Dew":"Dew","Diet Mountain Dew":"Dew Light","Mountain Dew Zero":"Dew Light","Root Beer":"Root","Fresca":"Fresca","Big Red":"Red","Lemonade":"Lemonade","Ginger Ale":"Ginger","Sparkling Water":"Sparkler","Agave Vanilla Cream Soda":"Vanilla Cream","Water":"Splash","Sweet Tea":"Tea","Unsweetened Tea":"Tea Light","Swig Energy":"Bolt","SF Swig Energy":"Bolt Light","Hot Chocolate":"Cocoa","Frozen Hot Chocolate":"Frozen Cocoa"}; function pureeWord(p){return p.replace(" Puree","").replace("Frozen ","").replace(" Fruit Pearls","").replace(" Pearls","")} function autoName(){ var words=[]; S.flavors.slice(0,2).forEach(function(f){words.push(ADJ[f]||f)}); if(words.length<2){S.addons.slice(0,2-words.length).forEach(function(p){var w=pureeWord(p);if(PUREES.indexOf(p)>-1)words.push(ADJ[w]||w)})} if(!words.length)return "Classic "+(NICKS[S.bases[0]]||S.bases[0]); var nick=NICKS[S.bases[0]]||S.bases[0]; var style=""; if(S.mode==="hot"||S.mode==="frozen")style=""; else if(S.ice==="BLENDED")style=" Freeze"; else if(S.cream!=="None")style=" Dream"; else if(S.addons.indexOf("Whipped Cream")>-1)style=" Cloud"; else style=" Splash"; return words.join(" ")+" "+nick+style; } var TAGS={"Vanilla":["sweet","cozy"],"Coconut":["tropical","creamy"],"Peach":["fruity","sweet"],"Raspberry":["tart","fruity"],"Strawberry":["fruity","sweet"],"Mango":["tropical","fruity"],"Pineapple":["tropical","tart"],"Cherry":["fruity","sweet"],"Blue Raspberry":["candy","sweet"],"Watermelon":["fruity","refreshing"],"Guava":["tropical","fruity"],"Passion Fruit":["tropical","tart"],"Grapefruit":["tart","citrus"],"Pomegranate":["tart","fruity"],"Green Apple":["tart","fruity"],"Apple":["fruity","sweet"],"Cupcake":["sweet","cozy"],"English Toffee":["cozy","sweet"],"Butterscotch":["cozy","sweet"],"Toasted Marshmallow":["cozy","sweet"],"Cranberry":["tart","fruity"],"Dragon Fruit":["tropical","fruity"],"Blackberry":["tart","fruity"],"Redberry":["candy","sweet"],"Cinnamon":["cozy"],"Pumpkin Sauce":["cozy"],"Dulce de Leche":["cozy","sweet"],"Hazelnut":["cozy","rich"],"Peppermint":["refreshing"],"Lemonade":["citrus","tart"],"Tiger's Blood":["candy","sweet"],"Mojito Mint":["refreshing"],"Grape":["fruity","sweet"],"Fresh Lemon":["citrus","tart"],"Fresh Lime":["citrus","tart"],"Fresh Orange":["citrus","fruity"],"Coconut Cream":["creamy","rich"],"Vanilla Cream":["creamy","sweet"],"Half & Half":["creamy","rich"],"Whipped Cream":["creamy"],"Passion Fruit Pearls":["candy"],"Strawberry Pearls":["candy"],"Gummy Sharks":["candy"],"Caramel Drizzle":["sweet","cozy"],"Chocolate Drizzle":["sweet","rich"],"Strawberry Drizzle":["sweet","fruity"],"Heart Sprinkles":["candy"],"Cinnamon Stick":["cozy"],"Sour Patch Kids Bitz":["candy","tart"]}; function baseChar(){ var b=S.bases[0]; if(["Dr Pepper","Diet Dr Pepper","Dr Pepper Zero","Dr Pepper Blackberry","Coke","Diet Coke","Coke Zero","Pepsi","Pepsi Zero","Root Beer","Big Red"].indexOf(b)>-1)return "bold, fizzy cola base"; if(["Sprite","Sprite Zero","Lemonade"].indexOf(b)>-1)return "crisp citrus fizz"; if(b.indexOf("Mountain Dew")>-1)return "bright citrus fizz"; if(["Fresca","Sparkling Water","Water"].indexOf(b)>-1)return "light, clean base"; if(b.indexOf("Swig Energy")>-1)return "energizing base"; if(b.indexOf("Tea")>-1)return "smooth tea base"; if(b==="Hot Chocolate")return "rich chocolate base"; if(b==="Frozen Hot Chocolate")return "thick, frosty chocolate base"; return "fizzy base"; } function tasteProfile(){ var tags={}; function add(x){(TAGS[x]||["sweet"]).forEach(function(t){tags[t]=(tags[t]||0)+1})} S.flavors.forEach(add); S.addons.forEach(function(p){if(PUREES.indexOf(p)>-1)add(pureeWord(p)==="Passion Fruit"?"Passion Fruit":p);else add(p)}); if(S.cream!=="None")add(S.cream); var top=Object.keys(tags).sort(function(a,b){return tags[b]-tags[a]}).slice(0,3); var sweet=S.flavors.filter(function(f){return !isSF(f)}).length*2+S.addons.filter(function(a){return PUREES.indexOf(a)>-1}).length*1.5+(S.cream!=="None"?2:0); var sw=sweet<3?"Low":(sweet<7?"Medium":"High"); var body=[]; if(S.cream!=="None")body.push("The cream makes it smooth and dessert-like."); if(S.ice==="BLENDED")body.push("Blended, it turns slushie-style."); if(S.addons.some(function(e){return e.indexOf("Pearls")>-1||e==="Gummy Sharks"}))body.push("Every sip gets a fun texture."); if(S.cream==="None"&&(S.flavors.indexOf("Fresh Lime")>-1||S.flavors.indexOf("Fresh Lemon")>-1))body.push("The citrus keeps it crisp and refreshing."); return {tags:top,sweet:sw,desc:(top.join(", ")||"simple")+" — "+baseChar()+". "+body.join(" ")}; } function tips(){ var t=[]; var hasCitrus=S.flavors.indexOf("Fresh Lime")>-1||S.flavors.indexOf("Fresh Lemon")>-1; if(S.cream!=="None"&&!hasCitrus)t.push("Add Fresh Lime — it brightens the richness of the cream."); if(S.cream==="None"&&S.flavors.length>=2)t.push("Add Coconut Cream for classic dirty-soda richness."); if(S.flavors.length>3)t.push("Drop a syrup or switch one to sugar-free — too many syrups muddy the taste."); var reg=S.flavors.filter(function(f){return !isSF(f)}).length; if(reg>=3)t.push("Try sugar-free syrups or a diet base — same taste, fewer calories."); if(!S.addons.some(function(e){return e.indexOf("Pearls")>-1||e==="Gummy Sharks"}))t.push("Add Popping Pearls or a Gummy Shark — fun in every sip."); if(S.addons.some(function(p){return p.indexOf("Frozen")===0})&&S.ice!=="BLENDED")t.push("Go BLENDED — it turns slushie-style with frozen fruit."); if(S.flavors.length<=1)t.push("Add a second complementary flavor (like Peach or Coconut with Vanilla)."); return t.slice(0,2); } function buildSet(){var s=S.bases.concat(S.flavors).concat(S.addons);if(S.cream!=="None")s.push(S.cream);return s.concat(S.splash)} function presetSet(p){var s=p.bases.concat(p.flavors).concat(p.purees);if(p.cream!=="None")s.push(p.cream);return s.concat(p.extras).concat(p.splash)} function matcher(){ var bs=buildSet(); if(!S.bases.length||(S.flavors.length+S.addons.length===0&&S.cream==="None"))return null; var scored=[]; PRESETS.forEach(function(p){ var ps=presetSet(p); var baseHit=S.bases.some(function(b){return p.bases.indexOf(b)>-1}); if(!baseHit)return; var inter=ps.filter(function(x){return bs.indexOf(x)>-1}); var score=inter.length/ps.length; var missing=ps.filter(function(x){return bs.indexOf(x)===-1}); scored.push({p:p,score:score,missing:missing}); }); scored.sort(function(a,b){ if(b.score!==a.score)return b.score-a.score; function easy(x){return CREAMS.indexOf(x)>-1||x.indexOf("Pearls")>-1||["Gummy Sharks","Cinnamon Stick","Caramel Drizzle","Chocolate Drizzle","Strawberry Drizzle","Heart Sprinkles","Sour Patch Kids Bitz","Whipped Cream"].indexOf(x)>-1} var ae=a.missing.every(easy)?1:0,be=b.missing.every(easy)?1:0; if(be!==ae)return be-ae; return a.missing.length-b.missing.length; }); return scored.slice(0,3).filter(function(x){return x.score>0.3}); } function exactMatch(){ var ms=matcher(); if(ms&&ms[0]&&ms[0].score===1)return ms[0]; return null; } var BASE_COLORS={"Dr Pepper":"#5b2318","Diet Dr Pepper":"#4a2020","Dr Pepper Zero":"#4a2020","Dr Pepper Blackberry":"#3d1a2e","Coke":"#2b0a0a","Diet Coke":"#3a3a3a","Coke Zero":"#3a3a3a","Pepsi":"#1a2a5e","Pepsi Zero":"#1a2a5e","Sprite":"#d7e8b0","Sprite Zero":"#d7e8b0","Mountain Dew":"#a8c256","Diet Mountain Dew":"#a8c256","Mountain Dew Zero":"#a8c256","Root Beer":"#4a2410","Lemonade":"#f2d95c","Ginger Ale":"#e8c87a","Fresca":"#bfe3c8","Big Red":"#d43d2a","Agave Vanilla Cream Soda":"#f0e2c8","Sparkling Water":"#d8ecf2","Water":"#cfe8f5","Swig Energy":"#e8b4c8","SF Swig Energy":"#e8b4c8","Sweet Tea":"#c68a3e","Unsweetened Tea":"#b98d4f","Hot Chocolate":"#4a2410","Frozen Hot Chocolate":"#5a3220"}; var POPULAR_BASES=["Dr Pepper","Coke","Sprite","Mountain Dew","Lemonade","Root Beer","Fresca","Swig Energy","Water","Sweet Tea","Hot Chocolate","Frozen Hot Chocolate"]; var POPULAR_FLAVORS=["Coconut","Peach","Raspberry","Vanilla","Strawberry","Mango","Pineapple","Watermelon","Cherry","Blue Raspberry"]; function loadPreset(p){ S.mode=p.mode; S.bases=p.bases.slice();S.size=defaultSize();S.flavors=[];S.addons=[];S.cream="None";S.splash=[];S.ice=(p.ice==="BLENDED")?"BLENDED":defaultIce(); var mf=modeFlavors(),al=addonList(),unmatched=[]; p.flavors.forEach(function(f){if(mf.indexOf(f)>-1)S.flavors.push(f);else unmatched.push(f)}); p.purees.forEach(function(f){if(al.indexOf(f)>-1)S.addons.push(f);else unmatched.push(f)}); if(p.cream!=="None"&&CREAMS.indexOf(p.cream)>-1)S.cream=p.cream;else if(p.cream!=="None")unmatched.push(p.cream); p.extras.forEach(function(f){if(al.indexOf(f)>-1)S.addons.push(f);else unmatched.push(f)}); p.splash.forEach(function(f){if(M().splash.indexOf(f)>-1)S.splash.push(f);else unmatched.push(f)}); S.name=p.name;S.customName=false; if(unmatched.length)document.querySelector("#swb-crave-out").innerHTML="Note: the original recipe also had "+unmatched.join(", ")+" (not selectable here)."; update(); } function sizeLabel(){if(S.mode==="energy"||S.mode==="hot"||S.mode==="frozen")return S.size;return S.size+"oz"} function recipeText(price,cal){ var parts=S.bases.concat(S.flavors).concat(S.addons); if(S.cream!=="None")parts.push(S.cream); parts=parts.concat(S.splash); return parts.join(" + ")+" | "+sizeLabel()+(S.ice?", "+S.ice:"")+" | "+fmt(price)+" | Est. ~"+cal+" cal"; } function copyTxt(t,btn,ok){function done(){btn.textContent=ok;setTimeout(function(){btn.textContent=btn.getAttribute("data-t")},2000)} if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(t).then(done,function(){fb()})}else fb(); function fb(){var ta=document.createElement("textarea");ta.value=t;document.body.appendChild(ta);ta.select();try{document.execCommand("copy");done()}catch(e){}document.body.removeChild(ta)}} function chipBtn(label,extra,on,attr,val){ return '"; } function update(){ var m=M(); var baseSel=document.querySelector("#swb-base-sel"); var groups=[["Sodas",SODA_BASES],["Swig Energy",["Swig Energy","SF Swig Energy"]],["Refreshers",["Water","Sparkling Water"]],["Sweet Tea",["Sweet Tea","Unsweetened Tea"]],["Hot Chocolate",["Hot Chocolate"]],["Frozen Hot Chocolate",["Frozen Hot Chocolate"]]]; baseSel.innerHTML=groups.map(function(g){ return ''+g[1].map(function(b){return ''}).join("")+''; }).join(""); baseSel.onchange=function(){ var v=baseSel.value; var nm=inferMode(v); var oldExtras=S.bases.slice(1); if(nm!==S.mode){ S.mode=nm;S.size=defaultSize();S.ice=defaultIce(); S.flavors=S.flavors.filter(function(f){return modeFlavors().indexOf(f)>-1}); S.addons=S.addons.filter(function(a){return addonList().indexOf(a)>-1}); S.splash=S.splash.filter(function(x){return M().splash.indexOf(x)>-1}); } if(nm==="soda"){S.bases=[v].concat(oldExtras.filter(function(b){return SODA_BASES.indexOf(b)>-1&&b!==v}));} else{S.bases=[v];} update(); }; var extraWrap=document.querySelector("#swb-extra-bases"); if(S.mode==="soda"){ extraWrap.style.display=""; var e2=document.querySelector("#swb-base2-sel"),e3=document.querySelector("#swb-base3-sel"); var sodaOpts=''+SODA_BASES.map(function(b){return ''}).join(""); e2.innerHTML=sodaOpts; e3.innerHTML=''+SODA_BASES.map(function(b){return ''}).join(""); function syncExtras(){ var v2=e2.value,v3=e3.value,chosen=[]; [v2,v3].forEach(function(v,ix){ if(v==="None")return; if(v===S.bases[0]||chosen.indexOf(v)>-1){(ix===0?e2:e3).value="None";return;} chosen.push(v); }); S.bases=[S.bases[0]].concat(chosen); update(); } e2.onchange=syncExtras;e3.onchange=syncExtras; }else{extraWrap.style.display="none";} var q=(document.querySelector("#swb-flavor-search").value||"").toLowerCase(); var mf=modeFlavors(); var flist; if(q)flist=mf.filter(function(f){return f.toLowerCase().indexOf(q)>-1}); else if(showAllF)flist=mf; else flist=POPULAR_FLAVORS.filter(function(f){return mf.indexOf(f)>-1}); var fh=document.querySelector("#swb-flavors"); fh.innerHTML=flist.map(function(f){ var pr=m.flavorP?("+$"+m.flavorP.toFixed(2)):"Free"; return chipBtn(f,pr,S.flavors.indexOf(f)>-1,"data-f",f.replace(/"/g,"")); }).join("")||'

No flavors match that search.

'; fh.querySelectorAll(".chip").forEach(function(el){ el.onclick=function(){var v=el.getAttribute("data-f");var i=S.flavors.indexOf(v);if(i>-1)S.flavors.splice(i,1);else S.flavors.push(v);update();}; }); document.querySelector("#swb-all-flavors").textContent=showAllF?"Show fewer flavors ↑":"Show all flavors ↓"; document.querySelector("#swb-all-flavors").style.display=q?"none":""; var ch=document.querySelector("#swb-cream-sel"); ch.innerHTML=CREAMS.map(function(c){ return '"; }).join(""); ch.onchange=function(){S.cream=ch.value;update();}; var ah=document.querySelector("#swb-addons"); ah.innerHTML=addonList().map(function(a){ var pr=addonPrice(a);return chipBtn(a,pr?("+$"+pr.toFixed(2)):"Free",S.addons.indexOf(a)>-1,"data-a",a.replace(/"/g,"")); }).join(""); ah.querySelectorAll(".chip").forEach(function(el){ el.onclick=function(){var v=el.getAttribute("data-a");var i=S.addons.indexOf(v);if(i>-1)S.addons.splice(i,1);else S.addons.push(v);update();}; }); var spLbl=document.querySelector("#swb-splash-lbl"),spEl=document.querySelector("#swb-splash"); if(!m.splash.length){spLbl.style.display="none";spEl.style.display="none"}else{ spLbl.style.display="";spEl.style.display=""; spLbl.textContent=(S.mode==="energy")?"Top it off":"Splash"; spEl.innerHTML=m.splash.map(function(s){ var pr=(s==="Swig Energy Splash"||s==="SF Swig Energy Splash")?"+$1.50":"Free"; return chipBtn(s,pr,S.splash.indexOf(s)>-1,"data-s",s.replace(/"/g,"")); }).join(""); spEl.querySelectorAll(".chip").forEach(function(el){ el.onclick=function(){var v=el.getAttribute("data-s");var i=S.splash.indexOf(v);if(i>-1)S.splash.splice(i,1);else S.splash.push(v);update();}; }); } var sizeCard=document.querySelector("#swb-size-card"); var sh=document.querySelector("#swb-size-sel"); sh.innerHTML=m.sizes.map(function(s){ var lbl=(S.mode==="energy"||S.mode==="hot"||S.mode==="frozen")?s[0]:s[0]+"oz"; return '"; }).join(""); sh.onchange=function(){var v=sh.value;S.size=(S.mode==="energy"||S.mode==="hot"||S.mode==="frozen")?v:parseInt(v,10);update();}; document.querySelector("#swb-size-help").textContent=(S.mode==="energy")?"Small / Medium / Large — energy drinks don't use ounces.":(S.mode==="hot"||S.mode==="frozen")?"One fixed size.":"Bigger cup, higher price."; var iceCard=document.querySelector("#swb-ice-card"); if(!m.ices.length){iceCard.style.display="none"}else{ iceCard.style.display=""; var ih=document.querySelector("#swb-ice-sel"); ih.innerHTML=m.ices.map(function(ic){ return '"; }).join(""); ih.onchange=function(){S.ice=ih.value;update();}; } var em=exactMatch(); if(!S.customName){S.name=em?em.p.name:""} var nm=S.name.trim()||autoName(); var price=priceTotal(),cal=calTotal(); document.querySelector("#swb-title").textContent=nm; document.querySelector("#swb-price").textContent=fmt(price); document.querySelector("#swb-cal").textContent="~"+cal; document.querySelector("#swb-bar-name").textContent=nm; document.querySelector("#swb-bar-price").textContent=fmt(price)+" · ~"+cal+" cal"; document.querySelector("#swb-liquid").style.background=BASE_COLORS[S.bases[0]]||"#f3d9d9"; var cl=document.querySelector("#swb-cream-layer"); if(S.cream!=="None"){cl.className="cream"}else{cl.className="";cl.style.display="none";if(S.cream!=="None")cl.style.display="";} if(S.cream!=="None")cl.style.display=""; document.querySelectorAll(".cup .ice").forEach(function(ic){ic.style.display=(S.ice==="NO Ice"||!m.ices.length)?"none":""}); var rangeTxt=""; if(em){if(em.p.range)rangeTxt="Published range: "+em.p.range+" cal"+(em.p.card?" • Menu card: "+fmt(em.p.card):"");else if(em.p.card)rangeTxt="Menu card: "+fmt(em.p.card);} document.querySelector("#swb-range").textContent=rangeTxt; var sp=sizePrice(),fp=S.flavors.length*m.flavorP,pp=0;S.addons.forEach(function(a){pp+=addonPrice(a)}); var cp=creamPrice(),ep=splashPrice()+(S.ice==="BLENDED"?m.blendP:0); var rows=[["Size ("+sizeLabel()+")",sp],["Flavors ("+S.flavors.length+")",fp],["Add-ons ("+S.addons.length+")",pp]]; if(S.cream!=="None")rows.push(["Cream ("+S.cream+")",cp]); if(ep)rows.push(["Splash / blended",ep]); rows.push(["Total",price]); document.querySelector("#swb-breakdown").innerHTML=rows.map(function(r,i){return '
'+r[0]+''+fmt(r[1])+'
'}).join("")+'
Tax ~7% extra (estimate, Leesburg pickup).
'; var bd=[]; var dietOk=S.bases.every(function(b){return m.dietBases.indexOf(b)>-1}); var sfOk=S.flavors.every(function(f){return isSF(f)||f==="Fresh Lemon"||f==="Fresh Lime"||f==="Fresh Orange"}); if(dietOk&&sfOk&&S.cream==="None")bd.push("Sugar-Free build"); if(cal<100)bd.push("Low-calorie"); if(S.cream==="None"&&S.addons.indexOf("Whipped Cream")===-1)bd.push("Dairy-Free"); if(S.ice==="BLENDED")bd.push("Blended"); if(em&&em.p.flag==="S")bd.push("Limited time"); if(em&&em.p.flag==="R")bd.push("Past menu"); document.querySelector("#swb-badges").innerHTML=bd.map(function(b){return ''+b+""}).join(""); document.querySelector("#swb-recipe").textContent=nm+" — "+recipeText(price,cal); var tp=tasteProfile(); document.querySelector("#swb-taste").innerHTML="😋 Taste: "+tp.desc+" Sweetness: "+tp.sweet+" · Notes: "+tp.tags.join(", ")+"."; var dots=tp.sweet==="Low"?1:(tp.sweet==="Medium"?2:3); document.querySelector("#swb-meter").innerHTML=''; var ts=tips(); document.querySelector("#swb-tips").innerHTML=ts.length?("⬆️ Make it even better:
• "+ts.join("
• ")):""; var PAIR={"Birthday Girl":"Sugar Cookie","Dirty Little Secret":"Pretzel Bites","Raspberry Dream":"Lemon Sugar Cookie","Life's a Peach":"Chocolate Chip Cookie","Princess Peach":"Churro Bites"}; var pairName=null; if(em&&PAIR[em.p.name])pairName=PAIR[em.p.name]; else if(S.cream!=="None")pairName="Sugar Cookie"; else if(tp.tags.indexOf("tropical")>-1)pairName="Churro Bites"; else pairName="Pretzel Bites"; var pairLink=pairName==="Pretzel Bites"?"https://swigmenu.net/":"https://swigmenu.net/swig-cookies-menu/"; document.querySelector("#swb-pair").innerHTML='🍪 Pairs well with: '+pairName+' →'; if(S.flavors.length>3){document.querySelector("#swb-warn").innerHTML='
⚠️ More than 3 syrups can muddy the taste — but try it anyway!
'} else{document.querySelector("#swb-warn").innerHTML=""} var mh=document.querySelector("#swb-matcher"),mb=document.querySelector("#swb-matchbox"); if(em){ var p=em.p; mb.className="matchbox exact"; mh.innerHTML="🎯 This combination makes: "+p.name+""+(p.flag==="S"?" (limited time)":"")+(p.flag==="R"?" (past menu — no longer on the official menu)":"")+(p.ice==="BLENDED"&&S.ice!=="BLENDED"?" — the real one is BLENDED, select BLENDED for the real thing.":"")+(p.url?' Guide →':""); }else{ mb.className="matchbox"; var ms=matcher(); if(!ms)mh.textContent="Pick ingredients — the matcher will tell you which signature drink this matches, or how close it is."; else mh.innerHTML="Closest matches:
"+ms.map(function(x,i){return (i+1)+". "+x.p.name+" ("+Math.round(x.score*100)+"%) — missing: "+(x.missing.length?x.missing.join(", "):"nothing")+' '}).join("
"); mh.querySelectorAll("[data-load]").forEach(function(b){b.onclick=function(){var p=null;PRESETS.forEach(function(x){if(x.name===b.getAttribute("data-load"))p=x});if(p)loadPreset(p)}}); } document.querySelector("#swb-name").value=S.customName?S.name:""; } var CRAVES=[ {em:"🍬",t:"Sweet & Creamy",s:"dessert-style, rich",f:function(p){return p.cream!=="None"}}, {em:"🍋",t:"Tart & Citrusy",s:"bright, zesty",f:function(p){var a=p.flavors.concat(p.purees);return ["Fresh Lime","Fresh Lemon","Grapefruit","Cranberry","Raspberry","Raspberry Puree","Pomegranate"].some(function(x){return a.indexOf(x)>-1})}}, {em:"🌴",t:"Tropical",s:"coconut, mango, pineapple",f:function(p){var a=p.flavors.concat(p.purees);return ["Coconut","Pineapple","Mango","Guava","Passion Fruit","SF Coconut","SF Pineapple","SF Mango","Mango Puree","Pineapple Puree"].some(function(x){return a.indexOf(x)>-1})}}, {em:"🪶",t:"Light & Sugar-Free",s:"easy on calories",f:function(p){if(p.range){var mx=parseInt(p.range.split("-")[1],10);if(!isNaN(mx))return mx<=100}return p.bases.some(function(b){return b.indexOf("Diet")>-1||b.indexOf("Zero")>-1||b==="Fresca"||b==="Sparkling Water"||b==="Water"||b.indexOf("SF ")===0})}}, {em:"🎉",t:"Fizzy & Fun",s:"pearls, gummy, candy",f:function(p){return p.extras.length>0||p.ice==="BLENDED"||p.flavors.indexOf("Blue Raspberry")>-1||p.flavors.indexOf("Tiger's Blood")>-1}}, {em:"🎲",t:"Surprise Me",s:"dealer's choice",f:function(p){return true}} ]; var cvEl=document.querySelector("#swb-crave"); cvEl.innerHTML=CRAVES.map(function(c,i){return ''}).join(""); cvEl.querySelectorAll("button").forEach(function(b){ b.onclick=function(){ var c=CRAVES[parseInt(b.getAttribute("data-ci"),10)]; var pool=PRESETS.filter(function(p){return p.flag!=="R"&&c.f(p)}); if(!pool.length)pool=PRESETS.filter(function(p){return p.flag!=="R"}); var pick=pool[Math.floor(Math.random()*pool.length)]; document.querySelector("#swb-crave-out").innerHTML='You got: '+pick.name+' — tweak it below, or tap another craving.'; loadPreset(pick); }; }); document.querySelector("#swb-all-flavors").onclick=function(){showAllF=!showAllF;update()}; document.querySelector("#swb-flavor-search").addEventListener("input",function(){update()}); document.querySelector("#swb-find").addEventListener("input",function(){ var q=document.querySelector("#swb-find").value.trim().toLowerCase(); var out=document.querySelector("#swb-find-out"); if(q.length<2){out.innerHTML="";return} var hits=PRESETS.filter(function(p){return p.name.toLowerCase().indexOf(q)>-1}).slice(0,12); out.innerHTML=hits.map(function(p){return '"}).join("")||'

No drink matches that name.

'; out.querySelectorAll(".chip").forEach(function(b){b.onclick=function(){var p=null;PRESETS.forEach(function(x){if(x.name===b.getAttribute("data-fp"))p=x});if(p){loadPreset(p);out.innerHTML="";document.querySelector("#swb-find").value="";}}}); }); document.querySelector("#swb-name").addEventListener("input",function(){S.name=document.querySelector("#swb-name").value;S.customName=true;update()}); document.querySelector("#swb-random").onclick=function(){ var pool=PRESETS.filter(function(p){return p.flag!=="R"}); loadPreset(pool[Math.floor(Math.random()*pool.length)]); }; document.querySelector("#swb-reset").onclick=function(){S={mode:"soda",bases:["Dr Pepper"],size:24,flavors:["Vanilla"],addons:[],cream:"Coconut Cream",splash:[],ice:"Extra Ice",name:"Texas Tab",customName:false};document.querySelector("#swb-find").value="";document.querySelector("#swb-find-out").innerHTML="";document.querySelector("#swb-flavor-search").value="";showAllF=false;update()}; document.querySelector("#swb-copy").setAttribute("data-t","📋 Copy recipe"); document.querySelector("#swb-copy").onclick=function(){copyTxt(document.querySelector("#swb-recipe").textContent,document.querySelector("#swb-copy"),"Copied ✓")}; document.querySelector("#swb-bar-copy").setAttribute("data-t","📋 Copy"); document.querySelector("#swb-bar-copy").onclick=function(){copyTxt(document.querySelector("#swb-recipe").textContent,document.querySelector("#swb-bar-copy"),"Copied ✓")}; document.querySelector("#swb-link").setAttribute("data-t","🔗 Copy share link"); document.querySelector("#swb-link").onclick=function(){ var st={m:S.mode,b:S.bases,s:S.size,f:S.flavors,a:S.addons,c:S.cream,sp:S.splash,i:S.ice,n:document.querySelector("#swb-name").value}; var code=btoa(unescape(encodeURIComponent(JSON.stringify(st)))); copyTxt(location.href.split("#")[0]+"#swb="+code,document.querySelector("#swb-link"),"Link copied ✓")}; try{ var h=location.hash; if(h.indexOf("#swb=")===0){ var st=JSON.parse(decodeURIComponent(escape(atob(h.substring(5))))); S.mode=st.m;S.bases=st.b;S.size=st.s;S.flavors=st.f;S.addons=st.a||[];S.cream=st.c;S.splash=st.sp;S.ice=st.i;S.name=st.n||"";S.customName=!!st.n; } }catch(e){} update();