{"id":3752,"date":"2025-10-02T19:50:45","date_gmt":"2025-10-02T17:50:45","guid":{"rendered":"https:\/\/ribsnbeer.com\/takeaway-kortrijk-en\/"},"modified":"2026-05-15T13:29:03","modified_gmt":"2026-05-15T11:29:03","slug":"takeaway-kortrijk-en","status":"publish","type":"page","link":"https:\/\/ribsnbeer.com\/en\/takeaway-kortrijk-en\/","title":{"rendered":"Takeaway Kortrijk EN"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3752\" class=\"elementor elementor-3752 elementor-3307\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7847ecb e-flex e-con-boxed e-con e-parent\" data-id=\"7847ecb\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e263f36 elementor-widget elementor-widget-html\" data-id=\"e263f36\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"Restaurant\",\r\n  \"name\": \"Ribs 'n Beer Kortrijk\",\r\n  \"@id\": \"https:\/\/ribsnbeer.com\/takeaway-kortrijk\/\",\r\n  \"url\": \"https:\/\/ribsnbeer.com\/takeaway-kortrijk\/\",\r\n  \"telephone\": \"+32 56 90 65 75\",\r\n  \"email\": \"kortrijk@ribsnbeer.com\",\r\n  \"priceRange\": \"\u20ac\u20ac\",\r\n  \"servesCuisine\": [\"Ribs\", \"Belgian\", \"BBQ\", \"All you can eat\"],\r\n  \"acceptsReservations\": \"True\",\r\n  \"address\": {\r\n    \"@type\": \"PostalAddress\",\r\n    \"streetAddress\": \"Grote Markt 32\",\r\n    \"addressLocality\": \"Kortrijk\",\r\n    \"postalCode\": \"8500\",\r\n    \"addressCountry\": \"BE\"\r\n  },\r\n  \"geo\": {\r\n    \"@type\": \"GeoCoordinates\",\r\n    \"latitude\": 50.8271413,\r\n    \"longitude\": 3.2666856\r\n  },\r\n  \"openingHoursSpecification\": [\r\n    { \"@type\": \"OpeningHoursSpecification\", \"dayOfWeek\": \"Tuesday\",   \"opens\": \"18:00\", \"closes\": \"23:00\" },\r\n    { \"@type\": \"OpeningHoursSpecification\", \"dayOfWeek\": \"Wednesday\", \"opens\": \"18:00\", \"closes\": \"23:00\" },\r\n    { \"@type\": \"OpeningHoursSpecification\", \"dayOfWeek\": \"Thursday\",  \"opens\": \"18:00\", \"closes\": \"23:00\" },\r\n    { \"@type\": \"OpeningHoursSpecification\", \"dayOfWeek\": \"Friday\",    \"opens\": \"17:45\", \"closes\": \"24:00\" },\r\n    { \"@type\": \"OpeningHoursSpecification\", \"dayOfWeek\": \"Saturday\",  \"opens\": \"17:30\", \"closes\": \"24:00\" },\r\n    { \"@type\": \"OpeningHoursSpecification\", \"dayOfWeek\": \"Sunday\",    \"opens\": \"17:30\", \"closes\": \"22:30\" }\r\n  ],\r\n  \"hasMenu\": {\r\n    \"@type\": \"Menu\",\r\n    \"name\": \"Takeaway menu Ribs 'n Beer Kortrijk\",\r\n    \"hasMenuSection\": [\r\n      {\r\n        \"@type\": \"MenuSection\",\r\n        \"name\": \"Ribbetjes\",\r\n        \"description\": \"1 + \u00bd lat ribbetjes met potato wedges en koolsla, huisgemaakte saus inbegrepen. Keuze tussen Slow-cooked en Chef's kruidenmix bereiding.\",\r\n        \"hasMenuItem\": {\r\n          \"@type\": \"MenuItem\",\r\n          \"name\": \"Ribbetjes (Slow-cooked of Chef's kruidenmix)\",\r\n          \"description\": \"Sappige malse ribbetjes met huisgemaakte saus naar keuze\",\r\n          \"offers\": { \"@type\": \"Offer\", \"price\": \"24.00\", \"priceCurrency\": \"EUR\", \"availability\": \"https:\/\/schema.org\/InStock\" }\r\n        }\r\n      },\r\n      {\r\n        \"@type\": \"MenuSection\",\r\n        \"name\": \"Kinderribbetjes\",\r\n        \"description\": \"\u00bd lat ribbetjes met frietjes en potje Smarties, huisgemaakte saus inbegrepen.\",\r\n        \"hasMenuItem\": {\r\n          \"@type\": \"MenuItem\",\r\n          \"name\": \"Kinderribbetjes\",\r\n          \"description\": \"Halve portie ribbetjes voor kinderen, met frietjes en Smarties\",\r\n          \"offers\": { \"@type\": \"Offer\", \"price\": \"13.50\", \"priceCurrency\": \"EUR\", \"availability\": \"https:\/\/schema.org\/InStock\" }\r\n        }\r\n      },\r\n      {\r\n        \"@type\": \"MenuSection\",\r\n        \"name\": \"Alternatieven voor kinderen\",\r\n        \"hasMenuItem\": [\r\n          { \"@type\": \"MenuItem\", \"name\": \"Fishsticks\",      \"offers\": { \"@type\": \"Offer\", \"price\": \"13.00\", \"priceCurrency\": \"EUR\" } },\r\n          { \"@type\": \"MenuItem\", \"name\": \"Kaaskroketten\",   \"offers\": { \"@type\": \"Offer\", \"price\": \"14.00\", \"priceCurrency\": \"EUR\" } },\r\n          { \"@type\": \"MenuItem\", \"name\": \"Chicken nuggets\", \"offers\": { \"@type\": \"Offer\", \"price\": \"14.00\", \"priceCurrency\": \"EUR\" } }\r\n        ]\r\n      },\r\n      {\r\n        \"@type\": \"MenuSection\",\r\n        \"name\": \"Extra's en bijgerechten\",\r\n        \"hasMenuItem\": [\r\n          { \"@type\": \"MenuItem\", \"name\": \"Extra wedges\",                 \"offers\": { \"@type\": \"Offer\", \"price\": \"3.80\",  \"priceCurrency\": \"EUR\" } },\r\n          { \"@type\": \"MenuItem\", \"name\": \"Extra frietjes\",               \"offers\": { \"@type\": \"Offer\", \"price\": \"3.80\",  \"priceCurrency\": \"EUR\" } },\r\n          { \"@type\": \"MenuItem\", \"name\": \"Extra koolsla\",                \"offers\": { \"@type\": \"Offer\", \"price\": \"2.40\",  \"priceCurrency\": \"EUR\" } },\r\n          { \"@type\": \"MenuItem\", \"name\": \"Calamares met tartaar\",        \"offers\": { \"@type\": \"Offer\", \"price\": \"12.00\", \"priceCurrency\": \"EUR\" } },\r\n          { \"@type\": \"MenuItem\", \"name\": \"Mozzarellasticks met tartaar\",       \"offers\": { \"@type\": \"Offer\", \"price\": \"10.00\", \"priceCurrency\": \"EUR\" } },\r\n          { \"@type\": \"MenuItem\", \"name\": \"R&B Chickenmandje met gerookte barbecuesaus\",\"offers\": { \"@type\": \"Offer\", \"price\": \"14.50\", \"priceCurrency\": \"EUR\" } },\r\n          { \"@type\": \"MenuItem\", \"name\": \"R&B Chickenmandje met pikante barbecuesaus\", \"offers\": { \"@type\": \"Offer\", \"price\": \"14.50\", \"priceCurrency\": \"EUR\" } }\r\n        ]\r\n      }\r\n    ]\r\n  },\r\n  \"sameAs\": [\r\n    \"https:\/\/www.facebook.com\/ribsnbeerkortrijk\",\r\n    \"https:\/\/www.instagram.com\/ribsnbeerkortrijk\",\r\n    \"https:\/\/www.tripadvisor.com\/Restaurant_Review-g188673-d12480184-Reviews-Ribs_n_Beer_Kortrijk-Kortrijk_West_Flanders_Province.html\"\r\n  ]\r\n}\r\n<\/script>\r\n\r\n<!-- Brass corner ornament template (re-used via JS) -->\r\n<svg width=\"0\" height=\"0\" style=\"position:absolute\" aria-hidden=\"true\">\r\n  <defs>\r\n    <symbol id=\"corner-orn\" viewBox=\"0 0 22 22\">\r\n      <path d=\"M0 0 L18 0 M0 0 L0 18 M2 2 L14 2 M2 2 L2 14\"\r\n        stroke=\"#a87423\" stroke-width=\"1\" fill=\"none\" \/>\r\n      <circle cx=\"2\" cy=\"2\" r=\"1.4\" fill=\"#a87423\" \/>\r\n    <\/symbol>\r\n  <\/defs>\r\n<\/svg>\r\n\r\n<div id=\"orderScreen\">\r\n\r\n  <!-- SEO-introductie: zichtbare keyword-rijke content v\u00f3\u00f3r het bestelformulier.\r\n       Laat klanten en Google snel weten waar ze terecht komen.\r\n       H1 draagt het primaire keyword (Takeaway ribbetjes in Kortrijk). -->\r\n  <section class=\"card intro-card\">\r\n    <div class=\"section-title\">\r\n      <h1 class=\"intro-h2\">Takeaway ribbetjes in Kortrijk<\/h1>\r\n    <\/div>\r\n    <div class=\"brass-rule\"><span class=\"diamond\"><\/span><\/div>\r\n    <p>Bestel je ribbetjes online en haal ze warm af op de <b>Grote Markt 32 in Kortrijk<\/b>. Met onze takeaway geniet je thuis van onze populaire ribbetjes: <b>1 + \u00bd lat<\/b> met <b>potato wedges<\/b> en <b>koolsla<\/b> en een huisgemaakte saus naar keuze. Voor de kleinsten zijn er kinderribbetjes met frietjes en een potje Smarties.<\/p>\r\n    <p><b>Twee bereidingen om uit te kiezen:<\/b> de <b>Slow-cooked<\/b> ribbetjes worden langzaam gegaard tot het vlees zacht wordt en van het bot valt of de <b>Chef's kruidenmix<\/b> waarbij we ze klassiek grillen met onze huisgemaakte kruidenmix. Daarbij hoort \u00e9\u00e9n van onze <b>zes huisgemaakte sauzen<\/b> (Lookboter, tartaar, Bier &amp; chocoladesaus, Gerookte BBQ, Pikante BBQ en Wasabi &amp; appel). Lookboter en tartaar combineren we standaard. Liever puur? Dan kies je voor Natuur, zonder saus.<\/p>\r\n    <div class=\"intro-info\">\r\n      <p><b>Hoe het werkt<\/b><\/p>\r\n      <ul>\r\n        <li>Bestel via dit formulier (minimum 30 minuten vooraf)<\/li>\r\n        <li>Wij bereiden alles vers<\/li>\r\n        <li>Je betaalt bij het afhalen ter plaatse<\/li>\r\n        <li>Vragen of wijzigingen aan je bestelling? Bel ons gerust op <a href=\"tel:003256906575\">056 90 65 75<\/a><\/li>\r\n      <\/ul>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- AFHAALTIJD \u2014 eerst kiezen voor het bestellen, zo voorkom je dat een gewenst slot bezet raakt tijdens het invullen -->\r\n  <div class=\"card\">\r\n    <div class=\"section-title\">\r\n      <h2>Wanneer haal je af?<\/h2>\r\n      <div class=\"sub\">Kies eerst <b>datum<\/b> en <b>uur<\/b> \u00b7 zo weet je meteen of je gewenste tijd nog vrij is. Op drukkere momenten zijn sommige uren helaas niet beschikbaar.<\/div>\r\n    <\/div>\r\n    <div class=\"brass-rule\"><span class=\"diamond\"><\/span><\/div>\r\n    <div class=\"grid\">\r\n      <div>\r\n        <label for=\"date\">Afhaaldatum *<\/label>\r\n        <input id=\"date\" name=\"date\" type=\"date\" form=\"orderForm\" required>\r\n      <\/div>\r\n      <div>\r\n        <label for=\"time\">Afhaaltijd *<\/label>\r\n        <select id=\"time\" name=\"time\" form=\"orderForm\" required>\r\n          <option value=\"\">Kies eerst een datum<\/option>\r\n        <\/select>\r\n        <div class=\"hint\" id=\"timeHint\">Afhaaltijden verschillen per dag. Min. 30 min vooraf bestellen.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- HAPJES \u2014 getoond v\u00f3\u00f3r de ribbetjes, zodat klanten makkelijker een starter erbij kiezen -->\r\n  <div class=\"card\">\r\n    <div class=\"section-title\">\r\n      <h2>Hapjes<\/h2>\r\n    <\/div>\r\n    <div class=\"brass-rule\"><span class=\"diamond\"><\/span><\/div>\r\n    <div id=\"menu-hapjes\"><\/div>\r\n  <\/div>\r\n\r\n  <!-- RIBBETJES -->\r\n  <div class=\"card\">\r\n    <svg class=\"corner tl\"><use href=\"#corner-orn\"\/><\/svg>\r\n    <svg class=\"corner tr\"><use href=\"#corner-orn\"\/><\/svg>\r\n    <svg class=\"corner bl\"><use href=\"#corner-orn\"\/><\/svg>\r\n    <svg class=\"corner br\"><use href=\"#corner-orn\"\/><\/svg>\r\n    <div class=\"section-title\">\r\n      <h2>Onze ribbetjes<\/h2>\r\n      <div class=\"sub\"><b>1 portie<\/b> = 1 + \u00bd lat ribbetjes met potato wedges en koolsla \u00b7 Huisgemaakte saus inbegrepen \u00b7 <b>\u20ac 24,00<\/b><\/div>\r\n    <\/div>\r\n    <div class=\"brass-rule\"><span class=\"diamond\"><\/span><\/div>\r\n    <div id=\"menu-ribs\"><\/div>\r\n  <\/div>\r\n\r\n  <!-- KINDERRIBBETJES -->\r\n  <div class=\"card\">\r\n    <svg class=\"corner tl\"><use href=\"#corner-orn\"\/><\/svg>\r\n    <svg class=\"corner tr\"><use href=\"#corner-orn\"\/><\/svg>\r\n    <svg class=\"corner bl\"><use href=\"#corner-orn\"\/><\/svg>\r\n    <svg class=\"corner br\"><use href=\"#corner-orn\"\/><\/svg>\r\n    <div class=\"section-title\">\r\n      <h2>Kinderribbetjes met frietjes<\/h2>\r\n      <div class=\"sub\"><b>1 portie<\/b> = \u00bd lat ribbetjes met frietjes en potje Smarties \u00b7 Huisgemaakte saus inbegrepen \u00b7 <b>\u20ac 13,50<\/b><\/div>\r\n    <\/div>\r\n    <div class=\"brass-rule\"><span class=\"diamond\"><\/span><\/div>\r\n    <div id=\"menu-kidsribs\"><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"card\">\r\n    <div class=\"section-title\">\r\n      <h2>Alternatieven voor kinderen<\/h2>\r\n    <\/div>\r\n    <div class=\"brass-rule\"><span class=\"diamond\"><\/span><\/div>\r\n    <div id=\"menu-kids\"><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"card\">\r\n    <div class=\"section-title\">\r\n      <h2>Extra sauzen<\/h2>\r\n    <\/div>\r\n    <div class=\"brass-rule\"><span class=\"diamond\"><\/span><\/div>\r\n    <div class=\"bereiding-subheader\">\r\n      <span class=\"b-name\">Klassieke sauzen<\/span>\r\n      <span class=\"b-tag\">extra portie<\/span>\r\n    <\/div>\r\n    <div id=\"menu-sauce\"><\/div>\r\n    <div class=\"bereiding-subheader\" style=\"margin-top:18px\">\r\n      <span class=\"b-name\">Huisgemaakte sauzen<\/span>\r\n      <span class=\"b-tag\">extra portie<\/span>\r\n    <\/div>\r\n    <div id=\"menu-homesauce\"><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"card\">\r\n    <div class=\"section-title\">\r\n      <h2>Bijgerechten<\/h2>\r\n    <\/div>\r\n    <div class=\"brass-rule\"><span class=\"diamond\"><\/span><\/div>\r\n    <div id=\"menu-extras\"><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"card\">\r\n    <div class=\"section-title\">\r\n      <h2>Je gegevens<\/h2>\r\n    <\/div>\r\n    <div class=\"brass-rule\"><span class=\"diamond\"><\/span><\/div>\r\n    <form id=\"orderForm\" autocomplete=\"on\">\r\n      <div class=\"grid\">\r\n        <div>\r\n          <label for=\"firstname\">Voornaam *<\/label>\r\n          <input id=\"firstname\" name=\"firstname\" type=\"text\" required autocomplete=\"given-name\" placeholder=\"Bv. Jan\">\r\n        <\/div>\r\n        <div>\r\n          <label for=\"lastname\">Achternaam *<\/label>\r\n          <input id=\"lastname\" name=\"lastname\" type=\"text\" required autocomplete=\"family-name\" placeholder=\"Bv. Pieters\">\r\n        <\/div>\r\n        <div>\r\n          <label for=\"phone\">Telefoon *<\/label>\r\n          <input id=\"phone\" name=\"phone\" type=\"tel\" required autocomplete=\"tel\" placeholder=\"Bv. 0470 12 34 56\" pattern=\"[0-9 +\\-]{8,20}\">\r\n        <\/div>\r\n        <div>\r\n          <label for=\"email\">E-mail *<\/label>\r\n          <input id=\"email\" name=\"email\" type=\"email\" required autocomplete=\"email\" placeholder=\"jouw@email.be\">\r\n        <\/div>\r\n        <div class=\"full\">\r\n          <label for=\"notes\">Opmerkingen (allergenen, saus apart, \u2026)<\/label>\r\n          <textarea id=\"notes\" name=\"notes\" placeholder=\"Bijvoorbeeld: allergisch voor noten, saus graag apart verpakken\u2026\"><\/textarea>\r\n        <\/div>\r\n      <\/div>\r\n    <\/form>\r\n  <\/div>\r\n\r\n  <div id=\"errorBox\" class=\"notice err hidden\"><\/div>\r\n\r\n  <div class=\"summary\">\r\n    <div class=\"total\">Totaal <b id=\"totalOut\">\u20ac 0,00<\/b><\/div>\r\n    <button type=\"button\" class=\"submit\" id=\"submitBtn\" disabled>Bestel je takeaway<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"successScreen\" class=\"hidden\">\r\n  <div class=\"success\">\r\n    <div class=\"medallion\">&#10003;<\/div>\r\n    <div class=\"succ-kicker\">Order Bevestigd<\/div>\r\n    <h1>Tot straks, <span id=\"succName\"><\/span><\/h1>\r\n    <div class=\"brass-rule\"><span class=\"diamond\"><\/span><\/div>\r\n    <div class=\"succ-ref\" id=\"succOrderNum\"><\/div>\r\n\r\n    <div class=\"success-pickup\">\r\n      Af te halen op <b id=\"succPickup\"><\/b><br>\r\n      <span class=\"success-addr\">Grote Markt 32, 8500 Kortrijk<\/span>\r\n    <\/div>\r\n\r\n    <div class=\"success-summary\">\r\n      <div class=\"summary-title\">\r\n        <h2>Je bestelling<\/h2>\r\n      <\/div>\r\n      <ul id=\"succItems\"><\/ul>\r\n      <div class=\"summary-total\"><span>Totaal<\/span><b id=\"succTotal\"><\/b><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"success-callout\">\r\n      Je ontvangt een bevestiging op <b id=\"succEmail\"><\/b>.<br>\r\n      <strong>Klopt er iets niet of heb je vertraging?<\/strong> Bel ons op <a href=\"tel:003256906575\">056 90 65 75<\/a> en geef de wijziging door, we passen het graag voor je aan.\r\n    <\/div>\r\n\r\n    <button class=\"submit\" id=\"newOrderBtn\" style=\"margin-top:20px\">Nieuwe bestelling<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n\/* =========================================================================\r\n   RIBS 'N BEER TAKEAWAY \u2014 standalone popup (Classic 1920s caf\u00e9 stijl)\r\n   ========================================================================= *\/\r\n\r\nconst CONFIG = {\r\n  WEBHOOK_URL: \"https:\/\/ha-ribs.tail7ef0b1.ts.net\/api\/webhook\/rnb-takeaway-x9k2m4p\",\r\n  SCHEDULE_URL: \"https:\/\/ha-ribs.tail7ef0b1.ts.net\/local\/takeaway-schedule.json\",\r\n  MIN_PREP_MINUTES: 30,\r\n  MAX_DAYS_AHEAD: 7,\r\n  RESTAURANT: \"Ribs 'n Beer Kortrijk\",\r\n  PHONE_FALLBACK: \"056 90 65 75\",\r\n  EMAIL_FALLBACK: \"kortrijk@ribsnbeer.com\"\r\n};\r\n\r\nconst RIBS_PRICE = 24.00;\r\n\r\nconst BEREIDINGEN = [\r\n  { id:\"slow\", name:\"Slow-cooked\",       sub:\"Sappig en mals\"   },\r\n  { id:\"chef\", name:\"Chef's kruidenmix\", sub:\"Klassiek gegrild\" }\r\n];\r\n\r\nconst SAUZEN_RIBS = [\r\n  { id:\"natuur\",            name:\"Natuur (geen saus)\" },\r\n  { id:\"lookboter-tartaar\", name:\"Lookboter & tartaar\" },\r\n  { id:\"bier-choco\",        name:\"Bier & chocoladesaus\" },\r\n  { id:\"bbq-gerookt\",       name:\"Gerookte barbecuesaus\" },\r\n  { id:\"bbq-pikant\",        name:\"Pikante barbecuesaus\" },\r\n  { id:\"wasabi-appel\",      name:\"Wasabi & appelsaus\" }\r\n];\r\n\r\nconst RIBS_COMBOS = [];\r\nconst KIDSRIBS_COMBOS = [];\r\nfor(const b of BEREIDINGEN){\r\n  for(const s of SAUZEN_RIBS){\r\n    RIBS_COMBOS.push({\r\n      id: `ribs-${b.id}-${s.id}`,\r\n      name: `${b.name} \u00b7 ${s.name}`,\r\n      sausName: s.name,\r\n      price: 24.00,\r\n      _bereiding: b.id, _saus: s.id\r\n    });\r\n    KIDSRIBS_COMBOS.push({\r\n      id: `kidsribs-${b.id}-${s.id}`,\r\n      name: `${b.name} \u00b7 ${s.name}`,\r\n      sausName: s.name,\r\n      price: 13.50,\r\n      _bereiding: b.id, _saus: s.id\r\n    });\r\n  }\r\n}\r\n\r\nconst MENU = {\r\n  kids: [\r\n    {id:\"fishsticks\",   name:\"Fishsticks\",       price:13.00, desc:\"6 stuks met frietjes & Smarties\"},\r\n    {id:\"kaaskroketten\",name:\"Kaaskroketten\",    price:14.00, desc:\"2 stuks met frietjes & Smarties\"},\r\n    {id:\"nuggets\",      name:\"Chicken nuggets\",  price:14.00, desc:\"6 stuks met frietjes & Smarties\"}\r\n  ],\r\n  sauce: [\r\n    {id:\"mayonaise\",    name:\"Mayonaise\",        price:1.20},\r\n    {id:\"ketchup\",      name:\"Ketchup\",          price:1.20}\r\n  ],\r\n  homesauce: [\r\n    {id:\"lookboter\",          name:\"Lookboter\",                price:1.20},\r\n    {id:\"tartaar\",            name:\"Tartaar\",                  price:1.20},\r\n    {id:\"extra-bier-choco\",   name:\"Bier- en chocoladesaus\",   price:2.00},\r\n    {id:\"extra-bbq-gerookt\",  name:\"Gerookte barbecuesaus\",    price:2.00},\r\n    {id:\"extra-bbq-pikant\",   name:\"Pikante barbecuesaus\",     price:2.00},\r\n    {id:\"extra-wasabi-appel\", name:\"Wasabi- en appelsaus\",     price:2.00}\r\n  ],\r\n  hapjes: [\r\n    {id:\"calamares\",    name:\"Calamares met tartaar\",       price:12.00},\r\n    {id:\"mozzasticks\",  name:\"Mozzarellasticks met tartaar\",price:10.00},\r\n    {id:\"chickenmandje-bbq-gerookt\",name:\"R&B Chickenmandje met gerookte barbecuesaus\", price:14.50, desc:\"4 chickennuggets, 4 chicken wings en 4 chicken tenders\"},\r\n    {id:\"chickenmandje-bbq-pikant\", name:\"R&B Chickenmandje met pikante barbecuesaus\",  price:14.50, desc:\"4 chickennuggets, 4 chicken wings en 4 chicken tenders\"}\r\n  ],\r\n  extras: [\r\n    {id:\"wedges\",       name:\"Extra wedges\",                price:3.80},\r\n    {id:\"frietjes\",     name:\"Extra frietjes\",              price:3.80},\r\n    {id:\"koolsla\",      name:\"Extra koolsla\",               price:2.40}\r\n  ]\r\n};\r\n\r\n\/* Schedule wordt dynamisch opgehaald van Home Assistant. Fallback indien fetch faalt. *\/\r\nlet SCHEDULE = {\r\n  weekly:           { 0:[\"17:45\",\"21:30\"], 1:null, 2:[\"18:00\",\"21:45\"], 3:[\"18:00\",\"21:45\"], 4:[\"18:00\",\"21:45\"], 5:[\"17:45\",\"22:15\"], 6:[\"17:30\",\"22:15\"] },\r\n  weekly_blocked:   {},   \/\/ { \"6\": [\"19:00\",\"19:30\"] }       wekelijks-blocked slots per weekdag\r\n  closed:           {},   \/\/ { \"2026-05-15\": \"Vakantie\" }      hele-dag sluitingen met reden\r\n  extras:           {},   \/\/ { \"2026-07-21\": [[\"12:00\",\"14:00\"]] }  ADDITIEVE openingstijden (komt bij weekly)\r\n  per_date_blocked: {},   \/\/ { \"2026-05-09\": [\"13:00\",\"13:30\"] }  per-datum geblokkeerde slots\r\n  generated:        null\r\n};\r\n\r\nasync function fetchSchedule(){\r\n  try {\r\n    const res = await fetch(CONFIG.SCHEDULE_URL + \"?t=\" + Date.now(), { cache: \"no-store\" });\r\n    if(!res.ok) throw new Error(\"HTTP \" + res.status);\r\n    const data = await res.json();\r\n    \/* \"closed\" mag een lijst zijn (oud formaat) of een object {datum:reden} (nieuw formaat).\r\n       Beide normaliseren we naar een object zodat downstream code uniform werkt. *\/\r\n    let closedObj = {};\r\n    if(Array.isArray(data.closed)){\r\n      for(const d of data.closed) closedObj[d] = \"Gesloten\";\r\n    } else if(data.closed && typeof data.closed === \"object\"){\r\n      closedObj = data.closed;\r\n    }\r\n    SCHEDULE = {\r\n      weekly:           data.weekly || SCHEDULE.weekly,\r\n      weekly_blocked:   data.weekly_blocked || {},\r\n      closed:           closedObj,\r\n      extras:           data.extras || {},\r\n      per_date_blocked: data.per_date_blocked || {},\r\n      generated:        data.generated || null\r\n    };\r\n    if(typeof data.max_days_ahead === \"number\" && data.max_days_ahead > 0) {\r\n      CONFIG.MAX_DAYS_AHEAD = data.max_days_ahead;\r\n    }\r\n  } catch(e) {\r\n    console.warn(\"[Takeaway] Schedule fetch failed, using fallback:\", e);\r\n  }\r\n}\r\n\r\n\/* Genereer 15-minuten slots binnen [van, tot], inclusief beide eindes *\/\r\nfunction generateSlots(range){\r\n  if(!Array.isArray(range) || range.length !== 2) return [];\r\n  const [start, end] = range;\r\n  const [sh, sm] = start.split(\":\").map(Number);\r\n  const [eh, em] = end.split(\":\").map(Number);\r\n  if(isNaN(sh) || isNaN(eh)) return [];\r\n  const slots = [];\r\n  let h = sh, m = sm;\r\n  while(h < eh || (h === eh && m <= em)){\r\n    slots.push(String(h).padStart(2,\"0\") + \":\" + String(m).padStart(2,\"0\"));\r\n    m += 15;\r\n    if(m >= 60){ h++; m -= 60; }\r\n  }\r\n  return slots;\r\n}\r\n\r\n\/* Bepaal slots voor een specifieke datum (YYYY-MM-DD).\r\n   Volgorde: closure > extras (vervangt) > weekly. Daarna: blocked verwijderen, extra_slots toevoegen. *\/\r\nfunction getSlotsForDate(dateStr){\r\n  \/* 1) Volledig gesloten? *\/\r\n  if(SCHEDULE.closed && SCHEDULE.closed[dateStr]){\r\n    return { closed: true, reason: SCHEDULE.closed[dateStr], slots: [] };\r\n  }\r\n\r\n  \/* 2) Basis: weekly slots (minus weekly_blocked) *\/\r\n  let baseSlots = [];\r\n  const [y,m,d] = dateStr.split(\"-\").map(Number);\r\n  const weekday = new Date(y, m-1, d).getDay();\r\n  const range = SCHEDULE.weekly ? SCHEDULE.weekly[weekday] : null;\r\n  if(range){\r\n    baseSlots = generateSlots(range);\r\n    const wb = SCHEDULE.weekly_blocked && SCHEDULE.weekly_blocked[weekday];\r\n    if(Array.isArray(wb) && wb.length > 0){\r\n      const wbSet = new Set(wb);\r\n      baseSlots = baseSlots.filter(s => !wbSet.has(s));\r\n    }\r\n  }\r\n\r\n  \/* 3) ADDITIEF: voeg extras toe (extra openingstijden, komt bij weekly) *\/\r\n  if(SCHEDULE.extras && Array.isArray(SCHEDULE.extras[dateStr])){\r\n    for(const r of SCHEDULE.extras[dateStr]){\r\n      baseSlots.push(...generateSlots(r));\r\n    }\r\n  }\r\n\r\n  \/* 4) Verwijder per-datum geblokkeerde slots *\/\r\n  if(SCHEDULE.per_date_blocked && Array.isArray(SCHEDULE.per_date_blocked[dateStr])){\r\n    const blockedSet = new Set(SCHEDULE.per_date_blocked[dateStr]);\r\n    baseSlots = baseSlots.filter(s => !blockedSet.has(s));\r\n  }\r\n\r\n  \/* 5) Dedupe en sorteer *\/\r\n  const slots = [...new Set(baseSlots)].sort();\r\n\r\n  \/* Als er geen slots overblijven \u00e9n geen weekly-rooster bestaat, beschouw als gesloten *\/\r\n  if(slots.length === 0){\r\n    \/* Was er weekly maar alles geblokkeerd? Dan is het \"gesloten\" maar wegens drukte *\/\r\n    const [y,m,d] = dateStr.split(\"-\").map(Number);\r\n    const weekday = new Date(y, m-1, d).getDay();\r\n    const hasWeekly = SCHEDULE.weekly && SCHEDULE.weekly[weekday];\r\n    if(!hasWeekly && !(SCHEDULE.extras && SCHEDULE.extras[dateStr])){\r\n      return { closed: true, reason: \"Gesloten\", slots: [] };\r\n    }\r\n  }\r\n\r\n  return { closed: false, reason: null, slots };\r\n}\r\n\r\nconst cart = { qty: {} };\r\nconst allQtyItems = [...RIBS_COMBOS, ...KIDSRIBS_COMBOS, ...MENU.kids, ...MENU.hapjes, ...MENU.sauce, ...MENU.homesauce, ...MENU.extras];\r\nconst byId = Object.fromEntries(allQtyItems.map(i => [i.id, i]));\r\nconst fmt = n => \"\\u20AC \" + n.toFixed(2).replace(\".\",\",\");\r\nconst escapeHtml = s => String(s).replace(\/[&<>\"']\/g, c => ({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",\"\\\"\":\"&quot;\",\"'\":\"&#39;\"}[c]));\r\n\r\nfunction qtyOf(id){ return cart.qty[id] || 0; }\r\nfunction setQty(id, q){\r\n  q = Math.max(0, Math.min(99, q|0));\r\n  if(q===0) delete cart.qty[id]; else cart.qty[id] = q;\r\n  document.querySelectorAll(`[data-id=\"${id}\"] .qtyVal`).forEach(el => el.textContent = q);\r\n  document.querySelectorAll(`[data-id=\"${id}\"] .qtyDec`).forEach(el => el.disabled = q===0);\r\n  updateTotal();\r\n}\r\n\r\nfunction renderMenu(container, items){\r\n  container.innerHTML = items.map(i => `\r\n    <div class=\"item\" data-id=\"${i.id}\">\r\n      <div class=\"info\">\r\n        <div class=\"name\"><span>${i.name}<\/span><span class=\"price\">${fmt(i.price)}<\/span><\/div>\r\n        ${i.desc ? `<div class=\"desc\">${i.desc}<\/div>` : \"\"}\r\n      <\/div>\r\n      <div class=\"qty\">\r\n        <button type=\"button\" class=\"qtyDec\" aria-label=\"Minder\" disabled>\u2212<\/button>\r\n        <span class=\"qtyVal\">0<\/span>\r\n        <button type=\"button\" class=\"qtyInc\" aria-label=\"Meer\">+<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  `).join(\"\");\r\n  container.querySelectorAll(\".item\").forEach(row => {\r\n    const id = row.dataset.id;\r\n    row.querySelector(\".qtyInc\").addEventListener(\"click\", () => setQty(id, qtyOf(id)+1));\r\n    row.querySelector(\".qtyDec\").addEventListener(\"click\", () => setQty(id, qtyOf(id)-1));\r\n  });\r\n}\r\n\r\nfunction renderRibsGrouped(container, combos){\r\n  container.innerHTML = BEREIDINGEN.map(b => {\r\n    const group = combos.filter(c => c._bereiding === b.id);\r\n    const items = group.map(i => `\r\n      <div class=\"item\" data-id=\"${i.id}\">\r\n        <div class=\"info\">\r\n          <div class=\"name\"><span>${i.sausName}<\/span><span class=\"price\">${fmt(i.price)}<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"qty\">\r\n          <button type=\"button\" class=\"qtyDec\" aria-label=\"Minder\" disabled>\u2212<\/button>\r\n          <span class=\"qtyVal\">0<\/span>\r\n          <button type=\"button\" class=\"qtyInc\" aria-label=\"Meer\">+<\/button>\r\n        <\/div>\r\n      <\/div>\r\n    `).join(\"\");\r\n    return `\r\n      <div class=\"bereiding-group\">\r\n        <div class=\"bereiding-subheader\">\r\n          <span class=\"b-name\">${b.name}<\/span>\r\n          <span class=\"b-tag\">${b.sub === \"Sappig en mals\" ? \"sappig & mals, langzaam gegaard\" : \"klassiek gegrild met huiskruidenmix\"}<\/span>\r\n        <\/div>\r\n        ${items}\r\n      <\/div>\r\n    `;\r\n  }).join(\"\");\r\n  container.querySelectorAll(\".item\").forEach(row => {\r\n    const id = row.dataset.id;\r\n    row.querySelector(\".qtyInc\").addEventListener(\"click\", () => setQty(id, qtyOf(id)+1));\r\n    row.querySelector(\".qtyDec\").addEventListener(\"click\", () => setQty(id, qtyOf(id)-1));\r\n  });\r\n}\r\n\r\nfunction total(){\r\n  let t = 0;\r\n  for(const [id,q] of Object.entries(cart.qty)){\r\n    t += q * (byId[id]?.price || 0);\r\n  }\r\n  return t;\r\n}\r\n\r\nfunction updateTotal(){\r\n  const t = total();\r\n  document.getElementById(\"totalOut\").textContent = fmt(t);\r\n  document.getElementById(\"submitBtn\").disabled = t <= 0;\r\n}\r\n\r\nasync function initDate(){\r\n  await fetchSchedule();\r\n  const dateInput = document.getElementById(\"date\");\r\n  const today = new Date();\r\n  const toYMD = d => d.getFullYear() + \"-\" + String(d.getMonth()+1).padStart(2,\"0\") + \"-\" + String(d.getDate()).padStart(2,\"0\");\r\n  const max = new Date(today); max.setDate(max.getDate() + CONFIG.MAX_DAYS_AHEAD);\r\n  dateInput.min = toYMD(today);\r\n  dateInput.max = toYMD(max);\r\n\r\n  \/* Zoek de eerste open dag met beschikbare slots (binnen MAX_DAYS_AHEAD) *\/\r\n  let pick = new Date(today);\r\n  for(let i=0; i<=CONFIG.MAX_DAYS_AHEAD; i++){\r\n    const dateStr = toYMD(pick);\r\n    const { closed, slots } = getSlotsForDate(dateStr);\r\n    if(!closed && slots.length > 0){\r\n      if(pick.toDateString() === today.toDateString()){\r\n        const minMs = today.getTime() + CONFIG.MIN_PREP_MINUTES*60000;\r\n        const hasLateSlot = slots.some(s => {\r\n          const [hh,mm] = s.split(\":\").map(Number);\r\n          return new Date(pick.getFullYear(),pick.getMonth(),pick.getDate(),hh,mm).getTime() >= minMs;\r\n        });\r\n        if(hasLateSlot) break;\r\n      } else break;\r\n    }\r\n    pick.setDate(pick.getDate()+1);\r\n  }\r\n  dateInput.value = toYMD(pick);\r\n  dateInput.removeEventListener(\"change\", refreshSlots);\r\n  dateInput.addEventListener(\"change\", refreshSlots);\r\n  refreshSlots();\r\n}\r\n\r\nfunction refreshSlots(){\r\n  const dateStr = document.getElementById(\"date\").value;\r\n  const sel = document.getElementById(\"time\");\r\n  const hint = document.getElementById(\"timeHint\");\r\n  sel.innerHTML = \"\";\r\n\r\n  if(!dateStr){ sel.innerHTML = '<option value=\"\">Kies eerst een datum<\/option>'; return; }\r\n\r\n  const { closed, reason, slots } = getSlotsForDate(dateStr);\r\n\r\n  if(closed){\r\n    const reasonText = reason && reason.toLowerCase() !== \"gesloten\" ? reason : \"Gesloten\";\r\n    sel.innerHTML = `<option value=\"\">\u2014 Helaas gesloten \u2014<\/option>`;\r\n    hint.innerHTML = `Helaas gesloten op deze dag. <b>Reden:<\/b> ${escapeHtml(reasonText)}. Kies een andere datum om je bestelling te plaatsen.`;\r\n    hint.style.color = \"var(--copper)\";\r\n    document.getElementById(\"submitBtn\").disabled = true;\r\n    return;\r\n  }\r\n\r\n  if(slots.length === 0){\r\n    sel.innerHTML = '<option value=\"\">Geen tijden beschikbaar<\/option>';\r\n    hint.textContent = \"Helaas zijn er voor deze dag geen tijdslots beschikbaar (vol of gesloten). Probeer een andere datum.\";\r\n    hint.style.color = \"var(--copper)\";\r\n    document.getElementById(\"submitBtn\").disabled = true;\r\n    return;\r\n  }\r\n\r\n  const [y,m,d] = dateStr.split(\"-\").map(Number);\r\n  const picked = new Date(y, m-1, d);\r\n  const now = new Date();\r\n  const isToday = picked.toDateString() === now.toDateString();\r\n  const minMs = now.getTime() + CONFIG.MIN_PREP_MINUTES*60000;\r\n\r\n  let available = slots;\r\n  if(isToday){\r\n    available = slots.filter(s => {\r\n      const [hh,mm] = s.split(\":\").map(Number);\r\n      return new Date(y,m-1,d,hh,mm).getTime() >= minMs;\r\n    });\r\n  }\r\n\r\n  if(available.length === 0){\r\n    sel.innerHTML = '<option value=\"\">Geen slots meer vandaag<\/option>';\r\n    hint.textContent = \"Er zijn geen afhaalmomenten meer vandaag. Kies een andere dag.\";\r\n    hint.style.color = \"var(--copper)\";\r\n    document.getElementById(\"submitBtn\").disabled = true;\r\n    return;\r\n  }\r\n\r\n  sel.innerHTML = '<option value=\"\">Kies een tijd\u2026<\/option>' + available.map(s => `<option value=\"${s}\">${s} uur<\/option>`).join(\"\");\r\n  hint.textContent = `Minimum ${CONFIG.MIN_PREP_MINUTES} min vooraf bestellen.`;\r\n  hint.style.color = \"var(--ink-muted)\";\r\n  updateTotal();\r\n}\r\n\r\nfunction buildOrderPayload(){\r\n  const items = [];\r\n  for(const [id,q] of Object.entries(cart.qty)){\r\n    const item = byId[id];\r\n    if(!item) continue;\r\n    let displayName = item.name;\r\n    if(id.startsWith(\"ribs-\"))      displayName = `Ribbetjes: ${item.name}`;\r\n    if(id.startsWith(\"kidsribs-\"))  displayName = `Kinderribbetjes: ${item.name}`;\r\n    items.push({\r\n      id, name: displayName, qty: q,\r\n      price: item.price,\r\n      subtotal: +(q * item.price).toFixed(2)\r\n    });\r\n  }\r\n\r\n  const ref = \"RNB-\" + Date.now().toString(36).toUpperCase().slice(-6);\r\n  const t = total();\r\n  const firstname = document.getElementById(\"firstname\").value.trim();\r\n  const lastname  = document.getElementById(\"lastname\").value.trim();\r\n  const fullname  = (firstname + \" \" + lastname).trim();\r\n\r\n  return {\r\n    ref,\r\n    restaurant: CONFIG.RESTAURANT,\r\n    name: fullname, firstname, lastname,\r\n    phone: document.getElementById(\"phone\").value.trim(),\r\n    email: document.getElementById(\"email\").value.trim(),\r\n    pickup_date: document.getElementById(\"date\").value,\r\n    pickup_time: document.getElementById(\"time\").value,\r\n    notes: document.getElementById(\"notes\").value.trim(),\r\n    items,\r\n    total: +t.toFixed(2),\r\n    total_formatted: fmt(t),\r\n    created_at: new Date().toISOString(),\r\n    source: \"popup_ribsnbeer.com\"\r\n  };\r\n}\r\n\r\nfunction buildEmailBody(o){\r\n  const [y,m,d] = o.pickup_date.split(\"-\");\r\n  const dateBE = `${d}\/${m}\/${y}`;\r\n  const lines = [];\r\n  lines.push(\"==============================================\");\r\n  lines.push(\"     NIEUWE TAKEAWAY BESTELLING\");\r\n  lines.push(\"     \" + o.restaurant);\r\n  lines.push(\"==============================================\");\r\n  lines.push(\"\");\r\n  lines.push(\"Referentie: \" + o.ref);\r\n  lines.push(\"\");\r\n  lines.push(\"AFHALEN OP: \" + dateBE + \" om \" + o.pickup_time + \" uur\");\r\n  lines.push(\"\");\r\n  lines.push(\"KLANT:\");\r\n  lines.push(\"  Naam    : \" + o.name);\r\n  lines.push(\"  Telefoon: \" + o.phone);\r\n  lines.push(\"  E-mail  : \" + o.email);\r\n  lines.push(\"\");\r\n  lines.push(\"BESTELLING:\");\r\n  lines.push(\"----------------------------------------------\");\r\n  o.items.forEach(it => {\r\n    const qty = String(it.qty).padStart(2,\" \");\r\n    if(it.name.length > 30){\r\n      lines.push(`  ${qty}x  ${it.name}`);\r\n      lines.push(`       `.padEnd(32,\" \") + \" \" + fmt(it.subtotal));\r\n    } else {\r\n      const name = it.name.padEnd(30,\" \");\r\n      lines.push(`  ${qty}x  ${name} ${fmt(it.subtotal)}`);\r\n    }\r\n  });\r\n  lines.push(\"----------------------------------------------\");\r\n  lines.push(\"  TOTAAL:                          \" + o.total_formatted);\r\n  lines.push(\"\");\r\n  if(o.notes){\r\n    lines.push(\"OPMERKINGEN:\");\r\n    lines.push(\"  \" + o.notes);\r\n    lines.push(\"\");\r\n  }\r\n  lines.push(\"==============================================\");\r\n  lines.push(\"Besteld via: \" + o.source);\r\n  lines.push(\"Tijdstip   : \" + new Date(o.created_at).toLocaleString(\"nl-BE\"));\r\n  return lines.join(\"\\n\");\r\n}\r\n\r\nasync function submitOrder(){\r\n  const errBox = document.getElementById(\"errorBox\");\r\n  errBox.classList.add(\"hidden\");\r\n\r\n  const form = document.getElementById(\"orderForm\");\r\n  if(!form.reportValidity()) return;\r\n  if(!document.getElementById(\"time\").value){\r\n    errBox.textContent = \"Kies een afhaaltijd.\";\r\n    errBox.classList.remove(\"hidden\");\r\n    return;\r\n  }\r\n\r\n  const btn = document.getElementById(\"submitBtn\");\r\n  btn.disabled = true;\r\n  const originalHtml = btn.innerHTML;\r\n  btn.innerHTML = '<span class=\"spinner\"><\/span> Bezig met verzenden\u2026';\r\n\r\n  const order = buildOrderPayload();\r\n  order.email_body = buildEmailBody(order);\r\n\r\n  try {\r\n    if(!CONFIG.WEBHOOK_URL){\r\n      const subject = encodeURIComponent(`Takeaway ${order.ref} \u00b7 ${order.name} \u00b7 ${order.pickup_date} ${order.pickup_time}`);\r\n      const body = encodeURIComponent(order.email_body);\r\n      window.location.href = `mailto:${CONFIG.EMAIL_FALLBACK}?subject=${subject}&body=${body}`;\r\n      showSuccess(order);\r\n      return;\r\n    }\r\n\r\n    const res = await fetch(CONFIG.WEBHOOK_URL, {\r\n      method:\"POST\",\r\n      headers:{\"Content-Type\":\"application\/json\"},\r\n      body: JSON.stringify(order)\r\n    });\r\n    if(!res.ok) throw new Error(\"Server antwoord: \" + res.status);\r\n    showSuccess(order);\r\n\r\n  } catch(err){\r\n    btn.disabled = false;\r\n    btn.innerHTML = originalHtml;\r\n    errBox.innerHTML = `<b>Helaas ondervinden we momenteel een technisch probleem.<\/b><br>\r\n      Uw bestelling kon niet automatisch worden verzonden. Probeer het zo nog eens of geef uw bestelling gerust rechtstreeks telefonisch door op <a href=\"tel:003256906575\">056 90 65 75<\/a>. We helpen u graag verder.`;\r\n    errBox.classList.remove(\"hidden\");\r\n    errBox.scrollIntoView({behavior:\"smooth\", block:\"center\"});\r\n  }\r\n}\r\n\r\nfunction showSuccess(order){\r\n  document.getElementById(\"orderScreen\").classList.add(\"hidden\");\r\n  document.getElementById(\"successScreen\").classList.remove(\"hidden\");\r\n  document.getElementById(\"succName\").textContent = order.firstname || order.name;\r\n  document.getElementById(\"succOrderNum\").textContent = \"Referentie \u00b7 \" + order.ref;\r\n  document.getElementById(\"succEmail\").textContent = order.email;\r\n  const [y,m,d] = order.pickup_date.split(\"-\");\r\n  document.getElementById(\"succPickup\").textContent = `${d}\/${m}\/${y} om ${order.pickup_time} uur`;\r\n\r\n  const escHtml = s => String(s).replace(\/&\/g,\"&amp;\").replace(\/<\/g,\"&lt;\").replace(\/>\/g,\"&gt;\");\r\n  const itemsList = order.items.map(it =>\r\n    `<li><span class=\"it-name\">${it.qty}\u00d7 ${escHtml(it.name)}<\/span><span class=\"it-price\">${fmt(it.subtotal)}<\/span><\/li>`\r\n  ).join(\"\");\r\n  document.getElementById(\"succItems\").innerHTML = itemsList;\r\n  document.getElementById(\"succTotal\").textContent = order.total_formatted;\r\n\r\n  window.scrollTo(0,0);\r\n}\r\n\r\nfunction resetOrder(){\r\n  cart.qty = {};\r\n  document.querySelectorAll(\".qtyVal\").forEach(el => el.textContent = \"0\");\r\n  document.querySelectorAll(\".qtyDec\").forEach(el => el.disabled = true);\r\n\r\n  \/\/ Reset submit-knop terug naar zijn beginstaat (was nog \"Bezig met verzenden...\" na de vorige bestelling)\r\n  const btn = document.getElementById(\"submitBtn\");\r\n  btn.innerHTML = \"Bestel je takeaway\";\r\n  btn.disabled = true; \/\/ updateTotal() activeert hem opnieuw zodra er items in de cart zitten\r\n\r\n  document.getElementById(\"errorBox\").classList.add(\"hidden\");\r\n  updateTotal();\r\n  document.getElementById(\"orderForm\").reset();\r\n  document.getElementById(\"successScreen\").classList.add(\"hidden\");\r\n  document.getElementById(\"orderScreen\").classList.remove(\"hidden\");\r\n  initDate();\r\n  window.scrollTo(0,0);\r\n}\r\n\r\nfunction closePopup(){\r\n  try {\r\n    if(window.parent && window.parent !== window){\r\n      window.parent.postMessage({type:\"rnb-takeaway-close\"}, \"*\");\r\n      return;\r\n    }\r\n  } catch(e){}\r\n  if(window.history.length > 1) window.history.back();\r\n}\r\n\r\n\/* ---------- INIT ---------- *\/\r\nrenderRibsGrouped(document.getElementById(\"menu-ribs\"),      RIBS_COMBOS);\r\nrenderRibsGrouped(document.getElementById(\"menu-kidsribs\"),  KIDSRIBS_COMBOS);\r\nrenderMenu(document.getElementById(\"menu-kids\"),      MENU.kids);\r\nrenderMenu(document.getElementById(\"menu-sauce\"),     MENU.sauce);\r\nrenderMenu(document.getElementById(\"menu-homesauce\"), MENU.homesauce);\r\nrenderMenu(document.getElementById(\"menu-hapjes\"),    MENU.hapjes);\r\nrenderMenu(document.getElementById(\"menu-extras\"),    MENU.extras);\r\ninitDate();\r\nupdateTotal();\r\n\r\ndocument.getElementById(\"submitBtn\").addEventListener(\"click\", submitOrder);\r\ndocument.getElementById(\"newOrderBtn\").addEventListener(\"click\", resetOrder);\r\n\/* closeBtn is verwijderd uit de header (SEO: minder dubbele content op de pagina);\r\n   de site-header heeft sowieso al een navigatie. *\/\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Takeaway ribbetjes in Kortrijk Bestel je ribbetjes online en haal ze warm af op de Grote Markt 32 in Kortrijk. Met onze takeaway geniet je thuis van onze populaire ribbetjes: 1 + \u00bd lat met potato wedges en koolsla en een huisgemaakte saus naar keuze. Voor de kleinsten zijn er kinderribbetjes met frietjes en een [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-3752","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ribsnbeer.com\/en\/wp-json\/wp\/v2\/pages\/3752","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ribsnbeer.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ribsnbeer.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ribsnbeer.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ribsnbeer.com\/en\/wp-json\/wp\/v2\/comments?post=3752"}],"version-history":[{"count":0,"href":"https:\/\/ribsnbeer.com\/en\/wp-json\/wp\/v2\/pages\/3752\/revisions"}],"wp:attachment":[{"href":"https:\/\/ribsnbeer.com\/en\/wp-json\/wp\/v2\/media?parent=3752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}