/* * jQuery myCart - v1.7 - 2018-03-07 * http://asraf-uddin-ahmed.github.io/ * Copyright (c) 2017 Asraf Uddin Ahmed; Licensed None */ // function print_current_page(){ // window.print(); // } function print_current_page() { window.print(); var x = document.getElementById('hide_product'); x.style.display = "none"; } (function ($) { "use strict"; var OptionManager = (function () { var objToReturn = {}; var _options = null; var DEFAULT_OPTIONS = { currencySymbol: '$', classCartIcon: 'my-cart-icon', classCartBadge: 'my-cart-badge', classProductQuantity: 'my-product-quantity', classProductRemove: 'my-product-remove', classCheckoutCart: 'my-cart-checkout', affixCartIcon: true, showCheckoutModal: true, numberOfDecimals: 2, cartItems: null, clickOnAddToCart: function ($addTocart) {}, afterAddOnCart: function (products, totalPrice, totalQuantity) {}, clickOnCartIcon: function ($cartIcon, products, totalPrice, totalQuantity) {}, checkoutCart: function (products, totalPrice, totalQuantity) { return false; }, getDiscountPrice: function (products, totalPrice, totalQuantity) { return null; } }; var loadOptions = function (customOptions) { _options = $.extend({}, DEFAULT_OPTIONS); ProductManager.clearProduct(); if (typeof customOptions === 'object') { $.extend(_options, customOptions); } }; var getOptions = function () { return _options; }; objToReturn.loadOptions = loadOptions; objToReturn.getOptions = getOptions; return objToReturn; }()); var MathHelper = (function () { var objToReturn = {}; var getRoundedNumber = function (number) { if (isNaN(number)) { throw new Error('Parameter is not a Number'); } number = number * 1; var options = OptionManager.getOptions(); return number.toFixed(options.numberOfDecimals); }; objToReturn.getRoundedNumber = getRoundedNumber; return objToReturn; }()); var ProductManager = (function () { var objToReturn = {}; /* PRIVATE */ localStorage.products = localStorage.products ? localStorage.products : ""; var getIndexOfProduct = function (id) { var productIndex = -1; var products = getAllProducts(); $.each(products, function (index, value) { if (value.id == id) { productIndex = index; return; } }); return productIndex; }; var setAllProducts = function (products) { localStorage.products = JSON.stringify(products); }; var addProduct = function (id, name, summary, price, quantity, image) { var products = getAllProducts(); products.push({ id: id, name: name, summary: summary, price: price, quantity: quantity, image: image }); setAllProducts(products); }; /* PUBLIC */ var getAllProducts = function () { try { var products = JSON.parse(localStorage.products); return products; } catch (e) { return []; } }; var updatePoduct = function (id, quantity) { var productIndex = getIndexOfProduct(id); if (productIndex < 0) { return false; } var products = getAllProducts(); products[productIndex].quantity = typeof quantity === "undefined" ? products[productIndex].quantity * 1 + 1 : quantity; setAllProducts(products); return true; }; var setProduct = function (id, name, summary, price, quantity, image) { if (typeof id === "undefined") { console.error("id required"); return false; } if (typeof name === "undefined") { console.error("name required"); return false; } if (typeof image === "undefined") { console.error("image required"); return false; } if (!$.isNumeric(price)) { console.error("price is not a number"); return false; } if (!$.isNumeric(quantity)) { console.error("quantity is not a number"); return false; } summary = typeof summary === "undefined" ? "" : summary; if (!updatePoduct(id)) { addProduct(id, name, summary, price, quantity, image); } }; var clearProduct = function () { setAllProducts([]); }; var removeProduct = function (id) { var products = getAllProducts(); products = $.grep(products, function (value, index) { return value.id != id; }); setAllProducts(products); }; var getTotalQuantity = function () { var total = 0; var products = getAllProducts(); $.each(products, function (index, value) { total += value.quantity * 1; }); return total; }; var getTotalPrice = function () { var products = getAllProducts(); var total = 0; $.each(products, function (index, value) { total += value.quantity * value.price; total = MathHelper.getRoundedNumber(total) * 1; }); return total; }; objToReturn.getAllProducts = getAllProducts; objToReturn.updatePoduct = updatePoduct; objToReturn.setProduct = setProduct; objToReturn.clearProduct = clearProduct; objToReturn.removeProduct = removeProduct; objToReturn.getTotalQuantity = getTotalQuantity; objToReturn.getTotalPrice = getTotalPrice; return objToReturn; }()); var loadMyCartEvent = function (targetSelector) { var options = OptionManager.getOptions(); var $cartIcon = $("." + options.classCartIcon); var $cartBadge = $("." + options.classCartBadge); var classProductQuantity = options.classProductQuantity; var classProductRemove = options.classProductRemove; var classCheckoutCart = options.classCheckoutCart; var idCartModal = 'my-cart-modal'; var idCartTable = 'my-cart-table'; var idGrandTotal = 'my-cart-grand-total'; var idEmptyCartMessage = 'my-cart-empty-message'; var idDiscountPrice = 'my-cart-discount-price'; var classProductTotal = 'my-product-total'; var classAffixMyCartIcon = 'my-cart-icon-affix'; if (options.cartItems && options.cartItems.constructor === Array) { ProductManager.clearProduct(); $.each(options.cartItems, function () { ProductManager.setProduct(this.id, this.name, this.summary, this.price, this.quantity, this.image); }); } $cartBadge.text(ProductManager.getTotalQuantity()); if (!$("#" + idCartModal).length) { $('body').append( '