Rejensa Chews for Dogs (2024)

Home

{{/opts}}'; let packagingText var foodCalculatorOpen = false; var foodCalculatorUsed = false; let isQuantitySelectorExperimentActive = false; let isThreeColumnsLayoutExperimentActive = false; /** * It selects a sku with stock and minor value as default. * Priority are skus without autoship, otherwise first sku with stock. */ let setProductDefault = function() { let lessStrength = Infinity let lessPackaging = Infinity let stock = findNextSkuWithStock(); let defaultSelectProductStrength = stock[0].strengthSize let defaultSelectProductPackaging = stock[0].productSkuList; let packagingOfStrengthSize = stock[0].packagingOfSkuWithStock ? stock[0].packagingOfSkuWithStock : stock[0].productSkuList; let finalPrice = Infinity let firstProd = stock[0] stock.map((prod) => { let strength = parseInt(prod.strengthSize.match(/\d{1,}/g)) if(isNaN(strength)) { defaultSelectProductStrength = firstProd } else { if(lessStrength > strength) { lessStrength = strength defaultSelectProductStrength = prod } } packagingOfStrengthSize = defaultSelectProductStrength.packagingOfSkuWithStock ? defaultSelectProductStrength.packagingOfSkuWithStock : defaultSelectProductStrength.productSkuList; }) packagingOfStrengthSize.map((subpro) => { let packaging = parseInt(subpro.packaging.match(/\d{1,}/g)) let hasCt = subpro.packaging.match(/1-ct/) let shouldSelectAutoShip = hasCt && !defaultSelectProductStrength.packagingOfSkuWithStock ? true : false if(isNaN(packaging)) { defaultSelectProductPackaging = subpro } else { if(lessPackaging > packaging && shouldSelectAutoShip == false) { lessPackaging = packaging defaultSelectProductPackaging = subpro } } })

