//if not defined then define it if (typeof sku_details == 'undefined') { var sku_details = {}; sku_details['ITEM_LIST'] = []; } if (typeof item_list == 'undefined') { var item_list = []; } if (typeof item_id_json == 'undefined') { var item_id_json = {}; } function getSkuDetailsStorageKey() { var countryKey = window.TALLY_WEBSITE_COUNTRY_INITIAL || "GLOBAL"; return "pricing_sku_details_" + countryKey; } function persistSkuDetailsToStorage() { try { localStorage.setItem(getSkuDetailsStorageKey(), JSON.stringify(sku_details)); } catch (e) { console.warn("Unable to persist sku_details in localStorage:", e); } } function clearStorage() { localStorage.removeItem(getSkuDetailsStorageKey()); localStorage.setItem('cart_count', 0); update_cart_counter(); } function getSkuDetailsFromStorage() { try { var stored = localStorage.getItem(getSkuDetailsStorageKey()); if (!stored) return null; var parsed = JSON.parse(stored); if (!parsed || !Array.isArray(parsed.ITEM_LIST) || parsed.ITEM_LIST.length === 0) return null; return parsed; } catch (e) { console.warn("Unable to parse sku_details from localStorage:", e); return null; } } function getPreloadSkuDetails() { var preloadJson = null; if (typeof window.PRICING_PRELOAD_JSON !== "undefined" && window.PRICING_PRELOAD_JSON) { try { preloadJson = typeof window.PRICING_PRELOAD_JSON === "string" ? JSON.parse(window.PRICING_PRELOAD_JSON) : window.PRICING_PRELOAD_JSON; } catch (e) { console.warn("Pricing preload parse error:", e); } } if (preloadJson && Array.isArray(preloadJson.ITEM_LIST)) { return preloadJson; } return getSkuDetailsFromStorage(); } function applyPreloadSelectionsFromPost() { // Prevent duplicate auto-clicks if getPricedata is called multiple times // if (window.__pricingPreloadApplied) return; try { var preloadJson = getPreloadSkuDetails(); if (!preloadJson) return; var itemList = (preloadJson && preloadJson.ITEM_LIST) ? preloadJson.ITEM_LIST : []; if (!Array.isArray(itemList) || itemList.length === 0) { clearStorage(); return; } //if itemlist is empty the show idHeaderCartCount else hide it if (itemList.length <= 0) { idHeaderCartCount.style.display = 'none'; } else { idHeaderCartCount.style.display = 'block'; } let pid_details = localStorage.getItem("pid_details"); if (pid_details) { let pid_json = JSON.parse(pid_details); if (pid_json.length > 0) { // form.appendChild(createHiddenInput("affiliate_pid", "affiliate_pid", pid_json[0].pid)); preloadJson['AFFILIATE_PID'] = pid_json[0].pid; } } sku_details = preloadJson; persistSkuDetailsToStorage(); update_cart_counter(); // Build preload map by ITEM_ID once (O(n)) var preloadItemMapById = {}; itemList.forEach(function (item) { var idKey = item && (item.ITEM_ID != null) ? String(item.ITEM_ID).trim() : null; if (!idKey) return; if (!preloadItemMapById[idKey]) { preloadItemMapById[idKey] = []; } preloadItemMapById[idKey].push(item); }); item_id_json = preloadItemMapById; // preloadJson.ITEM_MAP_BY_ID = preloadItemMapById; // window.PRELOAD_JSON = preloadJson; // Build pricing-card map by rendered .itemId once (O(m)) var cardMapByItemId = {}; $(".itemId").each(function () { var renderedItemId = $(this).text().trim(); if (!renderedItemId) return; if (!cardMapByItemId[renderedItemId]) { cardMapByItemId[renderedItemId] = []; } cardMapByItemId[renderedItemId].push($(this).closest(".pricing-card,.cardContainer")); }); // Process only matching ITEM_ID buckets instead of scanning all cards for each item (O(n + m)) Object.keys(preloadItemMapById).forEach(function (itemId) { var itemsForId = preloadItemMapById[itemId] || []; var cardsForId = cardMapByItemId[itemId] || []; if (!itemsForId.length || !cardsForId.length) return; cardsForId.forEach(function ($card) { var clsNumOfMonths = $card.find(".clsNumOfMonths").val(); var clsNumOfYears = $card.find(".clsNumOfYears").val(); var itemignorearr = ['57781', '61604', '49761', '49767', '49831', '49837', '55694', '55700', '55729', '55735']; var isMonthRelaxedId = (itemId == '5656' || itemId == '5657' || itemId == '5658'); var matchedItem = null; for (var idx = 0; idx < itemsForId.length; idx++) { var currentItem = itemsForId[idx]; if (clsNumOfMonths && clsNumOfMonths.length > 0 && clsNumOfMonths != currentItem.MONTH_QTY) { // Ignore month mismatch for item ids 5656, 5657, 5658 if (!isMonthRelaxedId) { continue; } } if (clsNumOfYears && clsNumOfYears.length > 0 && clsNumOfYears != currentItem.TSS_YEAR) { continue; } if (itemignorearr.includes(itemId)) { continue; } matchedItem = currentItem; break; } if (!matchedItem) return; //if item id = 57781 then update the quantity3 value with the matched preload item's product quantity // if(itemId == '57781') // { // $card.find("#quantity3").val(matchedItem.TALLYDRIVE_QTY); // } // update product_qty value with the matched preload item's product quantity if (!$card.find(".product_qty").val()) { let input = document.createElement("input"); input.type = "hidden"; input.id = "product_qty"; input.name = "product_qty"; input.class = "product_qty"; input.value = matchedItem.PRODUCT_QTY; $card.append(input); } else { $card.find("#product_qty").val(matchedItem.PRODUCT_QTY); } var $btn = $card.find(".btn").first(); if ($btn.length) { //add view-cart class and changethe onclick event to call_view_cart() $btn.addClass('view-cart'); $btn.attr('style', 'background-color: var(--color-light-blue) !important; color: var(--color-white) !important;'); $btn.attr('onclick', 'call_view_cart()'); $btn.html('View Cart'); // $btn[0].click(); // autoSelectedCount++; } }); }); // var headerCartCountEl = document.getElementById("idHeaderCartCount"); // if (headerCartCountEl) { // headerCartCountEl.textContent = String(autoSelectedCount || itemList.length); // } // persistSkuDetailsToStorage(); window.__pricingPreloadApplied = true; } catch (e) { console.warn("Pricing preload parse/click error:", e); } } // add the function to idHeaderCartCount and also update the cart counter to the value of the cart count function update_cart_counter() { var countryKey = window.TALLY_WEBSITE_COUNTRY_INITIAL || 'GLOBAL'; var storageKey = 'pricing_sku_details_' + countryKey; var cartCount = 0; try { var storedCart = localStorage.getItem(storageKey); var payload = storedCart ? JSON.parse(storedCart) : null; var itemList = payload && Array.isArray(payload.ITEM_LIST) ? payload.ITEM_LIST : []; for (var i = 0; i < itemList.length; i++) { var qty = parseFloat(itemList[i] && itemList[i].PRODUCT_QTY); if (!isNaN(qty) && qty > 0) { cartCount += qty; } else { cartCount += 1; } } } catch (e) { console.warn('update_cart_counter parse error:', e); } //update the cart count in the local storage localStorage.setItem('cart_count', cartCount); var countEl = document.getElementById('idHeaderCartCount'); if (countEl) { countEl.innerHTML = String(cartCount); } } // add the function to idHeaderCartCount as onclick event document.addEventListener('DOMContentLoaded', function () { // update_cart_counter(); //do nut run this in customerhub page //if .itemId not found then call the function to apply preload selections from post if ($(".itemId").length == 0) { applyPreloadSelectionsFromPost(); } }); function call_view_cart() { try { var countryKey = window.TALLY_WEBSITE_COUNTRY_INITIAL || 'GLOBAL'; var storageKey = 'pricing_sku_details_' + countryKey; var storedCart = localStorage.getItem(storageKey); var payload = null; // Prefer in-memory sku_details so payload is set even if storage is out of sync (e.g. after preload or add-to-cart) if (typeof sku_details !== 'undefined' && sku_details && Array.isArray(sku_details.ITEM_LIST) && sku_details.ITEM_LIST.length > 0) { payload = JSON.parse(JSON.stringify(sku_details)); } if (storedCart) { var storedPayload = JSON.parse(storedCart); if (storedPayload && Array.isArray(storedPayload.ITEM_LIST) && storedPayload.ITEM_LIST.length > 0) { payload = JSON.parse(JSON.stringify(storedPayload)); } } if (!payload || !Array.isArray(payload.ITEM_LIST) || payload.ITEM_LIST.length === 0) { // alert('Add products to view cart'); //redirect to buy-tally page // window.location.href = '/buy-tally/'; let countryInitial = window.TALLY_WEBSITE_COUNTRY_INITIAL; //convert country initial to lowercase and replace - with / countryInitial = countryInitial.toLowerCase().replace('-', '/'); window.location.href = 'https://' + window.location.host + '/' + countryInitial + '/buy-tally/'; return false; } let pid_details = localStorage.getItem("pid_details"); if (pid_details) { let pid_json = JSON.parse(pid_details); if (pid_json.length > 0) { // form.appendChild(createHiddenInput("affiliate_pid", "affiliate_pid", pid_json[0].pid)); payload['AFFILIATE_PID'] = pid_json[0].pid; } } payload.BACK_URL = window.location.href; persistSkuDetailsToStorage(); //always remove existing form and add new form var form = document.getElementById('idUrlSubmitForm'); if (form) { form.remove(); } form = document.createElement('form'); form.id = 'idUrlSubmitForm'; form.action = 'https://tipl.' + window.location.host + '/tallyweb/checkout.php'; form.method = 'post'; document.body.appendChild(form); var existingJsonInput = document.getElementById('json_data'); if (existingJsonInput && existingJsonInput.parentNode) { existingJsonInput.parentNode.removeChild(existingJsonInput); } var input = document.createElement('input'); input.type = 'hidden'; input.id = 'json_data'; input.name = 'json_data'; input.value = JSON.stringify(payload); form.appendChild(input); // localStorage.removeItem(getSkuDetailsStorageKey()); // localStorage.setItem('cart_count', 0); form.submit(); } catch (e) { console.warn('call_view_cart error:', e); alert('Unable to open cart right now. Please try again.'); return false; } }