(function (window, document) { "use strict"; // set global variable window.AODOrderLimit = {}; window.AODOrderLimit.function = {}; window.AODOrderLimit.aodMsg = window.aodMsg; window.AODOrderLimit.aod_tag_validate = window.aod_tag_validate; window.AODOrderLimit.aodProductTagList = window.aodProductTagList; // init function aod_jqload(onload) { if (window.aod_cart_validate != null) { if (window.aod_cart_validate.hasOwnProperty('aod_product')) { if (window.aod_cart_validate.aod_product.hasOwnProperty('min')) { window.aod_product_min = window.aod_cart_validate.aod_product.min; } else { window.aod_product_min = ''; } if (window.aod_cart_validate.aod_product.hasOwnProperty('max')) { window.aod_product_max = window.aod_cart_validate.aod_product.max; } else { window.aod_product_max = ''; } if (window.aod_cart_validate.aod_product.hasOwnProperty('step')) { window.aod_product_step = window.aod_cart_validate.aod_product.step; } else { window.aod_product_step = ''; } } else { window.aod_product_min = ''; window.aod_product_max = ''; window.aod_product_step = ''; } } else { window.aod_cart_validate = { aod_total: { min: '', max: '' }, aod_qty: { min: '', max: '', }, aod_product: { min: '', max: '', step: '', }, aod_weight: { min: '', max: '', } }; window.aod_product_min = ''; window.aod_product_max = ''; window.aod_product_step = ''; } window.AODOrderLimit.aod_product_min = window.aod_product_min; window.AODOrderLimit.aod_product_min = window.aod_product_max; window.AODOrderLimit.aod_product_min = window.aod_product_step; window.AODOrderLimit.aod_cart_validate = window.aod_cart_validate; window.AODOrderLimit.aodMinMaxLimit = window.aodMinMaxLimit; window.AODOrderLimit.aodCollectionData = window.aodCollectionData; window.AODOrderLimit.aodGlobalProductMinMaxLimit = window.aodGlobalProductMinMaxLimit; if (typeof jQuery === 'undefined' || (parseInt(jQuery.fn.jquery) === 1 && parseFloat(jQuery.fn.jquery.replace(/^1\./, '')) < 10)) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js'; script.type = 'text/javascript'; script.onload = script.onreadystatechange = function () { if (script.readyState) { if (script.readyState === 'complete' || script.readyState === 'loaded') { script.onreadystatechange = null; onload(jQuery.noConflict(true)); } } else { onload(jQuery.noConflict(true)); } }; head.appendChild(script); } else { onload(jQuery); } } aod_jqload(function (aod_JQuery) { window.AODOrderLimit.jQuery = aod_JQuery; // progress dialog window.AODOrderLimit.function.progressDialog = function () { window.timerInterval Swal.fire({ title: '', html: '', timer: 200000, timerProgressBar: false, onBeforeOpen: () => { Swal.showLoading(); window.timerInterval = setInterval(() => { const content = Swal.getContent() if (content) { const b = content.querySelector('b') if (b) { b.textContent = Swal.getTimerLeft() } } }, 100); }, onClose: () => { clearInterval(window.timerInterval) } }).then((result) => { if (result.dismiss === Swal.DismissReason.timer) { } }); } // money format window.AODOrderLimit.function.aodFormatMoney = function (cents) { if (typeof Shopify.formatMoney === 'function') { return Shopify.formatMoney(cents, window.aodMoneyFormat); } if (typeof cents == 'string') { cents = cents.replace('.', ''); } var value = ''; var placeholderRegex = /\{\{\s*(\w+)\s*\}\}/; var formatString = window.aodMoneyFormat; function defaultOption(opt, def) { return (typeof opt == 'undefined' ? def : opt); } function formatWithDelimiters(number, precision, thousands, decimal) { precision = defaultOption(precision, 2); thousands = defaultOption(thousands, ','); decimal = defaultOption(decimal, '.'); if (isNaN(number) || number == null) { return 0; } number = (number / 100.0).toFixed(precision); var parts = number.split('.'), dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands), cents = parts[1] ? (decimal + parts[1]) : ''; return dollars + cents; } switch (formatString.match(placeholderRegex)[1]) { case 'amount': value = formatWithDelimiters(cents, 2); break; case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break; case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break; case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break; } return formatString.replace(placeholderRegex, value); } window.aod_JQuery = aod_JQuery; window.aodValidateAllData = false; window.AODOrderLimit.aod_total_weight = window.aod_total_weight; // validate cart total window.AODOrderLimit.function.validateCartTotal = function () { if (window.aod_cart_validate.aod_total.min != '' || window.aod_cart_validate.aod_total.max != '') { if (window.aod_cart_validate.aod_total.min != '') { if (parseFloat(window.aod_cart_validate.aod_total.min) > parseFloat(window.aod_cart_total_price)) { window.aod_total_valid_min = false; } } if (window.aod_cart_validate.aod_total.max != '') { if (parseFloat(window.aod_cart_validate.aod_total.max) < parseFloat(window.aod_cart_total_price)) { window.aod_total_valid_max = false; } } } } // validate cart total weight window.AODOrderLimit.function.validateCartWeight = function () { if (window.aod_cart_validate.aod_weight.min != '' || window.aod_cart_validate.aod_weight.max != '') { if (window.aod_cart_validate.aod_weight.min != '') { if (parseFloat(window.aod_cart_validate.aod_weight.min) > parseFloat(window.aod_total_weight)) { window.aod_weight_valid_min = false; } } if (window.aod_cart_validate.aod_weight.max != '') { if (parseFloat(window.aod_cart_validate.aod_weight.max) < parseFloat(window.aod_total_weight)) { window.aod_weight_valid_max = false; } } } } // validate cart total quantity window.AODOrderLimit.function.validateCartQuantity = function () { if (window.aod_cart_validate.aod_qty.min != '' || window.aod_cart_validate.aod_qty.max != '') { if (window.aod_cart_validate.aod_qty.min != '') { if (parseFloat(window.aod_cart_validate.aod_qty.min) > parseFloat(window.aod_item_count)) { window.aod_qty_valid_min = false; } } if (window.aod_cart_validate.aod_qty.max != '') { if (parseFloat(window.aod_cart_validate.aod_qty.max) < parseFloat(window.aod_item_count)) { window.aod_qty_valid_max = false; } } } } // validate product variant min max and step window.AODOrderLimit.function.validateVariant = function (aodProduct, aodVariants, aodCartItem) { let tempValidate = false; if (aodVariants.aodMin != "") { if (parseInt(aodVariants.aodMin) > aodCartItem.quantity) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodVariants, false, aodProduct); tempValidate = true; } } else { if (aodProduct.aodMin != "") { if (parseInt(aodProduct.aodMin) > aodCartItem.quantity) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodProduct); tempValidate = true; } } } if (aodVariants.aodMax != "" && tempValidate != true) { if (parseInt(aodVariants.aodMax) < aodCartItem.quantity) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodVariants, false, aodProduct); tempValidate = true; } } else { if (aodProduct.aodMax != "" && tempValidate != true) { if (parseInt(aodProduct.aodMax) < aodCartItem.quantity) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodVariants, false, aodProduct); tempValidate = true; } } } if (aodVariants.aodStep != "" && tempValidate != true) { if (parseInt(aodCartItem.quantity) % parseInt(aodVariants.aodStep) != 0) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodVariants, false, aodProduct); tempValidate = true; } } else { if (aodProduct.aodStep != "" && tempValidate != true) { if (parseInt(aodCartItem.quantity) % parseInt(aodProduct.aodStep) != 0) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodProduct); tempValidate = true; } } } return tempValidate; }; // validate product min max and step window.AODOrderLimit.function.validateProduct = function (aodProduct, aodCartItem) { let tempValidate = false; if (aodProduct.aodMin != "") { if (parseInt(aodProduct.aodMin) > aodCartItem.quantity) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodProduct); tempValidate = true; } } if (aodProduct.aodMax != "" && tempValidate != true) { if (parseInt(aodProduct.aodMax) < aodCartItem.quantity) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodProduct); tempValidate = true; } } if (aodProduct.aodStep != "" && tempValidate != true) { if (parseInt(aodCartItem.quantity) % parseInt(aodProduct.aodStep) != 0) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodProduct); tempValidate = true; } } return tempValidate; }; // validate Global product min max and step window.AODOrderLimit.function.validateGlobalProduct = function (aodProduct, aodCartItem) { let tempValidate = false; if (window.aod_product_min != "") { if (parseInt(window.aod_product_min) > aodCartItem.quantity) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, '', true); tempValidate = true; } } if (window.aod_product_max != "" && tempValidate != true) { if (parseInt(window.aod_product_max) < aodCartItem.quantity) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, '', true); tempValidate = true; } } if (window.aod_product_step != '' && tempValidate != true) { if (parseInt(aodCartItem.quantity) % parseInt(window.aod_product_step) != 0) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, '', true); tempValidate = true; } } return tempValidate; } // validate tag based product limit window.AODOrderLimit.function.validateTagBasedLimit = function (aodProduct, aodCartItem) { if (window.AODOrderLimit.aod_tag_validate == undefined) { return false; } if (window.AODOrderLimit.aod_tag_validate.length == undefined || window.AODOrderLimit.aod_tag_validate.length == 0) { return false; } let aodTagsProduct = aodProduct; let tempValidate = false; window.AODOrderLimit.aod_tag_validate.forEach(function (ruleTag) { var aodTagMatchProduct = window.AODOrderLimit.function.aodFind(window.AODOrderLimit.aodProductTagList, function (Product) { return aodProduct.id == Product.id; }); if (aodTagMatchProduct != undefined) { let matchTag = window.AODOrderLimit.function.aodFind(aodTagMatchProduct.Tags, function (Tag) { return Tag.toLowerCase() == ruleTag.tag.toLowerCase(); }); if (matchTag != undefined) { aodTagsProduct.aodMin = ruleTag.value.aodMin; aodTagsProduct.aodMax = ruleTag.value.aodMax; aodTagsProduct.aodStep = ruleTag.value.aodStep; if (aodTagsProduct.aodMin != "" && parseInt(aodTagsProduct.aodMin) > aodCartItem.quantity) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodProduct); tempValidate = true; } if (aodTagsProduct.aodMax != "" && tempValidate != true && parseInt(ruleTag.value.aodMax) < aodCartItem.quantity) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodProduct); tempValidate = true; } if (aodTagsProduct.aodStep != "" && tempValidate != true && parseInt(aodCartItem.quantity) % parseInt(ruleTag.value.aodStep) != 0) { window.AODOrderLimit.function.aodPushDatatotheObject(aodCartItem, aodProduct); tempValidate = true; } } } }); return tempValidate; } // get total individual product quantity window.AODOrderLimit.function.GetTotalProductQuantiy = function (cartItems, ProductId) { let aodSingleProductQuantity = 0; cartItems.forEach(function (aodCartItem) { if (aodCartItem.product_id == ProductId) { aodSingleProductQuantity = aodSingleProductQuantity + aodCartItem.quantity; } }); return aodSingleProductQuantity } // validation init window.AODOrderLimit.function.CartItemValidate = function (aodCart) { let aod_collection_limit_product = []; aodCart.items.forEach(function (aodCartItem) { let collection = window.AODOrderLimit.function.aodFind(aod_collection_limit_product, function (aod_collection) { return aod_collection.id == aodCartItem.product_id }) if (collection == undefined) { let quantity_collection = window.AODOrderLimit.function.GetTotalProductQuantiy(aodCart.items, aodCartItem.product_id); aod_collection_limit_product.push({ "id": aodCartItem.product_id, "quantity": quantity_collection }) } var aodPrdLimitNotSet = false; var aodProduct = window.AODOrderLimit.function.aodFind(window.aodMinMaxLimit, function (aod) { return aod.id == aodCartItem.product_id; }); let tempValidate = false // check if individual product based limit is set if (aodProduct != undefined) { aodProduct.image = aodCartItem.image; var aodVariants = window.AODOrderLimit.function.aodFind(aodProduct.variants, function (aodVariant) { return aodVariant.id == aodCartItem.variant_id; }); // check if individual variant base limit is set if (aodVariants != undefined) { tempValidate = window.AODOrderLimit.function.validateVariant(aodProduct, aodVariants, aodCartItem) } else { if (aodProduct.aodMax == '' && aodProduct.aodMin == '' && aodProduct.aodStep == '') { aodPrdLimitNotSet = true } else { tempValidate = window.AODOrderLimit.function.validateProduct(aodProduct, aodCartItem); } } } else { aodPrdLimitNotSet = true; } // check if goblal limit is set if (window.hasOwnProperty('aodGlobalProductMinMaxLimit')) { var aodGlobalProduct = window.AODOrderLimit.function.aodFind(window.aodGlobalProductMinMaxLimit, function (aod) { return aod.id == aodCartItem.product_id; }); // check individual product global limit is set if (aodGlobalProduct != undefined && aodPrdLimitNotSet == true) { aodCartItem = JSON.parse(JSON.stringify(aodCartItem)); aodGlobalProduct.image = aodCartItem.image; let aodTotalProductCount = window.AODOrderLimit.function.GetTotalProductQuantiy(aodCart.items, aodGlobalProduct.id); aodCartItem.quantity = aodTotalProductCount; tempValidate = window.AODOrderLimit.function.validateProduct(aodGlobalProduct, aodCartItem); aodPrdLimitNotSet = false; } } if (aodPrdLimitNotSet == true) { // check individual product tag base limit is set tempValidate = window.AODOrderLimit.function.validateTagBasedLimit({ "id": aodCartItem.product_id }, aodCartItem); if (tempValidate == false) { aodPrdLimitNotSet = true; } else { aodPrdLimitNotSet = false; } } if (aodPrdLimitNotSet) { // use global limit if non of the limit is set tempValidate = window.AODOrderLimit.function.validateGlobalProduct(aodProduct, aodCartItem); } }); window.aodCollectionValidation(aod_collection_limit_product); } // validate collection based limt window.aodCollectionValidation = function (aodCartProducts) { var aodCollectionObjects = []; if (window.hasOwnProperty("aodCollectionData") && window.hasOwnProperty('aodCollectionLimitData') && window.aodCollectionLimitData.length != 0) { window.aodCollectionLimitData.forEach(function (aodColletion) { aodCartProducts.forEach(function (aodCartProduct) { var aodProductCollections = window.AODOrderLimit.function.aodFind(window.aodCollectionData, function (aod) { return aod.id == aodCartProduct.id; }); if (aodProductCollections != undefined) { aodProductCollections.collections.forEach(function (aodProductCollection) { if (aodProductCollection.id == aodColletion.id) { var aodCheckCollection = window.AODOrderLimit.function.aodFind(aodCollectionObjects, function (aod) { return aod.collection_id == aodColletion.id; }); if (aodCheckCollection != undefined) { aodCheckCollection.quantity = aodCheckCollection.quantity + aodCartProduct.quantity } else { aodCollectionObjects.push({ "quantity": aodCartProduct.quantity, "collection_id": aodColletion.id, "title": aodProductCollection.title, "validation": aodColletion, }) } } }) } }) }); } if (aodCollectionObjects.lenght != 0) { aodCollectionObjects.forEach(function (aodCollectionObject) { window.AODOrderLimit.function.validateCollectionBasedLimit(aodCollectionObject) }) } } // check the collection based limit window.AODOrderLimit.function.validateCollectionBasedLimit = function (aodCollectionObject) { let tempValidate = false; if (aodCollectionObject.validation.aodMin != "") { if (parseInt(aodCollectionObject.validation.aodMin) > aodCollectionObject.quantity) { window.AODOrderLimit.function.aodPushCollectionDatatotheObject(aodCollectionObject); tempValidate = true; } } if (aodCollectionObject.validation.aodMax != "" && tempValidate != true) { if (parseInt(aodCollectionObject.validation.aodMax) < aodCollectionObject.quantity) { window.AODOrderLimit.function.aodPushCollectionDatatotheObject(aodCollectionObject); tempValidate = true; } } return tempValidate; } // add invalid Collections details window.AODOrderLimit.function.aodPushCollectionDatatotheObject = function (aodInvalidCollection) { window.aod_invalid_Collections.push( { collection_id: aodInvalidCollection.collection_id, Title: aodInvalidCollection.title, aodMin: aodInvalidCollection.validation.aodMin, aodMax: aodInvalidCollection.validation.aodMax, quantity: aodInvalidCollection.quantity, } ); } // init function for validation window.aodValidateLimit = function (aodCart) { window.aod_invalid_Products = []; window.aod_invalid_Collections = [] window.aod_weight_kg = aodCart.total_weight / 1000; window.aod_cart_total_price = aodCart.total_price / 100; window.aod_total_weight = aodCart.total_weight; window.aod_item_count = aodCart.item_count; window.AODOrderLimit.aod_weight_kg = window.aod_weight_kg; window.AODOrderLimit.aod_cart_total_price = window.aod_cart_total_price; window.AODOrderLimit.aod_total_weight = window.aod_total_weight; window.AODOrderLimit.aod_item_count = window.aod_item_count; window.aod_weight_valid_min = true; window.aod_weight_valid_max = true; window.aod_qty_valid_min = true; window.aod_qty_valid_max = true; window.aod_total_valid_min = true; window.aod_total_valid_max = true; window.AODOrderLimit.function.validateCartTotal(); window.AODOrderLimit.function.validateCartQuantity(); window.AODOrderLimit.function.validateCartWeight(); window.AODOrderLimit.aod_weight_valid_min = window.aod_weight_valid_min; window.AODOrderLimit.aod_weight_valid_max = window.aod_weight_valid_max; window.AODOrderLimit.aod_qty_valid_min = window.aod_qty_valid_min; window.AODOrderLimit.aod_qty_valid_max = window.aod_qty_valid_max; window.AODOrderLimit.aod_total_valid_min = window.aod_total_valid_min; window.AODOrderLimit.aod_total_valid_max = window.aod_total_valid_max; window.AODOrderLimit.function.CartItemValidate(aodCart); if (window.aod_weight_valid_min == false || window.aod_weight_valid_max == false || window.aod_qty_valid_min == false || window.aod_qty_valid_max == false || window.aod_total_valid_max == false || window.aod_total_valid_min == false || window.aod_invalid_Products.length != 0 || window.aod_invalid_Collections.length != 0) { return false; }else{ return true; } } // init function for validation window.aodValidate = function (aodCart, isDisplayPopup = true, isReload = true) { if(window.aodTimerSet == false){ window.aodValidateAllData = false; } window.aod_invalid_Products = []; window.aod_invalid_Collections = [] window.aod_weight_kg = aodCart.total_weight / 1000; window.aod_cart_total_price = aodCart.total_price / 100; window.aod_total_weight = aodCart.total_weight; window.aod_item_count = aodCart.item_count; window.AODOrderLimit.aod_weight_kg = window.aod_weight_kg; window.AODOrderLimit.aod_cart_total_price = window.aod_cart_total_price; window.AODOrderLimit.aod_total_weight = window.aod_total_weight; window.AODOrderLimit.aod_item_count = window.aod_item_count; window.aod_weight_valid_min = true; window.aod_weight_valid_max = true; window.aod_qty_valid_min = true; window.aod_qty_valid_max = true; window.aod_total_valid_min = true; window.aod_total_valid_max = true; window.AODOrderLimit.function.validateCartTotal(); window.AODOrderLimit.function.validateCartQuantity(); window.AODOrderLimit.function.validateCartWeight(); window.AODOrderLimit.aod_weight_valid_min = window.aod_weight_valid_min; window.AODOrderLimit.aod_weight_valid_max = window.aod_weight_valid_max; window.AODOrderLimit.aod_qty_valid_min = window.aod_qty_valid_min; window.AODOrderLimit.aod_qty_valid_max = window.aod_qty_valid_max; window.AODOrderLimit.aod_total_valid_min = window.aod_total_valid_min; window.AODOrderLimit.aod_total_valid_max = window.aod_total_valid_max; window.AODOrderLimit.function.CartItemValidate(aodCart); if (isDisplayPopup) { return window.AODOrderLimit.function.setInvalidMessageAndDisplayPopup(isReload); } else { if (window.aod_weight_valid_min == false || window.aod_weight_valid_max == false || window.aod_qty_valid_min == false || window.aod_qty_valid_max == false || window.aod_total_valid_max == false || window.aod_total_valid_min == false || window.aod_invalid_Products.length != 0 || window.aod_invalid_Collections.length != 0) { aod_JQuery(".aod_checkout, input[name='Checkout'], button[name='Checkout'],[href$='Checkout'],input[name='checkout'], button[name='checkout'], [href$='checkout'], input[name='goto_pp'], button[name='goto_pp'], input[name='goto_gc'], button[name='goto_gc'], .additional-checkout-button, .google-wallet-button-holder, .amazon-payments-pay-button").attr("disabled", true); aod_JQuery("#dynamic-checkout-cart").hide(); aod_JQuery(".additional-checkout-buttons").hide(); aod_JQuery(".dynamic-checkout__content").hide(); aod_JQuery(".additional_checkout_buttons").hide(); aod_JQuery(".shopify-payment-button").hide(); } else { aod_JQuery(".aod_checkout, input[name='Checkout'], button[name='Checkout'],[href$='Checkout'],input[name='checkout'], button[name='checkout'], [href$='checkout'], input[name='goto_pp'], button[name='goto_pp'], input[name='goto_gc'], button[name='goto_gc'], .additional-checkout-button, .google-wallet-button-holder, .amazon-payments-pay-button").attr("disabled", false); aod_JQuery("#dynamic-checkout-cart").show(); aod_JQuery(".additional-checkout-buttons").show(); aod_JQuery(".dynamic-checkout__content").show(); aod_JQuery(".additional_checkout_buttons").show(); aod_JQuery(".shopify-payment-button").show(); } } } window.AODOrderLimit.function.setInvalidMessageAndDisplayPopup = function (isReload) { if (window.aod_weight_valid_min == false || window.aod_weight_valid_max == false || window.aod_qty_valid_min == false || window.aod_qty_valid_max == false || window.aod_total_valid_max == false || window.aod_total_valid_min == false || window.aod_invalid_Products.length != 0 || window.aod_invalid_Collections.length != 0 ) { var aod_msg = ''; if (window.aod_weight_valid_min == false) { var aod_weight_min = window.aodMsg.weight_min.replace('{min}', window.aod_cart_validate.aod_weight.min); aod_weight_min = aod_weight_min.replace('{weight}', window.aod_total_weight); aod_msg += "
" + aod_prd_step + "
"; } }); } if (window.aod_invalid_Collections.length != 0) { window.aod_invalid_Collections.forEach(function (aodCollect) { if (parseFloat(aodCollect.aodMin) > parseFloat(aodCollect.quantity)) { var aod_collect_min = window.aodMsg.collection_min.replace('{min}', aodCollect.aodMin); aod_collect_min = aod_collect_min.replace('{collectionname}', aodCollect.Title); aod_collect_min = aod_collect_min.replace('{quantity}', aodCollect.quantity); aod_msg += "