{"version":3,"sources":["cart.js"],"names":["Cart","$","currentXhr","updateTimerId","api","init","$body","touchedTriggered","updateTableVisibility","console","log","on","e","STATE","hasItem","showCart","swal","wwdh","t","hideCart","code","keyCode","which","elem","target","parents","length","hasClass","event","productId","data","params","buildProductParamsByEventTarget","updateQuantityFields","quantity","updateCart","IS_WHOLESALE","SHOW_CART","handleAdd","onCheckout","handleAddOnCheckout","handleRemove","handleAddCoupon","handleClearCoupon","handleQuantityChange","handleAddQuantityChange","handleMinusEvent","handlePlusEvent","handleMinusAddEvent","handlePlusAddEvent","isModifiedSince","date","lastmod","Date","parseInt","window","localStorage","getItem","STORAGE_LASTMOD","isNaN","getTime","MIN_QUANTITY","MAX_QUANTITY","CHANGE_THROTTLE","removeClass","setTimeout","find","css","overflow","animated","addClass","location","this","val","show","$target","$removableRows","$parentRow","prevAll","each","i","row","add","fadeOut","remove","removeProductRow","parseQuantity","preventDefault","updateQuantity","updateQuantityAdd","offset","$quantityFields","clearTimeout","buildProductParams","updateQuantityFieldsAdd","quantityField","subProductIds","map","value","get","tagName","toLowerCase","join","cartProductId","action","parameters","callback","readyState","abort","setItem","ajax","url","cartParameters","extend","method","beforeSend","html","success","response","elements","k","v","setPrevQuantities","errorMessages","iconType","displayMessages","languageItems","info","buttonText","redirectUrl","error","warningMessages","warning","warning_button_text","successMessages","cart_updated","htmlElements","id","$updatedElement","RegExp","test","replaceWith","isWholesale","products","product","property","updateProducts","discountAlert","trigger","statusText","title","text","type","confirmButtonText","reload","hide","messages","allowClickOutside","allowOutsideClick","href","jQuery"],"mappings":"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","file":"cart.min.js","sourcesContent":["/**\n * Cart műveletekhez a következő selectorok használhatók:\n *\n * - .js-cart-add: click-re hozzáadja a terméket a kosárhoz. További opciók:\n * - data-cart-subproduct-id-selector: Ha csomagot adunk a kosárhoz, akkor a hozzátartozó productId-ket tároló\n * inputmezők selectorja. Ez alapján lesz elküldve, hogy az adott csomaghoz, milyen termékeket választott be.\n * - .js-cart-change: quantity input-ra helyezhető, change eventre módosítja a kosárban levő termék mennyiségét.\n * - .js-cart-minus / .js-cart-plus: click-re növeli a kapcsolódó quantity mező értékét\n * (Ennek class-a: js-cart-product-quantity-{productId}). Ha a quantity input rendelkezik a js-cart-change classzal, akkor\n * módosítja a kosárban levő termék mennyiséget is.\n * - .js-cart-remove: törli a terméket, és az elem parentjét (.js-cart-row-{productId}), ami tartalmazza a terméket.\n * - .js-cart-add-coupon: click-re hozzáadja a data-cart-coupon-field-selector attribútumban definiált inputban\n * levő kupont a cart-hoz.\n *\n *\n * A fenti selectorokat tartalmazó elemek data attribútumai:\n * - data-cart-product-id: A kapcsolódó product ID. Kötelező megadni!\n * - data-cart-quantity-field-selector: opcionális, a mennyiséget tartalmazó input mező selectorja.\n * - data-cart-quantity: opcionális, a termék mennyisége (nincs figyelembe véve, ha van selector megadva).\n */\nvar Cart = (function ($) {\n 'use strict';\n\n var api = {\n init: function () {\n updateTableVisibility();\n initCartToggle();\n bindEvenHandlers();\n },\n /**\n * @param {Date} date\n *\n * @returns {Boolean}\n */\n isModifiedSince: function (date) {\n var lastmod = new Date(parseInt(window.localStorage.getItem(STORAGE_LASTMOD), 10));\n\n if (!lastmod || isNaN(lastmod.getTime())) {\n return false;\n }\n\n return lastmod.getTime() > date.getTime();\n }\n },\n /**\n * @var {XMLHttpRequest}\n */\n currentXhr,\n updateTimerId,\n MIN_QUANTITY = 1,\n MAX_QUANTITY = 100000,\n CHANGE_THROTTLE = 200,\n STORAGE_LASTMOD = 'cart_lastmod',\n IS_WHOLESALE = false,\n SHOW_CART = true,\n STATE = 'closed';\n\n function bindEvenHandlers() {\n var $body = $('body');\n var touchedTriggered = false;\n // $body.on('touchstart', '.js-cart-add', function (event) {\n // touchedTriggered = true;\n // handleAdd(event);\n // });\n // $body.on('touchstart', '.js-cart-add-on-checkout', function (event) {\n // touchedTriggered = true;\n // handleAddOnCheckout(event);\n // });\n $body.on('click', '.js-cart-add', function (event) {\n if (!touchedTriggered) {\n handleAdd(event);\n } else {\n touchedTriggered = false;\n }\n });\n\n $body.on('click', '.js-cart-add-on-checkout', function (event) {\n if (!touchedTriggered) {\n handleAddOnCheckout(event);\n } else {\n touchedTriggered = false;\n }\n });\n\n\n $body.on('click', '.js-cart-remove', handleRemove);\n $body.on('click', '.js-cart-add-coupon', handleAddCoupon);\n $body.on('click', '.js-cart-clear-coupon', handleClearCoupon);\n\n $body.on('change', '.js-cart-change', handleQuantityChange);\n $body.on('change', '.js-cart-add-input', handleAddQuantityChange);\n\n $body.on('click', '.js-cart-minus', handleMinusEvent);\n $body.on('click', '.js-cart-plus', handlePlusEvent);\n\n $body.on('click', '.js-cart-minus-add', handleMinusAddEvent);\n $body.on('click', '.js-cart-plus-add', handlePlusAddEvent);\n\n\n }\n\n function hideCart() {\n $('#cart-sidebar .cart-list').removeClass('active');\n setTimeout(function () {\n $('#cart-sidebar').removeClass('active');\n $('#cart-sidebar').find('.cart-btn a.button').removeClass('hovered');\n $('body').css({'overflow': 'initial'});\n }, 300);\n STATE = 'closed';\n }\n function showCart(animated) {\n animated = animated || false;\n $('body').css({'overflow': 'hidden'});\n $('#cart-sidebar').addClass('active');\n if (animated) {\n $('#cart-sidebar .cart-list').addClass('animated');\n } else {\n $('#cart-sidebar .cart-list').removeClass('animated');\n }\n $('#cart-sidebar .cart-list').addClass('active');\n $('#cart-sidebar').find('.cart-btn a.button').addClass('hovered');\n STATE = 'opened';\n }\n\n function initCartToggle() {\n console.log('INIT TOGGLE');\n $(\"body\").on('click', '#cart', function (e) {\n console.log('Click TOGGLE');\n if (STATE === 'closed') {\n if (hasItem()){\n showCart(true);\n } else {\n swal(wwdh.t('A kosara üres!'), null, 'info');\n }\n } else {\n hideCart();\n }\n });\n $(\"body\").on('keyup', function(e){\n console.log('KEYUP TOGGLE');\n var code = e.keyCode || e.which;\n if (code === 27 && STATE === 'opened'){\n hideCart();\n }\n });\n $(\"body\").on('click', '#cart-sidebar', function(e) {\n console.log('Click Sidebar');\n var elem = $(e.target);\n if (elem.parents('.cart-list').length === 0 || elem.parents('.cart-hide').length > 0 || elem.hasClass('cart-hide')){\n hideCart();\n }\n });\n }\n\n function hasItem()\n {\n return $('#cart-sidebar .cart-item-product').length > 0;\n }\n\n function handleAdd(event) {\n\n var productId = $(event.target).data('cart-product-id'),\n params = buildProductParamsByEventTarget($(event.target));\n\n //alert(productId);\n updateQuantityFields(productId, params.quantity);\n updateCart('add', params, function () {\n if (!IS_WHOLESALE && SHOW_CART) {\n showCart(true);\n }\n });\n }\n\n\n function handleAddOnCheckout(event) {\n var productId = $(event.target).data('cart-product-id'),\n params = buildProductParamsByEventTarget($(event.target));\n updateQuantityFields(productId, params.quantity);\n params.onCheckout = 1;\n updateCart('add', params, function () {\n //displayMessages('success', [wwdh.t('A termék sikeresen hozzáadva a kosárhoz!')],[wwdh.t('Extra kedvezmény')]);\n });\n }\n\n function handleAddCoupon() {\n window.location = '/cart/default/index?coupon-redeem=' + $($(this).data('cart-coupon-field-selector')).val();\n // updateCart('addCoupon', {\n // couponCode: $($(this).data('cart-coupon-field-selector')).val()\n // }, function (result) {\n // if (result) {\n // $('#coupon-code-form').hide();\n // }\n // });\n }\n\n function handleClearCoupon() {\n updateCart('clearCoupon', {}, function () {\n $('#coupon-code-form').show();\n });\n }\n\n function handleRemove() {\n var $target = $(this);\n\n updateCart('remove', buildProductParamsByEventTarget($target), function () {\n removeProductRow($target);\n });\n }\n\n function removeProductRow($target) {\n var $removableRows,\n $parentRow;\n\n if ($target.parents('.stacktable').length && !$target.parents('.js-cart-row').length) {\n $parentRow = $target.parents('tr:eq(0)');\n $removableRows = $parentRow;\n\n $parentRow.prevAll().each(function (i, row) {\n $removableRows = $removableRows.add(row);\n\n // Az első spacer után megállunk, megvan minden sor az adott termékhez.\n if ($(row).hasClass('st-space')) {\n return false;\n }\n });\n } else {\n $removableRows = $('.js-cart-row-' + $target.data('cart-product-id'));\n }\n\n $removableRows.fadeOut(function () {\n $(this).remove();\n\n updateTableVisibility();\n });\n }\n\n function handleQuantityChange() {\n var productId = $(this).data('cart-product-id');\n updateQuantityFields(productId, $(this).val());\n updateCart('change', buildProductParamsByEventTarget($(this)));\n }\n\n function handleAddQuantityChange() {\n $(this).val(parseQuantity($(this).val()));\n }\n\n function handlePlusEvent(e) {\n e.preventDefault();\n updateQuantity($(this).data('cart-product-id'), 1);\n }\n\n function handleMinusEvent(e) {\n e.preventDefault();\n updateQuantity($(this).data('cart-product-id'), -1);\n }\n\n function handlePlusAddEvent(e) {\n e.preventDefault();\n updateQuantityAdd($(this).data('cart-product-id'), 1);\n }\n\n function handleMinusAddEvent(e) {\n e.preventDefault();\n updateQuantityAdd($(this).data('cart-product-id'), -1);\n }\n\n function updateQuantity(productId, offset) {\n var $quantityFields = $('.js-cart-product-quantity-' + productId),\n quantity = parseQuantity(parseInt($quantityFields.val(), 10) + offset);\n\n updateQuantityFields(productId, quantity);\n\n if ($quantityFields.hasClass('js-cart-change')) {\n clearTimeout(updateTimerId);\n\n updateTimerId = setTimeout(function () {\n updateCart('change', buildProductParams(productId, quantity));\n }, CHANGE_THROTTLE);\n }\n }\n\n function updateQuantityAdd(productId, offset) {\n var $quantityFields = $('.js-cart-product-quantity-add-' + productId),\n quantity = parseQuantity(parseInt($quantityFields.val(), 10) + offset);\n updateQuantityFieldsAdd(productId, quantity);\n }\n\n /**\n * Frissíti a termékhez tartozó összes quantity mezőt (mivel a stackable() többet hoz létre).\n *\n * @param {Number} productId\n * @param {Number} quantity\n */\n function updateQuantityFields(productId, quantity) {\n $('.js-cart-product-quantity-' + productId).val(parseQuantity(quantity));\n }\n\n /**\n * Frissíti a termékhez tartozó összes quantity mezőt (mivel a stackable() többet hoz létre).\n *\n * @param {Number} productId\n * @param {Number} quantity\n */\n function updateQuantityFieldsAdd(productId, quantity) {\n $('.js-cart-product-quantity-add-' + productId).val(parseQuantity(quantity));\n }\n\n /**\n * @param {mixed} quantity\n *\n * @return {Number}\n */\n function parseQuantity(quantity) {\n quantity = parseInt(quantity, 10);\n\n if (isNaN(quantity)) {\n return 1;\n }\n\n if (quantity < MIN_QUANTITY) {\n return MIN_QUANTITY;\n } else if (quantity > MAX_QUANTITY) {\n return MAX_QUANTITY;\n }\n\n return quantity;\n }\n\n function buildProductParamsByEventTarget($target) {\n var quantityField = $target.data('cart-quantity-field-selector'),\n subProductIds = $($target.data('cart-subproduct-id-selector')).map(function () {\n return this.value;\n }).get(),\n quantity;\n\n if (quantityField) {\n quantity = $(quantityField).val();\n } else if ($target[0].tagName.toLowerCase() === 'input') {\n quantity = $target.val();\n } else {\n quantity = $target.data('cart-quantity');\n }\n\n return buildProductParams($target.data('cart-product-id'), quantity, subProductIds);\n }\n\n /**\n *\n * @param {String} productId\n * @param {Number} quantity\n * @param {Array} subProductIds [optional]\n */\n function buildProductParams(productId, quantity, subProductIds) {\n if (subProductIds && subProductIds.length) {\n productId += '-' + subProductIds.join('-');\n }\n\n return {\n cartProductId: productId,\n quantity: parseQuantity(quantity)\n };\n }\n\n /**\n * @param {String} action\n * @param {Object} parameters\n * @param {Function} callback [optional]\n */\n function updateCart(action, parameters, callback) {\n //alert('updateCart');\n if (currentXhr && currentXhr.readyState !== 4) {\n currentXhr.abort();\n }\n\n window.localStorage.setItem(STORAGE_LASTMOD, '' + new Date().getTime());\n //alert('setStorage');\n currentXhr = $.ajax({\n url: '/cart/default/update',\n data: {\n cartParameters: $.extend(parameters, {\n action: action\n })\n },\n method: 'POST',\n beforeSend: function () {\n $('#cart').addClass('updating');\n $('#cart-add-result').html('');\n },\n success: function (response) {\n //alert('ajaxSuccess');\n SHOW_CART = true;\n if (!response.success) {\n if (response.errorMessages.length) {\n if(response.iconType && response.iconType == 'info') {\n SHOW_CART = false;\n displayMessages(response.iconType, response.errorMessages, response.languageItems.info, response.buttonText, response.redirectUrl, true);\n } else {\n displayMessages('error', response.errorMessages, response.languageItems.error, response.buttonText, response.redirectUrl);\n }\n } else if(response.warningMessages.length){\n displayMessages('warning', response.warningMessages, response.languageItems.warning, response.languageItems.warning_button_text, '');\n }\n resetQuantitiesToPrev(parameters.cartProductId);\n } else {\n setPrevQuantities(parameters.cartProductId);\n }\n\n displayMessages('success', response.successMessages, response.languageItems.cart_updated);\n updateHtmlElements(response.htmlElements);\n IS_WHOLESALE = response.isWholesale;\n updateProducts(response.products);\n updateTableVisibility();\n if (response.discountAlert) {\n $('body').trigger('choose-discount-type');\n }\n\n if (callback) {\n callback();\n }\n },\n error: function (response) {\n if (response.statusText !== 'abort') {\n swal({\n title: wwdh.t('Sajnáljuk, valami hiba történt!'),\n text: wwdh.t('Kérjük, frissítsd az oldalt, és próbáld újra!'),\n type: \"error\",\n confirmButtonText: wwdh.t('Frissítés')\n },function(){\n location.reload();\n });\n }\n }\n });\n }\n\n function resetQuantitiesToPrev(cartProductId) {\n $('[data-cart-product-id=\"' + cartProductId + '\"][data-prev-quantity]').each(function (k,v) {\n $(v).val($(v).data('prev-quantity'));\n })\n }\n\n function getPrevQuantities(cartProductId) {\n return $('[data-cart-product-id=\"' + cartProductId + '\"][data-prev-quantity]').data('prev-quantity');\n }\n function setPrevQuantities(cartProductId) {\n $('[data-cart-product-id=\"' + cartProductId + '\"][data-prev-quantity]').each(function (k, v) {\n $(v).data('prev-quantity', $(v).val());\n })\n }\n\n /**\n * @param {Object} elements\n */\n function updateHtmlElements(elements) {\n $.each(elements, function (id, value) {\n var $updatedElement = $('#' + id);\n\n if (new RegExp('id\\s*=\\s*[\\'\"]' + id + '[\\'\"]', 'i').test(value)) {\n $updatedElement.replaceWith(value);\n if (id === 'cart-sidebar' && STATE === 'opened') {\n if (hasItem()){\n showCart(false);\n } else {\n hideCart();\n }\n }\n } else if ($updatedElement.length && $updatedElement[0].tagName.toLowerCase() === 'input') {\n } else {\n $updatedElement.html(value);\n }\n });\n }\n\n /**\n *\n * @param {Array} products\n */\n function updateProducts(products) {\n var i,\n product;\n\n for (i = 0; i < products.length; ++i) {\n product = products[i];\n\n $.each(product, function (property, value) {\n var $updatedElement = $('.js-cart-product-' + property + '-' + product.id);\n\n if ($updatedElement.length && $updatedElement[0].tagName.toLowerCase() === 'input') {\n } else {\n $updatedElement.html(value);\n }\n });\n }\n }\n\n function updateTableVisibility() {\n if ($('#cart').data('item-count')) {\n $('.js-cart-notempty').show();\n $('.js-cart-empty').hide();\n } else {\n $('.js-cart-notempty').hide();\n $('.js-cart-empty').show();\n }\n }\n\n\n /**\n * @param {String} type\n * @param {Array} messages\n * @param {String} title\n * @param {String} confirmButtonText\n * @param {String} redirectUrl\n * @param {Boolean} allowClickOutside\n */\n function displayMessages(type, messages, title, confirmButtonText, redirectUrl, allowClickOutside = false) {\n if (!messages.length) {\n return;\n }\n if (!confirmButtonText) {\n confirmButtonText = 'OK';\n }\n\n swal({\n html: true,\n title: title,\n text: messages.join('
'),\n type: type,\n confirmButtonText: confirmButtonText,\n allowOutsideClick: allowClickOutside\n },function(){\n if (redirectUrl != ''){\n console.log(redirectUrl);\n location.href = redirectUrl;\n }\n });\n }\n\n return api;\n})(jQuery);\n\njQuery(function () {\n Cart.init();\n});"]}