{"version":3,"file":"hotSheet.min.js","sources":["scripts/hotSheet.min.js"],"sourcesContent":["/**************************************************************************\nName: hotSheet.js\nDescription: Specials tile script. Includes lazy loading and AJAX add to cart.\nDate Created: 12/02/2022 by Jenna Hart\nModified:\n**************************************************************************/\n\njQuery.noConflict();\n\nvar itemOptions = itemOptions || (function(){\n\tvar thisData = {};\n\n\t// Data\n\tthisData.productData; // Query - Product data\n\tthisData.cartItems; // Query - Shopping List data\n\tthisData.hotSheetID; // Numeric - Internal Specials ID\n\n\t// Options\n\tthisData.isUserAuthenticated; // Boolean - is user authenticated\n\tthisData.favoritesList; // String - list of item numbers in favorites\n\tthisData.sessionFavorite; // String - usfitem saved in the session to add to favorite\n\tthisData.productTotal; // Float - dollar amount total of all products in the shopping list\n\tthisData.addDisabled; // Boolean - if true, Add buttons are disabled\n\tthisData.trackFB; // Boolean - if true, does Facebook Event Tracking\n\tthisData.showFB; // Boolean - if true, displays console log of Facebook Event Tracking data to AVIBE\n\tthisData.callback; // String - if provided, calls the function provided after init\n\tthisData.categoryID; // Numeric - category ID filter\n\tthisData.departmentID; // Numeric - department ID filter\n\n\t// Store Data\n\tthisData.storePhone; // String - formatted store phone number\n\tthisData.freezerClosed; // Boolean - if true, the store's freezer is closed\n\tthisData.freezerClosedCase; // Boolean - if true, the store's freezer is closed and cases are also unavailable\n\tthisData.freezerClosedMessage; // String - message regarding freezer closure\n\n\tvar isLoading = false;\n\tvar listArray = [];\n\n\tjQuery( document ).ready( function( ){\n\t\tsetListArray();\n\n\t\tjQuery(window).on( 'orientationchange resize', function() {\n setWrapperHeight(false);\n\t\t\tsetTitleHeight('.hotsheet-tile-title');\n\t\t\tsetMobileAddWidget();\n\t\t\tsetImages(600);\n });\n\n\t\tjQuery(window).on('scroll', function() {\n\t\t\tif(!isLoading) {\n\t\t\t\tsetLoadMore();\n\t\t\t\tsetWrapperHeight(false);\n\t\t\t}\n\t\t});\n\n\t\tjQuery('.layPage').on('click', function(evt) {\n\t\t\tlet activeWidget = jQuery('.hotsheet-tile-widget.is-active'),\n\t\t\t\thasActiveWidget = activeWidget.length,\n\t\t\t\ttarget = jQuery(evt.target);\n\t\t\t\n\t\t\tif(hasActiveWidget) {\n\t\t\t\tlet isTile = target.hasClass('hotsheet-tile') || target.parents('.hotsheet-tile').length > 0 ? 1 : 0;\n\n\t\t\t\tif(isTile) {\n\t\t\t\t\tlet tile = target.hasClass('hotsheet-tile') ? target : target.parents('.hotsheet-tile'),\n\t\t\t\t\t\twidget = tile.find('.hotsheet-tile-widget.is-active');\n\n\t\t\t\t\tif(widget.length > 0) {\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\twidget.removeClass('is-active');\n\t\t\t\t\t}\t\n\t\t\t\t} else {\n\t\t\t\t\tactiveWidget.removeClass('is-active');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tjQuery('body').on('focusin', 'input[name=\"unitQty\"], input[name=\"caseQty\"]', function(evt) {\n\t\t\tlet input = jQuery(this),\n\t\t\t\tvalue = input.val();\n\n\t\t\tinput.attr('data-value', value);\n\t\t});\n\n\t\tjQuery('body').on('keyup', 'input[name=\"unitQty\"], input[name=\"caseQty\"]', function(evt) {\n\t\t\tlet keyCode = evt.keyCode || evt.which,\n\t\t\t\tinput = jQuery(this),\n\t\t\t\tprevValue = parseInt(input.attr('data-value')),\n\t\t\t\tvalue = parseInt(input.val()),\n\t\t\t\tisUnit = input.hasClass('input-unit') ? true : false,\n\t\t\t\twidget = input.parents('.hotsheet-tile-widget'),\n\t\t\t\tlimit = isUnit ? parseInt(widget.attr('data-limit')) : 0,\n\t\t\t\tbtnMethod = '';\n\n\t\t\t// If value exceeds unit limit, reset the value\n\t\t\tif(isUnit && limit > 0 && value > limit)\n\t\t\t\tinput.val(limit);\n\n\t\t\t// If tab or shift is pressed, GNDN\n\t\t\tif(keyCode != 9 && keyCode != 16 && input.val().length > 0) {\n\t\t\t\tif(prevValue < value) btnMethod = 'qtyUp';\n\t\t\t\telse if(prevValue > value) btnMethod = 'qtyDown';\n\t\t\t\telse btnMethod = 'noChange';\n\n\t\t\t\twidget.attr('data-method', btnMethod);\n\n\t\t\t\tif(btnMethod != 'noChange')\n\t\t\t\t\tsetItem(evt.target, widget);\n\t\t\t}\n\t\t});\n\n\t\tjQuery('body').on('change', 'input[name=\"unitQty\"], input[name=\"caseQty\"]', function(evt) {\n\t\t\tlet input = jQuery(this);\n\n\t\t\tif(input.val().length == 0) {\n\t\t\t\tlet widget = input.parents('.hotsheet-tile-widget');\n\n\t\t\t\tinput.val(0);\n\t\t\t\tsetItem(evt.target, widget);\n\t\t\t}\n\t\t});\n\n\t\tjQuery('body').on('click', '.hotsheet-tile-widget-button', function(evt) {\n\t\t\tlet button = jQuery(this),\n\t\t\t\twidget = button.parents('.hotsheet-tile-widget'),\n\t\t\t\tisAdd = button.hasClass('button-add') ? true : false,\n\t\t\t\tisUnit = button.hasClass('button-unit') ? true : false,\n\t\t\t\tinput = isUnit ? widget.find('input[name=\"unitQty\"]') : widget.find('input[name=\"caseQty\"]'),\n\t\t\t\tstartQty = parseInt(input.val()),\n\t\t\t\tquantity = isAdd ? startQty + 1 : startQty - 1,\n\t\t\t\tlimit = isUnit ? parseInt(widget.attr('data-limit')) : 0,\n\t\t\t\tbtnMethod = isAdd ? 'qtyUp' : 'qtyDown';\n\n\t\t\twidget.attr('data-method', btnMethod);\n\n\t\t\tif(quantity < 0)\n\t\t\t\tquantity = 0;\n\t\t\telse if(limit == 0 || quantity <= limit)\n\t\t\t\tsetItem(evt.target, widget, input, quantity);\n\t\t});\n\n\t\tjQuery('body').on('click', '.hotsheet-tile-widget:not(.is-active)', function() {\n\t\t\tjQuery('.hotsheet-tile-widget').removeClass('is-active');\n\t\t\tjQuery(this).addClass('is-active');\n\t\t});\n\n\t\tjQuery('body').on('click', '.star.active, .addToFavorites.active', function(evt) {\n\t\t\tevt.preventDefault();\n\n\t\t\tvar sfitem = jQuery(this).attr('data-sfitem');\n\n\t\t\tremoveFavorite(sfitem);\n\t\t});\n\n\t\tjQuery('body').on('click', '.star:not(.active, .no-hover, .gray), .addToFavorites:not(.active)', function(evt) {\n\t\t\tevt.preventDefault();\n\n\t\t\tvar sfitem = jQuery(this).attr('data-sfitem');\n\n\t\t\tif(!thisData.isUserAuthenticated) {\n\t\t\t\tsaveFavoriteToSession(sfitem);\n\t\t\t\topenSignInModal('', true);\n\t\t\t} else {\n\t\t\t\taddFavorite(sfitem);\n\t\t\t}\n\t\t});\n\t\t\n\t\tjQuery('body').on('click', '.load-products:not(.is-loading)', function() {\n\t\t\tisLoading = true;\n\t\t\tjQuery(this).addClass('is-loading');\n\n\t\t\tsetTimeout(function() {\n\t\t\t\tgetProductTiles();\n\t\t\t}, 100);\n\t\t});\n\n\t\tjQuery(\"#hotsheetDepartmentForm\").on(\"submit\", function(event){\n\t\t\t/* Filters the hotsheet items by department using an AJAX request */\n\t\t\tevent.preventDefault();\n\n\t\t\tthisData.departmentID = jQuery(\"#departmentID\").val();\n\n\t\t\tresetOption();\n\t\t});\n\n\t\tjQuery('#categoryAnchor').on('change', function() {\n\t\t\tif(jQuery(window).width() <= 768)\n\t\t\t\tjQuery(this).closest('form').submit();\n\t\t});\n\t});\n\n\tfunction getProductTiles(end, callback){\n\t\tjQuery('.hotsheet-count').removeClass('is-active');\n\n\t\tisLoading = true;\n\n\t\tlet lastTile = jQuery('.hotsheet-tile').last();\n\t\tlet perPage = 11;\n\t\tlet dataObject = { method : 'getHotSheetTileHTMLAjax' }\n\n\t\tdataObject.data = JSON.stringify(thisData.productData);\n\t\tdataObject.cartItems = JSON.stringify(thisData.cartItems);\n\t\tdataObject.hotSheetID = thisData.hotSheetID;\n\t\tdataObject.startRow = lastTile.length > 0 ? parseInt(lastTile.attr('data-tile')) + 1 : 1;\n\t\tdataObject.endRow = end != undefined && end > 0 ? end : dataObject.startRow + perPage;\n\t\tdataObject.favoritesList = thisData.favoritesList;\n\t\tdataObject.total = thisData.productTotal;\n\t\tdataObject.addDisabled = thisData.addDisabled;\n\t\tdataObject.storePhone = thisData.storePhone;\n\t\tdataObject.categoryID = thisData.categoryID;\n\t\tdataObject.departmentID = thisData.departmentID;\n\t\tdataObject.freezerClosed = thisData.freezerClosed;\n\t\tdataObject.freezerClosedCase = thisData.freezerClosedCase;\n\t\tdataObject.freezerClosedMessage = thisData.freezerClosedMessage;\n\n\t\tjQuery.ajax( {\n\t\t\ttype : 'post',\n\t\t\turl : '/cfcs/hotSheetGW.cfc',\n\t\t\tcache : false,\n\t\t\tasync : true,\n\t\t\tdataType : 'json',\n\t\t\tdata : dataObject,\n\t\t\tsuccess : function( data ){\n\t\t\t\tvar wrapper = jQuery('.hotsheet-wrapper');\n\n\t\t\t\treduceWrapperHeight();\n\n\t\t\t\tif(data)\n\t\t\t\t{\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tjQuery(data).appendTo(wrapper);\n\n\t\t\t\t\t\tjQuery('.hotsheet-loading').hide();\n\n\t\t\t\t\t\tsetProductCount();\n\t\t\t\t\t\tsetTitleHeight('.hotsheet-tile-title');\n\t\t\t\t\t\tsetImages(600);\n\t\t\t\t\t\tsetMobileAddWidget();\n\t\t\t\t\t\tsetWrapperHeight();\n\t\t\t\t\t}, 200);\n\t\t\t\t}\n\n\t\t\t\t// Wait until transitions have finished\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(thisData.isUserAuthenticated && thisData.sessionFavorite != undefined && thisData.sessionFavorite.length > 0)\n\t\t\t\t\t\taddFavorite(thisData.sessionFavorite);\n\n\t\t\t\t\tif(callback)\n\t\t\t\t\t\tcallback();\n\t\t\t\t}, 710);\n\t\t\t},\n\t\t\terror : function( data ) {\n\t\t\t\tshowErrorNotification();\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction resetOption()\n\t{\n\t\tjQuery('.hotsheet-transition-wrapper').css('height', 0);\n\n\t\tsetTimeout(function(){\n\t\t\tjQuery('.hotsheet-loading').show();\n\t\t}, 450);\n\n\t\tsetTimeout(function(){\n\t\t\tjQuery('.hotsheet-wrapper').html('');\n\n\t\t\tgetProductTiles();\n\t\t}, 550);\n\t}\n\n\tvar setLoadMore = debounce(function()\n\t{\n\t\tif(!isLoading) {\n\t\t\tvar countContainer = jQuery('.product-count'),\n\t\t\t\tcount = countContainer.attr('data-count'),\n\t\t\t\tcountTotal = countContainer.attr('data-totalcount'),\n\t\t\t\tlastTile = jQuery('.hotsheet-tile').last().prev().prev().prev().prev(),\n\t\t\t\tlastTileVisible = lastTile.length > 0 && lastTile.visible(true) ? true : false,\n\t\t\t\tcountContainerVisible = countContainer.visible(true) ? true : false,\n\t\t\t\thsTilesVisible = jQuery('.specialsLanding').visible(true);\n\n\t\t\tif ((lastTileVisible || countContainerVisible || hsTilesVisible) && count != countTotal) {\n\t\t\t\tisLoading = true;\n\t\t\t\tjQuery('.load-products').addClass('is-loading');\n\n\t\t\t\tvar tileDebounce = debounce(function(){\n\t\t\t\t\tgetProductTiles();\n\t\t\t\t}, 300);\n\n\t\t\t\ttileDebounce();\n\t\t\t}\n\t\t}\n\t}, 100);\n\n\tvar showErrorNotification = function()\t{\n\t\t//Shows an error notification\n\t\tvar modal = jQuery('.modal-notify'),\n\t\t\tfocusElement = modal.find('.close-modal-button'),\n\t\t\tmessage = 'Unexpected issue, please try again',\n\t\t\tdelay = jQuery('.modal.active').length > 0 ? 510 : 0;\n\n\t\tsetTimeout(function() {\n\t\t\topenModal(modal, focusElement, message);\n\t\t}, delay);\n\n\t\tjQuery('body').find('.add-selected').removeClass('is-loading');\n\t\tjQuery('.hotsheet-tile .delete').removeClass('is-disabled');\n\t}\n\n\tfunction getItemData(target)\n\t{\n\t\tlet itemData = {},\n\t\t\tel = jQuery(target),\n\t\t\titemClass = el.attr('data-ref'),\n\t\t\titem = el.parents('.' + itemClass),\n\t\t\tinputUnit = item.find('input[name=\"unitQty\"]'),\n\t\t\tinputCase = item.find('input[name=\"caseQty\"]');\n\n\t\titemData.itemID = item.attr('data-id');\n\t\titemData.sfitem = item.attr('data-sfitem');\n\t\titemData.name = item.attr('data-name');\n\t\titemData.image = item.attr('data-image');\n\t\titemData.sale = parseInt(item.attr('data-sale'));\n\t\titemData.scaleItem = parseInt(item.attr('data-scaleitem'));\n\t\titemData.multiply = parseFloat(item.attr('data-multiply'));\n\t\titemData.unitPrice = parseFloat(item.attr('data-unitprice'));\n\t\titemData.unitreg = parseFloat(item.attr('data-unitreg'));\n\t\titemData.casePrice = parseFloat(item.attr('data-caseprice'));\n\t\titemData.casereg = parseFloat(item.attr('data-casereg'));\n\t\titemData.unitQty = inputUnit.val() > 0 ? parseInt(inputUnit.val()) : 0;\n\t\titemData.caseQty = inputCase.length > 0 && inputCase.val() > 0 ? parseInt(inputCase.val()) : 0;\n\t\titemData.unitTotal = itemData.unitPrice * itemData.unitQty * itemData.multiply;\n\t\titemData.caseTotal = itemData.casePrice * itemData.caseQty * itemData.multiply;\n\t\titemData.total = itemData.unitTotal + itemData.caseTotal;\n\t\titemData.prodTotal = itemData.total.toFixed(2).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, \"$1,\");\n\t\t\n\t\titemData.savings = itemData.unitreg > 0 || itemData.casereg > 0 ? (((itemData.unitreg * itemData.unitQty) + (itemData.casereg * itemData.caseQty)) - itemData.total ) * itemData.multiply : 0;\n\n\t\treturn itemData;\n\t}\n\n\tvar setSidebarDisplay = function(itemID, result, hasPrice)\n\t{\n\t\tvar sidebar = jQuery('.psSideRecent');\n\t\tvar endTotalCont = sidebar.find('.endTotal');\n\n\t\tsidebar.find('.end-total-container').removeClass('is-hidden');\n\n\t\t// Check that the total and View All link exist\n\t\t// Add them if they don't\n\t\tif(endTotalCont == undefined || endTotalCont.length <= 0)\n\t\t{\n\t\t\tvar endTotalCont = jQuery('');\n\t\t\tvar listLink = jQuery('View All');\n\n\t\t\tendTotalCont.appendTo(sidebar);\n\t\t\tlistLink.appendTo(sidebar);\n\n\t\t\tvar endTotalCont = sidebar.find('.endTotal');\n\t\t}\n\n\t\t// If the item is already in the sidebar, hide it\n\t\tjQuery('.product-row-side[data-id=\"' + itemID + '\"]').removeClass('is-active').attr('data-id', '');\n\n\t\t// Prepend the new item to the sidebar and update the count and total\n\t\tsetTimeout(function() {\n\t\t\tif(hasPrice)\n\t\t\t\tjQuery(result.html).prependTo(sidebar);\n\n\t\t\tjQuery('.itemCount').attr('data-itemcount', result.COUNT).html('(' + result.COUNT + ')');\n\t\t\tendTotalCont.html(result.TOTAL);\n\n\t\t\tsetClickCarryBtn(result.TOTAL.replace('$', ''));\n\t\t}, 50);\n\n\t\t// Animate the new item into view\n\t\tsetTimeout(function() {\n\t\t\tvar row = jQuery('body').find(jQuery('.product-row-side[data-id=\"' + itemID + '\"'));\n\t\t\trow.addClass('is-active');\n\t\t}, 100);\n\n\t\t// Animate any extra items out of view\n\t\tsetTimeout(function() {\n\t\t\tvar rows = jQuery('.product-row-side.is-active');\n\n\t\t\tif(rows.length > 3)\n\t\t\t{\n\t\t\t\tfor (var i = rows.length; i > 3; i--)\n\t\t\t\t{\n\t\t\t\t\tjQuery('.product-row-side.is-active').last().removeClass('is-active');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetSidebar();\n\t\t}, 150);\n\t}\n\n\tvar getSidebarDisplay = function(target)\n\t{\n\t\tvar sidebar = jQuery('.psSideRecent'),\n\t\t\titemData = getItemData(target),\n\t\t\thasPrice = parseFloat(itemData.prodTotal) > 0 ? true : false;\n\n\t\tif(sidebar.length > 0)\n\t\t{\n\t\t\tvar itemData = getItemData(target);\n\t\t\tvar sideDataObject = { method : 'getSidebarProductRowHTMLAjax' }\n\n\t\t\tsideDataObject.itemID = itemData.itemID;\n\t\t\tsideDataObject.itemTotal = itemData.total;\n\t\t\tsideDataObject.image = itemData.image;\n\t\t\tsideDataObject.itemDesc = itemData.name;\n\t\t\tsideDataObject.unitSellPrice = itemData.unitPrice;\n\t\t\tsideDataObject.unitQty = itemData.unitQty != undefined ? itemData.unitQty : 0;\n\t\t\tsideDataObject.caseSellPrice = itemData.casePrice;\n\t\t\tsideDataObject.caseQty = itemData.caseQty != undefined ? itemData.caseQty : 0;\n\t\t\tsideDataObject.showSpecial = itemData.sale > 0 && itemData.savings > 0 ? 1 : 0;\n\t\t\tsideDataObject.scaleItem = itemData.scaleItem;\n\n\t\t\tjQuery.ajax( {\n\t\t\t\ttype : 'post',\n\t\t\t\turl : '/cfcs/itemGW.cfc',\n\t\t\t\tcache : false,\n\t\t\t\tasync : true,\n\t\t\t\tdataType : 'json',\n\t\t\t\tdata : sideDataObject,\n\t\t\t\tsuccess : function(result){\n\t\t\t\t\tif(result)\n\t\t\t\t\t\tsetSidebarDisplay(sideDataObject.itemID, result, hasPrice);\n\t\t\t\t\telse\n\t\t\t\t\t\tshowErrorNotification();\n\t\t\t\t},\n\t\t\t\terror : function(result) {\n\t\t\t\t\tshowErrorNotification();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tvar setItemAjax = debounce(function(target, widget)\n\t{\n\t\tjQuery('body').find('.add-selected').addClass('is-loading');\n\n\t\tvar itemData = getItemData(target);\n\n\t\t// setSearchLogAction(itemData.itemID, 'add');\n\n\t\tvar data = [{\"itemID\": itemData.itemID, \"sfitem\": itemData.sfitem, \"unitQty\": itemData.unitQty, \"caseQty\": itemData.caseQty}];\n\t\tvar itemNums = [itemData.sfitem];\n\t\tvar itemIDs = [itemData.itemID];\n\n\t\tvar dataObject = { method : 'bulkAddProductAJAX' }\n\t\t\tdataObject.data = JSON.stringify(data);\n\t\t\tdataObject.itemNums = JSON.stringify(itemNums);\n\t\t\tdataObject.itemIDs = JSON.stringify(itemIDs);\n\n\t\tjQuery.ajax( {\n\t\t\ttype : 'post',\n\t\t\turl : '/cfcs/shopDAO.cfc',\n\t\t\tcache : false,\n\t\t\tasync : true,\n\t\t\tdataType : 'json',\n\t\t\tdata : dataObject,\n\t\t\tsuccess : function(result){\n\t\t\t\tif(result) {\n\t\t\t\t\twidget.find('input').each(function() {\n\t\t\t\t\t\tlet input = jQuery(this),\n\t\t\t\t\t\t\tvalue = input.val();\n\n\t\t\t\t\t\tinput.attr('data-value', value);\n\t\t\t\t\t});\n\n\t\t\t\t\t// Update cart count\n\t\t\t\t\tsetCartCount(result.CARTCOUNT);\n\n\t\t\t\t\t// Update Shopping List array\n\t\t\t\t\tupdateListArray(widget, itemData);\n\n\t\t\t\t\t// Update sidebar display\n\t\t\t\t\tgetSidebarDisplay(target);\n\n\t\t\t\t\t// Event Tracking\n\t\t\t\t\tsetEventTracking(target, widget, itemData);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tshowErrorNotification();\n\t\t\t},\n\t\t\terror : function(result) {\n\t\t\t\tshowErrorNotification();\n\t\t\t}\n\t\t});\n\t}, 500);\n\n\tvar setItem = function(target, widget, input, quantity)\n\t{\n\t\tif(input != undefined && quantity != undefined)\n\t\t\tinput.val(quantity);\n\n\t\tsetQuantity(widget);\n\t\tsetItemAjax(target, widget);\n\t};\n\n\tfunction getGap(inputLen) {\n\t\tswitch(inputLen) {\n\t\t\tcase 1:\n\t\t\t\tthisGap = 8;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthisGap = 5;\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tthisGap = 2;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tthisGap = 0;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthisGap = 8;\n\t\t}\n\n\t\treturn thisGap;\n\t}\n\n\tfunction checkQuantity(widget)\n\t{\n\t\tlet tile = widget.parents('.hotsheet-tile'),\n\t\t\tunitInput = widget.find('input[name=\"unitQty\"]'),\n\t\t\tcaseInput = widget.find('input[name=\"caseQty\"]'),\n\t\t\tunitQty = unitInput.val(),\n\t\t\tcaseQty = caseInput.val(),\n\t\t\tmessageBox = tile.find('.hotsheet-tile-message:not(.not-visible)'),\n\t\t\tmessagePlaceholder = tile.find('.hotsheet-tile-message.not-visible'),\n\t\t\tmessage = messageBox.find('.qty-over-20'),\n\t\t\thideBox = message.hasClass('has-margin') ? false : true,\n\t\t\thideMessage = messageBox.find('.has-show-hide'),\n\t\t\tlinkContainer = tile.find('.tile-link-container');\n\n\t\tif(unitQty > 20 || caseQty > 20) {\n\t\t\tmessagePlaceholder.removeClass('list-only');\n\t\t\tlinkContainer.removeClass('list-only');\n\t\t\tmessageBox.removeClass('is-hidden');\n\t\t\tmessage.removeClass('is-hidden');\n\n\t\t\tif(hideMessage.length > 0)\n\t\t\t\thideMessage.addClass('is-hidden');\n\t\t} else {\n\t\t\tmessage.addClass('is-hidden');\n\n\t\t\tif(hideMessage.length > 0) {\n\t\t\t\thideMessage.removeClass('is-hidden');\n\t\t\t} else if (hideBox) {\n\t\t\t\tmessagePlaceholder.addClass('list-only');\n\t\t\t\tlinkContainer.addClass('list-only');\n\t\t\t\tmessageBox.addClass('is-hidden');\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet boxHeight = messageBox.height();\n\t\ttile.find('.hotsheet-tile-message.not-visible').css('height', boxHeight + 'px');\n\t}\n\n\tfunction setQuantity(widget)\n\t{\n\t\tlet tile = widget.parents('.hotsheet-tile'),\n\t\t\tunitQty = widget.find('input[name=\"unitQty\"]').val(),\n\t\t\tcaseQty = widget.find('input[name=\"caseQty\"]').val(),\n\t\t\tunitLen = unitQty != undefined ? unitQty.length : 1,\n\t\t\tcaseLen = caseQty != undefined ? caseQty.length : 1,\n\t\t\tthisLen = unitLen > caseLen ? unitLen : caseLen,\n\t\t\tlimit = parseInt(widget.attr('data-limit')),\n\t\t\tunitMinusDisabled = unitQty != undefined && unitQty <= 0 ? true : false,\n\t\t\tunitAddDisabled = unitQty != undefined && limit > 0 && unitQty >= limit ? true : false,\n\t\t\tcaseMinusDisabled = caseQty != undefined && caseQty <= 0 ? true : false,\n\t\t\tthisGap = getGap(thisLen);\n\n\t\t// Check for quantity over/under 20\n\t\tcheckQuantity(widget);\n\n\t\ttile.find('.hotsheet-tile-widget').each(function() {\n\t\t\tlet thisWidget = jQuery(this),\n\t\t\t\tunitMinus = thisWidget.find('.button-unit.button-minus'),\n\t\t\t\tunitAdd = thisWidget.find('.button-unit.button-add'),\n\t\t\t\tcaseMinus = thisWidget.find('.button-case.button-minus'),\n\t\t\t\tunitCount = thisWidget.find('.count-value-unit'),\n\t\t\t\tcaseCount = thisWidget.find('.count-value-case');\n\n\t\t\t// Open widget state handling\n\t\t\tunitMinus.attr('disabled', unitMinusDisabled);\n\t\t\tunitAdd.attr('disabled', unitAddDisabled);\n\t\t\tcaseMinus.attr('disabled', caseMinusDisabled);\n\n\t\t\tthisWidget.find('.product-controls-row').removeClass('gap-0 gap-2 gap-5 gap-8');\n\t\t\tthisWidget.find('.product-controls-row').addClass('gap-' + thisGap);\n\n\t\t\tthisWidget.find('.hotsheet-tile-widget-quantity').removeClass('hotsheet-tile-widget-quantity-1 hotsheet-tile-widget-quantity-2 hotsheet-tile-widget-quantity-3 hotsheet-tile-widget-quantity-4');\n\t\t\tthisWidget.find('.hotsheet-tile-widget-quantity').addClass('hotsheet-tile-widget-quantity-' + thisLen);\n\n\t\t\t// Closed widget state handling\n\t\t\tunitCount.removeClass('count-value-1 count-value-2 count-value-3 count-value-4').addClass('count-value-'+ thisLen).text(unitQty);\n\t\t\tif(unitQty > 0)\n\t\t\t\tunitCount.parent().addClass('is-active');\n\t\t\telse \n\t\t\t\tunitCount.parent().removeClass('is-active');\n\n\t\t\tif(caseCount) {\n\t\t\t\tcaseCount.removeClass('count-value-1 count-value-2 count-value-3 count-value-4').addClass('count-value-'+ thisLen).text(caseQty);\n\t\t\t\n\t\t\t\tif(caseQty > 0)\n\t\t\t\t\tcaseCount.parent().addClass('is-active');\n\t\t\t\telse\n\t\t\t\t\tcaseCount.parent().removeClass('is-active');\n\t\t\t}\n\n\t\t\tif(unitQty > 0 || caseQty > 0)\n\t\t\t\tthisWidget.addClass('has-value');\n\t\t\telse\n\t\t\t\tthisWidget.removeClass('has-value');\n\t\t});\n\t}\n\n\tvar showunitSelectMsg = function( selectedVal, itemID ){\n\t\t/* Shows or hides the warning message when the user selects more than 20 units/cases of an item */\n\t\tvar warningMsg = jQuery('.qty-warning-msg' + itemID);\n\n\t\tif( selectedVal > 20)\n\t\t\twarningMsg.addClass('is-active').show();\n\t\telse\n\t\t\twarningMsg.removeClass('is-active').hide('fast');\n\n\t\tsetWrapperHeight();\n\t};\n\n\tvar reduceWrapperHeight = function(){\n\t\t/* Removes the load more section for a smooth transition when loading the next set of tiles */\n\t\tvar transitionWrapper = jQuery('.hotsheet-transition-wrapper'),\n\t\t\tremoveOnLoad = jQuery('.remove-on-load'),\n\t\t\twrapperHeight = transitionWrapper.height(),\n\t\t\tloadHeight = removeOnLoad.height(),\n\t\t\tnewHeight = wrapperHeight - loadHeight;\n\n\t\ttransitionWrapper.css('height', newHeight + 'px');\n\n\t\tsetTimeout(function() {\n\t\t\tremoveOnLoad.remove();\n\t\t}, 500);\n\t}\n\n\tvar setWrapperHeight = debounce(function(setLoading) {\n\t\tif(setLoading == undefined)\n\t\t\tvar setLoading = true;\n\n\t\t/* Sets the height of the product list wrapper */\n\t\tvar transitionWrapper = jQuery('.hotsheet-transition-wrapper'),\n\t\t\twrapper = jQuery('.hotsheet-wrapper');\n\n\t\tsetTimeout(function() {\n\t\t\ttransitionWrapper.css('height', wrapper.height() + 'px');\n\n\t\t\tif(setLoading)\n\t\t\t\tisLoading = false;\n\t\t}, 210);\n\t}, 100);\n\n\tvar setMobileAddWidget = debounce(function () {\n\t\tif(jQuery(window).width() <= 600) {\n\t\t\tjQuery('.hotsheet-tile-widget-container.showAt600.has-message').each(function() {\n\t\t\t\tlet addWidget = jQuery(this);\n\t\t\t\tlet hotsheetTile = addWidget.siblings('.hotsheet-tile-link');\n\t\t\t\tlet placeholder = hotsheetTile.find('.add-widget-wrapper');\n\n\t\t\t\tif(hotsheetTile.length > 0 && placeholder.length > 0) {\n\t\t\t\t\tlet bottom = hotsheetTile.innerHeight() - placeholder.position().top - placeholder.outerHeight() + 1;\n\t\t\t\t\tif(bottom > 56)\n\t\t\t\t\t\taddWidget.css('bottom', bottom + 'px');\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tjQuery('.hotsheet-tile-widget-container.showAt600.has-message').css('bottom', '56px')\n\t\t}\n\t}, 100);\n\n\tvar confirmAction = function(message, sfitem, callback){\n\t\t/* Prompts the user to confirm an action\n\t\t * The callback function will be passed the given sfitem if the user selects \"Yes\"\n\t\t */\n\t\tif(message == undefined || sfitem == undefined || callback == undefined)\n\t\t\treturn;\n\n\t\tvar modal = jQuery('.modal-confirm');\n\t\tvar focusElement = modal.find('.modal-confirm-button');\n\n\t\topenModal(modal, focusElement, message);\n\n\t\tjQuery('.modal-confirm-button').one('click', function() {\n\t\t\tcloseModal(modal);\n\t\t\tcallback(sfitem);\n\t\t});\n\n\t\tjQuery('.modal-confirm-button').one('keyup', function(evt) {\n\t\t\tif( evt.keyCode == 13 || evt.keyCode == 27 ) {\n\t\t\t\tcloseModal(modal);\n\t\t\t\tcallback(sfitem);\n\t\t\t}\n\t\t});\n\t}\n\n\tvar setProductCount = function(){\n\t\t/* Sets the count of visible products to the currently displayed number out of the total\n\t\t * For example, it could update the product count to read \"20 of 132\"\n\t\t */\n\t\tvar countDisplay = jQuery('.product-count'),\n\t\t\tcountTotal = countDisplay.attr('data-totalcount'),\n countText = countTotal == 1 ? ' Item' : ' Items';\n\n jQuery('.hotsheet-count').html(countTotal + countText).addClass('is-active');\n\t}\n\n\tfunction saveFavoriteToSession(sfitem)\n\t{\n\t\tif(sfitem)\n\t\t{\n\t\t\tvar dataObject = { method : 'addFavoriteSessionAJAX' }\n\t\t\t\tdataObject.usfitem = sfitem;\n\n\t\t\tjQuery.ajax( {\n\t\t\t\ttype : 'post',\n\t\t\t\turl : '/cfcs/shopDAO.cfc',\n\t\t\t\tcache : false,\n\t\t\t\tasync : true,\n\t\t\t\tdataType : 'json',\n\t\t\t\tdata : dataObject\n\t\t\t});\n\t\t}\n\t}\n\n\tvar setFavoriteData = function(sfitem, isAdd)\n\t{\n\t\t// Update item data in product array\n\t\tvar sfitemIndex = thisData.productData.COLUMNS.indexOf('SFITEM'),\n\t\t\tusfitemIndex = thisData.productData.COLUMNS.indexOf('USFITEM'),\n\t\t\tfavoriteIndex = thisData.productData.COLUMNS.indexOf('ISFAVORITE'),\n\t\t\titemIndex = thisData.productData.DATA.findIndex(x => x[sfitemIndex] == sfitem);\n\n\t\tif(itemIndex < 0)\n\t\t\titemIndex = thisData.productData.DATA.findIndex(x => x[usfitemIndex] == sfitem);\n\n\t\tthisData.productData.DATA[itemIndex][favoriteIndex] = isAdd;\n\t}\n\n\tvar setFavorite = function(sfitem, isAdd){\n\t\t/* Adds or removes an item from the user's favorites */\n\t\tvar dataObject = { method : 'setFavoriteAJAX' }\n\t\t\n\t\tdataObject.sfitem = sfitem;\n\t\tdataObject.isAdd = isAdd;\n\n\t\tjQuery.ajax( {\n\t\t\ttype : 'post',\n\t\t\turl : '/cfcs/shopDAO.cfc',\n\t\t\tcache : false,\n\t\t\tasync : true,\n\t\t\tdataType : 'json',\n\t\t\tdata : dataObject,\n\t\t\tsuccess : function( data ){\n\t\t\t\tif( data ) {\n\t\t\t\t\tsetFavoriteData(sfitem, isAdd);\n\n\t\t\t\t\tif(dataObject.isAdd > 0) {\n\t\t\t\t\t\tjQuery('.star[data-sfitem=\"' + sfitem + '\"], .addToFavorites[data-sfitem=\"' + sfitem + '\"]').addClass('active');\n\t\t\t\t\t\tjQuery('.addToFavorites[data-sfitem=\"' + sfitem + '\"] span').html('Remove from favorites');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery('.star[data-sfitem=\"' + sfitem + '\"], .addToFavorites[data-sfitem=\"' + sfitem + '\"]').removeClass('active');\n\t\t\t\t\t\tjQuery('.addToFavorites[data-sfitem=\"' + sfitem + '\"] span').html('Add to favorites');\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tshowErrorNotification()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror : function( data ) {\n\t\t\t\tshowErrorNotification();\n\t\t\t}\n\t\t});\n\t}\n\n\tvar removeFavorite = function(sfitem){\n\t\t/* Removes an item from the user's favorites */\n\t\tvar isAdd = 0;\n\n\t\tsetFavorite(sfitem, isAdd);\n\t}\n\n\tvar addFavorite = function(sfitem){\n\t\t/* Adds an item to the user's favorites */\n\t\tvar isAdd = 1;\n\n\t\tsetFavorite(sfitem, isAdd);\n\t}\n\n\tfunction debounce(func, wait, immediate) {\n\t\tvar timeout;\n\t\treturn function() {\n\t\t\tvar context = this, args = arguments;\n\t\t\tvar later = function() {\n\t\t\t\ttimeout = null;\n\t\t\t\tif (!immediate) func.apply(context, args);\n\t\t\t};\n\t\t\tvar callNow = immediate && !timeout;\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(later, wait);\n\t\t\tif (callNow) func.apply(context, args);\n\t\t};\n\t};\n\n\tvar setListArray = function()\n\t{\n\t\tif(typeof itemList != 'undefined') {\n\t\t\tlet sfitemIndex = itemList.COLUMNS.indexOf('SFITEM'),\n\t\t\t\tusfitemIndex = itemList.COLUMNS.indexOf('USFITEM'),\n\t\t\t\titemDescIndex = itemList.COLUMNS.indexOf('ITEMDESC'),\n\t\t\t\tunitQtyIndex = itemList.COLUMNS.indexOf('ITEM_QUANTITY'),\n\t\t\t\tcaseQtyIndex = itemList.COLUMNS.indexOf('CASE_QUANTITY'),\n\t\t\t\tunitPriceIndex = itemList.COLUMNS.indexOf('UNITSELLPRICE'),\n\t\t\t\tcasePriceIndex = itemList.COLUMNS.indexOf('CASESELLPRICE'),\n\t\t\t\tscaleItemIndex = itemList.COLUMNS.indexOf('SCALEITEM'),\n\t\t\t\tavgCaseWeightIndex = itemList.COLUMNS.indexOf('AVECASEWEIGHT');\n\n\t\t\tfor (var i = 0; i < itemList.DATA.length; i++)\n\t\t\t{\n\t\t\t\tlet toMultiply = itemList.DATA[i][scaleItemIndex] == 1 && itemList.DATA[i][avgCaseWeightIndex] > 0 ? parseInt(itemList.DATA[i][avgCaseWeightIndex]): 1,\n\t\t\t\t\titemID = itemList.DATA[i][usfitemIndex].length > 0 ? itemList.DATA[i][usfitemIndex] : itemList.DATA[i][sfitemIndex],\n\t\t\t\t\tprice = ((itemList.DATA[i][unitPriceIndex] * itemList.DATA[i][unitQtyIndex]) + (itemList.DATA[i][casePriceIndex] * itemList.DATA[i][caseQtyIndex])) * toMultiply;\n\n\t\t\t\tlistArray.push({\n\t\t\t\t\t\"id\" : itemID,\n\t\t\t\t\t\"name\" : itemList.DATA[i][itemDescIndex],\n\t\t\t\t\t\"unitQty\" : itemList.DATA[i][unitQtyIndex],\n\t\t\t\t\t\"caseQty\" : itemList.DATA[i][caseQtyIndex],\n\t\t\t\t\t\"price\" : price.toFixed(2)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tvar updateListArray = function(widget, itemData)\n\t{\n\t\tif(widget && itemData) {\n\t\t\tlet itemIndex = listArray.map(function(x) {return x.id; }).indexOf(itemData.sfitem),\n\t\t\t\ttoMultiply = parseInt(widget.attr('data-multiply')),\n\t\t\t\tprice = ((itemData.unitPrice * itemData.unitQty) + (itemData.casePrice * itemData.caseQty)) * toMultiply;\n\t\t\t\n\t\t\tif(itemIndex >= 0) {\n\t\t\t\tlistArray[itemIndex].unitQty = itemData.unitQty;\n\t\t\t\tlistArray[itemIndex].caseQty = itemData.caseQty;\n\t\t\t\tlistArray[itemIndex].price = price.toFixed(2);\n\t\t\t} else {\n\t\t\t\tlistArray.push({\n\t\t\t\t\t\"id\" : itemData.sfitem,\n\t\t\t\t\t\"name\" : itemData.name,\n\t\t\t\t\t\"unitQty\" : itemData.unitQty,\n\t\t\t\t\t\"caseQty\" : itemData.caseQty,\n\t\t\t\t\t\"price\" : price.toFixed(2)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Event Tracking\n\t\t// This is only for 'AddToCart' events\n\t\t// Other actions are tracked on display pages\n\tvar setEventTracking = function(target, widget, itemData)\n\t{\n\t\tlet data = {};\n\t\t\tdata.itemDesc = itemData.name;\n\t\t\tdata.sfitem = itemData.sfitem;\n\t\t\tdata.unitQty = itemData.unitQty;\n\t\t\tdata.caseQty = itemData.caseQty;\n\t\t\tdata.unitTotal = itemData.unitTotal.toFixed(2);\n\t\t\tdata.caseTotal = itemData.caseTotal.toFixed(2);\n\n\t\tlet el = jQuery(target),\n\t\t\thasUnit = el.hasClass('button-unit') || el.hasClass('input-unit') ? true : false,\n\t\t\thasCase = el.hasClass('button-case') || el.hasClass('input-case') ? true : false,\n\t\t\ttrackFB = thisData.trackFB != 'undefined' ? thisData.trackFB : false,\n\t\t\tshowFB = thisData.showFB != 'undefined' ? thisData.showFB : false,\n\t\t\tbtnMethod = widget.attr('data-method'),\n\t\t\titemLocation = 'Biweekly Specials';\n\n\t\t// Units\n\t\tif(hasUnit)\n\t\t\tvar itemChange = [{'id': data.sfitem, 'name': data.itemDesc.replace(/(['\"])/g, \"\\\\$1\"), 'type': 'unit', 'quantity': data.unitQty, 'price': data.unitTotal}, {}];\n\n\t\t// Cases\n\t\tif(hasCase)\n\t\t\tvar itemChange = [{'id': data.sfitem, 'name': data.itemDesc.replace(/(['\"])/g, \"\\\\$1\"), 'type': 'case', 'quantity': data.caseQty, 'price': data.caseTotal}, {}];\n\n\t\tif(hasUnit || hasCase)\n\t\t{\n\t\t\tif(trackFB) {\n\t\t\t\tlet thisData = {\n\t\t\t\t\t'event': 'cartUpdated',\n\t\t\t\t\t'item_location': itemLocation,\n\t\t\t\t\t'cart_contents': listArray,\n\t\t\t\t\t'item_change': itemChange,\n\t\t\t\t\t'button_method': btnMethod\n\t\t\t\t}\n\n\t\t\t\tdataLayer.push(thisData);\n\t\t\t\tsetDBEventTracking(JSON.stringify(thisData));\n\t\t\t}\n\t\t\telse if(showFB) {\n\t\t\t\tconsole.log(\"****** AVIBE Only -- Google Analytics event tracking code ******\");\n\t\t\t\tconsole.log(\"dataLayer.push({ 'event': 'cartUpdated', 'item_location': '\" + itemLocation + \"', 'cart_contents': \" + JSON.stringify(listArray) + \", 'item_change': \" + JSON.stringify(itemChange) + \", 'button_method': '\" + btnMethod + \"' });\");\n\t\t\t}\n\t\t}\n\t}\n\n return {\n init : function(data) {\n thisData = data;\n\n if(thisData.callback != undefined)\n\t\t\t\tgetProductTiles(0, thisData.callback);\n\t\t\telse\n\t\t\t\tgetProductTiles();\n }\n };\n}());\n"],"names":["jQuery","noConflict","itemOptions","thisData","isLoading","productData","cartItems","hotSheetID","isUserAuthenticated","favoritesList","sessionFavorite","productTotal","addDisabled","trackFB","showFB","callback","categoryID","departmentID","storePhone","freezerClosed","freezerClosedCase","freezerClosedMessage","listArray","getProductTiles","end","removeClass","let","lastTile","last","dataObject","method","data","JSON","stringify","startRow","length","parseInt","attr","endRow","undefined","total","ajax","type","url","cache","async","dataType","success","wrapper","reduceWrapperHeight","setTimeout","appendTo","hide","setProductCount","setTitleHeight","setImages","setMobileAddWidget","setWrapperHeight","addFavorite","error","showErrorNotification","document","ready","setListArray","window","on","setLoadMore","evt","activeWidget","hasActiveWidget","target","hasClass","parents","widget","find","preventDefault","input","this","value","val","keyCode","which","prevValue","isUnit","limit","btnMethod","setItem","button","isAdd","startQty","quantity","addClass","sfitem","removeFavorite","usfitem","openSignInModal","event","css","show","html","width","closest","submit","debounce","count","countTotal","lastTileVisible","countContainerVisible","hsTilesVisible","countContainer","prev","visible","modal","focusElement","delay","openModal","getItemData","itemData","el","itemClass","item","inputUnit","inputCase","itemID","name","image","sale","scaleItem","multiply","parseFloat","unitPrice","unitreg","casePrice","casereg","unitQty","caseQty","unitTotal","caseTotal","prodTotal","toFixed","replace","savings","getSidebarDisplay","sideDataObject","sidebar","hasPrice","itemTotal","itemDesc","unitSellPrice","caseSellPrice","showSpecial","result","endTotalCont","listLink","prependTo","COUNT","TOTAL","setClickCarryBtn","rows","i","setSidebar","setItemAjax","itemNums","itemIDs","each","setCartCount","CARTCOUNT","updateListArray","setEventTracking","setQuantity","tile","unitLen","caseLen","thisLen","unitMinusDisabled","unitAddDisabled","caseMinusDisabled","thisGap","inputLen","checkQuantity","unitInput","caseInput","messageBox","messagePlaceholder","message","hideBox","hideMessage","linkContainer","boxHeight","height","thisWidget","unitMinus","unitAdd","caseMinus","unitCount","caseCount","text","parent","transitionWrapper","removeOnLoad","wrapperHeight","loadHeight","remove","setLoading","addWidget","hotsheetTile","siblings","placeholder","bottom","innerHeight","position","top","outerHeight","countText","setFavorite","setFavoriteData","sfitemIndex","COLUMNS","indexOf","usfitemIndex","favoriteIndex","itemIndex","DATA","findIndex","x","func","wait","immediate","timeout","context","args","arguments","callNow","clearTimeout","apply","itemList","itemDescIndex","unitQtyIndex","caseQtyIndex","unitPriceIndex","casePriceIndex","scaleItemIndex","avgCaseWeightIndex","toMultiply","price","push","id","map","itemChange","hasUnit","hasCase","itemLocation","item_location","cart_contents","item_change","button_method","dataLayer","setDBEventTracking","console","log","init"],"mappings":"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"}