<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/*
 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
/******/ (() =&gt; { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "./dist/app.js":
/*!*********************!*\
  !*** ./dist/app.js ***!
  \*********************/
/***/ (() =&gt; {

eval("\n\n//# sourceURL=webpack://project0/./dist/app.js?");

/***/ }),

/***/ "./src/scripts/app.bundle.js":
/*!***********************************!*\
  !*** ./src/scripts/app.bundle.js ***!
  \***********************************/
/***/ (() =&gt; {

eval("/**\n * Original Source: https://salferrarello.com/wordpress-sanitize-title-javascript/\n *\n * Version: 1.1.1\n *\n * JavaScript function to mimic the WordPress PHP function sanitize_title()\n * See https://codex.wordpress.org/Function_Reference/sanitize_title\n *\n * Note: the WordPress PHP function sanitize_title() accepts two additional\n * optional parameters. At this time, this function does not.\n *\n * @param string title The title to be santized.\n * @return string The sanitized string.Â©\n */\n\n\n(function() {\n    // Helper function to check if the API call is expired\n    function isApiCallExpired() {\n        const lastApiCall = localStorage.getItem(\"lastApiCallTimestamp\");\n        const oneHour = 60 * 60 * 1000; // One hour in milliseconds\n        const now = new Date().getTime();\n        return !lastApiCall || now - parseInt(lastApiCall, 10) &gt; oneHour;\n    }\n\n    // Retrieve values from localStorage\n    const areaId = localStorage.getItem(\"areaId\");\n    const retailerId = localStorage.getItem(\"retailerId\");\n\n    if (!areaId || !retailerId) {\n        console.error(\"Required data missing: areaId or retailerId\");\n        return;\n    }\n\n    // Construct the checkoutId key dynamically\n    const checkoutKey = `${retailerId}_checkoutId`;\n    const checkoutId = localStorage.getItem(checkoutKey);\n\n    if (!checkoutId) {\n        console.error(\"Checkout ID missing in localStorage\");\n        return;\n    }\n\n    // Check if API call is expired\n    if (!isApiCallExpired()) {\n        console.log(\"API call not required, already called within the last hour.\");\n        return;\n    }\n\n    // Perform the AJAX GET request\n    $.ajax({\n        url: \"https://www.almapos.com/api/set_area_to_checkout_id\",\n        type: \"GET\",\n        dataType: \"jsonp\",\n        data: {\n            checkoutId: checkoutId,\n            areaId: areaId\n        },\n        success: function(response) {\n            console.log(\"API call successful:\", response);\n            // Update the timestamp of the last API call\n            localStorage.setItem(\"lastApiCallTimestamp\", new Date().getTime().toString());\n        },\n        error: function(xhr, status, error) {\n            console.error(\"API call failed:\", status, error);\n        }\n    });\n})();\n\n\n    // var newmap =  localStorage.getItem(\"newmap\");\nvar newmap = \"1\";\nif(newmap == \"1\") {\n\n\n    const script = document.getElementById('search-js');\n    // wait for the Mapbox Search JS script to load before using it\n\n    script.onload = function () {\n        // Instantiate two separate &lt;mapbox-search-box&gt; elements\n        const searchBoxElement1 = document.createElement('mapbox-search-box');\n        const searchBoxElement2 = document.createElement('mapbox-search-box');\n\n        // Configure access tokens\n        searchBoxElement1.accessToken = 'pk.eyJ1IjoiZG9vYmllYWRtaW4iLCJhIjoiY20zc3lnMHd0MDJ2NDJxcTQ2emZ2N2x0eiJ9.V14H3y5GAw2wdIs1C7POWQ';\n        searchBoxElement2.accessToken = 'pk.eyJ1IjoiZG9vYmllYWRtaW4iLCJhIjoiY20zc3lnMHd0MDJ2NDJxcTQ2emZ2N2x0eiJ9.V14H3y5GAw2wdIs1C7POWQ';\n\n        // Set options for each search box\n        searchBoxElement1.options = {\n            language: 'en',\n            country: 'US'\n        };\n        searchBoxElement2.options = {\n            language: 'en',\n            country: 'US'\n        };\n\n        // Set placeholders for each search box\n        searchBoxElement1.placeholder = 'Enter a delivery address';\n        searchBoxElement2.placeholder = 'Enter a delivery address';\n\n        // Append each search box to its corresponding container\n        const container1 = document.querySelector('#mapboxtop');\n        const container2 = document.querySelector('#mapboxtopbottom');\n\n        if (container1) {\n            container1.appendChild(searchBoxElement1);\n        } else {\n            console.error('Container #mapboxtop not found.');\n        }\n\n        if (container2) {\n            container2.appendChild(searchBoxElement2);\n        } else {\n            console.error('Container #mapboxtopbottom not found.');\n        }\n\n        // Add event listeners for both search boxes\n        searchBoxElement1.addEventListener('retrieve', (event) =&gt; {\n            handleSearchBoxRetrieve(event, 'Top');\n        });\n\n        searchBoxElement2.addEventListener('retrieve', (event) =&gt; {\n            handleSearchBoxRetrieve(event, 'Bottom');\n        });\n    };\n\n// Handle the `retrieve` event for the search boxes\n    function handleSearchBoxRetrieve(event, position) {\n        const featureCollection = event.detail;\n\n        if (featureCollection.features &amp;&amp; featureCollection.features.length &gt; 0) {\n            const feature = featureCollection.features[0]; // Access the first feature\n            if (feature.geometry &amp;&amp; feature.geometry.coordinates) {\n                const [longitude, latitude] = feature.geometry.coordinates;\n\n                console.log(`${position} SearchBox Latitude:`, latitude);\n                console.log(`${position} SearchBox Longitude:`, longitude);\n\n                const coordinates = feature.geometry.coordinates; // Coordinates array\n                console.log(\"Latitude (geometry.coordinates):\", latitude);\n                console.log(\"Longitude (geometry.coordinates):\", longitude);\n\n                console.log(feature);\n\n                localStorage.setItem(\"customerAddress1\", feature.properties.address);\n                localStorage.setItem(\"customerAddress2\", feature.properties.context.place.name);\n                localStorage.setItem(\"customerAddress3\", feature.properties.context.postcode.name);\n                localStorage.setItem(\"customerAddress4\", feature.properties.context.region.name);\n\n                localStorage.setItem(\"latitude\", latitude);\n                localStorage.setItem(\"longitude\", longitude);\n\n                sendDeliveryQuery(latitude, longitude, feature.properties.address,feature.properties.context.place.name, feature.properties.context.postcode.name);\n\n\n\n\n                // Additional actions like saving to localStorage or making API calls\n            } else {\n                console.warn(`${position} SearchBox: Geometry or coordinates are missing.`);\n            }\n        } else {\n            console.warn(`${position} SearchBox: No features available.`);\n        }\n    }\n\n}\n\nfunction onlyUnique(value, index, array) {\n    return array.indexOf(value) === index;\n}\n\nfunction wpFeSanitizeTitle( title ) {\n    var diacriticsMap;\n\n\n    return removeSingleTrailingDash(\n        replaceSpacesWithDash(\n            removeHTMLEntities(\n                removeAccents(\n                    // Strip any HTML tags.\n                    title.replace( /&lt;[^&gt;]+&gt;/ig, '' )\n                ).toLowerCase()\n                    // Replace  , â€“, and &amp;mdash with a dash (-).\n                    .replace(/&amp;(?:(?:nbsp)|(?:ndash)|(?:mdash));/g, '-')\n            )\n                // Replace any forward slashes (/) or periods (.) with a dash (-).\n                .replace(/[\\/\\.]/g, '-')\n                // Replace anything that is not a:\n                // word character\n                // space\n                // nor a dash (-)\n                // with an empty string (i.e. remove it).\n                .replace(/[^\\w\\s-]+/g, '')\n        )\n    );\n\n    /**\n     * Replace all HTML Entities.\n     *\n     * The string to remove (replace with '')\n     * - start with an ampersand &amp;\n     * - has 0 or more characters (non-greedy) .*?\n     * - ends in a semi-color ;\n     *\n     * @param str String that may contain HTML entities.\n     * @return String with HTML entities removed.\n     */\n    function removeHTMLEntities( str ) {\n        return str.replace(/&amp;.*?;/g, '');\n    }\n\n    /**\n     * Replace one or more blank spaces (or repeated dashes) with a single dash.\n     *\n     * @param str String that may contain spaces or multiple dashes.\n     * @return String with spaces replaced by dashes and no more than one dash in a row.\n     */\n    function replaceSpacesWithDash( str ) {\n        return str\n            // Replace one or more blank spaces with a single dash (-)\n            .replace(/ +/g,'-')\n            // Replace two or more dashes (-) with a single dash (-).\n            .replace(/-{2,}/g, '-');\n    }\n\n    /**\n     * If the string end in a dash, remove it.\n     *\n     * @param string str The string which may or may not end in a dash.\n     * @return string The string without a dash on the end.\n     */\n    function removeSingleTrailingDash( str ) {\n        if ( '-' === str.substr( str.length - 1 ) ) {\n            return str.substr( 0, str.length - 1 );\n        }\n        return str;\n    }\n\n    /* Remove accents/diacritics in a string in JavaScript\n     * from https://stackoverflow.com/a/18391901\n     */\n\n    /*\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     * http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    function getDiacriticsRemovalMap() {\n        if ( diacriticsMap ) {\n            return diacriticsMap;\n        }\n        var defaultDiacriticsRemovalMap = [\n            {'base':'-', 'letters':'\\u2013\\u2014\\u00A0'},\n            {'base':'A', 'letters':'\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'},\n            {'base':'AA','letters':'\\uA732'},\n            {'base':'AE','letters':'\\u00C6\\u01FC\\u01E2'},\n            {'base':'AO','letters':'\\uA734'},\n            {'base':'AU','letters':'\\uA736'},\n            {'base':'AV','letters':'\\uA738\\uA73A'},\n            {'base':'AY','letters':'\\uA73C'},\n            {'base':'B', 'letters':'\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'},\n            {'base':'C', 'letters':'\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'},\n            {'base':'D', 'letters':'\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\u00D0'},\n            {'base':'DZ','letters':'\\u01F1\\u01C4'},\n            {'base':'Dz','letters':'\\u01F2\\u01C5'},\n            {'base':'E', 'letters':'\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'},\n            {'base':'F', 'letters':'\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'},\n            {'base':'G', 'letters':'\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'},\n            {'base':'H', 'letters':'\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'},\n            {'base':'I', 'letters':'\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'},\n            {'base':'J', 'letters':'\\u004A\\u24BF\\uFF2A\\u0134\\u0248'},\n            {'base':'K', 'letters':'\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'},\n            {'base':'L', 'letters':'\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'},\n            {'base':'LJ','letters':'\\u01C7'},\n            {'base':'Lj','letters':'\\u01C8'},\n            {'base':'M', 'letters':'\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'},\n            {'base':'N', 'letters':'\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'},\n            {'base':'NJ','letters':'\\u01CA'},\n            {'base':'Nj','letters':'\\u01CB'},\n            {'base':'O', 'letters':'\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'},\n            {'base':'OI','letters':'\\u01A2'},\n            {'base':'OO','letters':'\\uA74E'},\n            {'base':'OU','letters':'\\u0222'},\n            {'base':'OE','letters':'\\u008C\\u0152'},\n            {'base':'oe','letters':'\\u009C\\u0153'},\n            {'base':'P', 'letters':'\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'},\n            {'base':'Q', 'letters':'\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'},\n            {'base':'R', 'letters':'\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'},\n            {'base':'S', 'letters':'\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'},\n            {'base':'T', 'letters':'\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'},\n            {'base':'TZ','letters':'\\uA728'},\n            {'base':'U', 'letters':'\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'},\n            {'base':'V', 'letters':'\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'},\n            {'base':'VY','letters':'\\uA760'},\n            {'base':'W', 'letters':'\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'},\n            {'base':'X', 'letters':'\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'},\n            {'base':'Y', 'letters':'\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'},\n            {'base':'Z', 'letters':'\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'},\n            {'base':'a', 'letters':'\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'},\n            {'base':'aa','letters':'\\uA733'},\n            {'base':'ae','letters':'\\u00E6\\u01FD\\u01E3'},\n            {'base':'ao','letters':'\\uA735'},\n            {'base':'au','letters':'\\uA737'},\n            {'base':'av','letters':'\\uA739\\uA73B'},\n            {'base':'ay','letters':'\\uA73D'},\n            {'base':'b', 'letters':'\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'},\n            {'base':'c', 'letters':'\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'},\n            {'base':'d', 'letters':'\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'},\n            {'base':'dz','letters':'\\u01F3\\u01C6'},\n            {'base':'e', 'letters':'\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'},\n            {'base':'f', 'letters':'\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'},\n            {'base':'g', 'letters':'\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'},\n            {'base':'h', 'letters':'\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'},\n            {'base':'hv','letters':'\\u0195'},\n            {'base':'i', 'letters':'\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'},\n            {'base':'j', 'letters':'\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'},\n            {'base':'k', 'letters':'\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'},\n            {'base':'l', 'letters':'\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'},\n            {'base':'lj','letters':'\\u01C9'},\n            {'base':'m', 'letters':'\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'},\n            {'base':'n', 'letters':'\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'},\n            {'base':'nj','letters':'\\u01CC'},\n            {'base':'o', 'letters':'\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'},\n            {'base':'oi','letters':'\\u01A3'},\n            {'base':'ou','letters':'\\u0223'},\n            {'base':'oo','letters':'\\uA74F'},\n            {'base':'p','letters':'\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'},\n            {'base':'q','letters':'\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'},\n            {'base':'r','letters':'\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'},\n            {'base':'s','letters':'\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'},\n            {'base':'t','letters':'\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'},\n            {'base':'tz','letters':'\\uA729'},\n            {'base':'u','letters': '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'},\n            {'base':'v','letters':'\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'},\n            {'base':'vy','letters':'\\uA761'},\n            {'base':'w','letters':'\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'},\n            {'base':'x','letters':'\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'},\n            {'base':'y','letters':'\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'},\n            {'base':'z','letters':'\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'}\n        ];\n\n        diacriticsMap = {};\n        for (var i=0; i &lt; defaultDiacriticsRemovalMap .length; i++){\n            var letters = defaultDiacriticsRemovalMap [i].letters;\n            for (var j=0; j &lt; letters.length ; j++){\n                diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap [i].base;\n            }\n        }\n        return diacriticsMap;\n    }\n\n    // Remove accent characters/diacritics from the string.\n    function removeAccents (str) {\n        diacriticsMap = getDiacriticsRemovalMap();\n        return str.replace(/[^\\u0000-\\u007E]/g, function(a) {\n            return diacriticsMap[a] || a;\n        });\n    }\n}\n\n\n\n\nvar authtoken = localStorage.getItem(\"auth\");\n\nconst queryHeaders = {\n    'Content-Type': 'application/json',\n    'authorization': authtoken\n};\n\n\n\n\n\nconst plusUrl = 'https://plus.dutchie.com/plus/2021-07/graphql';\n\n\nconst createCheckoutObject = (retailer) =&gt; {\n\n\n\n    const checkoutQuery = `\n \n \n mutation CreateCheckout {\n  createCheckout(\n    retailerId: \"${retailer}\"\n \n    orderType: DELIVERY\n    pricingType: RECREATIONAL\n \n  ) {\n    id\n    orderType\n    pricingType\n    items {\n      id\n      option\n      product {\n      image\n        name\n        brand {\n          name\n        }\n        variants {\n          option\n          priceRec\n          priceMed\n          specialPriceRec\n          specialPriceMed\n        }\n      }\n      quantity\n    }\n    redirectUrl\n    address {\n      street1\n      street2\n      city\n      state\n      zip\n      formatted\n      geometry {\n        coordinates\n        type\n      }\n      deliverable\n      valid\n    }    \n  }\n}\n \n   `;\n\n    var authtoken = localStorage.getItem(\"auth\");\n    var areaId = localStorage.getItem(\"areaId\");\n\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: checkoutQuery\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n\n\n            console.log(result);\n\n            localStorage.setItem(retailer+\"_checkoutId\", result.data.createCheckout.id);\n\n\n\n            // Perform the AJAX POST request\n            $.ajax({\n                url: \"https://www.almapos.com/api/set_area_to_checkout_id\",\n                type: \"GET\",\n                dataType: 'jsonp',\n                data: {\n                    checkoutId: result.data.createCheckout.id,\n                    areaId: areaId\n                },\n                success: function (response) {\n                    console.log(\"API call successful:\", response);\n                },\n                error: function (xhr, status, error) {\n                    console.error(\"API call failed:\", status, error);\n                }\n            });\n\n\n            getCartQuery();\n\n\n        })\n        .catch(err =&gt; console.log(err))\n}\n\nconst getSingleProduct = (productId) =&gt; {\n\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n    var authtoken = localStorage.getItem(\"auth\");\n\n    const singleProductQuery = `\n \n \n fragment terpeneFragment on Terpene {\n  aliasList\n  aromas\n  description\n  effects\n  id\n  name\n  potentialHealthBenefits\n  unitSymbol\n}\n\nfragment activeTerpeneFragment on ActiveTerpene {\n  id\n  terpene {\n    ...terpeneFragment\n  }\n  name\n  terpeneId\n  unit\n  unitSymbol\n  value\n}\n\nfragment activeCannabinoidFragment on ActiveCannabinoid {\n  cannabinoidId\n  cannabinoid {\n    description\n    id\n    name\n  }\n  unit \n  value\n}\n\nfragment variantFragment on ProductVariant {\n  id\n  option\n  priceMed\n  priceRec\n  specialPriceMed\n  specialPriceRec\n  quantity\n  flowerEquivalent {\n    unit\n    value\n  }\n}\n\nfragment productFragment on Product {\n  brand {\n    description\n    id\n    imageUrl\n    name\n  }\n  category\n  description\n  descriptionHtml\n  effects\n  enterpriseProductId\n  id\n  productBatchId\n  image\n  images {\n    id\n    url\n    label\n    description\n  }\n  menuTypes\n  name\n  slug\n  posId\n  potencyCbd {\n    formatted\n    range\n    unit\n  }\n  potencyThc {\n    formatted\n    range\n    unit\n  }\n  posMetaData {\n    id\n    category\n    sku\n  }\n  staffPick\n  strainType\n  subcategory\n  tags\n  variants {\n    ...variantFragment\n  }\n  terpenes {\n    ...activeTerpeneFragment\n  }\n  cannabinoids {\n    ...activeCannabinoidFragment\n  }\n}\n \n\n \n \n query ProductQuery\n {\n  product(\n    retailerId: \"${retailer}\"\n    id: \"${productId}\"\n  ) {\n    ...productFragment\n  }\n}\n \n \n\n \n   `;\n\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: singleProductQuery\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n\n\n\n            var endtitle = result.data.product.brand.name;\n            endtitle += ' ';\n            endtitle += result.data.product.name;\n            endtitle += ' ';\n            endtitle += 'For Sale New York NY';\n\n            var thetitle = wpFeSanitizeTitle(endtitle);\n            var productpermalink = '/products/'+thetitle+'/';\n            $(\".productpermalink\").attr(\"href\", productpermalink);\n\n\n            /*\n            $name = $product-&gt;brand-&gt;name. ' ';\n            $name .= $product-&gt;name.' For sale New York NY';\n\n\n\n            $title = $product-&gt;brand-&gt;name. ' ';\n            $title .= $product-&gt;name.' Cannabis for Sale NYC - Union Square Travel Agency: A Cannabis Store Dispensary NYC';\n\n*/\n\n\n            // console.log(result.data.product);\n            $('.morefrombrand').html(result.data.product.brand.name);\n            $('.setcatproduct2').attr('data-brand',result.data.product.brand.id);\n            $('.setcategoryproduct').trigger('click');\n\n            drawProductPop(result.data.product);\n\n\n        })\n        .catch(err =&gt; console.log(err))\n}\n\n\nconst getProductData = (productId) =&gt; {\n\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n    var authtoken = localStorage.getItem(\"auth\");\n\n    const singleProductQuery = `\n \n \n fragment terpeneFragment on Terpene {\n  aliasList\n  aromas\n  description\n  effects\n  id\n  name\n  potentialHealthBenefits\n  unitSymbol\n}\n\nfragment activeTerpeneFragment on ActiveTerpene {\n  id\n  terpene {\n    ...terpeneFragment\n  }\n  name\n  terpeneId\n  unit\n  unitSymbol\n  value\n}\n\nfragment activeCannabinoidFragment on ActiveCannabinoid {\n  cannabinoidId\n  cannabinoid {\n    description\n    id\n    name\n  }\n  unit \n  value\n}\n\nfragment variantFragment on ProductVariant {\n  id\n  option\n  priceMed\n  priceRec\n  specialPriceMed\n  specialPriceRec\n  quantity\n  flowerEquivalent {\n    unit\n    value\n  }\n}\n\nfragment productFragment on Product {\n  brand {\n    description\n    id\n    imageUrl\n    name\n  }\n  category\n  description\n  descriptionHtml\n  effects\n  enterpriseProductId\n  id\n  productBatchId\n  image\n  images {\n    id\n    url\n    label\n    description\n  }\n  menuTypes\n  name\n  slug\n  posId\n  potencyCbd {\n    formatted\n    range\n    unit\n  }\n  potencyThc {\n    formatted\n    range\n    unit\n  }\n  posMetaData {\n    id\n    category\n    sku\n  }\n  staffPick\n  strainType\n  subcategory\n  tags\n  variants {\n    ...variantFragment\n  }\n  terpenes {\n    ...activeTerpeneFragment\n  }\n  cannabinoids {\n    ...activeCannabinoidFragment\n  }\n}\n \n\n \n \n query ProductQuery\n {\n  product(\n    retailerId: \"${retailer}\"\n    id: \"${productId}\"\n  ) {\n    ...productFragment\n  }\n}\n \n \n\n \n   `;\n\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: singleProductQuery\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n\n\n            if(result.data.product.variants.length &gt; 1) {\n                drawVariants(result.data.product.variants);\n            }\n\n\n        })\n        .catch(err =&gt; console.log(err))\n}\n\n\n\n\nconst getCartQuery = () =&gt; {\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n    var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n    var authtoken = localStorage.getItem(\"auth\");\n\n    const checkoutQuery = `\nquery Checkout {\n  checkout(\n  id: \"${checkoutId}\"\n  retailerId: \"${retailer}\"\n  ) {\n    id\n    pricingType\n    orderType\n     priceSummary {\n      taxes\n      subtotal\n      total\n      discounts\n    \n      rewards\n      mixAndMatch\n    }\n    items {\n      id\n      option\n      product {\n        image\n        name\n        id\n        brand {\n          name\n        }\n        variants {\n          option\n          priceMed\n          priceRec\n          specialPriceRec\n          specialPriceMed\n        }\n      }\n      quantity\n    }\n    redirectUrl\n  }\n  }\n   `;\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: checkoutQuery\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n            drawCart(result);\n        })\n        .catch(err =&gt; console.log(err))\n}\n\n\nconst getDealsQuery = () =&gt; {\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n    var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n    var authtoken = localStorage.getItem(\"auth\");\n\n    const specialsQuery = `\n    \n    \n    \n    \n    \n    fragment specialFragment on Special {\n  id\n  name\n  type\n  redemptionLimit\n  menuType\n  emailConfiguration {\n    description\n    descriptionHtml\n    subject\n    heading\n    enabled\n  }\n  scheduleConfiguration {\n    startStamp\n    endStamp\n    days\n    setEndDate\n    endDate\n    recurringStartTime\n    recurringEndTime\n  }\n  menuDisplayConfiguration {\n    name\n    description\n    image\n  }\n}\n    \n    \n    query GetSpecialsList {\n  specials( retailerId: \"${retailer}\" ) {\n    ...specialFragment\n  }\n}\n    \n \n   `;\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: specialsQuery\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n            drawDeals(result);\n        })\n        .catch(err =&gt; console.log(err))\n}\n\n\n\n\nconst addCartQuery = (productId, option, quantity ) =&gt; {\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n    var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n    var authtoken = localStorage.getItem(\"auth\");\n\n    const cartQuery = `\n\n fragment priceSummaryFragment on PriceSummary {\n  discounts\n  fees\n  mixAndMatch\n  rewards\n  subtotal\n  taxes\n  total\n}\n \n mutation AddItemToCheckout {\n  addItem(\n    checkoutId: \"${checkoutId}\"\n    productId: \"${productId}\"\n    quantity: ${quantity}\n    option: \"${option}\"\n    retailerId: \"${retailer}\"\n    \n  ) {\n     items {\n      id\n      option     \n      quantity\n    }\n     priceSummary {\n    ...priceSummaryFragment\n   }\n  }\n}\n   `;\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: cartQuery\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n\n            if(result.errors) {\n\n                if(result.errors[0].message == 'Not Found') {\n\n                    alert(\"Your checkout has expired, taking you back to the shop.\");\n\n\n                    // List of localStorage keys to remove\n                    const keysToRemove = [\n\n\n                        'scheduledAvailable',\n                        'selectedOption',\n                        'customerAddress2',\n                        'a8acceb2-b3be-4880-b89e-bc0143be8e12_checkoutId',\n                        '259ada1a-8ff1-4660-a737-048699fc6c34_checkoutId',\n                        'dae5bc1a-935a-4d31-897d-33f95012b7a4_checkoutId',\n                        '5e4dba92-8dbf-4ba2-a6e4-55c9a381c2ec_checkoutId',\n                        'c7e42b3f-f623-48cf-8ca3-2bb8459fe749_checkoutId',\n                        '35ffd327-f705-46d8-a4c7-2f2761406597_checkoutId',\n                        '6257c1d3-1022-4250-9666-73644d762972_checkoutId',\n                        'e25dccad-d3b7-418a-8c7f-18a5f4795b77_checkoutId',\n                        '9854f1ab-dab5-497c-b36a-a05a1968e5c5_checkoutId',\n\n                        'scheduledDeliveryFee',\n                        'scheduledRetailerName',\n                        'expressRetailerId',\n\n                        'filltype',\n\n                        'customerAddress1',\n                        'selectedTime',\n\n                        'customerAddress3',\n\n                        'scheduledDeliveryMin',\n                        'siteflow',\n                        'selectedDay',\n\n                        '9854f1ab-dab5-497c-b36a-a05a1968e5c5_checkoutId',\n\n                        'retailerId',\n\n                        'scheduledRetailerId',\n\n                        'expressRetailerName',\n\n                        'locationString',\n\n                        'expressDeliveryFee'\n                    ];\n\n                    keysToRemove.forEach(key =&gt; localStorage.removeItem(key));\n\n                    console.log('Specified localStorage items have been removed.');\n                    window.location.reload();\n\n\n                } else {\n                    Swal.fire({\n                        icon: \"error\",\n                        title: \"Oops...\",\n                        text: \"Apologies, it seems we're out of stock of that item, try a lesser quantity.\"\n                    });\n\n                    return false;\n                }\n\n\n\n\n\n\n\n\n\n\n            } else {\n                getCartQuery();\n            }\n\n\n\n\n\n        })\n        .catch(err =&gt; console.log(err))\n}\n\nconst updateCartQuery = (itemId, option, quantity ) =&gt; {\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n    var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n\n    const updateCartQuery = `\n\n fragment priceSummaryFragment on PriceSummary {\n  discounts\n  fees\n  mixAndMatch\n  rewards\n  subtotal\n  taxes\n  total\n}\n \n mutation UpdateQuantity {\n  updateQuantity(\n    checkoutId: \"${checkoutId}\"\n    itemId: \"${itemId}\"\n    quantity: ${quantity}\n    retailerId: \"${retailer}\"\n    \n  ) {\n     items {\n      id\n      option     \n      quantity\n    }\n     priceSummary {\n    ...priceSummaryFragment\n   }\n  }\n}\n   `;\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: updateCartQuery\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n\n            if(result.errors) {\n                alert(result.errors[0].message);\n                getCartQuery();\n            } else {\n                getCartQuery();\n            }\n\n\n\n        })\n        .catch(err =&gt; console.log(err))\n}\n\n\nconst removeCartQuery = (productId ) =&gt; {\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n    var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n    var authtoken = localStorage.getItem(\"auth\");\n\n\n    const removeCartQuery = `\n\n fragment priceSummaryFragment on PriceSummary {\n  discounts\n  fees\n  mixAndMatch\n  rewards\n  subtotal\n  taxes\n  total\n}\n \n mutation RemoveItemFromCheckout {\n  removeItem(\n    checkoutId: \"${checkoutId}\"\n    itemId: \"${productId}\"\n    retailerId: \"${retailer}\"\n    \n  ) {\n     items {\n      id\n      option     \n      quantity\n    }\n     priceSummary {\n    ...priceSummaryFragment\n   }\n  }\n}\n   `;\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: removeCartQuery\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n\n            getCartQuery();\n\n\n\n        })\n        .catch(err =&gt; console.log(err))\n}\n\n\n\nconst brandQuery = (retailer, limit, divresult, category, iscatpage = 0, sort = 0, subcategory = false, type = false, price = false, thc = false, datatype = false, menusection = false, weight = false, effects = false, custom_section = false, is_search = false, search_term = false, isbrand = false, brand = false, minprice = false, maxprice = false) =&gt; {\n\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n    var authtoken = localStorage.getItem(\"auth\");\n\n\n    var filter = 'filter:{';\n\n\n    if(brand) {\n        filter = filter+ ' brandId : \"'+brand+'\"';\n    }\n\n    if(category) {\n        filter = filter+ ' category:'+category+'';\n    }\n\n    if(subcategory) {\n        if(subcategory !== \"0\"){\n            filter = filter+ ' subcategory:'+subcategory+'';\n        }\n\n    }\n\n\n    if(type) {\n        if(type !== \"0\"){\n            filter = filter+ ' strainType:'+type+'';\n        }\n\n    }\n\n\n\n\n\n    if(weight) {\n        if(weight !== \"0\"){\n            filter = filter+ ', weights: [\"'+weight+'\"]';\n        }\n\n    }\n\n    if(effects) {\n        if(effects !== \"0\"){\n            filter = filter+ ', effects: ['+effects+']';\n        }\n\n    }\n\n    if(price) {\n        if(price !== \"0\"){\n            //   filter = filter+ ' strainType:'+type+'';\n        }\n\n    }\n\n    if(thc) {\n        if(thc !== \"0\"){\n\n            if(thc == 'low') {\n                filter = filter+ ' potencyThc:{ min:0, max:20, unit:MILLIGRAMS}';\n            }\n\n            if(thc == 'high') {\n                filter = filter+ ' potencyThc:{ min:50, max:500, unit:MILLIGRAMS}';\n            }\n\n        }\n\n    }\n\n    if(datatype == 'dutchiesection') {\n        if(menusection == 'SPECIALS') {\n            filter = filter+' menuSection: { type: SPECIALS }';\n        }\n\n    }\n\n\n    if(datatype == 'custom') {\n        filter = filter+' menuSection: { type: CUSTOM_SECTION, name: \"'+custom_section+'\" }';\n\n    }\n\n    filter = filter+'}'\n\n    if(sort == 0) {\n        filter = filter+' sort: { direction: ASC, key: POPULAR }';\n    }\n\n    if(sort == 'popular') {\n        filter = filter+' sort: { direction: ASC, key: POPULAR }';\n    }\n\n    if(sort == 'name') {\n        filter = filter+' sort: { direction: ASC, key: NAME }';\n    }\n\n    if(sort == 'pricelow') {\n        filter = filter+' sort: { direction: ASC, key: PRICE }';\n    }\n\n    if(sort == 'pricehigh') {\n        filter = filter+' sort: { direction: DESC, key: PRICE }';\n    }\n    if(sort == 'potency') {\n        filter = filter+' sort: { direction: DESC, key: POTENCY }';\n    }\n\n\n\n    const brandQuery = `\n  \n  \n  fragment brandFragment on Brand {\n \n  id\n \n  name\n}\n\n\n\n\nfragment productFragment on Product {\n  staffPick\nsubcategory\n  \n  brand {\n  id\n  name\n  }\n  \n}\n\nquery MenuQuery {\n  menu(\n    retailerId: \"${retailer}\"\n     ${filter}\n \n  ) {\n  brands {\n      ...brandFragment\n    }\n  weights\n    products {\n      ...productFragment\n    }\n  }\n}\n   \n   `;\n\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: brandQuery\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n\n\n\n\n\n\n            if(iscatpage == 1) {\n\n\n                var brandshtml = '';\n                result.data.menu.brands.forEach(obj =&gt; {\n                    brandshtml = brandshtml+'&lt;a class=\"setbrand\" href=\"#\" data-brand=\"'+obj.id+'\"&gt;'+obj.name+'&lt;/a&gt;';\n                });\n                $('.brandlinks').html(brandshtml);\n\n\n\n            }\n\n        })\n        .catch(err =&gt; console.log(err))\n}\nconst productQuery = (retailer, limit, divresult, category, iscatpage = 0, sort = 0, subcategory = false, type = false, price = false, thc = false, datatype = false, menusection = false, weight = false, effects = false, custom_section = false, is_search = false, search_term = false, isbrand = false, brand = false, minprice = false, maxprice = false, isgrid = false, special = false) =&gt; {\n\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n    var authtoken = localStorage.getItem(\"auth\");\n\n    if(retailer == '') {\n\n        localStorage.setItem(\"retailerId\", \"a8acceb2-b3be-4880-b89e-bc0143be8e12\");\n        var retailer = \"a8acceb2-b3be-4880-b89e-bc0143be8e12\";\n    }\n\n\n    var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n\n    if(!checkoutId) {\n        createCheckoutObject(retailer);\n    } else {\n        //getCartQuery();\n    }\n\n\n\n    var filter = 'filter:{';\n\n\n    if(brand) {\n        filter = filter+ ' brandId : \"'+brand+'\"';\n    }\n\n\n    if(category == 'STAFF_PICKS') {\n        filter = filter+' menuSection: { type: STAFF_PICKS }';\n    } else {\n        if(category) {\n            filter = filter+ ' category:'+category+'';\n        }\n    }\n\n\n\n\n    if(subcategory) {\n        if(subcategory !== \"0\"){\n            filter = filter+ ' subcategory:'+subcategory+'';\n        }\n\n    }\n\n\n    if(type) {\n        if(type !== \"0\"){\n            filter = filter+ ' strainType:'+type+'';\n        }\n\n    }\n\n\n    if(is_search == \"1\") {\n\n        filter = filter+ ' search: \"'+search_term+'\"';\n\n    }\n\n\n    if(weight) {\n        if(weight !== \"0\"){\n            filter = filter+ ', weights: [\"'+weight+'\"]';\n        }\n\n    }\n\n    if(effects) {\n        if(effects !== \"0\"){\n            filter = filter+ ', effects: ['+effects+']';\n        }\n\n    }\n\n    if(price) {\n        if(price !== \"0\"){\n            //   filter = filter+ ' strainType:'+type+'';\n        }\n\n    }\n\n    if(thc) {\n        if(thc !== \"0\"){\n\n            if(thc == 'low') {\n                filter = filter+ ' potencyThc:{ min:0, max:20, unit:MILLIGRAMS}';\n            }\n\n            if(thc == 'high') {\n                filter = filter+ ' potencyThc:{ min:50, max:500, unit:MILLIGRAMS}';\n            }\n\n        }\n\n    }\n    var onsaleonly = 0;\n    if(datatype == 'dutchiesection') {\n        if(menusection == 'SPECIALS') {\n            onsaleonly = 1;\n            filter = filter+' menuSection: { type: SPECIALS }';\n        }\n\n\n        if(menusection == 'STAFF_PICKS') {\n            onsaleonly = 1;\n            filter = filter+' menuSection: { type: STAFF_PICKS }';\n        }\n\n\n    }\n\n\n    if(datatype == 'custom') {\n        filter = filter+' menuSection: { type: CUSTOM_SECTION, name: \"'+custom_section+'\" }';\n\n    }\n\n\n    if(special == false) {\n\n    } else {\n        filter = filter+' menuSection: { type: SPECIALS, specialId: \"'+special+'\" }';\n\n    }\n\n\n    filter = filter+'}'\n\n    if(sort == 0) {\n        filter = filter+' sort: { direction: ASC, key: POPULAR }';\n    }\n\n    if(sort == 'popular') {\n        filter = filter+' sort: { direction: DESC, key: POPULAR }';\n    }\n\n    if(sort == 'name') {\n        filter = filter+' sort: { direction: ASC, key: NAME }';\n    }\n\n    if(sort == 'nameza') {\n        filter = filter+' sort: { direction: DESC, key: NAME }';\n    }\n\n    if(sort == 'pricelow') {\n        filter = filter+' sort: { direction: ASC, key: PRICE }';\n    }\n\n    if(sort == 'pricehigh') {\n        filter = filter+' sort: { direction: DESC, key: PRICE }';\n    }\n    if(sort == 'potency') {\n        filter = filter+' sort: { direction: DESC, key: POTENCY }';\n    }\n\n    if(sort == 'potencylow') {\n        filter = filter+' sort: { direction: ASC, key: POTENCY }';\n    }\n\n\n\n    var menutype = \"RECREATIONAL\";\n\n    var checktype = localStorage.getItem(\"custtype\");\n\n    if(checktype == \"\" ) {\n        menutype = \"RECREATIONAL\";\n    }\n\n    if(checktype == \"MEDICAL\" ) {\n        menutype = \"MEDICAL\";\n    }\n\n    if(checktype == \"RECREATIONAL\" ) {\n        menutype = \"RECREATIONAL\";\n    }\n\n\n\n\n\n    const productQuery = `\n  \n  \n  fragment brandFragment on Brand {\n \n  id\n \n  name\n}\n\nfragment activeTerpeneFragment on ActiveTerpene {\n  id\n \n  name\n  terpeneId\n  unit\n  unitSymbol\n  value\n}\n\nfragment activeCannabinoidFragment on ActiveCannabinoid {\n  cannabinoidId\n \n}\n\nfragment productFragment on Product {\n  \n  category\n  staffPick\n  \n  \n  id\n  \n  image\n  \n  brand {\n  name\n\n  }\n  \n  \n  name\n  slug\n  subcategory\n  potencyCbd {\n    formatted\n    range\n    unit\n  }\n  potencyThc {\n    formatted\n    range\n    unit\n  }\n\n  \n  strainType\n  \n  \n  variants {\n    id\n    option\n    priceMed\n    priceRec\n    specialPriceMed\n    specialPriceRec\n    quantity\n  }\n  terpenes {\n    ...activeTerpeneFragment\n  }\n  cannabinoids {\n    ...activeCannabinoidFragment\n  }\n}\n\nquery MenuQuery {\n  menu(\n    retailerId: \"${retailer}\"\n    menuType: ${menutype}\n    pagination:{ offset:0, limit:${limit}}\n    ${filter}\n  ) {\n  brands {\n      ...brandFragment\n    }\n  weights\n    products {\n      ...productFragment\n    }\n  }\n}\n   \n   `;\n\n\n    if(category == 'FLOWER') {\n        //  console.log(productQuery);\n    }\n\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: productQuery\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n\n\n\n            //  console.log(result);\n\n            if(iscatpage == 1) {\n\n                var existingcat = document.querySelector('input[name=\"category\"]:checked').value;\n\n                if(existingcat == '') {\n                    $('.weights').addClass('hidden');\n                } else {\n                    $('.weights').removeClass('hidden');\n\n                    drawWeights(result.data.menu.weights);\n                }\n\n                drawBrands(result.data.menu.brands);\n                drawProductCards(result.data.menu.products, divresult, minprice)\n            } else {\n                if(isgrid == 1) {\n                    drawProductCards(result.data.menu.products, divresult, minprice, maxprice, onsaleonly, 1)\n                } else {\n                    drawProductCardsNew(result.data.menu.products, divresult, onsaleonly)\n                }\n\n            }\n\n        })\n        .catch(err =&gt; console.log(err))\n}\nconst sendQuery = (latitude, longitude) =&gt; {\n\n\n\n    console.log('andy testing');\n\n    var authtoken = localStorage.getItem(\"auth\");\n\n    const plusUrl = 'https://plus.dutchie.com/plus/2021-07/graphql';\n\n    const geoQuery = `\n   query RetailersNearLocation {\n       retailersNearLocation(\n       location: {\n           coordinates: {\n           latitude: ${latitude}\n           longitude:  ${longitude}\n           }\n           maxDistance: 250\n           unit: MI\n       }\n       ) {\n       retailer {\n           address\n           name\n           id\n            deliverySettings{\n        deliveryFee\n      }\n       }\n       locationDetail {\n           distance\n           unit\n       }\n       }\n   }\n   `;\n\n\n    fetch(plusUrl, {\n        method: 'POST',\n        headers:  {\n            'Content-Type': 'application/json',\n            'authorization': authtoken\n        },\n        body: JSON.stringify({\n            query: geoQuery,\n            variables: {\n                location: {\n                    coordinates: {\n                        latitude: latitude,\n                        longitude: longitude\n                    }\n                }\n            }\n        })\n    })\n        .then(res =&gt; res.json())\n        .then((result) =&gt; {\n\n\n\n\n\n            var retailerid = result.data.retailersNearLocation[0].retailer.id\n\n\n\n            localStorage.setItem(\"askstore\", \"1\");\n\n\n            $('.locationlabel').html( \"It looks like \"+result.data.retailersNearLocation[0].retailer.name+\" is your closest store at \"+result.data.retailersNearLocation[0].locationDetail.distance.toFixed()+\" miles away? Would you like to go to this store?\")\n\n\n            if(result.data.retailersNearLocation[0].retailer.name == \"Embarc Alameda\") {\n                var storevalue = '/set-store?store=alameda-dispensary';\n            }\n\n            if(result.data.retailersNearLocation[0].retailer.name == 'Embarc Chico') {\n                var storevalue = '/set-store?store=chico-dispensary';\n            }\n\n            if(result.data.retailersNearLocation[0].retailer.name == \"Embarc Fairfield\") {\n                var storevalue = '/set-store?store=fairfield-dispensary';\n            }\n\n            if(result.data.retailersNearLocation[0].retailer.name == \"Embarc Fresno\") {\n                var storevalue = '/set-store?store=fresno-dispensary-blackstone-ave';\n            }\n\n            if(result.data.retailersNearLocation[0].retailer.name == \"Embarc Martinez\") {\n                var storevalue = '/set-store?store=martinez-dispensary';\n            }\n\n            if(result.data.retailersNearLocation[0].retailer.name == \"Embarc Redwood City\") {\n                var storevalue = '/set-store?store=redwood-city-dispensary';\n            }\n\n            if(result.data.retailersNearLocation[0].retailer.name == 'Embarc Sacramento') {\n                var storevalue = '/set-store?store=sacramento-dispensary';\n            }\n\n            if(result.data.retailersNearLocation[0].retailer.name == \"Embarc Tahoe\") {\n                var storevalue = '/set-store?store=tahoe-dispensary';\n            }\n\n\n\n\n            $('#storeselection').val(storevalue);\n\n\n            /* Swal.fire({\n                 title: \"We've detected your closet store\",\n                 text: \"It looks like \"+result.data.retailersNearLocation[0].retailer.name+\" is your closest store at \"+result.data.retailersNearLocation[0].locationDetail.distance.toFixed()+\" miles away? Would you like to switch to this store?\",\n                 icon: 'warning',\n                 showCancelButton: true,\n                 confirmButtonColor: '#3085d6',\n                 cancelButtonColor: '#d33',\n                 confirmButtonText: 'Yes, change store!',\n                 cancelButtonText: \"No, don't ask again!\"\n             }).then((result) =&gt; {\n                 if (result.isConfirmed) {\n\n                     if(retailerid == '86e1fead-2b29-4e0c-b54f-0b600dd414a0') {\n                         var seturl = '/alameda-dispensary/';\n                     }\n\n                     if(retailerid == '18b54fec-7669-4ff5-90cf-8b506001f271') {\n                         var seturl = '/chico-dispensary/';\n                     }\n\n                     if(retailerid == 'e81114f6-ea19-46e9-810c-16d0920a22dc') {\n                         var seturl = '/fairfield-marijuana-dispensary/';\n                     }\n\n                     if(retailerid == 'd5073d64-0bcc-4ce2-8c23-7f371e474e3e') {\n                         var seturl = '/fresno-dispensary-blackstone-ave/';\n                     }\n\n                     if(retailerid == 'd812fc3d-b3ce-4cfd-af5d-eafa621aeb57') {\n                         var seturl = '/martinez-dispensary/';\n                     }\n\n                     if(retailerid == 'c8280c4c-60b8-4d43-8326-ac33ebbc3e3b') {\n                         var seturl = '/redwood-city-dispensary/';\n                     }\n\n                     if(retailerid == '47e09ecc-490a-4daf-8143-c7d8e87556ab') {\n                         var seturl = '/sacramento-dispensary/';\n                     }\n\n                     if(retailerid == 'bbc0bb85-96dd-4297-b352-8442c3ec3520') {\n                         var seturl = '/tahoe-dispensary/';\n                     }\n\n                     window.location = seturl;\n                 }\n             });\n             */\n\n\n\n        })\n        .catch(err =&gt; console.log(err))\n}\n\n\nconst sendDeliveryQuery = (latitude, longitude, address1, address2, address3) =&gt; {\n\n\n\n    $('.nodelivery').addClass('hidden');\n    var authtoken = \"Bearer public-eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJBUEktQ0xJRU5UIiwiZXhwIjozMzIwMjk5MDQ4MCwiaWF0IjoxNjQ2MDgxNjgwLCJpc3MiOiJodHRwczovL2R1dGNoaWUuY29tIiwianRpIjoiNzA1YjdiMjgtNTM4ZS00NmNhLTgwYjUtMGJiY2NiNGJmN2VlIiwiZW50ZXJwcmlzZV9pZCI6IjM3NTI5MDRhLWZiNzItNDI4ZS05OTI0LTk4NzE0M2YxZGFlYSIsInV1aWQiOiJmMWY2NzhlMC02MWNjLTQ3MDktODYyNC1jNTM0NWZhZWQ5ZGEifQ.m8SonI4lsdWwtMTBP35c78vNYQoy2tX2sEmknfBIpeg\";\n\n    const plusUrl = 'https://plus.dutchie.com/plus/2021-07/graphql';\n\n    const geoQuery = `\n   query RetailersNearLocation {\n       retailersNearLocation(\n       location: {\n           coordinates: {\n           latitude: ${latitude}\n           longitude:  ${longitude}\n           }\n           maxDistance: 250\n           unit: MI\n       }\n       ) {\n       retailer {\n       \n      \n       deliverySettings{\n          \n          drawnZones {\n      deliveryMinimum\n      fee\n    }\n    }\n      \n      \n       \n           address\n           name\n           id\n            hours {\n    \n    delivery {\n       Monday {\n      \n        end\n      }\n       Tuesday {\n        start\n        end\n      }\n    \n      Wednesday {\n        start\n        end\n      }\n       Thursday {\n        start\n        end\n      }\n       Friday {\n        start\n        end\n      }\n       Saturday {\n        start\n        end\n      }\n      Sunday {\n      \n        start\n        end\n      }\n    }\n  }\n       }\n       locationDetail {\n           distance\n           unit\n           maxDistance\n           validForDelivery\n       }\n       }\n   }\n   `;\n\n    const testMode = localStorage.getItem(\"testmode\");\n\n\n\n    const goLive = 1;\n\n\n    if (goLive === 1) {\n\n        // Test mode enabled, perform alternative fetch request\n        const url = 'https://www.almapos.com/api/get_store_by_latlong';\n        const data = new URLSearchParams();\n        data.append('lat', latitude);\n        data.append('long', longitude);\n       // data.append('store', 'Doobie');\n\n        fetch(url, {\n            method: 'POST',\n            body: data,\n            headers: {\n                'Content-Type': 'application/x-www-form-urlencoded'\n            }\n        })\n            .then(response =&gt; response.json())\n            .then((result) =&gt; {\n\n                console.log('starting address set');\n                localStorage.setItem(\"lastApiCallTimestamp\", \"\");\n\n\n                var available = false;\n                var expressavailable = false;\n                var scheduledavailable = false;\n                $('.setexpress').removeClass('active');\n\n                $('.setexpress').removeClass('available');\n                $('.setexpress').removeClass('disabled');\n                $('.setscheduled').removeClass('disabled');\n                $('.setscheduled').removeClass('available');\n                $('.setscheduled').removeClass('active');\n                $('.setexpress .expressdesc').html('30-60 MINS');\n\n                localStorage.setItem(\"expressAvailable\", 0);\n                localStorage.setItem(\"scheduledAvailable\", 0);\n                localStorage.setItem(\"expressRetailerName\", \"\");\n                localStorage.setItem(\"scheduledRetailerName\", \"\");\n                localStorage.setItem(\"scheduledRetailerId\", \"\");\n                localStorage.setItem(\"expressRetailerId\", \"\");\n\n\n                console.log(result);\n                console.log('end address set');\n\n                for (var retailer of result)\n                {\n\n                    if(retailer.bulk_weights == 1) {\n                        localStorage.setItem(\"testadd\", 1);\n                    } else {\n                        localStorage.setItem(\"testadd\", false);\n\n                    }\n\n\n\n\n\n                    localStorage.setItem(\"retailerId\", retailer.details.storeToken);\n\n\n                            localStorage.setItem(\"scheduledRetailerId\", retailer.details.storeToken);\n                            localStorage.setItem(\"scheduledAvailable\", 1);\n                            localStorage.setItem(\"scheduledRetailerName\", retailer.details.storeName);\n                            localStorage.setItem(\"minimum_spend\", retailer.details.minimum_spend);\n                    localStorage.setItem(\"schedule_start\", retailer.details.schedule_start);\n                    localStorage.setItem(\"schedule_end\", retailer.details.schedule_end);\n                    localStorage.setItem(\"storeExpress\", retailer.details.storeExpress);\n                    localStorage.setItem(\"orderAheadCutOff\", retailer.details.orderAheadCutOff);\n                    console.log(retailer.details);\n                    console.log('retailer id'+retailer.details.area_id);\n                    localStorage.setItem(\"areaId\", retailer.details.area_id);\n\n                  //  var checkoutId =  localStorage.getItem(retailer.details.storeToken+\"_checkoutId\");\n\n                   // var areaId = retailer.details.area_id; // Set the areaId\n\n\n\n                          //  localStorage.setItem(\"scheduledDeliveryFee\", retailer.retailer.deliverySettings.drawnZones[0].fee);\n                          //  localStorage.setItem(\"scheduledDeliveryMin\", retailer.retailer.deliverySettings.drawnZones[0].deliveryMinimum);\n\n\n                        available = true;\n                        scheduledavailable = true;\n                    console.log('start retailer');\n\n                    console.log(retailer);\n                    console.log('end retailer');\n\n\n\n\n\n\n\n\n                }\n\n                if(available == false) {\n\n                    console.log(address1);\n                    console.log(address2);\n                    console.log(address3);\n\n                    var gohemp = true;\n\n                    let result = address2.includes(\"ID\");\n                    if(result == true) {\n                        gohemp = false;\n                    }\n\n                    let result2 = address2.includes(\"DC\");\n                    if(result2 == true) {\n                        gohemp = false;\n                    }\n\n                    if(gohemp == true) {\n                        window.location = 'https://hemp.trydoobie.com/?utm_source=doobie&amp;utm_medium=search&amp;utm_campaign=doobie_website';\n                    } else {\n                        $('.setdeliveryfinal').addClass('disabled');\n                        $('.setdeliveryfinal').prop('disabled', true);\n\n                        $('.nodelivery').removeClass('hidden');\n                        $('#address_sel').val('');\n                    }\n\n\n\n                    // window.location = '/shop-hemp/';\n                } else {\n\n                    $('.setdeliveryfinal').removeClass('disabled');\n                    $('.setdeliveryfinal').prop('disabled', false);\n\n                    $('.nodelivery').addClass('hidden');\n\n                    if(expressavailable == true) {\n                        $('.setexpress').addClass('available');\n                        $('.setexpress').addClass('active');\n                        $('#fill_type').val(1);\n\n\n                    } else {\n                        $('#fill_type').val(2);\n                        $('.setexpress').addClass('disabled');\n                        $('.setscheduled').addClass('active');\n                        $('.setexpress .expressdesc').html('NOT AVAILABLE');\n\n\n                    }\n\n                    if(scheduledavailable == true) {\n                        $('.setscheduled').addClass('available');\n                    } else {\n                        $('.setscheduled').addClass('disabled');\n\n                    }\n\n                    $('.inputdelivery').addClass('hidden');\n                    $('.deliverydetails').removeClass('hidden');\n\n                    $('.inneraddressset').html(address1);\n                    $('.innercityset').html(address2);\n\n                }\n\n\n\n            })\n            .catch(err =&gt; console.log(err));\n\n    } else {\n        fetch(plusUrl, {\n            method: 'POST',\n            headers:  {\n                'Content-Type': 'application/json',\n                'authorization': authtoken\n            },\n            body: JSON.stringify({\n                query: geoQuery,\n                variables: {\n                    location: {\n                        coordinates: {\n                            latitude: latitude,\n                            longitude: longitude\n                        }\n                    }\n                }\n            })\n        })\n            .then(res =&gt; res.json())\n            .then((result) =&gt; {\n\n                var available = false;\n                var expressavailable = false;\n                var scheduledavailable = false;\n                $('.setexpress').removeClass('active');\n\n                $('.setexpress').removeClass('available');\n                $('.setexpress').removeClass('disabled');\n                $('.setscheduled').removeClass('disabled');\n                $('.setscheduled').removeClass('available');\n                $('.setscheduled').removeClass('active');\n                $('.setexpress .expressdesc').html('30-60 MINS');\n\n                localStorage.setItem(\"expressAvailable\", 0);\n                localStorage.setItem(\"scheduledAvailable\", 0);\n                localStorage.setItem(\"expressRetailerName\", \"\");\n                localStorage.setItem(\"scheduledRetailerName\", \"\");\n                localStorage.setItem(\"scheduledRetailerId\", \"\");\n                localStorage.setItem(\"expressRetailerId\", \"\");\n\n\n                console.log(result);\n\n                for (var retailer of result.data.retailersNearLocation)\n                {\n\n\n\n\n\n                    if(retailer.retailer.name == \"Doobie NYC Express\") {\n                        if(retailer.locationDetail.validForDelivery == true) {\n\n                            localStorage.setItem(\"expressRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"expressAvailable\", 1);\n                            localStorage.setItem(\"expressRetailerName\", retailer.retailer.name);\n\n                            localStorage.setItem(\"expressDeliveryFee\", retailer.retailer.deliverySettings.drawnZones[0].fee);\n                            localStorage.setItem(\"expressDeliveryMin\", retailer.retailer.deliverySettings.drawnZones[0].deliveryMinimum);\n\n                            available = true;\n                            expressavailable = true;\n                        }\n                    }\n\n\n                    if(retailer.retailer.name == \"Doobie NYC by USQTA\") {\n                        if(retailer.locationDetail.validForDelivery == true) {\n\n                            localStorage.setItem(\"scheduledRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"scheduledAvailable\", 1);\n                            localStorage.setItem(\"scheduledRetailerName\", retailer.retailer.name);\n\n                            localStorage.setItem(\"scheduledDeliveryFee\", retailer.retailer.deliverySettings.drawnZones[0].fee);\n                            localStorage.setItem(\"scheduledDeliveryMin\", retailer.retailer.deliverySettings.drawnZones[0].deliveryMinimum);\n\n\n                            available = true;\n                            scheduledavailable = true;\n\n\n                        }\n                    }\n\n\n                    if(retailer.retailer.name == \"Doobie Buffalo\") {\n                        if(retailer.locationDetail.validForDelivery == true) {\n\n                            localStorage.setItem(\"scheduledRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"scheduledAvailable\", 1);\n                            localStorage.setItem(\"scheduledRetailerName\", retailer.retailer.name);\n\n                            localStorage.setItem(\"scheduledDeliveryFee\", retailer.retailer.deliverySettings.drawnZones[0].fee);\n                            localStorage.setItem(\"scheduledDeliveryMin\", retailer.retailer.deliverySettings.drawnZones[0].deliveryMinimum);\n\n\n                            available = true;\n                            scheduledavailable = true;\n\n\n                        }\n                    }\n\n\n                    if(retailer.retailer.name == \"Doobie Brooklyn\") {\n                        if(retailer.locationDetail.validForDelivery == true) {\n\n                            localStorage.setItem(\"expressRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"expressAvailable\", 1);\n                            localStorage.setItem(\"expressRetailerName\", retailer.retailer.name);\n\n                            localStorage.setItem(\"expressDeliveryFee\", retailer.retailer.deliverySettings.drawnZones[0].fee);\n                            localStorage.setItem(\"expressDeliveryMin\", retailer.retailer.deliverySettings.drawnZones[0].deliveryMinimum);\n\n\n                            localStorage.setItem(\"scheduledRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"scheduledAvailable\", 1);\n                            localStorage.setItem(\"scheduledRetailerName\", retailer.retailer.name);\n\n                            localStorage.setItem(\"scheduledDeliveryFee\", retailer.retailer.deliverySettings.drawnZones[0].fee);\n                            localStorage.setItem(\"scheduledDeliveryMin\", retailer.retailer.deliverySettings.drawnZones[0].deliveryMinimum);\n\n                            scheduledavailable = true;\n\n                            available = true;\n                            expressavailable = true;\n                        }\n                    }\n\n                    if(retailer.retailer.name == \"Doobie St. Louis - West\") {\n                        if (retailer.locationDetail.validForDelivery == true) {\n                            localStorage.setItem(\"expressAvailable\", 0);\n                            localStorage.setItem(\"expressRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"retailerId\", retailer.retailer.id);\n\n                            localStorage.setItem(\"scheduledRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"scheduledAvailable\", 1);\n                            localStorage.setItem(\"scheduledRetailerName\", retailer.retailer.name);\n\n                            localStorage.setItem(\"scheduledDeliveryFee\", retailer.retailer.deliverySettings.drawnZones[0].fee);\n                            localStorage.setItem(\"scheduledDeliveryMin\", retailer.retailer.deliverySettings.drawnZones[0].deliveryMinimum);\n\n\n                            available = true;\n                            scheduledavailable = true;\n\n                            // Get today's date\n                            var today = new Date();\n\n// Check if today is August 25th\n                            if (today.getMonth() === 7 &amp;&amp; today.getDate() === 25) { // getMonth() is 0-indexed, so August is month 7\n                                Swal.fire({\n                                    icon: \"error\",\n                                    title: \"Notice\",\n                                    text: \"St. Louis delivery will be closed on Sunday, 08/25, and will reopen on Monday, 08/26.\\n\"\n                                });\n                            }\n\n\n\n                        }\n                    }\n\n                    if(retailer.retailer.name == \"Doobie St. Louis - East\") {\n                        if (retailer.locationDetail.validForDelivery == true) {\n                            localStorage.setItem(\"expressAvailable\", 0);\n                            localStorage.setItem(\"expressRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"retailerId\", retailer.retailer.id);\n\n                            localStorage.setItem(\"scheduledRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"scheduledAvailable\", 1);\n                            localStorage.setItem(\"scheduledRetailerName\", retailer.retailer.name);\n\n                            localStorage.setItem(\"scheduledDeliveryFee\", retailer.retailer.deliverySettings.drawnZones[0].fee);\n                            localStorage.setItem(\"scheduledDeliveryMin\", retailer.retailer.deliverySettings.drawnZones[0].deliveryMinimum);\n\n\n                            available = true;\n                            scheduledavailable = true;\n\n                            // Get today's date\n                            var today = new Date();\n\n// Check if today is August 25th\n                            if (today.getMonth() === 7 &amp;&amp; today.getDate() === 25) { // getMonth() is 0-indexed, so August is month 7\n                                Swal.fire({\n                                    icon: \"error\",\n                                    title: \"Notice\",\n                                    text: \"St. Louis delivery will be closed on Sunday, 08/25, and will reopen on Monday, 08/26.\\n\"\n                                });\n                            }\n\n\n\n                        }\n                    }\n\n                    if(retailer.retailer.name == \"Doobie MA\") {\n                        if(retailer.locationDetail.validForDelivery == true) {\n                            localStorage.setItem(\"expressAvailable\", 0);\n                            localStorage.setItem(\"expressRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"retailerId\", retailer.retailer.id);\n\n                            localStorage.setItem(\"scheduledRetailerId\", retailer.retailer.id);\n                            localStorage.setItem(\"scheduledAvailable\", 1);\n                            localStorage.setItem(\"scheduledRetailerName\", retailer.retailer.name);\n\n                            localStorage.setItem(\"scheduledDeliveryFee\", retailer.retailer.deliverySettings.drawnZones[0].fee);\n                            localStorage.setItem(\"scheduledDeliveryMin\", retailer.retailer.deliverySettings.drawnZones[0].deliveryMinimum);\n\n\n                            available = true;\n                            scheduledavailable = true;\n\n\n                        } else {\n\n                            if(retailer.locationDetail.distance &lt; 120) {\n\n                                localStorage.setItem(\"expressAvailable\", 0);\n                                localStorage.setItem(\"expressRetailerId\", retailer.retailer.id);\n                                localStorage.setItem(\"retailerId\", retailer.retailer.id);\n\n                                localStorage.setItem(\"scheduledRetailerId\", retailer.retailer.id);\n                                localStorage.setItem(\"scheduledAvailable\", 1);\n                                localStorage.setItem(\"scheduledRetailerName\", retailer.retailer.name);\n\n                                localStorage.setItem(\"scheduledDeliveryFee\", retailer.retailer.deliverySettings.drawnZones[0].fee);\n                                localStorage.setItem(\"scheduledDeliveryMin\", retailer.retailer.deliverySettings.drawnZones[0].deliveryMinimum);\n\n\n                                available = true;\n                                scheduledavailable = true;\n\n                            }\n\n                        }\n                    }\n\n\n\n                }\n\n                if(available == false) {\n\n                    console.log(address1);\n                    console.log(address2);\n                    console.log(address3);\n\n                    var gohemp = true;\n\n                    let result = address2.includes(\"ID\");\n                    if(result == true) {\n                        gohemp = false;\n                    }\n\n                    let result2 = address2.includes(\"DC\");\n                    if(result2 == true) {\n                        gohemp = false;\n                    }\n\n                    if(gohemp == true) {\n                        window.location = 'https://hemp.trydoobie.com/?utm_source=doobie&amp;utm_medium=search&amp;utm_campaign=doobie_website';\n                    } else {\n                        $('.setdeliveryfinal').addClass('disabled');\n                        $('.setdeliveryfinal').prop('disabled', true);\n\n                        $('.nodelivery').removeClass('hidden');\n                        $('#address_sel').val('');\n                    }\n\n\n\n                    // window.location = '/shop-hemp/';\n                } else {\n\n                    $('.setdeliveryfinal').removeClass('disabled');\n                    $('.setdeliveryfinal').prop('disabled', false);\n\n                    $('.nodelivery').addClass('hidden');\n\n                    if(expressavailable == true) {\n                        $('.setexpress').addClass('available');\n                        $('.setexpress').addClass('active');\n                        $('#fill_type').val(1);\n\n\n                    } else {\n                        $('#fill_type').val(2);\n                        $('.setexpress').addClass('disabled');\n                        $('.setscheduled').addClass('active');\n                        $('.setexpress .expressdesc').html('NOT AVAILABLE');\n\n\n                    }\n\n                    if(scheduledavailable == true) {\n                        $('.setscheduled').addClass('available');\n                    } else {\n                        $('.setscheduled').addClass('disabled');\n\n                    }\n\n                    $('.inputdelivery').addClass('hidden');\n                    $('.deliverydetails').removeClass('hidden');\n\n                    $('.inneraddressset').html(address1);\n                    $('.innercityset').html(address2);\n\n                }\n\n\n\n            })\n            .catch(err =&gt; console.log(err))\n    }\n\n\n\n\n}\n\n\nconst drawWeights = (weights) =&gt; {\n\n\n\n\n    let app = document.querySelector('#filter_weights');\n\n    $( \"#filter_weights\" ).empty();\n\n\n\n    let weightItem = document.querySelector('#filter-item');\n\n\n\n    var count = 0;\n    weights.forEach(obj =&gt; {\n        let weight = weightItem.content.cloneNode(true).querySelector('div');\n\n        let input = weight.querySelector('.filterinput');\n        let label = weight.querySelector('.filterlabel');\n\n\n        input.id = obj;\n        input.name = 'weights';\n        label.textContent = obj;\n        label.htmlFor = obj;\n        input.value = obj;\n\n\n        app.append(weight);\n\n\n    });\n\n\n}\n\nconst drawVariants = (variants) =&gt; {\n\n\n    let app = document.querySelector('#variants');\n    $( \"#variants\" ).empty();\n    let variantItem = document.querySelector('#variant-item');\n\n    var count = 0;\n    variants.forEach(obj =&gt; {\n\n\n        count = count+1;\n\n\n\n\n        let variant = variantItem.content.cloneNode(true).querySelector('div');\n        let input = variant.querySelector('.variantinput');\n        let label = variant.querySelector('.variantlabel');\n        let price = variant.querySelector('.variantprice');\n        let weight = variant.querySelector('.variantweight');\n\n        if(count == 1) {\n            input.checked = true;\n            $('.singleadd').attr('data-option',obj.option);\n\n        }\n\n\n        weight.textContent = obj.option;\n        price.textContent = '$'+obj.priceRec.toFixed(2);\n\n        input.id = obj.id;\n        input.value = obj.option;\n\n        input.name = 'variant';\n        label.htmlFor = obj.id;\n\n\n        app.append(variant);\n\n\n    });\n\n\n}\n\n\nconst drawBrands = (brands) =&gt; {\n\n\n\n\n    let app = document.querySelector('#filter_brand');\n    let more = document.querySelector('#more_brand');\n\n    $( \"#filter_brand\" ).empty();\n    $( \"#more_brand\" ).empty();\n    let viewmorewrap = document.querySelector('.viewmorebrands');\n    viewmorewrap.classList.add(\"hidden\");\n\n\n    var singlebrand = false;\n    if(brands.length == 1) {\n        singlebrand = true;\n    }\n    let brandItem = document.querySelector('#filter-item');\n\n\n\n    var count = 0;\n    brands.forEach(obj =&gt; {\n        let brand = brandItem.content.cloneNode(true).querySelector('div');\n\n        let input = brand.querySelector('.filterinput');\n        let label = brand.querySelector('.filterlabel');\n\n\n        input.id = obj.id;\n        input.name = 'brand';\n        label.textContent = obj.name;\n        label.htmlFor = obj.id;\n        input.value = obj.id;\n\n        if(singlebrand == true) {\n            input.checked = true;\n        }\n\n        count = count+1;\n\n        if(count &gt; 10) {\n            viewmorewrap.classList.remove(\"hidden\");\n\n            more.append(brand);\n        } else {\n            app.append(brand);\n        }\n\n\n    });\n\n\n}\nconst drawCart = (cart) =&gt; {\n\n\n\n    let cartwrapper = document.querySelector('#cart-wrapper');\n\n\n\n    let subtotal = cartwrapper.querySelector('.cart-subtotal');\n    var cartsubtotal = cart.data.checkout.priceSummary.subtotal/100;\n    cartsubtotal = cartsubtotal.toFixed(2);\n    subtotal.textContent = cartsubtotal;\n\n\n    let discountswrapper = cartwrapper.querySelector('.cart-discounts-wrapper');\n\n    let discounts = cartwrapper.querySelector('.cart-discounts');\n    var cartdiscounts = cart.data.checkout.priceSummary.discounts/100;\n    cartdiscount = cartdiscounts.toFixed(2);\n    discounts.textContent = cartdiscount;\n    if(cartdiscounts &gt; 0) {\n        discountswrapper.classList.remove(\"hidden\");\n\n    } else {\n        discountswrapper.classList.add(\"hidden\");\n\n    }\n\n\n\n    let taxes = cartwrapper.querySelector('.cart-taxes');\n    var carttaxes = cart.data.checkout.priceSummary.taxes/100;\n    carttaxes = carttaxes.toFixed(2);\n    taxes.textContent = carttaxes;\n\n\n    let total = cartwrapper.querySelector('.cart-total');\n    var carttotal = cart.data.checkout.priceSummary.total/100;\n    carttotal = carttotal.toFixed(2);\n    total.textContent = carttotal;\n\n\n\n\n\n\n\n    let totalsecond = cartwrapper.querySelector('.cart-total-second');\n    var carttotal = cart.data.checkout.priceSummary.total/100;\n    carttotal = carttotal.toFixed(2);\n    totalsecond.textContent = '$'+carttotal;\n    const testMode = localStorage.getItem(\"testmode\");\n\n    const goLive = 1;\n\n\n    if(goLive === 1) {\n        // Assume cartsubtotal and minimum_spend are already calculated\n\n        let cartsubtotal = parseFloat(cart.data.checkout.priceSummary.subtotal / 100).toFixed(2);\n        let minimum_spend = parseFloat(localStorage.getItem(\"minimum_spend\")) || 0;\n\n\n// Calculate the percentage towards the minimum spend\n        let percentage = minimum_spend === 0\n            ? 100\n            : (cartsubtotal / minimum_spend) * 100;\n\n\n\n// Get the elements\n        let thermometerFill = document.getElementById('thermometer-fill');\n        let amountToSpendText = document.getElementById('amount-to-spend');\n        let checkoutWrapper = document.querySelector('.checkout-wrapper');\n        let cartThermometerWrapper = document.querySelector('.cart-thermometer-wrapper');\n\n// Update the thermometer fill based on the percentage\n        if (percentage &gt; 100) {\n            percentage = 100; // Cap at 100%\n        }\n        thermometerFill.style.width = percentage + '%';\n\n// Calculate how much more is needed to reach the minimum spend\n        let amountToSpend = (minimum_spend - cartsubtotal).toFixed(2);\n\n// Logic to show or hide elements based on the spend\n        if (amountToSpend &lt;= 0) {\n            amountToSpendText.textContent = \"You're ready to checkout!\";\n            amountToSpendText.style.color = \"#10b981\"; // Green text when ready to checkout\n\n            // Remove hidden class from checkout button wrapper to show it\n            checkoutWrapper.classList.remove('hidden');\n\n            // Hide the cart thermometer as they are ready to checkout\n            cartThermometerWrapper.classList.add('hidden');\n        } else {\n            // Show how much more needs to be spent\n            amountToSpendText.textContent = '$' + amountToSpend;\n\n            // Remove hidden class from the thermometer wrapper to show it\n            cartThermometerWrapper.classList.remove('hidden');\n\n            // Hide the checkout button if the minimum spend hasn't been reached\n            checkoutWrapper.classList.add('hidden');\n        }\n\n\n    }\n\n\n    let checkouturl = cartwrapper.querySelector('.checkout-url');\n    var minimum_spend =  localStorage.getItem(\"minimum_spend\");\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n    var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n\n\n\n    if(retailer == '5e4dba92-8dbf-4ba2-a6e4-55c9a381c2ec') {\n        checkouturl.href = cart.data.checkout.redirectUrl;\n    } else {\n\n        const testMode = localStorage.getItem(\"testmode\");\n\n        if (testMode === \"1\") {\n            checkouturl.href = \"/checkout-new/\"+retailer+\"/\"+checkoutId;\n        } else {\n\n\n            if (\n                retailer === 'a8acceb2-b3be-4880-b89e-bc0143be8e12' ||\n                retailer === 'b3d67e70-b1d1-4d57-82a7-699b38bbfc35' ||\n                retailer === 'dae5bc1a-935a-4d31-897d-33f95012b7a4' ||\n                retailer === '4c3be0d9-08a1-49f8-a513-f9d2ad73884e'\n            ) {\n                checkouturl.href = \"/checkout-new/\"+retailer+\"/\"+checkoutId;\n            } else {\n                checkouturl.href = \"/checkout-new/\"+retailer+\"/\"+checkoutId;\n            }\n\n\n        }\n\n\n\n\n    }\n\n\n\n    var cartitem = cart.data.checkout.items;\n\n    var quantity = 0;\n    cartitem.forEach(obj =&gt; {\n        quantity = quantity + obj.quantity;\n    });\n\n    let count = document.querySelector('#cart-count');\n    count.textContent = quantity;\n\n\n    var secondCount = document.getElementsByClassName('cart-count');\n    if (secondCount.length &gt; 0) {\n        let count2 = document.querySelector('.cart-count');\n        count2.textContent = quantity;\n    }\n\n\n\n    let cartbox = document.querySelector('#cart-item');\n    let cartresults = document.querySelector('#cartresults');\n\n\n    $( \"#cartresults\" ).empty();\n\n\n    cartitem.forEach(obj =&gt; {\n\n\n\n\n\n        let cartcard = cartbox.content.cloneNode(true).querySelector('div');\n\n        let img2 = cartcard.querySelector('.p-img');\n        var finalimg = obj.product.image;\n        var finalimg = finalimg+'?w=544&amp;h=544';\n        img2.src = finalimg;\n\n\n        let brand = cartcard.querySelector('.brand');\n        brand.textContent = obj.product.brand.name;\n\n\n        let product = cartcard.querySelector('.product-title');\n        product.textContent = obj.product.name;\n\n\n        let weight = cartcard.querySelector('.product-weight');\n        weight.textContent = obj.option;\n\n\n        let price = cartcard.querySelector('.price');\n\n        var variantoption = 0;\n        for (i = 0; i &lt; obj.product.variants.length; ++i) {\n            if(obj.product.variants[i].option == obj.option) {\n                variantoption = i;\n            }\n        }\n\n\n\n\n        if(obj.product.variants[variantoption].specialPriceRec) {\n            price.textContent = obj.product.variants[variantoption].specialPriceRec.toFixed(2);\n\n        } else {\n            price.textContent = obj.product.variants[variantoption].priceRec.toFixed(2);\n\n        }\n\n\n\n\n\n\n\n\n\n        let removefromcart = cartcard.querySelector('.removefromcart');\n        removefromcart.dataset.id = obj.id;\n\n\n        let changeamount = cartcard.querySelector('.changeamount');\n        changeamount.dataset.id = obj.product.id;\n        changeamount.dataset.cartid = obj.id;\n        changeamount.dataset.option = obj.option;\n        changeamount.value = obj.quantity;\n\n\n        cartresults.append(cartcard);\n\n\n\n    });\n\n\n}\n\n\nconst drawDeals = (deals) =&gt; {\n\n\n    let dealswrapper = document.querySelector('#dealswrapper');\n\n\n    let dealbox = document.querySelector('#deal-item');\n    let dealresults = document.querySelector('#dealresults');\n\n\n    $( \"#dealresults\" ).empty();\n\n\n    let dealitem = deals.data.specials;\n\n\n\n    dealitem.forEach(obj =&gt; {\n\n\n\n\n        let dealcard = dealbox.content.cloneNode(true).querySelector('div');\n\n\n        let dealtitle = dealcard.querySelector('.deal-title');\n        dealtitle.textContent = obj.name;\n\n\n        let dealid = dealcard.querySelector('.dealid');\n        dealid.id = 'deal_'+obj.id;\n\n        let dealid2 = dealcard.querySelector('.dealid2');\n\n        dealid2.setAttribute('data-div', 'deal_'+obj.id);\n        dealid2.setAttribute('data-special', obj.id);\n\n\n\n        dealresults.append(dealcard);\n\n\n\n    });\n\n    $('.setcategory').trigger('click');\n\n}\n\n\nconst drawProductCardsNew = (data, divresult, onsaleonly = false) =&gt; {\n\n\n\n\n\n    let subcategory = [];\n    let app = document.querySelector('#'+divresult);\n    $( \"#\"+divresult ).empty();\n\n    var skip = false;\n\n    let productItem = document.querySelector('#product-card-home');\n    //  let div = document.createElement('div');\n\n\n    data.forEach(obj =&gt; {\n\n\n        let product = productItem.content.cloneNode(true).querySelector('div');\n        // product.textContent = value;\n        skip = false;\n\n\n\n        Object.entries(obj).forEach(([key, value]) =&gt; {\n\n\n\n\n\n\n            if(key == 'subcategory') {\n                let subcategorytext = product.querySelector('.subcategory');\n                subcategorytext.textContent = value;\n                subcategory.push(value);\n            }\n\n\n            if(key == 'category') {\n                let categorytext = product.querySelector('.category');\n                categorytext.textContent = value;\n\n            }\n\n            if(key == 'variants') {\n\n\n\n\n\n\n\n                let size = product.querySelector('.size');\n\n\n\n                if(obj.category == 'EDIBLES') {\n                    size.textContent = \" \";\n\n                } else {\n                    size.textContent = value[0].option;\n\n                }\n\n                let price = product.querySelector('.price');\n                let pricesale = product.querySelector('.pricesale');\n                //   let pricewas = product.querySelector('.pricewas');\n\n                if(value[0].specialPriceRec) {\n                    let sale = product.querySelector('.sale');\n                    sale.classList.remove(\"hidden\");\n\n                    let normal = product.querySelector('.normal');\n                    normal.classList.add(\"saleactive\");\n\n\n                    //    let onsalebox = product.querySelector('.onsalebox');\n                    //     onsalebox.classList.remove(\"hidden\");\n\n                    let onsaleboxsmaller = product.querySelector('.onsaleboxsmaller');\n                    onsaleboxsmaller.classList.remove(\"hidden\");\n\n\n                    pricesale.textContent = value[0].priceRec.toFixed(2);\n                    price.textContent = value[0].specialPriceRec.toFixed(2);\n                    //  pricewas.textContent = '$'+value[0].priceRec.toFixed(2);\n                } else {\n                    if(onsaleonly == 1) {\n                        skip = true;\n                    }\n                    price.textContent = value[0].priceRec.toFixed(2);\n\n                }\n\n\n\n            }\n\n\n\n            if(key == 'slug') {\n\n\n                let ahref = product.querySelector('.productlink');\n                ahref.href ='/products/'+value;\n\n\n                let ahref2 = product.querySelector('.productlink2');\n                ahref2.href = '/products/'+value;\n\n\n\n            }\n\n\n            if(key == 'image') {\n                let img = product.querySelector('.img1');\n                let img2 = product.querySelector('.p-img');\n                var finalimg = value;\n                var finalimg = finalimg+'?w=544&amp;h=544';\n                img.src = finalimg;\n                img2.src = finalimg;\n\n\n            }\n\n\n\n            if(key == 'potencyThc') {\n                let thc = product.querySelector('.thc');\n                thc.textContent = value.formatted;\n            }\n\n\n\n\n\n            if(key == 'slug') {\n                let ahref = product.querySelector('.productlink');\n                ahref.href = '/products/'+value;\n\n\n                let ahref2 = product.querySelector('.productlink2');\n                ahref2.href = '/products/'+value;\n            }\n\n            if(key == 'name') {\n                let name = product.querySelector('.producttitle');\n                name.textContent = value;\n            }\n\n            if(key == 'variants') {\n\n                let name = product.querySelector('.addtocart');\n                name.dataset.option = value[0].option;\n\n                // Check if size-options exist and update their data-option\n                const sizeOptions = product.querySelectorAll('.size-options .addtocart.option');\n                if (sizeOptions.length &gt; 0) {\n                    sizeOptions.forEach((option) =&gt; {\n                        option.dataset.option = value[0].option;\n                    });\n                }\n\n            }\n\n            if(key == 'id') {\n                let name = product.querySelector('.addtocart');\n                name.dataset.id = value;\n\n                let productlink = product.querySelector('.productlink');\n                productlink.dataset.id = value;\n\n                let sizeOptionsContainer = product.querySelector('.size-options');\n                if (sizeOptionsContainer) {\n                    let sizeOptions = sizeOptionsContainer.querySelectorAll('.addtocart.option');\n                    sizeOptions.forEach(option =&gt; {\n                        option.dataset.id = value;\n                    });\n                }\n\n            }\n\n            if(key == 'brand') {\n\n                let brand = product.querySelector('.brand');\n                if (typeof value.name === 'undefined') {\n                    brand.textContent = \"\";\n                }\n                else {\n                    brand.textContent = value.name;\n                }\n\n            }\n\n\n            if(key == 'strainType') {\n                if(value !== 'NOT_APPLICABLE') {\n\n\n\n                    if(value == 'HIGH_CBD') {\n                        let strain = product.querySelector('.strain');\n                        strain.textContent = 'High CBD';\n                    } else {\n\n\n                        if(value == 'INDICA_HYBRID') {\n                            var newvalue = 'INDICA HYBRID';\n                        } else {\n\n\n                            if(value == 'SATIVA_HYBRID') {\n                                var newvalue = 'SATIVA HYBRID';\n\n                            } else {\n                                var newvalue = value;\n\n                            }\n\n                        }\n\n\n\n\n                        let strain = product.querySelector('.strain');\n                        strain.classList.add(value.toLowerCase());\n                        strain.textContent = newvalue;\n                    }\n\n\n                } else {\n                    let strain = product.querySelector('.strain');\n                    strain.textContent = '';\n                }\n            }\n\n\n        });\n        if(skip == false) {\n            app.append(product);\n\n\n\n        }\n    });\n\n\n    var testadd =  localStorage.getItem(\"testadd\");\n\n\n\n    if (testadd == \"1\") {\n        // Function to process button containers\n        function processButtonContainers() {\n            document.querySelectorAll(\".button-container\").forEach((container) =&gt; {\n                const button = container.querySelector(\".addtocart\");\n                const sizeOptions = container.querySelector(\".size-options\");\n                const options = sizeOptions.querySelectorAll(\".option\");\n\n                // Hide dropdown by default\n                sizeOptions.style.display = \"none\";\n\n                // Add hover event listeners\n                container.addEventListener(\"mouseenter\", () =&gt; {\n                    const currentOption = button.getAttribute(\"data-option\");\n                    const hasValidOptions = filterOptions(currentOption, options);\n\n                    if (hasValidOptions) {\n                        sizeOptions.style.display = \"flex\"; // Show dropdown if valid options exist\n                    } else {\n                        sizeOptions.style.display = \"none\"; // Hide dropdown if no valid options\n                    }\n                });\n\n                container.addEventListener(\"mouseleave\", () =&gt; {\n                    sizeOptions.style.display = \"none\"; // Hide dropdown on mouse leave\n                });\n\n                // Function to filter options based on the button's data-option\n                function filterOptions(currentOption, options) {\n                    let validOptionExists = false;\n\n                    options.forEach((option) =&gt; {\n                        const optionValue = option.getAttribute(\"data-filteroption\");\n                        const filterOption = option.getAttribute(\"data-filteroption\");\n\n                        // Reset all options to hidden by default\n                        option.style.display = \"none\";\n\n                        // Check allowed options for currentOption and set data-quantity\n                        if (currentOption === \"1/8oz\" &amp;&amp; [\"1/8oz\", \"1/4oz\", \"1/2oz\", \"1oz\"].includes(optionValue)) {\n                            if (filterOption === \"1/8oz\") {\n                                option.setAttribute(\"data-quantity\", \"1\");\n                            } else if (filterOption === \"1/4oz\") {\n                                option.setAttribute(\"data-quantity\", \"2\");\n                            } else if (filterOption === \"1/2oz\") {\n                                option.setAttribute(\"data-quantity\", \"4\");\n                            } else if (filterOption === \"1oz\") {\n                                option.setAttribute(\"data-quantity\", \"8\");\n                            }\n                            option.style.display = \"block\"; // Show valid options\n                            validOptionExists = true;\n                        } else if (currentOption === \"1/4oz\" &amp;&amp; [\"1/4oz\", \"1/2oz\", \"1oz\"].includes(optionValue)) {\n                            if (filterOption === \"1/2oz\") {\n                                option.setAttribute(\"data-quantity\", \"2\");\n                            } else if (filterOption === \"1oz\") {\n                                option.setAttribute(\"data-quantity\", \"4\");\n                            }\n                            option.style.display = \"block\"; // Show valid options\n                            validOptionExists = true;\n                        } else if (currentOption === \"1/2oz\" &amp;&amp; [\"1/2oz\", \"1oz\"].includes(optionValue)) {\n                            if (filterOption === \"1oz\") {\n                                option.setAttribute(\"data-quantity\", \"2\");\n                            }\n                            option.style.display = \"block\"; // Show valid options\n                            validOptionExists = true;\n                        }\n                    });\n\n                    return validOptionExists; // Return true if any valid option exists\n                }\n            });\n        }\n\n        // Observe the DOM for added nodes\n        const observer = new MutationObserver((mutationsList) =&gt; {\n            for (const mutation of mutationsList) {\n                if (mutation.type === \"childList\") {\n                    if (document.querySelector(\".button-container\")) {\n                        processButtonContainers();\n                    }\n                }\n            }\n        });\n\n        // Start observing the body for changes\n        observer.observe(document.body, { childList: true, subtree: true });\n\n        // Run the logic immediately in case the elements are already in the DOM\n        document.addEventListener(\"DOMContentLoaded\", processButtonContainers);\n    } else {\n        var sizeOptions = document.querySelector(\".size-options\");\n\n        // If the container exists, remove it\n        if (sizeOptions) {\n            sizeOptions.remove();\n        }\n    }\n\n\n    var unique = subcategory.filter(onlyUnique);\n    unique.sort();\n\n\n    var existcat = document.querySelector('input[name=\"category\"]');\n\n\n\n    if(existcat) {\n\n        var existingcat = document.querySelector('input[name=\"category\"]:checked').value;\n\n\n        if (existingcat == '') {\n\n        } else {\n\n            drawSubCats(unique);\n        }\n\n    }\n\n\n\n}\n\nconst drawProductCards = (data, divresult, onsaleonly = false) =&gt; {\n\n\n\n\n\n    let subcategory = [];\n    let app = document.querySelector('#'+divresult);\n    $( \"#\"+divresult ).empty();\n\n    var skip = false;\n\n    let productItem = document.querySelector('#product-card');\n    //  let div = document.createElement('div');\n\n\n    data.forEach(obj =&gt; {\n\n\n        let product = productItem.content.cloneNode(true).querySelector('div');\n        // product.textContent = value;\n        skip = false;\n\n\n\n        Object.entries(obj).forEach(([key, value]) =&gt; {\n\n\n\n\n\n\n            if(key == 'subcategory') {\n                let subcategorytext = product.querySelector('.subcategory');\n                subcategorytext.textContent = value;\n                subcategory.push(value);\n            }\n\n\n            if(key == 'category') {\n                let categorytext = product.querySelector('.category');\n                categorytext.textContent = value;\n\n            }\n            if(key == 'variants') {\n\n\n\n\n\n\n\n                let size = product.querySelector('.size');\n\n\n\n                if(obj.category == 'EDIBLES') {\n                    size.textContent = \" \";\n\n                } else {\n                    size.textContent = value[0].option;\n\n                }\n\n                let price = product.querySelector('.price');\n                let pricesale = product.querySelector('.pricesale');\n             //   let pricewas = product.querySelector('.pricewas');\n\n                if(value[0].specialPriceRec) {\n                    let sale = product.querySelector('.sale');\n                    sale.classList.remove(\"hidden\");\n\n                    let normal = product.querySelector('.normal');\n                    normal.classList.add(\"saleactive\");\n\n\n                //    let onsalebox = product.querySelector('.onsalebox');\n               //     onsalebox.classList.remove(\"hidden\");\n\n                    let onsaleboxsmaller = product.querySelector('.onsaleboxsmaller');\n                    onsaleboxsmaller.classList.remove(\"hidden\");\n\n\n                    pricesale.textContent = value[0].priceRec.toFixed(2);\n                    price.textContent = value[0].specialPriceRec.toFixed(2);\n                  //  pricewas.textContent = '$'+value[0].priceRec.toFixed(2);\n                } else {\n                    if(onsaleonly == 1) {\n                        skip = true;\n                    }\n                    price.textContent = value[0].priceRec.toFixed(2);\n\n                }\n\n\n\n            }\n\n\n\n            if(key == 'slug') {\n\n\n                let ahref = product.querySelector('.productlink');\n                ahref.href ='/products/'+value;\n\n\n                let ahref2 = product.querySelector('.productlink2');\n                ahref2.href = '/products/'+value;\n\n\n\n            }\n\n\n            if(key == 'image') {\n                let img = product.querySelector('.img1');\n                let img2 = product.querySelector('.p-img');\n                var finalimg = value;\n                var finalimg = finalimg+'?w=544&amp;h=544';\n                img.src = finalimg;\n                img2.src = finalimg;\n\n\n            }\n\n\n\n            if(key == 'potencyThc') {\n                let thc = product.querySelector('.thc');\n                thc.textContent = value.formatted;\n            }\n\n\n\n\n\n            if(key == 'slug') {\n                let ahref = product.querySelector('.productlink');\n                ahref.href = '/products/'+value;\n\n\n                let ahref2 = product.querySelector('.productlink2');\n                ahref2.href = '/products/'+value;\n            }\n\n            if(key == 'name') {\n                let name = product.querySelector('.producttitle');\n                name.textContent = value;\n            }\n\n\n\n            if(key == 'variants') {\n\n                let name = product.querySelector('.addtocart');\n                name.dataset.option = value[0].option;\n\n                // Check if size-options exist and update their data-option\n                const sizeOptions = product.querySelectorAll('.size-options .addtocart.option');\n                if (sizeOptions.length &gt; 0) {\n                    sizeOptions.forEach((option) =&gt; {\n                        option.dataset.option = value[0].option;\n                    });\n                }\n\n            }\n\n\n\n\n            if(key == 'id') {\n                let name = product.querySelector('.addtocart');\n                name.dataset.id = value;\n\n                let productlink = product.querySelector('.productlink');\n                productlink.dataset.id = value;\n\n                let sizeOptionsContainer = product.querySelector('.size-options');\n                if (sizeOptionsContainer) {\n                    let sizeOptions = sizeOptionsContainer.querySelectorAll('.addtocart.option');\n                    sizeOptions.forEach(option =&gt; {\n                        option.dataset.id = value;\n                    });\n                }\n\n            }\n\n            if(key == 'brand') {\n\n                let brand = product.querySelector('.brand');\n                if (typeof value.name === 'undefined') {\n                    brand.textContent = \"\";\n                }\n                else {\n                    brand.textContent = value.name;\n                }\n\n            }\n\n\n            if(key == 'strainType') {\n                if(value !== 'NOT_APPLICABLE') {\n\n\n\n                    if(value == 'HIGH_CBD') {\n                        let strain = product.querySelector('.strain');\n                        strain.textContent = 'High CBD';\n                    } else {\n\n\n                        if(value == 'INDICA_HYBRID') {\n                            var newvalue = 'INDICA HYBRID';\n                        } else {\n\n                            if(value == 'SATIVA_HYBRID') {\n                                var newvalue = 'SATIVA HYBRID';\n\n                            } else {\n                                var newvalue = value;\n\n                            }\n                        }\n\n                        let strain = product.querySelector('.strain');\n                        strain.classList.add(value.toLowerCase());\n                        strain.textContent = newvalue;\n                    }\n\n\n                } else {\n                    let strain = product.querySelector('.strain');\n                    strain.textContent = '';\n                }\n            }\n\n\n        });\n        if(skip == false) {\n            app.append(product);\n        }\n    });\n\n    var testadd =  localStorage.getItem(\"testadd\");\n\n\n\n    if (testadd == \"1\") {\n        // Function to process button containers\n        function processButtonContainers() {\n            document.querySelectorAll(\".button-container\").forEach((container) =&gt; {\n                const button = container.querySelector(\".addtocart\");\n                const sizeOptions = container.querySelector(\".size-options\");\n                const options = sizeOptions.querySelectorAll(\".option\");\n\n                // Hide dropdown by default\n                sizeOptions.style.display = \"none\";\n\n                // Add hover event listeners\n                container.addEventListener(\"mouseenter\", () =&gt; {\n                    const currentOption = button.getAttribute(\"data-option\");\n                    const hasValidOptions = filterOptions(currentOption, options);\n\n                    if (hasValidOptions) {\n                        sizeOptions.style.display = \"flex\"; // Show dropdown if valid options exist\n                    } else {\n                        sizeOptions.style.display = \"none\"; // Hide dropdown if no valid options\n                    }\n                });\n\n                container.addEventListener(\"mouseleave\", () =&gt; {\n                    sizeOptions.style.display = \"none\"; // Hide dropdown on mouse leave\n                });\n\n                // Function to filter options based on the button's data-option\n                function filterOptions(currentOption, options) {\n                    let validOptionExists = false;\n\n                    options.forEach((option) =&gt; {\n                        const optionValue = option.getAttribute(\"data-filteroption\");\n                        const filterOption = option.getAttribute(\"data-filteroption\");\n\n                        // Reset all options to hidden by default\n                        option.style.display = \"none\";\n\n                        // Check allowed options for currentOption and set data-quantity\n                        if (currentOption === \"1/8oz\" &amp;&amp; [\"1/8oz\", \"1/4oz\", \"1/2oz\", \"1oz\"].includes(optionValue)) {\n                            if (filterOption === \"1/8oz\") {\n                                option.setAttribute(\"data-quantity\", \"1\");\n                            } else if (filterOption === \"1/4oz\") {\n                                option.setAttribute(\"data-quantity\", \"2\");\n                            } else if (filterOption === \"1/2oz\") {\n                                option.setAttribute(\"data-quantity\", \"4\");\n                            } else if (filterOption === \"1oz\") {\n                                option.setAttribute(\"data-quantity\", \"8\");\n                            }\n                            option.style.display = \"block\"; // Show valid options\n                            validOptionExists = true;\n                        } else if (currentOption === \"1/4oz\" &amp;&amp; [\"1/4oz\", \"1/2oz\", \"1oz\"].includes(optionValue)) {\n                            if (filterOption === \"1/2oz\") {\n                                option.setAttribute(\"data-quantity\", \"2\");\n                            } else if (filterOption === \"1oz\") {\n                                option.setAttribute(\"data-quantity\", \"4\");\n                            }\n                            option.style.display = \"block\"; // Show valid options\n                            validOptionExists = true;\n                        } else if (currentOption === \"1/2oz\" &amp;&amp; [\"1/2oz\", \"1oz\"].includes(optionValue)) {\n                            if (filterOption === \"1oz\") {\n                                option.setAttribute(\"data-quantity\", \"2\");\n                            }\n                            option.style.display = \"block\"; // Show valid options\n                            validOptionExists = true;\n                        }\n                    });\n\n                    return validOptionExists; // Return true if any valid option exists\n                }\n            });\n        }\n\n        // Observe the DOM for added nodes\n        const observer = new MutationObserver((mutationsList) =&gt; {\n            for (const mutation of mutationsList) {\n                if (mutation.type === \"childList\") {\n                    if (document.querySelector(\".button-container\")) {\n                        processButtonContainers();\n                    }\n                }\n            }\n        });\n\n        // Start observing the body for changes\n        observer.observe(document.body, { childList: true, subtree: true });\n\n        // Run the logic immediately in case the elements are already in the DOM\n        document.addEventListener(\"DOMContentLoaded\", processButtonContainers);\n    }\n\n    var unique = subcategory.filter(onlyUnique);\n    unique.sort();\n\n\n    var existcat = document.querySelector('input[name=\"category\"]');\n\n\n\n    if(existcat) {\n\n        var existingcat = document.querySelector('input[name=\"category\"]:checked').value;\n\n\n        if (existingcat == '') {\n\n        } else {\n\n            drawSubCats(unique);\n        }\n\n    }\n\n\n\n}\nconst drawProductCardsCat = (data, divresult, minprice = false, maxprice = false, onsaleonly = false, isgridpage = false) =&gt; {\n\n\n\n\n    let app = document.querySelector('#'+divresult);\n    var skip = false;\n    $( \"#\"+divresult ).empty();\n\n    let productItem = document.querySelector('#product-card');\n\n\n\n    //  let div = document.createElement('div');\n\n\n    data.forEach(obj =&gt; {\n\n\n        let product = productItem.content.cloneNode(true).querySelector('div');\n        // product.textContent = value;\n\n\n\n        skip = false;\n\n\n\n        Object.entries(obj).forEach(([key, value]) =&gt; {\n\n\n\n            if(key == 'subcategory') {\n                subcategory.push(value);\n            }\n\n            if(key == 'variants') {\n                let size = product.querySelector('.size');\n                size.textContent = value[0].option;\n                let price = product.querySelector('.price');\n                let pricewas = product.querySelector('.pricewas');\n\n\n                if(value[0].specialPriceRec) {\n                    let sale = product.querySelector('.sale');\n                    sale.classList.remove(\"hidden\");\n                    price.textContent = value[0].specialPriceRec.toFixed(2);\n                    pricewas.textContent = '$'+value[0].priceRec.toFixed(2);\n                } else {\n\n                    if(onsaleonly == 1) {\n                        skip = true;\n                    }\n                    price.textContent = value[0].priceRec.toFixed(2);\n\n                }\n\n\n\n                if(maxprice) {\n\n                    if(parseInt(value[0].priceRec) &gt; parseInt(maxprice)) {\n                        skip = true;\n                    }\n                }\n\n                if(minprice) {\n\n                    if(parseInt(value[0].priceRec) &lt; parseInt(minprice)) {\n                        skip = true;\n                    }\n                }\n\n\n\n            }\n\n            if(key == 'image') {\n                let img = product.querySelector('.img1');\n                let img2 = product.querySelector('.p-img');\n                var finalimg = value;\n                var finalimg = finalimg+'?w=544&amp;h=544';\n                img.src = finalimg;\n                img2.src = finalimg;\n\n\n            }\n\n            var usedthc = 0;\n\n\n\n            if(key == 'category') {\n\n\n                if(value == 'ACCESSORIES') {\n                    let starline = product.querySelector('.starline');\n                    starline.classList.add(\"opacity-0\");\n                }\n\n\n            }\n\n            if(key == 'potencyCbd') {\n\n                if (value.formatted.length &gt; 0) {\n                    let thc = product.querySelector('.thc');\n                    let showthc = product.querySelector('.showthc');\n                    thc.textContent = 'CBD: ' + value.formatted;\n                    usedthc = 1;\n                }\n\n            }\n\n\n            if(key == 'potencyThc') {\n\n                if (value.formatted.length &gt; 0) {\n                    let thc = product.querySelector('.thc');\n                    let showthc = product.querySelector('.showthc');\n                    thc.textContent = 'THC: ' + value.formatted;\n                    usedthc = 1;\n                }\n\n            }\n\n\n\n\n\n\n\n\n            if(key == 'slug') {\n                let ahref = product.querySelector('.productlink');\n                ahref.href = '/products/'+value;\n\n\n                let ahref2 = product.querySelector('.productlink2');\n                ahref2.href = '/products/'+value;\n            }\n\n            if(key == 'name') {\n                let name = product.querySelector('.producttitle');\n                name.textContent = value;\n\n                let img = product.querySelector('img');\n                img.alt= value\n\n            }\n\n            if(key == 'variants') {\n                let name = product.querySelector('.addtocart');\n                name.dataset.option = value[0].option;\n\n            }\n\n            if(key == 'id') {\n                let name = product.querySelector('.addtocart');\n                name.dataset.id = value;\n\n                let productlink = product.querySelector('.productlink');\n                productlink.dataset.id = value;\n\n            }\n\n            if(key == 'brand') {\n\n                let brand = product.querySelector('.brand');\n                if (value === null) {\n                    brand.textContent = \"\";\n                }\n                else {\n                    brand.textContent = value.name;\n                }\n            }\n\n\n            if(key == 'strainType') {\n                if(value !== 'NOT_APPLICABLE') {\n\n\n\n                    if(value == 'HIGH_CBD') {\n                        let strain = product.querySelector('.strain');\n                        strain.textContent = 'High CBD';\n                    } else {\n\n\n                        if(value == 'SATIVA_HYBRID') {\n                            let strain = product.querySelector('.strain');\n                            strain.classList.add(value.toLowerCase());\n\n\n                            strain.textContent = \"Sativa Hybrid\";\n                        } else {\n                            let strain = product.querySelector('.strain');\n                            strain.classList.add(value.toLowerCase());\n\n\n                            strain.textContent = value;\n                        }\n\n\n                    }\n\n\n                } else {\n                    let strain = product.querySelector('.strain');\n                    strain.textContent = '';\n                }\n            }\n\n\n        });\n\n        skip = false;\n\n        if(skip == false) {\n            app.append(product);\n        }\n    });\n\n\n\n\n\n    var unique = subcategory.filter(onlyUnique);\n    unique.sort();\n\n    //  drawSubCats(unique);\n\n    // app.append(div);\n}\nconst drawSubCats = (subcats) =&gt; {\n\n\n    var subcatsset =  localStorage.getItem(\"subcatsset\");\n\n    if(subcatsset == 1) {\n        return false;\n    }\n\n\n\n\n\n    $('.subcategories').removeClass('hidden');\n    let app = document.querySelector('#filter_subcats');\n\n    $( \"#filter_subcats\" ).empty();\n    singlesubcat = false;\n\n    var singlebrand = false;\n    if(subcats.length == 1) {\n        singlesubcat = true;\n    }\n    let subcatsitem = document.querySelector('#filter-item');\n\n\n\n    var count = 0;\n    subcats.forEach(obj =&gt; {\n\n\n        let subcatsel = subcatsitem.content.cloneNode(true).querySelector('div');\n\n        let input = subcatsel.querySelector('.filterinput');\n        let label = subcatsel.querySelector('.filterlabel');\n\n\n        input.id = obj;\n        input.name = 'subcategory';\n\n        var textobj = obj;\n\n        var skipformat = false;\n        if(textobj == 'LIVE_RESIN') {\n            textobj = 'Live Resin';\n            skipformat = true;\n        }\n\n        if(textobj == 'PRE_GROUND') {\n            textobj = 'Pre Ground';\n            skipformat = true;\n        }\n\n        if(textobj == 'PAPERS_ROLLING_SUPPLIES') {\n            textobj = 'Papers';\n            skipformat = true;\n        }\n\n        if(textobj == 'STORAGE_CONTAINERS') {\n            textobj = 'Storage Containers';\n            skipformat = true;\n        }\n\n        if(textobj == 'DAB_TOOLS') {\n            textobj = 'Dab Tools';\n            skipformat = true;\n        }\n\n\n        if(textobj == 'COOKING_BAKING') {\n            textobj = 'Cooking &amp; Baking';\n            skipformat = true;\n        }\n\n        if(textobj == 'INFUSED_BUD') {\n            textobj = 'Infused Bud';\n            skipformat = true;\n        }\n\n        if(textobj == 'BATH_PRODUCTS') {\n            textobj = 'Bath Products';\n            skipformat = true;\n        }\n\n        var text = textobj.toLowerCase();\n        const capitalized =\n            text.charAt(0).toUpperCase()\n            + text.slice(1)\n\n\n        if(skipformat == true) {\n            label.textContent = textobj;\n\n        } else {\n            label.textContent = capitalized;\n\n        }\n\n\n\n        label.htmlFor = obj;\n        input.value = obj;\n\n        if(singlesubcat == true) {\n            // input.checked = true;\n        }\n\n        count = count+1;\n\n        app.append(subcatsel);\n\n\n    });\n\n    localStorage.setItem(\"subcatsset\", 1);\n\n\n};\n\n\n\nconst drawProductPop = (data) =&gt; {\n\n\n\n\n    $('.seteffect').addClass('hidden');\n\n\n    let productPop = document.querySelector('#product-pop');\n\n\n    let effectwrap = productPop.querySelector('.effectwrap');\n    effectwrap.classList.remove(\"hidden\");\n\n\n    let starblock = productPop.querySelector('.starblock');\n    starblock.classList.remove(\"hidden\");\n\n\n\n    let name = productPop.querySelector('.producttitle');\n    name.textContent = data.name;\n\n\n    let addtocart = productPop.querySelector('.addtocart');\n    let productprice = productPop.querySelector('.productprice');\n    let productsize = productPop.querySelector('.productsize');\n\n\n    addtocart.dataset.id = data.id;\n    addtocart.dataset.option = data.variants[0].option;\n\n    productprice.textContent = data.variants[0].priceRec;\n\n    if(data.variants[0].option == 'N/A') {\n        productsize.textContent = '';\n\n    } else {\n        productsize.textContent = data.variants[0].option;\n\n    }\n\n\n\n\n    let brand = productPop.querySelector('.productbrand');\n    brand.textContent = data.brand.name;\n\n\n    let description = productPop.querySelector('.productdesc');\n    description.textContent = data.description;\n\n\n\n    let productimage = productPop.querySelector('.productimage');\n    var finalimg = data.image;\n    var finalimg = finalimg+'?w=415&amp;h=415&amp;fit=crop';\n    productimage.src = finalimg;\n\n\n    var showcbdthc = 0;\n\n    if(data.strainType == 'HIGH_CBD') {\n        let strain = productPop.querySelector('.productstrain');\n        strain.textContent = 'High CBD';\n    } else {\n\n\n        if(data.strainType == 'SATIVA_HYBRID') {\n            let strain = productPop.querySelector('.productstrain');\n            strain.classList.add(data.strainType.toLowerCase());\n            strain.textContent = 'Sativa Hybrid';\n        } else {\n            let strain = productPop.querySelector('.productstrain');\n            strain.classList.add(data.strainType.toLowerCase());\n            strain.textContent = data.strainType;\n        }\n\n\n    }\n\n    if(data.category == 'ACCESSORIES') {\n        let starblock = productPop.querySelector('.starblock');\n        starblock.classList.add(\"hidden\");\n\n        let effectwrap = productPop.querySelector('.effectwrap');\n        effectwrap.classList.add(\"hidden\");\n\n\n    }\n\n    if(data.potencyThc.formatted) {\n        let thc = productPop.querySelector('.productthc');\n        thc.textContent = \"THC: \"+data.potencyThc.formatted;\n        showcbdthc = 1;\n    } else {\n        if(data.potencyCbd.formatted) {\n            let thc = productPop.querySelector('.productthc');\n            thc.textContent = \"CBD: \"+data.potencyCbd.formatted;\n            showcbdthc = 1;\n        }\n    }\n\n\n    if(showcbdthc == 0) {\n        let thc = productPop.querySelector('.productthc');\n        thc.textContent = \"N/A\";\n    }\n\n\n\n\n    data.effects.forEach(item =&gt; {\n        $('.'+item.toLowerCase()+'').removeClass('hidden');\n    });\n\n    $('.displayproduct').removeClass('hidden');\n    $('.loadingproduct').addClass('hidden');\n    $('.product-related-section').removeClass('hidden');\n\n\n\n\n\n}\n\njQuery( document ).ready(function($) {\n\n    var isevent = localStorage.getItem(\"isEvent\");\n\n\n    if(isevent == 1) {\n        localStorage.removeItem('5e4dba92-8dbf-4ba2-a6e4-55c9a381c2ec_checkoutId');\n\n        localStorage.removeItem('c7e42b3f-f623-48cf-8ca3-2bb8459fe749_checkoutId');\n\n        localStorage.removeItem('a8acceb2-b3be-4880-b89e-bc0143be8e12_checkoutId');\n        localStorage.removeItem('e25dccad-d3b7-418a-8c7f-18a5f4795b77_checkoutId');\n        localStorage.removeItem('6257c1d3-1022-4250-9666-73644d762972_checkoutId');\n        localStorage.removeItem('563a9ed7-85b8-4f0f-bfed-519b80c68f40_checkoutId');\n        localStorage.removeItem('6257c1d3-1022-4250-9666-73644d762972_checkoutId');\n        localStorage.removeItem('customerAddress3');\n        localStorage.removeItem('customerAddress2');\n        localStorage.removeItem('customerAddress1');\n        localStorage.removeItem('expressAvailable');\n        localStorage.removeItem('expressDeliveryMin');\n        localStorage.removeItem('scheduledAvailable');\n        localStorage.removeItem('expressRetailerId');\n        localStorage.removeItem('filltype');\n        localStorage.removeItem('siteflow');\n        localStorage.removeItem('retailerId');\n        localStorage.removeItem('isEvent');\n        window.location.reload();\n    }\n\n    if(isevent == 1) {\n        $('.exitevent').removeClass('eventhidden');\n    }\n\n    $(\".exitevent\").click(function(){\n        localStorage.removeItem('5e4dba92-8dbf-4ba2-a6e4-55c9a381c2ec_checkoutId');\n\n        localStorage.removeItem('c7e42b3f-f623-48cf-8ca3-2bb8459fe749_checkoutId');\n\n        localStorage.removeItem('a8acceb2-b3be-4880-b89e-bc0143be8e12_checkoutId');\n        localStorage.removeItem('e25dccad-d3b7-418a-8c7f-18a5f4795b77_checkoutId');\n        localStorage.removeItem('6257c1d3-1022-4250-9666-73644d762972_checkoutId');\n        localStorage.removeItem('563a9ed7-85b8-4f0f-bfed-519b80c68f40_checkoutId');\n        localStorage.removeItem('6257c1d3-1022-4250-9666-73644d762972_checkoutId');\n        localStorage.removeItem('customerAddress3');\n        localStorage.removeItem('customerAddress2');\n        localStorage.removeItem('customerAddress1');\n        localStorage.removeItem('expressAvailable');\n        localStorage.removeItem('expressDeliveryMin');\n        localStorage.removeItem('scheduledAvailable');\n        localStorage.removeItem('expressRetailerId');\n        localStorage.removeItem('filltype');\n        localStorage.removeItem('siteflow');\n        localStorage.removeItem('retailerId');\n        localStorage.removeItem('isEvent');\n        window.location.reload();\n\n    });\n\n\n    var siteflow =  localStorage.getItem(\"siteflow\");\n    var filltype =  localStorage.getItem(\"filltype\");\n    var expressavailable =  localStorage.getItem(\"expressAvailable\");\n    var expressdeliveryfee =  localStorage.getItem(\"expressDeliveryFee\");\n    var scheduleddeliveryfee =  localStorage.getItem(\"scheduledDeliveryFee\");\n\n\n    if(!siteflow) {\n        $('.ordertype').html('Pickup Order');\n        $('.defineheader').addClass('bg-yellow');\n        $('.defineheader').removeClass('bg-white')\n\n        $('.setpickup').addClass('active');\n        $('.option-wrapper-mobile-top').removeClass('hidden');\n        $('.option-wrapper-mobile-top-side').addClass('hidden');\n        $('.pickupflow').removeClass('hidden');\n        $('.deliveryflow').addClass('hidden');\n\n        $('.deliveryhoursfooter').addClass('hidden');\n        $('.pickuphoursfooter').removeClass('hidden');\n        $('.delivery-section').removeClass('hidden');\n\n    }\n\n    if(siteflow == '') {\n        $('.ordertype').html('Pickup Order');\n\n        $('.setpickup').addClass('active');\n        $('.option-wrapper-mobile-top').removeClass('hidden');\n        $('.option-wrapper-mobile-top-side').addClass('hidden');\n        $('.pickupflow').removeClass('hidden');\n        $('.deliveryflow').addClass('hidden');\n        $('.deliveryhoursfooter').addClass('hidden');\n        $('.pickuphoursfooter').removeClass('hidden');\n        $('.delivery-section').removeClass('hidden');\n\n    }\n\n    if(siteflow == 'delivery') {\n\n\n        var retailercheck =  localStorage.getItem(\"retailerId\");\n        if(retailercheck == '5e4dba92-8dbf-4ba2-a6e4-55c9a381c2ec') {\n            $('.defineheader').removeClass('bg-yellow').addClass('bg-white');\n\n        }\n\n\n        if (retailercheck === '6257c1d3-1022-4250-9666-73644d762972' || retailercheck === '9854f1ab-dab5-497c-b36a-a05a1968e5c5') {\n            $('.new-york-legal').removeClass('hidden');\n        }\n\n        if(retailercheck == 'a8acceb2-b3be-4880-b89e-bc0143be8e12') {\n            $('.boston-legal').removeClass('hidden');\n\n\n        }\n\n\n\n        if(expressavailable == 1) {\n            $('.delivery-method-section').removeClass('hidden');\n        }\n\n\n        $('.noaddressset').removeClass('noaddressset');\n        $('.pickupflow').addClass('hidden');\n        $('.deliveryflow').removeClass('hidden');\n\n        $('.ordertype').html('Delivery Order');\n        $('.option-wrapper-mobile-top').addClass('hidden');\n        $('.option-wrapper-mobile-top-side').removeClass('hidden');\n        $('.setpickup').removeClass('active');\n        $('.setdelivery').addClass('active');\n        var address =  localStorage.getItem(\"customerAddress1\");\n        var address2 =  localStorage.getItem(\"customerAddress2\");\n\n\n        $('.inneraddressset').html(address);\n        $('.innercityset').html(address2);\n\n        $('.inputdelivery').addClass('hidden');\n        $('.deliverydetails').removeClass('hidden');\n        $('.deliveryhoursfooter').removeClass('hidden');\n        $('.pickuphoursfooter').addClass('hidden');\n\n\n        $('.expressdeliveryfee').html(expressdeliveryfee);\n        $('.scheduleddeliveryfee').html(scheduleddeliveryfee);\n\n\n        if(filltype == \"1\") {\n\n            $('.expresstime').removeClass('hidden');\n            $('.scheduledtime').addClass('hidden');\n\n            $('.ordertype').html('Express Delivery Order');\n            $('.setheaderaddress').html(address+ \"\");\n            $('.setcartaddress').html(address+\" \"+address2);\n            $('.setexpress').addClass('active');\n            $('.setscheduled').removeClass('active');\n            $('#fill_type').val(1)\n\n        } else {\n            $('.expresstime').addClass('hidden');\n            $('.scheduledtime').removeClass('hidden');\n\n            $('.setheaderaddress').html(address);\n            $('.setcartaddress').html(address+\" \"+address2);\n            $('.setexpress').removeClass('active');\n\n            $('.setscheduled').addClass('active');\n            $('#fill_type').val(2)\n\n\n\n        }\n\n    }\n\n    if(siteflow == 'pickup') {\n        $('.pickupflow').removeClass('hidden');\n        $('.deliveryflow').addClass('hidden');\n\n        $('.ordertype').html('Pickup Order');\n\n        $('.option-wrapper-mobile-top').addClass('hidden');\n        $('.option-wrapper-mobile-top-side').removeClass('hidden');\n        $('.setpickup').addClass('active');\n        $('.setdelivery').removeClass('active');\n        $('.setheaderaddress').html(\"13th &amp; Broadway\");\n        $('.deliveryhoursfooter').addClass('hidden');\n        $('.pickuphoursfooter').removeClass('hidden');\n\n\n\n    }\n\n   // var newmap =  localStorage.getItem(\"newmap\");\n    var newmap = \"1\";\n\n    if(newmap == \"1\") {\n\n\n\n\n    } else {\n\n\n        var places = new google.maps.places.Autocomplete(document.getElementById('address_sel'), {\n            types: [],\n            componentRestrictions: {'country': \"us\"}\n        });\n        var places2 = new google.maps.places.Autocomplete(document.getElementById('address_change'), {\n            types: [],\n            componentRestrictions: {'country': \"us\"}\n        });\n\n        google.maps.event.addListener(places2, 'place_changed', function () {\n\n\n            var place = places2.getPlace();\n            var address = place.formatted_address;\n            var value = address.split(\",\");\n\n\n            var latitude = place.geometry.location.lat();\n            var longitude = place.geometry.location.lng();\n\n\n            localStorage.setItem(\"customerAddress1\", value[0]);\n            localStorage.setItem(\"customerAddress2\", value[2]);\n            localStorage.setItem(\"customerAddress3\", value[1]);\n            localStorage.setItem(\"latitude\", latitude);\n            localStorage.setItem(\"longitude\", longitude);\n\n\n            sendDeliveryQuery(latitude, longitude, value[0], value[2], value[1]);\n\n\n        });\n\n        google.maps.event.addListener(places, 'place_changed', function () {\n\n\n            var place = places.getPlace();\n            var address = place.formatted_address;\n            var value = address.split(\",\");\n\n\n            var latitude = place.geometry.location.lat();\n            var longitude = place.geometry.location.lng();\n\n\n            localStorage.setItem(\"customerAddress1\", value[0]);\n            localStorage.setItem(\"customerAddress2\", value[2]);\n            localStorage.setItem(\"customerAddress3\", value[1]);\n            localStorage.setItem(\"latitude\", latitude);\n            localStorage.setItem(\"longitude\", longitude);\n\n\n            sendDeliveryQuery(latitude, longitude, value[0], value[2], value[1]);\n\n\n        });\n\n\n    }\n\n    var retailer =  localStorage.getItem(\"retailerId\");\n\n    var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n\n    if(!checkoutId) {\n        createCheckoutObject(\"a8acceb2-b3be-4880-b89e-bc0143be8e12\");\n    } else {\n        getCartQuery();\n    }\n\n\n\n    $( \"body\" ).on( \"change\", \"input[name='variant']\", function() {\n\n        $('.singleadd').attr('data-option',$(this).val());\n\n\n    });\n\n\n    $( \"body\" ).on( \"change\", \"input[name='brand']\", function() {\n\n\n        var text = $(this).next().text()\n        $('.brandactive').remove();\n\n        if(text == 'All Brands') {\n\n        } else {\n            $('.activebrands').append('&lt;a class=\"activesidefilter brandactive \"&gt;'+text+' &lt;i class=\"fa-solid fa-xmark\"&gt;&lt;/i&gt;&lt;/a&gt;');\n\n        }\n\n        $('#catset').attr('data-brand',$(this).val());\n        $( \".setcategory\" ).trigger( \"click\" );\n\n    });\n    $( \"body\" ).on( \"change\", \"#e1\", function() {\n        $( \".effectitem\" ).prop( \"checked\", false );\n        $('#catset').attr('data-effect',0);\n        $( \".setcategory\" ).trigger( \"click\" );\n    });\n\n\n    $( \"body\" ).on( \"change\", \"#e2, #e3, #e4, #e5, #e6, #e7, #e8, #e9, #e10, #e11\", function() {\n        $( \".effectitemtop\" ).prop( \"checked\", false );\n    });\n\n\n\n    $( \"body\" ).on( \"change\", \"#s1\", function() {\n        //$( \".strainitem\" ).prop( \"checked\", false );\n        //   $('#catset').attr('data-type',0);\n        //   $( \".setcategory\" ).trigger( \"click\" );\n    });\n\n\n\n    $( \"body\" ).on( \"click\", \".getbanners\", function() {\n\n        $('#banners').html('')\n        var retailerId =  localStorage.getItem(\"retailerId\");\n        var siteflow =  localStorage.getItem(\"siteflow\");\n\n        if(!siteflow) {\n            retailerId = false;\n        }\n\n\n        jQuery.ajax({\n            type : \"post\",\n            dataType : \"json\",\n            url : \"/wp-admin/admin-ajax.php\",\n            data : {action: \"get_banners\", retailerId : retailerId},\n            success: function(response) {\n\n                response.forEach(obj =&gt; {\n\n                    var item = '&lt;div class=\"swiper-slide\"&gt;&lt;a href=\"'+obj.banner_button_url+'\"&gt;&lt;img src=\"'+obj.banner_mobile_image+'\" /&gt;&lt;/a&gt;&lt;/div&gt;';\n\n                    $('#banners').append(item);\n\n\n\n                });\n\n\n\n            }\n        })\n\n\n\n\n    });\n\n\n\n    $( \"body\" ).on( \"click\", \".viewmorebrands\", function() {\n        $('#more_brand').removeClass('hidden');\n\n    });\n\n    $( \"body\" ).on( \"click\", \".catactive i\", function() {\n        $('.catactive').remove();\n        $('#m1').trigger('click');\n\n    });\n\n\n    $( \"body\" ).on( \"click\", \".strainactive i\", function() {\n        $('.strainactive').remove();\n        $('#s1').trigger('click');\n\n    });\n\n\n    $( \"body\" ).on( \"click\", \".brandactive i\", function() {\n        $('.brandactive').remove();\n        $('#all_brands').trigger('click');\n\n    });\n\n\n    $( \"body\" ).on( \"change\", \"input[type=radio][name=subcategory]\", function() {\n\n\n        var text = $(this).next().text();\n        $('#catset').attr('data-weight', \"\");\n\n\n        localStorage.setItem(\"weightset\", 0);\n\n        $('.subcatactive').remove();\n\n        if(text == 'All Subcategories') {\n\n        } else {\n            $('.activesubcats').append('&lt;a class=\"activesidefilter subcatactive \"&gt;'+text+' &lt;i class=\"fa-solid fa-xmark\"&gt;&lt;/i&gt;&lt;/a&gt;');\n\n        }\n\n\n        /*\n        var endvalue = this.value;\n\n        if(this.value == 'FLOWER') {\n            endvalue = 'Flower';\n        }\n\n        if(this.value == 'PRE_ROLLS') {\n            endvalue = 'Pre-rolls';\n        }\n\n        if(this.value == 'VAPORIZERS') {\n            endvalue = 'Vaporizers';\n        }\n\n        if(this.value == 'CONCENTRATES') {\n            endvalue = 'Concentrates';\n        }\n\n        if(this.value == 'EDIBLES') {\n            endvalue = 'Edibles';\n        }\n\n        if(this.value == 'STAFF_PICKS') {\n            endvalue = 'Staff Picks';\n        }\n\n        if(this.value == 'TINCTURES') {\n            endvalue = 'Tinctures';\n        }\n\n        if(this.value == 'TOPICALS') {\n            endvalue = 'Topicals';\n        }\n\n        if(this.value == 'CBD') {\n            endvalue = 'CBD';\n        }\n\n        if(this.value == 'ACCESSORIES') {\n            endvalue = 'Accessories';\n        }\n\n        if(this.value == '') {\n\n        } else {\n            $('.activecats').append('&lt;a class=\"activesidefilter catactive \"&gt;'+endvalue+' &lt;i class=\"fa-solid fa-xmark\"&gt;&lt;/i&gt;&lt;/a&gt;');\n\n        }\n        */\n\n\n\n        $('#catset').attr('data-subcat',this.value);\n        $( \".setcategory\" ).trigger( \"click\" );\n    });\n\n\n\n    $('input[type=radio][name=category]').change(function() {\n\n\n        localStorage.setItem(\"subcatsset\", 0);\n\n\n        $('.catactive').remove();\n\n        var endvalue = this.value;\n\n        if(this.value == 'FLOWER') {\n            endvalue = 'Flower';\n        }\n\n        if(this.value == 'PRE_ROLLS') {\n            endvalue = 'Pre-rolls';\n        }\n\n        if(this.value == 'VAPORIZERS') {\n            endvalue = 'Vaporizers';\n        }\n\n        if(this.value == 'CONCENTRATES') {\n            endvalue = 'Concentrates';\n        }\n\n        if(this.value == 'EDIBLES') {\n            endvalue = 'Edibles';\n        }\n\n        if(this.value == 'STAFF_PICKS') {\n            endvalue = 'Staff Picks';\n        }\n\n        if(this.value == 'TINCTURES') {\n            endvalue = 'Tinctures';\n        }\n\n        if(this.value == 'TOPICALS') {\n            endvalue = 'Topicals';\n        }\n\n        if(this.value == 'CBD') {\n            endvalue = 'CBD';\n        }\n\n        if(this.value == 'ACCESSORIES') {\n            endvalue = 'Accessories';\n        }\n\n\n        $('.catset').html(endvalue);\n\n\n        if(this.value == '') {\n\n            $('.catset').html('All');\n\n\n        } else {\n            $('.activecats').append('&lt;a class=\"activesidefilter catactive \"&gt;'+endvalue+' &lt;i class=\"fa-solid fa-xmark\"&gt;&lt;/i&gt;&lt;/a&gt;');\n\n        }\n\n\n        $('#catset').attr('data-cat',this.value);\n        $( \".setcategory\" ).trigger( \"click\" );\n    });\n\n\n\n    $( \"body\" ).on( \"change\", \"input[name='strain']\", function() {\n\n\n\n\n\n        $('.strainactive').remove();\n\n        var endvalue = this.value;\n\n        if(this.value == 'INDICA') {\n            endvalue = 'Indica';\n        }\n        if(this.value == 'SATIVA') {\n            endvalue = 'Sativa';\n        }\n\n        if(this.value == 'HYBRID') {\n            endvalue = 'Hybrid';\n        }\n\n        if(this.value == 'HIGH_CBD') {\n            endvalue = 'High CBD';\n        }\n\n        if(this.value == 'SATIVA_HYBRID') {\n            endvalue = 'Sativa Hybrid';\n        }\n\n        if(this.value == '') {\n\n        } else {\n            $('.activestrains').append('&lt;a class=\"activesidefilter strainactive \"&gt;'+endvalue+' &lt;i class=\"fa-solid fa-xmark\"&gt;&lt;/i&gt;&lt;/a&gt;');\n\n        }\n\n        // $( \"#s1\" ).prop( \"checked\", false );\n       // const data = [...document.querySelectorAll('.strainitem:checked')].map(e =&gt; e.value);\n       // alert(data);\n        $('#catset').attr('data-type',$(this).val());\n        $( \".setcategory\" ).trigger( \"click\" );\n    });\n\n\n    $( \"body\" ).on( \"change\", \"input[name='weights']\", function() {\n\n\n\n\n\n\n        // $( \"#s1\" ).prop( \"checked\", false );\n        // const data = [...document.querySelectorAll('.strainitem:checked')].map(e =&gt; e.value);\n        // alert(data);\n        $('#catset').attr('data-weight',$(this).val());\n        $( \".setcategory\" ).trigger( \"click\" );\n    });\n\n    $( \"body\" ).on( \"change\", \"#e2, #e3, #e4, #e5, #e6, #e7, #e8, #e9, #e10, #e11\", function() {\n        $( \".effectitemtop\" ).prop( \"checked\", false );\n    });\n\n\n    $( \"body\" ).on( \"change\", \"#e1\", function() {\n        $( \".effectitem\" ).prop( \"checked\", false );\n        $('#catset').attr('data-effect',0);\n        $( \".setcategory\" ).trigger( \"click\" );\n    });\n\n    $( \"body\" ).on( \"change\", \"input[name='effect']\", function() {\n\n        const data = [...document.querySelectorAll('.effectitem:checked')].map(e =&gt; e.value);\n\n\n\n\n\n\n        $('#catset').attr('data-effect',data);\n        $( \".setcategory\" ).trigger( \"click\" );\n    });\n\n\n    $( \"body\" ).on( \"change\", \"#changesort\", function() {\n        $('#catset').attr('data-sort',$(this).val());\n        $( \".setcategory\" ).trigger( \"click\" );\n    });\n\n    $( \"body\" ).on( \"click\", \".getproductdata\", function() {\n\n        var thedata = getProductData(storeavailable[retailerId]);\n\n\n    });\n    $( \"body\" ).on( \"click\", \".setsortbottom\", function() {\n        $(\".setsortbottom\").removeClass('active');\n        var sortby = $(this).attr(\"data-sort\");\n        $('#catset').attr('data-sort',sortby);\n        $( \".setcategory\" ).trigger( \"click\" );\n        $(this).addClass('active');\n        $('.sort-side .close').trigger('click');\n    });\n\n\n\n    $( \"body\" ).on( \"change\", \"input[name='effect']\", function() {\n        // $( \"#e1\" ).prop( \"checked\", false );\n        const data = [...document.querySelectorAll('.effectitem:checked')].map(e =&gt; e.value);\n        $('#catset').attr('data-effect',data);\n        $( \".setcategory\" ).trigger( \"click\" );\n    });\n\n    $( \"body\" ).on( \"click\", \".changedelivery\", function() {\n        $('.deliverydetails').addClass('hidden');\n        $('.inputdelivery').removeClass('hidden');\n        $('#address_sel').val('');\n    });\n\n\n\n    $( \"body\" ).on( \"click\", \".addtocart\", function() {\n\n        var siteflow = localStorage.getItem(\"siteflow\");\n\n        if(siteflow == 'delivery') {\n\n            var button = $(this);\n            var existing = $(this).html(); // Save the current button HTML\n            var productId = $(this).attr(\"data-id\");\n            var option = $(this).attr(\"data-option\");\n            var quantity = button.attr(\"data-quantity\")\n                ? parseInt(button.attr(\"data-quantity\")) || 1\n                : 1;\n\n            // Change the button content to a checkmark icon\n            button.html('&lt;i class=\"fa-duotone fa-solid fa-spinner-third fa-spin\"&gt;&lt;/i&gt;');\n\n            // Add a class to animate the transition (optional)\n            button.addClass('checked');\n\n            // Revert the button content back to the original after 2 seconds\n            setTimeout(function () {\n                button.html(existing);\n                button.removeClass('checked'); // Remove the animation class (optional)\n            }, 2000);\n\n            addCartQuery(productId, option, quantity);\n\n            return false;\n        } else {\n            Swal.fire({\n                icon: \"error\",\n                title: \"Oops...\",\n                text: \"Please ensure you've entered an address before adding items to your cart.\"\n            });\n            return false;\n        }\n    });\n\n\n    $( \"body\" ).on( \"click\", \".addtocartsingle\", function() {\n        var button = $(this);\n        var existing =  $(this).html();\n        var productId = $(this).attr(\"data-id\");\n        var option = $(this).attr(\"data-option\");\n        var quantity = $('#amounttoaddsingle').val();\n\n\n        var submit = button.html('Adding...');\n        setTimeout(function() {  button.html(existing); }, 2000);\n        addCartQuery(productId, option, quantity);\n        return false;\n    });\n\n\n    $( \"body\" ).on( \"click\", \".removefromcart\", function() {\n        var productId = $(this).attr(\"data-id\");\n        removeCartQuery(productId);\n        return false;\n    });\n\n\n    $( \"body\" ).on( \"change\", \".changeamount\", function() {\n        var productId = $(this).attr(\"data-id\");\n        var cartId = $(this).attr(\"data-cartid\");\n        var option = $(this).attr(\"data-option\");\n        var quantity = $(this).val();\n        updateCartQuery(cartId, option, quantity);\n        return false;\n    });\n\n\n    $(document).on('click', '[data-product]', function(e){\n        e.preventDefault();\n        $('.displayproduct').addClass('hidden');\n        $('.loadingproduct').removeClass('hidden');\n        $('.product-related-section').addClass('hidden');\n\n\n        var thisOne = $(this);\n        var popData = thisOne.data('product');\n        var productId = thisOne.data('id');\n        getSingleProduct(productId);\n\n\n        $('.product-pop[data-pop=\"'+popData+'\"]').addClass('open');\n        $('html').addClass('pop-open');\n    });\n\n\n    $(document).on('click', '.setdelivery', function(e){\n        e.preventDefault();\n\n\n        $('#address_sel').val('');\n        $('.nodelivery').addClass('hidden');\n\n        $('.location-pop').addClass('open');\n        $('html').addClass('pop-open');\n\n\n        var cartcount = $('#cart-count').html();\n\n        if(cartcount &gt; 0) {\n            $('.setdeliverybutton').removeClass('setdeliveryfinal');\n            $('.setdeliverybutton').addClass('showswitchpop');\n            $('.setfinalswitch').addClass('setdeliveryfinal');\n        }\n\n\n    });\n\n\n    $(document).on('click', '.setmed', function(e){\n        e.preventDefault();\n        localStorage.setItem(\"custtype\", \"MEDICAL\");\n\n       // $('#fill_type').val(1);\n        console.log('med');\n        $('.setrec').removeClass('active');\n        $(this).addClass('active');\n        $('.setcategory').trigger('click');\n\n    });\n\n    $(document).on('click', '.setrec', function(e){\n        e.preventDefault();\n        localStorage.setItem(\"custtype\", \"RECREATIONAL\");\n        // $('#fill_type').val(1);\n        console.log('med');\n        $('.setmed').removeClass('active');\n        $(this).addClass('active');\n        $('.setcategory').trigger('click');\n\n    });\n\n\n\n    $(document).on('click', '.setexpress', function(e){\n        e.preventDefault();\n\n        $('#fill_type').val(1);\n        $('.setscheduled').removeClass('active');\n        $(this).addClass('active');\n\n    });\n\n\n    $(document).on('click', '.setscheduled', function(e){\n        e.preventDefault();\n        $('#fill_type').val(2);\n        $('.setexpress').removeClass('active');\n        $(this).addClass('active');\n\n    });\n\n\n    $(document).on('click', '.setdeliveryfinal', function(e){\n\n        $('.defineheader').removeClass('bg-yellow').addClass('bg-white');\n        $('.delivery-section').addClass('hidden');\n        $('.noaddressset').removeClass('noaddressset');\n\n        $('.delivery-method-section').addClass('hidden');\n        e.preventDefault();\n        var filltype = $('#fill_type').val();\n\n        $('#address_change').val('');\n\n\n        $('.option-wrapper-mobile-top').addClass('hidden');\n        $('.option-wrapper-mobile-top-side').removeClass('hidden');\n\n\n\n\n\n\n\n        var expressAvailable =  localStorage.getItem(\"expressAvailable\");\n        var expresssdeliveryfee =  localStorage.getItem(\"expressDeliveryFee\");\n        var scheduleddeliveryfee =  localStorage.getItem(\"scheduledDeliveryFee\");\n\n        if(expressAvailable == 1) {\n            $('.delivery-method-section').removeClass('hidden');\n        }\n\n\n\n        $('.expressdeliveryfee').html(expresssdeliveryfee);\n        $('.scheduleddeliveryfee').html(scheduleddeliveryfee);\n\n\n        if(filltype == 1) {\n            localStorage.setItem(\"filltype\", \"1\");\n            $('.ordertype').html('Express Delivery Order');\n\n\n            var retailer =  localStorage.getItem(\"expressRetailerId\");\n            var address =  localStorage.getItem(\"customerAddress1\");\n            var address2 =  localStorage.getItem(\"customerAddress2\");\n\n            $('.setheaderaddress').html(address);\n            $('.setcartaddress').html(address+\" \"+address2);\n\n\n            $('.deliveryhoursfooter').removeClass('hidden');\n            $('.pickuphoursfooter').addClass('hidden');\n\n            $('.pickupflow').addClass('hidden');\n            $('.deliveryflow').removeClass('hidden');\n\n            $('.expresstime').removeClass('hidden');\n            $('.scheduledtime').addClass('hidden');\n\n\n        }\n\n        if(filltype == 2) {\n            localStorage.setItem(\"filltype\", \"2\");\n            $('.ordertype').html('Delivery Order');\n\n            var retailer =  localStorage.getItem(\"scheduledRetailerId\");\n            var address =  localStorage.getItem(\"customerAddress1\");\n            var address2 =  localStorage.getItem(\"customerAddress2\");\n\n            $('.setheaderaddress').html(address);\n            $('.setcartaddress').html(address+\" \"+address2);\n            $('.deliveryhoursfooter').removeClass('hidden');\n            $('.pickuphoursfooter').addClass('hidden');\n            $('.pickupflow').addClass('hidden');\n            $('.deliveryflow').removeClass('hidden');\n            $('.expresstime').addClass('hidden');\n            $('.scheduledtime').removeClass('hidden');\n\n\n        }\n\n\n        localStorage.setItem(\"auth\", \"Bearer public-eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJBUEktQ0xJRU5UIiwiZXhwIjozMzIwMjk5MDQ4MCwiaWF0IjoxNjQ2MDgxNjgwLCJpc3MiOiJodHRwczovL2R1dGNoaWUuY29tIiwianRpIjoiNzA1YjdiMjgtNTM4ZS00NmNhLTgwYjUtMGJiY2NiNGJmN2VlIiwiZW50ZXJwcmlzZV9pZCI6IjM3NTI5MDRhLWZiNzItNDI4ZS05OTI0LTk4NzE0M2YxZGFlYSIsInV1aWQiOiJmMWY2NzhlMC02MWNjLTQ3MDktODYyNC1jNTM0NWZhZWQ5ZGEifQ.m8SonI4lsdWwtMTBP35c78vNYQoy2tX2sEmknfBIpeg\");\n        localStorage.setItem(\"retailerId\", retailer);\n        localStorage.setItem(\"siteflow\", \"delivery\");\n\n\n\n        if( (retailer == 'e25dccad-d3b7-418a-8c7f-18a5f4795b77') || (retailer == '6257c1d3-1022-4250-9666-73644d762972') ) {\n            localStorage.setItem(\"locationString\", \"NY\");\n            $('.deals-item').addClass('hidden');\n        } else {\n            localStorage.setItem(\"locationString\", \"MA\");\n            $('.deals-item').removeClass('hidden');\n\n        }\n\n        $('.new-york-legal').addClass('hidden');\n        $('.boston-legal').addClass('hidden');\n        if (retailer === '6257c1d3-1022-4250-9666-73644d762972' || retailer === '9854f1ab-dab5-497c-b36a-a05a1968e5c5') {\n            $('.new-york-legal').removeClass('hidden');\n        }\n\n        if(retailer == 'a8acceb2-b3be-4880-b89e-bc0143be8e12') {\n            $('.boston-legal').removeClass('hidden');\n\n\n        }\n\n\n\n\n\n        $('.getbanners').trigger('click');\n        var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n\n        if(!checkoutId) {\n            createCheckoutObject(retailer);\n        }\n\n        getCartQuery();\n\n\n        $('.pop-up').removeClass('open');\n\n        $('.setcategory').trigger('click');\n        $('.pickup-pop').removeClass('open');\n        $('.location-pop').removeClass('open');\n\n        $('.setpickup').removeClass('active');\n        $('.setdelivery').addClass('active');\n\n       // window.location = '/shop/';\n\n        if(issingleproduct) {\n            location.reload();\n        }\n\n\n\n    });\n\n\n    $(document).on('click', '.getdeals', function(e){\n        getDealsQuery();\n\n    });\n\n\n    $(document).on('click', '.setexpress', function(e){\n        localStorage.setItem(\"subcatsset\", 0);\n        $('.scheduledtime').addClass('hidden');\n\n        $('.expresstime').removeClass('hidden');\n        $('.setscheduled').removeClass('active');\n        $('.setexpress').addClass('active');\n        var retailer =  localStorage.getItem(\"expressRetailerId\");\n        localStorage.setItem(\"filltype\", 1);\n\n        localStorage.setItem(\"retailerId\", retailer);\n        $('.setcategory').trigger('click');\n\n        var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n\n        if(!checkoutId) {\n            createCheckoutObject(retailer);\n        } else {\n            getCartQuery();\n        }\n\n\n\n\n\n\n\n    });\n\n\n    $(document).on('click', '.setscheduled', function(e){\n        localStorage.setItem(\"subcatsset\", 0);\n        $('.expresstime').addClass('hidden');\n        $('.scheduledtime').removeClass('hidden');\n\n        $('.setscheduled').addClass('active');\n        $('.setexpress').removeClass('active');\n        var retailer =  localStorage.getItem(\"scheduledRetailerId\");\n        localStorage.setItem(\"filltype\", 2);\n\n        localStorage.setItem(\"retailerId\", retailer);\n        $('.setcategory').trigger('click');\n\n        var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n\n        if(!checkoutId) {\n            createCheckoutObject(retailer);\n        } else {\n            getCartQuery();\n        }\n\n\n\n    });\n\n        $(document).on('click', '.showswitchpop', function(e){\n\n        $('.pickup-pop').removeClass('open');\n        $('.location-pop').removeClass('open');\n\n        e.preventDefault();\n        $('.switch-pop').addClass('open');\n        $('html').addClass('pop-open');\n\n\n\n\n\n    });\n\n\n    $(document).on('click', '.setfinalswitch', function(e){\n\n        $('.switch-pop').removeClass('open');\n        $('html').removeClass('pop-open');\n        e.preventDefault();\n\n\n\n\n\n\n    });\n\n\n\n    $(document).on('click', '.setpickup', function(e){\n        e.preventDefault();\n        $('.pickup-pop').addClass('open');\n        $('html').addClass('pop-open');\n\n        var cartcount = $('#cart-count').html();\n\n        if(cartcount &gt; 0) {\n            $('.setstorebutton').removeClass('setstore');\n            $('.setstorebutton').addClass('showswitchpop');\n            $('.setfinalswitch').addClass('setstore');\n        }\n\n\n\n\n    });\n\n\n    $(document).on('click', '.setstore', function(e){\n        e.preventDefault();\n        var store = $(this).attr(\"data-store\");\n        localStorage.setItem(\"auth\", \"Bearer public-eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJBUEktQ0xJRU5UIiwiZXhwIjozMzIwMjk5MDQ4MCwiaWF0IjoxNjQ2MDgxNjgwLCJpc3MiOiJodHRwczovL2R1dGNoaWUuY29tIiwianRpIjoiNzA1YjdiMjgtNTM4ZS00NmNhLTgwYjUtMGJiY2NiNGJmN2VlIiwiZW50ZXJwcmlzZV9pZCI6IjM3NTI5MDRhLWZiNzItNDI4ZS05OTI0LTk4NzE0M2YxZGFlYSIsInV1aWQiOiJmMWY2NzhlMC02MWNjLTQ3MDktODYyNC1jNTM0NWZhZWQ5ZGEifQ.m8SonI4lsdWwtMTBP35c78vNYQoy2tX2sEmknfBIpeg\");\n        localStorage.setItem(\"retailerId\", \"563a9ed7-85b8-4f0f-bfed-519b80c68f40\");\n        localStorage.setItem(\"siteflow\", \"pickup\");\n        $('.setheaderaddress').html(\"13th &amp; Broadway\");\n\n\n        $('.pickupflow').removeClass('hidden');\n        $('.deliveryflow').addClass('hidden');\n\n        $('.option-wrapper-mobile-top').addClass('hidden');\n        $('.option-wrapper-mobile-top-side').removeClass('hidden');\n\n\n        $('.setcategory').trigger('click');\n        $('.pickup-pop').removeClass('open');\n        $('.location-pop').removeClass('open');\n        $('.setpickup').addClass('active');\n        $('.setdelivery').removeClass('active');\n        var retailer = '563a9ed7-85b8-4f0f-bfed-519b80c68f40';\n        $('.ordertype').html('Pickup Order');\n\n\n        var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n\n        if(!checkoutId) {\n            createCheckoutObject(retailer);\n        }\n\n        getCartQuery();\n\n\n    });\n\n\n\n\n\n        $( \"body\" ).on( \"click\", \".setcategory\", function() {\n\n        var cat = $(this).attr(\"data-cat\");\n        var div = $(this).attr(\"data-div\");\n        var retailer = $(this).attr(\"data-retailer\");\n        var iscatpage = $(this).attr(\"data-iscatpage\");\n        var subcategory = $(this).attr(\"data-subcat\");\n        var type = $(this).attr(\"data-type\");\n        var weight = $(this).attr(\"data-weight\");\n        var price = $(this).attr(\"data-price\");\n        var thc = $(this).attr(\"data-thc\");\n        var perpage = $(this).attr(\"data-per-page\");\n        var sort = $(this).attr(\"data-sort\");\n        var datatype = $(this).attr(\"data-menutype\");\n        var section = $(this).attr(\"data-dutchie-section\");\n        var custom_section = $(this).attr(\"data-custom-section\");\n        var is_search = $(this).attr(\"data-is-search\");\n        var search_term = $(this).attr(\"data-search-term\");\n        var effect = $(this).attr(\"data-effect\");\n        var isbrand = $(this).attr(\"data-isbrand\");\n        var brand = $(this).attr(\"data-brand\");\n        var minprice = $(this).attr(\"data-min-price\");\n        var maxprice = $(this).attr(\"data-max-price\");\n        var isgrid = $(this).attr(\"data-isgridpage\");\n            var special = $(this).attr(\"data-special\");\n\n        if(weight == '0') {\n            weight = false;\n        }\n\n        if(effect == '0') {\n            effect = false;\n        }\n\n            if(special == '') {\n                special = false;\n            }\n\n\n        productQuery(retailer, perpage, div, cat, iscatpage, sort, subcategory, type, price, thc, datatype, section, weight, effect, custom_section, is_search, search_term, isbrand, brand, minprice, maxprice, isgrid, special);\n    });\n    $( \".setcategoryproduct\" ).click(function() {\n\n        var cat = $(this).attr(\"data-cat\");\n        var div = $(this).attr(\"data-div\");\n        var retailer = $(this).attr(\"data-retailer\");\n        var iscatpage = $(this).attr(\"data-iscatpage\");\n        var subcategory = $(this).attr(\"data-subcat\");\n        var type = $(this).attr(\"data-type\");\n        var weight = $(this).attr(\"data-weight\");\n        var price = $(this).attr(\"data-price\");\n        var thc = $(this).attr(\"data-thc\");\n        var perpage = $(this).attr(\"data-per-page\");\n        var sort = $(this).attr(\"data-sort\");\n        var datatype = $(this).attr(\"data-menutype\");\n        var section = $(this).attr(\"data-dutchie-section\");\n        var custom_section = $(this).attr(\"data-custom-section\");\n        var is_search = $(this).attr(\"data-is-search\");\n        var search_term = $(this).attr(\"data-search-term\");\n        var effect = $(this).attr(\"data-effect\");\n        var isbrand = $(this).attr(\"data-isbrand\");\n        var brand = $(this).attr(\"data-brand\");\n        var minprice = $(this).attr(\"data-min-price\");\n        var maxprice = $(this).attr(\"data-max-price\");\n        var isgrid = $(this).attr(\"data-isgridpage\");\n\n        if(weight == '0') {\n            weight = false;\n        }\n\n        if(effect == '0') {\n            effect = false;\n        }\n\n\n        productQuery(retailer, perpage, div, cat, iscatpage, sort, subcategory, type, price, thc, datatype, section, weight, effect, custom_section, is_search, search_term, isbrand, brand, minprice, maxprice, isgrid);\n    });\n\n\n});\n\nvar retailerId = localStorage.getItem(\"retailerId\");\n\n\nif(retailerId) {\n// Doobie Express e25dccad-d3b7-418a-8c7f-18a5f4795b77\n// Doobie NYC Scheduled 6257c1d3-1022-4250-9666-73644d762972\n\n\n    if( (retailerId == 'e25dccad-d3b7-418a-8c7f-18a5f4795b77') || (retailerId == '6257c1d3-1022-4250-9666-73644d762972') ) {\n        localStorage.setItem(\"locationString\", \"NY\");\n    } else {\n\n\n\n        var retailer =  localStorage.getItem(\"retailerId\");\n        var checkoutId =  localStorage.getItem(retailer+\"_checkoutId\");\n\n        if(retailer == 'c7e42b3f-f623-48cf-8ca3-2bb8459fe749') {\n\n            var ishoc =  localStorage.getItem(\"isHoc\");\n\n\n            if(ishoc == \"1\") {\n\n                $( document ).ready(function() {\n                    var element = document.getElementById(\"sitefooter\");\n                    element.classList.add(\"hidden\");\n                });\n\n            }\n\n            if(!checkoutId) {\n                createCheckoutObject(\"c7e42b3f-f623-48cf-8ca3-2bb8459fe749\");\n            } else {\n                getCartQuery();\n            }\n\n        }  else {\n            localStorage.setItem(\"locationString\", \"MA\");\n            $('.deals-item').removeClass('hidden');\n        }\n\n\n\n\n\n    }\n\n} else {\n\n\n\n    localStorage.setItem(\"auth\", \"Bearer public-eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJBUEktQ0xJRU5UIiwiZXhwIjozMzIwMjk5MDQ4MCwiaWF0IjoxNjQ2MDgxNjgwLCJpc3MiOiJodHRwczovL2R1dGNoaWUuY29tIiwianRpIjoiNzA1YjdiMjgtNTM4ZS00NmNhLTgwYjUtMGJiY2NiNGJmN2VlIiwiZW50ZXJwcmlzZV9pZCI6IjM3NTI5MDRhLWZiNzItNDI4ZS05OTI0LTk4NzE0M2YxZGFlYSIsInV1aWQiOiJmMWY2NzhlMC02MWNjLTQ3MDktODYyNC1jNTM0NWZhZWQ5ZGEifQ.m8SonI4lsdWwtMTBP35c78vNYQoy2tX2sEmknfBIpeg\");\n    localStorage.setItem(\"retailerId\", \"a8acceb2-b3be-4880-b89e-bc0143be8e12\");\n\n}\n\n//# sourceURL=webpack://project0/./src/scripts/app.bundle.js?");

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	// This entry module can't be inlined because the eval devtool is used.
/******/ 	__webpack_modules__["./src/scripts/app.bundle.js"]();
/******/ 	var __webpack_exports__ = {};
/******/ 	__webpack_modules__["./dist/app.js"]();
/******/ 	
/******/ })()
;</pre></body></html>