$j(".pill-size").closest("button").removeClass("selected"); $j('.pill-size i').closest("button").remove(); $j(".pill-packaging").removeClass("selected"); setSelectedSku(defaultSelectProductPackaging); selectedStrengthSize = selectedSku.strengthSize; selectedFlavorId = null setButtons(selectedSku); buildFeaturedReviews(); selectedPackaging = defaultSelectProductPackaging.packaging; $j("#packagingNotSelected").hide(); $j("#packagingNotSelected").prop('disabled', true); var qtyOverride = GetURLParameter('qty'); selectedQuantity = qtyOverride != null ? qtyOverride : 1; let pillSizeSelect = $j( ".pill-size" ); pillSizeSelect.each(function( index, pill ) { if($j(pill).attr('value') == defaultSelectProductStrength.strengthSize) { $j(pill).closest("button").addClass('selected'); $j(pill).closest("button").prepend(''); }}) setPackagingPillBy(defaultSelectProductStrength, selectedPackaging) packagingText = defaultSelectProductPackaging.packaging showPrice(defaultSelectProductPackaging) return defaultSelectProductPackaging; } /* Needed to calculate days - Food Calculator */ const oneCupInGrams = 84; /* 1 cup = 84 grams */ const oneLbInGrams = 453.592; /* 1 lb = 453.592 grams */ var isOrderTypeAutoShip = false; var isOrderTypeOneTimeOrder = false; var userChangedPillSelection = false; var buildStrengthSizeList = function(skus) { let regex = /\d+\.?\d*/ var strengthSizeList = []; $j.each(skus, function(key,sku) { let lowestSize = -1; try { if(sku.strengthSize.match(regex)) { lowestSize = regex.exec(sku.strengthSize); lowestSize = parseFloat(lowestSize); } //console.log("[lowestSize]: ", lowestSize, "[sku.strengthsize]: ", sku.strengthSize); } catch(e) { console.error("There was an error trying to order strengthSize: ", sku.strengthSize, "Error: ", e); } let strengthSize = { "name": sku.strengthSize, "value": true, "lowestSize": lowestSize, "customLabel": getFlavorFromSku(sku.productSkuList[0]) } strengthSizeList.push(strengthSize); }); return strengthSizeList; } var buildPackagingList = function(skus) { var packagingList = {}; $j.each(skus, function(key,sku) { packagingList[sku.packaging] = true; }); return packagingList; } var getStrengthSizeIndex = function(val) { var index = -1; $j.each(skus, function(key,sku) { if (sku.strengthSize == val) { index = key; } }); return index; } var getPackagingIndex = function(data,val) { $j.each(data, function(key,obj) { if (obj.packaging == val) { return key; } return -1; }); } var clearMin = function(skus) { $j.each(skus, function(key,strength) { $j.each(strength.productSkuList, function(key,sku) { sku.minimumQuantity = 1; }); }); return skus; } var fixMfgNameData = function(p) { p.mfgEcomDisplayName = getMfgEcomDisplayName(p.mfgEcomDisplayName); $j.each(skus,function(i,sku) { $j.each(sku.productSkuList, function(j,productSku) { productSku.mfgEcomDisplayName = getMfgEcomDisplayName(productSku.mfgEcomDisplayName); }); }); } var buildProductToAdd = function(sku,quantity) { var lastImpression = analyticsController.getSession().lastImpression; var price = isHFP ? ecomController.getHFPPrice(sku,getHFPProgram()) : sku.price; var p = { 'id': getPid(decodeHtml(product.analyticsDisplayName)), 'name': escape(getCleanName(product.analyticsDisplayName)), 'price': price, 'quantity': quantity, 'affiliation': rsl, 'category': lastImpression.category, 'list': lastImpression.list, 'variant': sku.partNumber, 'dimension9': lastImpression.dimension9 } return p; } var buildDetailEvent = function(sku) { return { 'id': sku.partNumber } } var analyticsRecordEvent = function(sku, actionType) { if (sku==null) { return; } vsga('adTracker.ec:addProduct', buildProductToAdd(sku,selectedQuantity)); var eventDetail = buildDetailEvent(sku); var lastImpression = analyticsController.getSession().lastImpression; switch (actionType) { case "add": vsga('adTracker.ec:setAction', 'add', eventDetail); var event = 'add to cart'; var autoshipSet = ($j("#addToCartFormFrequency").val() > 0); vsga('adTracker.set', 'dimension11', ''+autoshipSet); vsga('adTracker.set', 'dimension9', lastImpression.dimension9); vsga('adTracker.send', 'event', 'UX', 'click', event); break; case "autoshipthisitem": vsga('adTracker.ec:setAction', 'add', eventDetail); vsga('adTracker.set', 'dimension11', ''+true); vsga('adTracker.set', 'dimension9', lastImpression.dimension9); vsga('adTracker.send', 'event', 'UX', 'click', 'autoship this item'); break; case "openCustomSchedulePopup": vsga('adTracker.send', { hitType: 'event', eventCategory: 'Product Page', eventAction: 'Open Custom Schedule', eventLabel: eventDetail }); break; case "openFoodCalculator": vsga('adTracker.send', { hitType: 'event', eventCategory: 'Product Page', eventAction: 'Open Food Calculator', eventLabel: eventDetail }); break; case "applyDaysCalculated": vsga('adTracker.send', { hitType: 'event', eventCategory: 'Product Page', eventAction: 'Apply Food Calculator', eventLabel: eventDetail }); break; case "showMorePromotionDetails": vsga('adTracker.send', { hitType: 'event', eventCategory: 'Product Page', eventAction: 'Show more promotion details', eventLabel: eventDetail }); break; case "outOfStockRelatedCategoryLink": vsga('adTracker.send', { hitType: 'event', eventCategory: 'Product Page', eventAction: 'Out of stock related category link', eventLabel: eventDetail }); break; default: vsga('adTracker.ec:setAction', 'detail', eventDetail); vsga('adTracker.send', 'event', 'Detail', 'detail'); vsga('adTracker.set', 'dimension9', lastImpression.dimension9); break; } } var showShippingNotice = function(product) { var productShortName = product.mfgShortName.toUpperCase(); if (delayShippingMfg.includes(productShortName)) { var template = $j("#delayMessageTemplate").html(); var templateRC = $j("#delayMessageTemplateRC").html(); switch (productShortName) { case "ROYAL": template = templateRC; break; default: template = template.replace("{{shortName}}", productShortName); } $j("#delayMessageTemplate").html(template); $j("#delayMessageDisplay").show(); } } var buildBreadCrumb = function() { if (!document.referrer) { return; } var backUrl = new URL(document.referrer); var searchText = backUrl.searchParams.get('s') || backUrl.searchParams.get('search'); var arrow = ''; if (searchText != null && searchText != '') { $j('#breadCrumbLinks').html('

  1. '+ arrow +'

'); $j('#breadCrumbRef').html('Back to search results for "' + searchText + '"'); $j("#breadCrumbRef").prop("href", document.referrer) } else { var hierarchyQueryString = backUrl.searchParams.get('hierarchy'); if (hierarchyQueryString != null && hierarchyQueryString != '') { var allHierarchy = hierarchyQueryString.split('|'); var hierarchy = allHierarchy[allHierarchy.length - 1]; $j('#breadCrumbLinks').html('

  1. '+ arrow +'

'); $j('#breadCrumbRef').html('Back to ' + hierarchy); $j("#breadCrumbRef").prop("href", document.referrer) $j("#breadCrumbRef").data("hierarchy", hierarchyQueryString); } else { $j('#breadCrumbLinks').html('

  1. '+ arrow +'

'); $j('#breadCrumbRef').html('Back to Home'); } } $j('#breadCrumbRef').unbind().click(function(e) { e.preventDefault(); var target = $j(e.currentTarget); var href = target.attr('href'); var label = $j(target).text(); var hierarchy = $j(target).data('hierarchy'); if (hierarchy!=null) { label = ecomController.hierarchyToLabel(hierarchy); } var eventData = { 'eventCategory': 'Breadcrumb', 'eventAction': 'Item view breadcrumb click', 'eventLabel': label, 'hitCallback': function () { document.location.href = href; } } vsga('adTracker.send', 'event', eventData); }); } const containsAnyTerms = (string, array) => { return array.some(word => string.toLowerCase().includes(word)); } const matchPackagingOfDefaultSku = function(skuToFilterBy, skus) { const skusToRemove = []; skus.forEach(sku => { sku.productSkuList = sku.productSkuList.filter(skuProduct => skuProduct.rxForm == skuToFilterBy.rxForm ); if (sku.productSkuList.length < 1) { skusToRemove.push(sku); } }); return skus.filter(sku => !skusToRemove.includes(sku)); } const filterProduct = (pid,product) => { if (product.mfgShortName == "HILLS") { const filterSku = getSkuByProductId(pid, product.productSkuByStrengthList); product.productSkuByStrengthList = matchPackagingOfDefaultSku(filterSku, product.productSkuByStrengthList); document.querySelector("#strengthSizeLabel").innerHTML = "Flavor"; } return product; } const getFlavorFromSku = (sku) => { let flavor = sku.dynamicData.DYNAMIC_flavor; return flavor === undefined ? null : flavor; } const initQuantityComponent = () => { if (isQuantitySelectorExperimentActive) { quantitySelectorController.showComponent('#quantityContainer', selectedQuantity, 20, `This product's minimum quantity is ${selectedQuantity}`, "Choose 20 or fewer"); } } const initEDDCardComponent = (container, loadingState, estimatedDeliveryDatesProduct, zipCode) => { if (estimatedDeliveryDatesProduct) { var eddLocation = estimatedDeliveryDatesProduct.destinationAddressBean.city? estimatedDeliveryDatesProduct.destinationAddressBean.city + ' ' + estimatedDeliveryDatesProduct.destinationAddressBean.postal_code : estimatedDeliveryDatesProduct.destinationAddressBean.postal_code; var eddDateRange = ecomController.createDeliveryDateRange( estimatedDeliveryDatesProduct.estimatedShipments[0].shipmentList[0].estimatedDeliveryDateMin, estimatedDeliveryDatesProduct.estimatedShipments[0].shipmentList[0].estimatedDeliveryDateMax, 'PDP'); var eddTimeLeft = estimatedDeliveryDatesProduct.estimatedShipments[0].fulfillmentEstimateBean.timeLeft; eddCardController.showComponent(container, loadingState, eddLocation, eddDateRange, eddTimeLeft); } else { eddCardController.showComponent(container, loadingState, zipCode); } } const initThreeColumnsExperiment = () => { if(isThreeColumnsLayoutExperimentActive) { $j("#content-container").addClass("three-columns-experiment"); $j("#content_container")[0].style.maxWidth = "none"; } } const initComponents = () => { initQuantityComponent(); } const initExperiments = () => { isQuantitySelectorExperimentActive = ecomController.initExperiment("QuantitySelectorExperiment"); if(!isHFP) { const experimentId = 'threeColumnsExperiment'; const experiment = getExperiment(experimentId); if (experiment != null) { ecomController.segmentExperimentStartedEvent(experimentId); if (experiment.chosenVariant.id == '1') { isThreeColumnsLayoutExperimentActive = true; initThreeColumnsExperiment(); } } } } var buildPage = function() { isHFP = vs.util.isHFP(rsl); $j("#itemContainerLoading").show(); initExperiments(); initBindings(); setDefaults(); parseExistingCartQtys(); rest.setSite(siteId); rest.getProductById(pid, function(data) { product = filterProduct(pid, data); // Temporary pre schema change measure if (product.analyticsDisplayName == null) { product.analyticsDisplayName = product.ecomDisplayName; } skus = isHFP ? clearMin(product.productSkuByStrengthList) : product.productSkuByStrengthList; fixMfgNameData(product); defaultSku = getSkuByProductId(pid, skus); analyticsRecordEvent(defaultSku,"detail"); if (autoSelect()) { if (defaultSku!=null) { setSelectedSku(defaultSku); selectedStrengthSize = defaultSku.strengthSize; selectedPackaging = defaultSku.packaging; } var qtyOverride = GetURLParameter('qty'); selectedQuantity = qtyOverride != null ? qtyOverride : 1; } else { defaultSku = setProductDefault(); } profileController.addToRecent(defaultSku.productId); product.compoundingPharmacyId = compoundingController.getCompounderFromSkus(skus); product.hasTieredSkus = compoundingController.productHasTieredSkus(skus); product.strengthSizeList = buildStrengthSizeList(skus); generateStrengthSizeMenu(product.strengthSizeList, defaultSku); createPackagingPills(defaultSku); initComponents(); showShippingNotice(product); showRxNotice(isRxProduct(skus)); /*if (arrayOfTabDescriptionProducts.includes(product.id) && product.alternativeDescription && isRxProduct(product.productSkuByStrengthList)) { displayTabsTitles(product.alternativeDescription); displayTabSection(); } else { let description = defaultSku ? defaultSku.description : product.description; displayDetail(description); }*/ let description = defaultSku ? defaultSku.description : product.description; displayDetail(description); displayReturnAndRefund(returnPolicyUrl); $j("#itemContainerLoading").hide(); $j("#itemContainer").show(); getProductIdListById(skus); rest.getPromotionsForProductList(productIdList, function(data) { promotionAdjustments = ecomController.buildUniquePromotionList(data); promotionAdjustmentMap = data; if (product.hasTieredSkus) { var tierPromotion = { burstBlurb: "Quantity Price Breaks Available", burstDescription: "Quantity price breaks are available for this product. Select strength / size and packaging then click the Price Tiers link." } if (promotionAdjustments==null) { promotionAdjustments = []; } promotionAdjustments.push(tierPromotion); } updateItemAllPromotionForm(); if (selectedSku != undefined) { showPrice(selectedSku); } }); buildBreadCrumb(); loadProductImages(); doScriptShareCheck(); getExtraAttributesByProductId(defaultSku); setFrequencyForPreventatives(); checkForOutOfStockPills(); addModal(); accordionController.collapseAccordionContent('headingProductDescription') if (country == "GB") { $j("#oneTimeOrderInput").click(); } showEstimatedDeliveryDate = shouldShowEstimatedDeliveryDate() .then(showEstimatedDeliveryDate => { if (showEstimatedDeliveryDate) { if (userShippingAddress) { return getEstimatedDeliveryDatesProduct(selectedSku.partNumber); } else { AnalyticsService.segmentTrackProductViewedEvent(siteId, product.id, ecomController.getPageName(document.referrer), getEddProperties(false,false,"shipping address unavailable")); return Promise.reject(); } } else { AnalyticsService.segmentTrackProductViewedEvent(siteId, product.id, ecomController.getPageName(document.referrer), getEddProperties(false,false,"FE checks failed")); return Promise.reject(); } }) .then(result => { estimatedDeliveryDatesProduct = result; if (estimatedDeliveryDatesProduct.estimatedShipments.length != 0) { const experimentId = 'EDDonPDPExperiment'; const experiment = getExperiment(experimentId); if (experiment != null) { if(experiment?.chosenVariant?.id == '1') { initEDDCardComponent('#eddCardContainer', false, estimatedDeliveryDatesProduct); AnalyticsService.segmentTrackProductViewedEvent(siteId, product.id, ecomController.getPageName(document.referrer), getEddProperties(true,true)); } else { AnalyticsService.segmentTrackProductViewedEvent(siteId, product.id, ecomController.getPageName(document.referrer), getEddProperties(true,false,"control variant")); } } } else { AnalyticsService.segmentTrackProductViewedEvent(siteId, product.id, ecomController.getPageName(document.referrer), getEddProperties(false,false,estimatedDeliveryDatesProduct.error.message)); } }) .catch(error => { }); }); } /** * It adds modal functionality on each image of the product. */ let addModal = () => { if (selectedSku === undefined) { return; } let index = 0; if (selectedSku.assets.imageAssets.length > 0 || selectedSku.assets.videoAssets.length > 0) { selectedSku.assets.imageAssets.forEach(oneSku => { const position = index; const elements = "#image-" + selectedSku.productId + "-" + index + "-lens, #image-" + selectedSku.productId + "-" + index; $j(elements).on('click', function () { openModal(position); }); index++ }); selectedSku.assets.videoAssets.forEach(oneSku => { const position = index; $j("#image-" + selectedSku.productId + "-" + index + "-lens").on('click', function () { openModal(position); }); index++ }) } else { $j(document).on("click", "#image-single-" + selectedSku.productId + "-" + index, function () { openModal(index); }); } } var isRxProduct = function(skusByStrengthList) { var isRx = false; $j.each(skusByStrengthList, function(key,strength) { $j.each(strength.productSkuList, function(key,sku) { if (sku.productClass == "RX") { isRx = true; } }); }); return isRx; } var addPromoToPromoDescriptionContainer = function(promotion) { if(promotion != null && promotion.burstBlurb) { let promoInformation = promoDescription(promotion); $j("#promoList").append( "

  • " + promotion.burstBlurb + "
  • "); $j("#promoList").append( "

    " + promoInformation + "

    "); if(promotion.disclaimer) { $j("#promoList").append( "

    " + promotion.disclaimer + "

    "); } } } var promoDescription = function(promotion){ return promotion.burstDescription ? promotion.burstDescription : promotion.description; } function decodeHtmlEntities(html) { var txt = document.createElement("textarea"); txt.innerHTML = html; return txt.value; } var updateItemAllPromotionForm = function() { if (promotionAdjustments!=null && promotionAdjustments.length<=0) { return; } $j.each(promotionAdjustments, function(index, promotion) { addPromoToPromoDescriptionContainer(promotion); }); $j(".moreInfoPromoBurst").css("display","block"); $j("#accordion-item-promotion").removeClass('hide'); $j("[id=saleBadgeContainer]").show(); } var checkForPromotion = function() { // console.log(" checking: " + selectedSku.productId + " : " + promotionAdjustmentMap[selectedSku.productId].description); } var buildFeaturedReviews = function() { if (!isHFP || !reviewSku) { return; } rest.getHillsBazaarVoiceMapping() .then(function(data) { var mfgPartNumber = reviewSku.mfgPartNumber; var hillsIdentifier = data[mfgPartNumber]; if (hillsIdentifier) { rest.getFeaturedReviews(hillsIdentifier) .then(showFeaturedReviews); } }); }; var showFeaturedReviews = function(data) { if (data && data.Results.length > 0) { for (var i=0;i

    ') selectedStrengthSize = event.currentTarget.getAttribute("value"); selectedFlavorId = null; buildFeaturedReviews(); calculateDays(); selectMinimumPackaging(); getSelectedSku(true, true); setPackagingPillBy(selectedSku, selectedPackaging) selectedSku.openActive = true; getExtraAttributesByProductId(selectedSku); if (selectedSku == defaultSku){ loadProductImages(); } $j('.mobile-reviews-average').on('click', function(e) { setTimeout(function() { window.scrollBy(0, -150) }, 10); addReviewAnalytics(); }); $j('.desktop-reviews-average').on('click', function(e) { setTimeout(function() { window.scrollBy(0, -220) }, 10); addReviewAnalytics(); }); checkForOutOfStockPills(); addModal(); changeAddToCart(); }); $j('#quantity').on('input', function() { changeAddToCart(); }); $j('#quantity-selector_remove').on('click', function() { changeAddToCart(); }); $j('#quantity-selector_add').on('click', function() { changeAddToCart(); }); /** * It selects a sku trying to find a sku with stock or a selected sku before. */ let selectMinimumPackaging = () => { let packagingOfStrengthSize = getSkusForSelectedStrengthSize(selectedStrengthSize); let lessSize = Infinity; $j.each(packagingOfStrengthSize, function() { let size = parseInt(this.packaging.match(/\d{1,}/g)) let packagingWithoutAutoship = packagingOfStrengthSize.filter(sku => { return !sku.backordered && !sku.packaging.match(/1-ct/) }) let packagingWithoutStock = packagingOfStrengthSize.filter(sku => { return sku.backordered; }) let hasStockInSkusNOAutoship = packagingWithoutStock.length == packagingOfStrengthSize.length ? false : true; if (alreadySelected) { return; } if ((!hasStockInSkusNOAutoship && isAutoshipSku(this.packaging)) || (packagingWithoutAutoship.length != 0 && isAutoshipSku(this.packaging)) || (hasStockInSkusNOAutoship && this.backordered)) { return; } else if(lessSize > size) { lessSize = size setSelectedSku(this); selectedPackaging = this.packaging } }); $j.each(packagingOfStrengthSize, function() { let size = parseInt(this.packaging.match(/\d{1,}/g)) if(alreadySelected === this.packaging) { setSelectedSku(this); selectedPackaging = this.packaging return } }); } /** * It matches with packaging to packaging able to autoship. */ let isAutoshipSku = (value) => { return value.match(/1-ct/); } $j(document).on('click','.pill-packaging', function(event) { userChangedPillSelection = true; event.preventDefault(); $j(".pill-packaging").removeClass("selected"); if (isItemNutrition(defaultSku) && isPricePerUnit) { $j(event.currentTarget).addClass('selected'); selectedPackaging = $j(event.currentTarget).text().substring(0, $j(event.currentTarget).text().indexOf('$')); } else if (isItemPreventative(defaultSku.partNumber)) { $j(event.currentTarget).addClass('selected'); selectedPackaging = $j(event.currentTarget).text().substring(0, $j(event.currentTarget).text().indexOf('(')); } else { $j(event.currentTarget).addClass('selected'); selectedPackaging = $j(event.currentTarget).text(); } if (selectedPackaging != "") { $j("#packagingNotSelected").hide(); $j("#packagingNotSelected").prop('disabled', true); } selectedFlavorId = null; getSelectedSku(true, true); if(selectedSku) { selectedSku.openActive = true; getExtraAttributesByProductId(selectedSku); setFrequencyForPreventatives(); if (selectedSku == defaultSku){ loadProductImages(); } } if (isItemPreventative(defaultSku.partNumber) || (isItemNutrition(defaultSku) && isPricePerUnit)) { setPackagingPillBy(selectedSku, selectedPackaging) alreadySelected = event.currentTarget.getAttribute("value") } else { setPackagingPillBy(selectedSku, event.currentTarget.getAttribute("value")) alreadySelected = event.currentTarget.getAttribute("value") } calculateDays(); checkForOutOfStockPills(); addModal(); changeAddToCart(); }); $j("#flavorMenu").change(function () { selectedFlavorId = $j("#flavorMenu").val(); $j("#flavorMenu").blur(); if (selectedFlavorId) { $j("#flavorNotSelected").hide(); $j("#flavorNotSelected").prop('disabled', true); //setSelectedLabel("#flavorMenu"); } //getSelectedSku(); }); $j("#changeBtn").click(function () { if (isSkuSelected(selectedSku) && canUseButtons()) { canAddScriptShareCheck(); lockButtons(); doAddToCart(selectedSku.productId, selectedSku.skuId,null,selectedFlavorId,-1); } return false; }); $j("#autoShipItemBtn").click(function() { if (isSkuSelected(selectedSku) && canUseButtons()) { selectedQuantity = checkForMinimumQuantity($j("#quantity").val()); addToAutoShip(selectedSku.productId,selectedSku.skuId,selectedQuantity,selectedFlavorId,product.mfg + ' ' + selectedSku.partNumber); } return false; }); $j("#actionButtonAddToCart").click(function () { if (isSkuSelected(selectedSku) && canUseButtons() && isOrderTypeSelected() && isQuantityValid()) { canAddScriptShareCheck(); lockButtons(); if (foodCalculatorUsed) { doAddToCart(selectedSku.productId, selectedSku.skuId,null,selectedFlavorId,$j("#addToCartFormFrequency").val(),false,$j("#cupsPerMealSelect").val(),$j("#mealsPerDaySelect").val()); } else { doAddToCart(selectedSku.productId, selectedSku.skuId,null,selectedFlavorId,$j("#addToCartFormFrequency").val()); } } return false; }); $j("#actionButtonAddToCart").click(function () { setTimeout(function() { setPackagingPillBy(selectedSku, selectedPackaging) }, 5000); } ) /* $j("#learnMoreLink").click(function() { $j("#learnMoreDialog").dialog({ modal: true, resizable: false, draggable: false, //width: isMobile ? 300 : 450, title: "About AutoShips" }); }); */ $j("#tierLink").click(function(e) { e.preventDefault(); if (!selectedSku) { alertDialog("Quantity price breaks are available for this product. Please select strength / size and packaging options first, then click this link again.", "Strength and Size Required"); return false; } $j("#tierDialog").dialog({ modal: true, resizable: false, draggable: true, title: "Quantity Price Breaks" }); }); } var updateSocial = function(product) { $j('.rrssb-buttons').rrssb({ title: product.ecomDisplayName, url: location.href, description: product.ecomDisplayName, emailBody: product.ecomDisplayName }); } var canUseButtons = function() { return !$j("#changeBtn").prop('disabled'); } var lockButtons = function() { $j("#changeBtn").prop('disabled',true); $j("#itemsFloat :input").attr("disabled", true); } var autoSelect = function() { return ($j(location).attr('href').indexOf("auto")!=-1); } var autoFlavor = function() { } var getSkuByProductId = function(pid, skus) { var skuToUse = null; $j.each(skus, function(key,strength) { $j.each(strength.productSkuList, function(key,sku) { if (sku.productId == pid) { skuToUse = sku; } }); }); return skuToUse; } var getProductIdListById = function(skus) { $j.each(skus, function(key,strength) { $j.each(strength.productSkuList, function(key,sku) { productIdList.push(sku.productId); }); }); } var checkForMinimumQuantity = function(qty) { qty = (qty == null ? 1 : parseInt(qty)); var min = (selectedSku == null ? 1 : selectedSku.minimumQuantity); return (qty { document.getElementById(div).style.display = "none"; }; const cancelAction = (div) => { document.getElementById(div).style.display = "none"; }; //Function that sets title and description as parameter for new modal configuration var setModalConfigTitleAndDescription = function(title, description){ var modalTitle = title; var modalDescription = description; const config = { title: modalTitle, textDescription: modalDescription, acceptButtonText: "Ok", onClickConfirm: "confirmAction('modalinformation');return false" } return config; } //Hides the "Please select a frequency for Autoship" error and the red border of the input var resetAutoshipNotSelectedError = function(){ $j("#selectFrequencyError").hide(); $j("#actionAutoshipFreqSelectV2").removeClass("frequency-red-input-error-message error").parent().removeClass("frequency-red-input-error-message error"); } //Displays the error "Frequency error" message, desacopled from the isOrderTypeSelected() function var displayAutoshipNotSelectedError = function(){ $j("#selectFrequencyError").show(); $j("#actionAutoshipFreqSelectV2").addClass("frequency-red-input-error-message error").parent().addClass("frequency-red-input-error-message error"); } var isQuantityValid = function() { return $j("#quantity").val() <= 20 && $j("#quantity").val() >= selectedQuantity; } var isOrderTypeSelected = function(sku) { if (isOrderTypeAutoShip) { var freq = $j("#addToCartFormFrequency").val(); if (freq <= 0) { displayAutoshipNotSelectedError(); return false; } else if (freq < 7 || freq > 365) { modalController.openInformation(setModalConfigTitleAndDescription("Please choose between 1 week (7 days) and 12 months (365 days).", "AutoShip Frequency")); return false; } return true; } else if (isOrderTypeOneTimeOrder) { return true; } modalController.openInformation(setModalConfigTitleAndDescription("Order Type Required", "Please select subscribe with AutoShip or one time order.")); return false; } var generateStrengthSizeMenu = function(strengths, sku) { var options = []; var strengthOptions = []; addDefaultSelector(options, "strengthNotSelected","Please select..."); let orderArray = strengths.sort(function(firstEl, secondEl) { let a = parseFloat(firstEl.lowestSize); let b = parseFloat(secondEl.lowestSize); return a - b; }); $j.each(strengths, function(key, val) { var option = { value: val.name, label: val.customLabel != null ? val.customLabel : val.name } strengthOptions.push(option); }); //unsorted = unsorted.sort(sortStrengthSize); options = options.concat(strengthOptions); updateMenu("#pills", pillTemplate, strengthOptions); if (strengthOptions.length == 1) { selectedStrengthSize = strengthOptions[0].value; getSelectedSku(false, true); buildFeaturedReviews(); } else { if (selectedSku != null) { getSelectedSku(); } } setDefaultStrengthPillBy(selectedSku); } var getSkusForSelectedStrengthSize = function(strengthSize) { return skus[getStrengthSizeIndex(strengthSize)].productSkuList; } var getMonthSupply = function(sku) { var monthSupply = '(' + sku.packaging.match(/\d+/g) + ' month supply)' if (sku.daysSupply) { switch(sku.daysSupply) { case 28: case 30: monthSupply = '(1 month supply)'; break; case 60: monthSupply = '(2 month supply)'; break; case 84: case 90: monthSupply = '(3 month supply)'; break; case 120: monthSupply = '(4 month supply)'; break; case 180: monthSupply = '(6 month supply)'; break; case 360: case 365: monthSupply = '(12 month supply)'; break; default: break; } } return monthSupply } var getPackagingPriceLabel = function(sku) { var skuPrice = compoundingController.getPriceFromTier(sku,selectedQuantity); if (isHFP) { skuPrice = ecomController.getHFPPrice(sku,getHFPProgram()); } return sku.packaging + ' ($' + safeFixing(skuPrice) + ')'; } var setSelectedLabel = function(target, override) { return $j(target).attr("title",(override!=null ? override : $j(target + ' option:selected').text())); } let createPackagingPills = function(sku) { let defaultSelectProductStrength let lessStrength = Infinity let stock = findNextSkuWithStock(); stock.map((prod) => { let strength = parseInt(prod.strengthSize.match(/\d{1,}/g)) if(isNaN(strength)) { defaultSelectProductStrength = stock[0] } else { if(lessStrength > strength) { lessStrength = strength defaultSelectProductStrength = prod } } }) var selectedStrengthSkus = getSkusForSelectedStrengthSize(sku.strengthSize); var options = []; var packagingOptions = []; let skusOfStrengthSize = defaultSelectProductStrength.productSkuList let packagingOfSku; let packagingWithoutAutoship = skusOfStrengthSize.filter(sku => { return !sku.backordered && !sku.packaging.match(/1-ct/) }) if (packagingWithoutAutoship.length != 0) { packagingOfSku = packagingWithoutAutoship } else { let packagingWithAutoship = skusOfStrengthSize.filter(sku => { return !sku.backordered }) packagingOfSku = packagingWithAutoship } $j.each(selectedStrengthSkus, function(i, data) { var option = getMonthSupplyAndPricePerUnitItemOptions(this); packagingOptions.push(option); }); options = options.concat(packagingOptions); updateMenu("#pills-packaging", usePillTemplate(defaultSku.partNumber), packagingOptions); if (packagingOptions.length == 1) { selectedPackaging = packagingOptions[0].value; } setPackagingPillBy(selectedSku, selectedPackaging) } let generatePackagingPills = function(sku) { var selectedStrengthSkus = getSkusForSelectedStrengthSize(sku.strengthSize); var options = []; var packagingOptions = []; $j.each(selectedStrengthSkus, function(i, data) { var option = getMonthSupplyAndPricePerUnitItemOptions(this); packagingOptions.push(option); }); options = options.concat(packagingOptions); updateMenu("#pills-packaging", usePillTemplate(defaultSku.partNumber), packagingOptions); if (packagingOptions.length == 1) { selectedPackaging = packagingOptions[0].value; } setPackagingPillBy(selectedSku, selectedPackaging) } function setDefaultStrengthPillBy(selectedSku) { if (selectedSku == null || selectedSku === undefined) return; let pillSize = $j( ".pill-size" ); pillSize.each(function( index, pill ) { if($j(pill).attr('value') == selectedSku.strengthSize) { $j(pill).addClass('selected'); $j(pill).prepend(''); } }); } function setPackagingPillBy(selectedSku, selectedPackaging) { if (selectedSku === undefined || selectedPackaging === undefined) return; let pillsPackaging = $j( ".pill-packaging" ).closest("button"); pillsPackaging.each(function( index, pill ) { $j(pill).removeClass('selected'); if (isItemNutrition(defaultSku) && isPricePerUnit) { if($j(pill).text().substring(0, $j(pill).text().indexOf('$')) == selectedPackaging) { $j(pill).addClass('selected'); } } else if (isItemPreventative(defaultSku.partNumber)) { if($j(pill).text().substring(0, $j(pill).text().indexOf('(')) == selectedPackaging) { $j(pill).addClass('selected'); } } else { if($j(pill).attr('value') == selectedPackaging) { $j(pill).addClass('selected'); } } }); } /** * It checks skus with out of stock and assigns a class to pills. */ let checkForOutOfStockPills = () => { removeOutOfStockSelected(); let skusOfStrengthSize = getSkusForSelectedStrengthSize(selectedSku.strengthSize); let skusOOS = skusOfStrengthSize.filter(onePackacking => onePackacking.backordered) skusOOS.forEach(aPackaging => { if (skusOOS.length == skusOfStrengthSize.length) { iteratePillsByClass(selectedSku.strengthSize, 'pill-size', pill => { if (selectedSku.strengthSize == pill.text) { pill.classList.add('disable'); } enabledPillToOutOfStock(pill) }); } }) skusOOS.forEach(aPackaging => { iteratePillsByClass(aPackaging.packaging, 'pill-packaging', pill => { if (selectedSku.packaging == pill.textContent) { pill.classList.add('disable'); } enabledPillToOutOfStock(pill); }); }) skusOOS.forEach(element => { const pillsElements = document.getElementsByClassName('pill-packaging-value'); Array.from(pillsElements).forEach(pillsElement => { const pills = pillsElement.innerText; if (pills === element.packaging) { pillsElement.style.setProperty('text-decoration', 'line-through'); } }); }); skus.forEach(sku => { let skusOfStrengthSize = getSkusForSelectedStrengthSize(sku.strengthSize); let skusOOS = skusOfStrengthSize.filter(onePackacking => onePackacking.backordered) if (skusOfStrengthSize.length == skusOOS.length) { iteratePillsByClass(sku.strengthSize, 'pill-size', pill => enabledPillToOutOfStock(pill)) } }); } /** * It assigns a class to the pill and add disabled property. * @param pill to put disabled. */ let enabledPillToOutOfStock = (pill) => { pill.classList.add('disable'); } /** * It searches for the first sku with stock no autoship. * If does not exist It searches for a sku with autoship. * Otherwise, return initial skus list. */ let findNextSkuWithStock = () => { let skuWithStock let skuWithoutAutoShip = skus.filter((sku) => { let nextSkuWithStock = sku.productSkuList.find(sku => !sku.backordered && !sku.packaging.match(/1-ct/)) return nextSkuWithStock }) if (skuWithoutAutoShip.length != 0) { skuWithStock = skuWithoutAutoShip } else { let skuWithAutoShip = skus.filter((sku) => sku.productSkuList.find(sku => !sku.backordered)) skuWithStock = skuWithAutoShip } if (skuWithStock.length == 0) { return skus } skuWithStock.forEach((sku) => { let skusOfStrengthSize = getSkusForSelectedStrengthSize(sku.strengthSize) let packagingOfSku let packagingWithoutAutoship = skusOfStrengthSize.filter(sku => { return !sku.backordered && !sku.packaging.match(/1-ct/) }) if (packagingWithoutAutoship.length != 0) { packagingOfSku = packagingWithoutAutoship } else { let packagingWithAutoship = skusOfStrengthSize.filter(sku => { return !sku.backordered }) packagingOfSku = packagingWithAutoship } sku.packagingOfSkuWithStock = packagingOfSku }) return skuWithStock; } /** * It removes a class to the pill out of stock. */ let removeOutOfStockSelected = () => { skus.forEach(sku => { iteratePillsByClass(sku.strengthSize, 'pill-size', pill => { pill.classList.remove('disable'); }); let skusOfStrengthSize = getSkusForSelectedStrengthSize(sku.strengthSize); skusOfStrengthSize.forEach(aPackaging => { iteratePillsByClass(selectedSku.packaging, 'text', pill => { $j('.text span').css('text-decoration', 'none'); }); }); }) } /** * It iterates through the pills found in a {@link document} by class and executes the parameter function. * @param findThisValue value to search into elements founded. * @param inClass to search elements. * @param andDoThis {@link function} to execute. */ let iteratePillsByClass = (findThisValue, inClass, andDoThis) => { let pillsFound = document.getElementsByClassName(inClass); for (const element of pillsFound) { if(element.textContent == findThisValue || element.value == findThisValue) { andDoThis(element); } } } var generatePackagingMenu = function(selectedStrengthSize,packaging) { var selectedStrengthSkus = getSkusForSelectedStrengthSize(selectedStrengthSize); var options = []; var packagingOptions = []; addDefaultSelector(options, "packagingNotSelected","Please select..."); $j.each(selectedStrengthSkus, function(i,data) { if (this.strengthSize == selectedStrengthSize) { var option = getMonthSupplyAndPricePerUnitItemOptions(this); packagingOptions.push(option); } }); options = options.concat(packagingOptions); updateMenu("#pills-packaging", usePillTemplate(defaultSku.partNumber), packagingOptions); if (packagingOptions.length == 1) { selectedPackaging = packagingOptions[0].value; } } var addDefaultSelector = function(data, id, label) { data.push({value: "", label: label, id: id}); } const setSelectedSku = (sku) => { selectedSku = sku; } var getSelectedSku = function(resetQty, withoutPackaging) { $j("#outOfStockContainer").fadeOut(); setSelectedSku(null); if (selectedStrengthSize != "") { $j("#strengthNotSelected").hide(); $j("#strengthNotSelected").prop('disabled', true); generatePackagingMenu(selectedStrengthSize); $j("#packagingContainer").show("fadeIn"); } if (selectedPackaging != "") { $j("#packagingNotSelected").hide(); $j("#packagingNotSelected").prop('disabled', true); } if (selectedStrengthSize && selectedPackaging) { var selectedStrengthSkus = getSkusForSelectedStrengthSize(selectedStrengthSize); $j.each(selectedStrengthSkus, function() { if (this.strengthSize == selectedStrengthSize && this.packaging == selectedPackaging) { setSelectedSku(this); } }); } else if (selectedStrengthSize && !selectedPackaging && withoutPackaging) { reviewSku = getSkusForSelectedStrengthSize(selectedStrengthSize)[0]; } if (selectedSku === null) { let lessSize = Infinity $j.each(selectedStrengthSkus, function() { let size = parseInt(this.packaging.match(/\d{1,}/g)) if(lessSize > size) { lessSize = size setSelectedSku(this); selectedPackaging = this.packaging } }); } if (resetQty!=null) { selectedQuantity = 1; } selectedQuantity = checkForMinimumQuantity(selectedQuantity); updateQuantityStates("#quantity"); if (selectedSku && selectedSku.compounded && !selectedFlavorId) { var flavorToUse; if (flavorId!=null) { flavorToUse = compoundingController.getFlavor(selectedSku,flavorId); } if (flavorToUse == null) { flavorToUse = compoundingController.getDefaultFlavor(selectedSku); } if (flavorToUse!=null) { selectedFlavorId = flavorToUse.id; } } updateItemForm(); } var updateQuantityStates = function(menu) { if (selectedSku != null) { $j(menu + " > option").each(function() { var disabled = (selectedSku.minimumQuantity>this.value); if (disabled) { $j(this).attr('disabled', true); // This option is for Safari because can't toggle the display on ' ); } $j("#actionAutoshipFreqSelectV2").val(days); } } function getExtraAttributesByProductId(selectedSku){ selectedSkuExtraAttributes = ecomController.getExtraAttributesByProductId(selectedSku); if (selectedSkuExtraAttributes && selectedSkuExtraAttributes.animaltype == 'Dog' && selectedSkuExtraAttributes.name2 == 'Bag' && selectedSkuExtraAttributes.weight) { $j(".foodCalculatorContainer").show(); } else { $j(".foodCalculatorContainer").hide(); $j("#open-food-calculator-pill").show(); $j("#close-food-calculator-pill").hide(); $j(".foodCalculatorDisplay").hide(); foodCalculatorOpen = false; } } function setFrequencyForPreventatives(){ var productCategoryCheck = false; if (isItemPreventative(defaultSku.partNumber)) { productCategoryCheck = (product.fullCategory.some(s => s.includes('Flea & Tick')) || product.fullCategory.some(s => s.includes('Flea/Tick')) || product.fullCategory.some(s => s.includes('Heartworm'))) } if (product.category && productCategoryCheck){ if (selectedSkuExtraAttributes && selectedSkuExtraAttributes.supplyDays > 0){ var supplyDays = selectedSkuExtraAttributes.supplyDays; setDaysInSelect(supplyDays) var newFrequency = $j("#actionAutoshipFreqSelectV2").val(); $j("#actionAutoshipCustomFrequencyChoice").css("display", "none"); $j("#addToCartFormFrequency").val(newFrequency); $j('#autoshipSeeSchedule').show(); } } } function usePillTemplate(itemPartNumber) { let pillSizeTemplate = '{{#opts}}{{/opts}}'; if (isPricePerUnit) { if (isItemPreventative(itemPartNumber)) { pillSizeTemplate = '{{#opts}}{{/opts}}'; } else if (isItemNutrition(defaultSku)) { pillSizeTemplate = '{{#opts}}{{/opts}}'; } } else if (isItemPreventative(itemPartNumber)) { pillSizeTemplate = '{{#opts}}{{/opts}}'; } return pillSizeTemplate; } function isItemPreventative(itemPartNumber) { let itemIsTopTen = allPreventativeProducts.indexOf(itemPartNumber) != -1; return itemIsTopTen; } function isItemNutrition(sku) { let isItemNutrition = false; if (sku.mfg.toLowerCase() == 'hills' || sku.mfg.toLowerCase() == 'royal canin' || sku.mfg.toLowerCase() == 'purina') { if ((sku.name.toLowerCase().indexOf("treats") == -1) && (sku.name.toLowerCase().indexOf("crunchy bites") == -1) && (sku.name.toLowerCase().indexOf("purina pro plan veterinary supplements joint care") == -1) && (sku.name.toLowerCase().indexOf("fortiflora") == -1)) { isItemNutrition = true; } } return isItemNutrition } function getMonthSupplyAndPricePerUnitItemOptions(itemInfo) { var option; var partNumber; if(defaultSku === null) { partNumber = ""; } else { partNumber = defaultSku.partNumber; } if (isPricePerUnit && isItemPreventative(partNumber)) { let calc = priceCalculatorController.calculate(itemInfo); option = { value: itemInfo.packaging, label:getPackagingPriceLabel(itemInfo), monthSupply: getMonthSupply(itemInfo), pricePerUnit: '$' + calc.countPrice.toFixed(2) + '/' + calc.uom } } else if (isPricePerUnit && isItemNutrition(defaultSku)) { let calc = priceCalculatorController.calculate(itemInfo); option = { value: itemInfo.packaging, label:getPackagingPriceLabel(itemInfo), pricePerUnit: '$' + calc.countPrice.toFixed(2) + '/' + calc.uom } } else if (isItemPreventative(partNumber)) { option = { value: itemInfo.packaging, label:getPackagingPriceLabel(itemInfo), monthSupply: getMonthSupply(itemInfo) } } else { option = { value: itemInfo.packaging, label:getPackagingPriceLabel(itemInfo) } } return option; } function showPricePerUnit() { let showPricePerUnit = false; isHFP = vs.util.isHFP(rsl); isGBR = vs.util.isGBR(rsl); if (!isHFP && !isGBR) { showPricePerUnit = true; } return showPricePerUnit; } function showOnetimeDiscount() { let showOneTimeDiscount = false; isHFP = vs.util.isHFP(rsl); isGBR = vs.util.isGBR(rsl); if (!isHFP && !isGBR) { showOneTimeDiscount = true; } return showOneTimeDiscount; } async function shouldShowEstimatedDeliveryDate() { if (typeof selectedSku === 'undefined' || selectedSku === null || isUserLoggedIn() === false || selectedSku.backordered) { return false; } const productShippingClass = selectedSku.shipClassName; userShippingAddress = await new Promise((resolve) => { CartService.getEDDShippingAddressFromSession((userShippingAddress) => { resolve(userShippingAddress); }); }); const isShippingClassCorrect = ['default', 'insulinOvernight', 'free', 'nutrition'].includes(productShippingClass); const isStateCorrect = selectedSku.stateExclusions === null || (userShippingAddress != null && !selectedSku.stateExclusions.includes(userShippingAddress.region)); const isVsSupplier = selectedSku.supplierName === "VS"; if (isIND && isStateCorrect && isShippingClassCorrect && isVsSupplier) { shouldSeeEdd = (userShippingAddress != null); const experimentId = 'EDDonPDPExperiment'; const experiment = getExperiment(experimentId); if (experiment != null) { ecomController.segmentExperimentStartedEvent('EDDonPDPExperiment'); return true; } } return false; } async function getEstimatedDeliveryDatesProduct(partNumber){ var eddAddressBean = getEddAddressBean(userShippingAddress); var allSkus = getAllSkus(); var productDeliveryEstimateRequest = { "selectedPartNumber": partNumber, "selectedQuantity": 1, "shippingAddress": eddAddressBean, "shippingZipCode": null, "allSkus" : allSkus } var estimatedDeliveryDatesProduct = await new Promise((resolve) => { ecomController.getEstimatedDeliveryDatesProduct(productDeliveryEstimateRequest, function (estimatedDeliveryDatesProduct) { resolve(estimatedDeliveryDatesProduct); }); }); return estimatedDeliveryDatesProduct; } function getEddAddressBean(userShippingAddress) { var eddAddressBean = { "country": userShippingAddress.country, "state": userShippingAddress.region, "city": userShippingAddress.city, "postal_code": userShippingAddress.postalCode, "raw_location": userShippingAddress.address1 }; return eddAddressBean; } function getAllSkus(){ let allSkus =[]; for (let i = 0; i < product.productSkuByStrengthList.length; i++) { for (let j = 0; j < product.productSkuByStrengthList[i].productSkuList.length; j++) { allSkus.push(product.productSkuByStrengthList[i].productSkuList[j].partNumber.toUpperCase()); } } return allSkus; } function getEddProperties(shouldSeeEdd, didSeeEdd, errorReason) { eddProperties = { shouldSeeEdd: shouldSeeEdd, didSeeEdd: didSeeEdd, errorReason: errorReason } return JSON.stringify(eddProperties); } function shouldAutoselectFrequency() { let shouldAutoselectFrequency = false; const experimentId = 'autoselectFrequency'; const experiment = getExperiment(experimentId); if (experiment != null) { shouldAutoselectFrequency = (experiment.chosenVariant.id == '1'); ecomController.segmentExperimentStartedEvent(experimentId); } return shouldAutoselectFrequency; } function autoselectFrequency() { if(shouldAutoselectFrequency && isItemNutrition(defaultSku)) { var selector = document.getElementById("actionAutoshipFreqSelectV2"); selector.value = "30"; selector.dispatchEvent(new Event('change')); } } function autoselectOrderType() { let autoselectOrderType = false; const experimentId = 'autoselectOrderType'; const experiment = getExperiment(experimentId); if (experiment != null) { autoselectOrderType = (experiment.chosenVariant.id == '1'); ecomController.segmentExperimentStartedEvent(experimentId); } return autoselectOrderType; } function confirmZipInputAction(){ let zipCode = $j("#EDDzipCode")[0].value; const isValidZip = /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(zipCode); if (!isValidZip) { console.log("zip not valid, exiting"); return; } let allSkus = getAllSkus(); var productDeliveryEstimateRequest = { "selectedPartNumber": selectedSku.partNumber, "selectedQuantity": 1, "shippingAddress": null, "shippingZipCode": zipCode, "allSkus" : allSkus } closeZipInputModal(productDeliveryEstimateRequest); } async function closeZipInputModal(productDeliveryEstimateRequest) { modalController.confirmAction(); initEDDCardComponent('#eddCardContainer', true); newEdd = productDeliveryEstimateRequest var estimatedDeliveryDatesProduct = await new Promise((resolve) => { ecomController.getEstimatedDeliveryDatesProduct(productDeliveryEstimateRequest, function (estimatedDeliveryDatesProduct) { resolve(estimatedDeliveryDatesProduct); }); }); newEdd = estimatedDeliveryDatesProduct; const experimentId = 'EDDonPDPExperiment'; const experiment = getExperiment(experimentId); if (experiment != null && experiment?.chosenVariant?.id == '1') { if(estimatedDeliveryDatesProduct.estimatedShipments != null && estimatedDeliveryDatesProduct.estimatedShipments?.length != 0) { initEDDCardComponent('#eddCardContainer', false, estimatedDeliveryDatesProduct); } else { initEDDCardComponent('#eddCardContainer', false, null, productDeliveryEstimateRequest.shippingZipCode); } } return newEdd; } //
    Rejensa Chews for Dogs (2024)
    Top Articles
    Latest Posts
    Article information

    Author: Foster Heidenreich CPA

    Last Updated:

    Views: 5782

    Rating: 4.6 / 5 (76 voted)

    Reviews: 91% of readers found this page helpful

    Author information

    Name: Foster Heidenreich CPA

    Birthday: 1995-01-14

    Address: 55021 Usha Garden, North Larisa, DE 19209

    Phone: +6812240846623

    Job: Corporate Healthcare Strategist

    Hobby: Singing, Listening to music, Rafting, LARPing, Gardening, Quilting, Rappelling

    Introduction: My name is Foster Heidenreich CPA, I am a delightful, quaint, glorious, quaint, faithful, enchanting, fine person who loves writing and wants to share my knowledge and understanding with you.