{"version":3,"sources":["ecom-details-view.js","product-common.js"],"names":["setViewDetailsScript","RegisterStockNotify","$","ajax","url","root","type","dataType","data","JSON","stringify","prodId","stockNotifyProdId","isVariant","stockNotifyIsVariant","email","stockNotifyEmail","contentType","success","result","stockNotifyLoggedIn","hide","show","stockModal","open","fadeOut","fadeIn","lert","error","alert","showSelectedVariant","removeClass","selected","find","selectedID","val","selectorString","addClass","hasVariants","showStockCount","hideStockNumbers","relatedDiv","document","getElementById","load","remodal","click","this","submit","e","preventDefault","on","matchHeight","tab","lightGallery","selector","loadYoutubeThumbnail","loadVimeoThumbnail","wrapper","closest","qtyTbx","qty","Number","uom","optionsAdv","fbPixelEnabled","limitToStock","personalisationRequired","cartWarningEnabled","btn","id","hasComponents","CheckComponentsSelected","currentStock","parseInt","text","qtyCheck","GetSelectedOptionsAdv","prodOptsOk","each","length","next","opts","i","o","opt","name","attr","replace","index","value","push","personalizeText","useGiftBox","canBeGiftWrapped","prop","variantId","addToCart","productId","quantity","options","trigger","fbq_addToBag","response","off","change","mouseenter","swapIn","mainImgContainer","mainImage","mouseleave","acc","getElementsByClassName","addEventListener","classList","toggle","panel","nextElementSibling","style","maxHeight","scrollHeight","componentPriceType","GetCalculatedPrice","SetFavButtons","GetCalculatedStock","$this","$panel","$selectorHead","prev","allowMultipleSelections","selectedOptions","selectedOption","alreadySelected","splice","css","selectedOptionNames","map","so","join","obj","variantWrapper","openTab","evt","tabName","tabcontent","tablinks","display","className","currentTarget","allSelected","groupId","groupName","optionProductId","optionProductName","optionsAdvPriceHandling","post","$priceWrapper","$detailPrice","$discTable","showSalePrice","salePriceString","priceString","quantityPriceListPrices","append","empty","$discTableTbody","$discTableTd","createTextNode","quantityBreak","$discTableTr","remove","$optionsPrice","optionsShowSalePrice","optionsSalePriceString","optionsPriceString","$variantWrapper","$variantStockInfo","$variantStockSummary","stockSummaryHtml","isInStock","stock","isOnBackorder","backorderDueString","stockBackordered","html","$productStockInfo","$productStockSummary","vidClosed","jQuery","tubeplayer","setProductCommonScript","$modal","hashTracking","wishListsChecked","CheckWishListCheckboxes","$wishListModal","imgLink","$productsTarget","productIds","get","focus","bind","keyCode","newListName","AddNewWishListCheckbox","wishListName","wishlistId","loggedIn","toString","split","wishlistIds","wishListIds","ReturnWishlistsCheckedAndSwitchFavIcon","close","loginModal","favbutton","notFavbutton","checkedstr","includes","wishlistName","isFav","Platform","Deferred","execute"],"mappings":"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","file":"ecom-details-view.min.js","sourcesContent":["Platform.Deferred.execute(setViewDetailsScript);\r\nvar canBeGiftWrapped = \"@Model.data.CanBeGiftWrapped\";\r\nvar stockNotifyProdId;\r\nvar stockNotifyIsVariant = \"False\";\r\nvar stockNotifyLoggedIn = \"False\";\r\nvar stockNotifyEmail = \"\";\r\nvar hasVariants;\r\nvar showStockCount;\r\n\r\nfunction setViewDetailsScript() {\r\n\r\n hasVariants = $('#pf-product-details-page').data('has-variants') === 'True';\r\n showStockCount = $('#pf-product-details-page').data('show-stock-count') === 'True';\r\n hideStockNumbers = $('#pf-product-details-page').data('hide-stock-numbers') === 'True';\r\n\r\n //Control RelatedProducts\r\n var relatedDiv = document.getElementById('RelatedRecentlyProducts');\r\n if (relatedDiv !== null) {\r\n\r\n var prodId = $(relatedDiv).data(\"prod-id\");\r\n $('#RelatedRecentlyProducts').load(root + \"Products/RelatedRecentlyProducts?prodID=\"+prodId);\r\n }\r\n\r\n\r\n\r\n // stock notify handler\r\n var stockModal = $('[data-remodal-id=stock-notify-modal]').remodal();\r\n $('.pf-stock-notify-me-btn').click(function () {\r\n stockNotifyProdId = $(this).data(\"prod-id\");\r\n stockNotifyIsVariant = $(this).data(\"is-variant\");\r\n stockNotifyLoggedIn = $(this).data(\"user-logged-in\");\r\n if (stockNotifyLoggedIn == \"False\") {\r\n stockModal.open();\r\n }\r\n else {\r\n RegisterStockNotify();\r\n }\r\n });\r\n\r\n $('#register-stock-notify-form').submit(function (e) {\r\n e.preventDefault();\r\n stockNotifyEmail = $('#stock-notify-email').val();\r\n RegisterStockNotify();\r\n });\r\n\r\n\r\n\r\n function RegisterStockNotify() {\r\n\r\n $.ajax({\r\n url: root + \"UserAccount/RegisterStockNotify\",\r\n type: 'POST',\r\n dataType: 'json',\r\n data: JSON.stringify({\r\n prodId: stockNotifyProdId,\r\n isVariant: stockNotifyIsVariant,\r\n email: stockNotifyEmail\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n success: function (data) {\r\n if (data.result == \"ok\") {\r\n if (stockNotifyLoggedIn) {\r\n $('#stock-notify-content').hide();\r\n $('#stock-notify-rsp').show();\r\n stockModal.open();\r\n }\r\n else {\r\n $('#stock-notify-content').fadeOut(function () {\r\n $('#stock-notify-rsp').fadeIn();\r\n });\r\n }\r\n }\r\n else {\r\n lert('Sorry there was a problem processing your request.');\r\n }\r\n },\r\n error: function () {\r\n alert('Sorry there was a problem processing your request.');\r\n }\r\n });\r\n }\r\n\r\n\r\n //handle selecting variants from dropdown\r\n showSelectedVariant();\r\n //$(\".pf-qty-btn-plus\").unbind(\"click\");\r\n //$(\".pf-qty-btn-plus\").click(function () {\r\n // var $this = $(this);\r\n // var quantity = parseInt($this.siblings(\".qty-tbx\").val()) + 1;\r\n // $(this).siblings(\".qty-tbx\").val(quantity);\r\n //});\r\n //$(\".pf-qty-btn-minus\").unbind(\"click\");\r\n //$(\".pf-qty-btn-minus\").click(function () {\r\n // var $this = $(this);\r\n // var quantity = parseInt($this.siblings(\".qty-tbx\").val()) - 1;\r\n // if (quantity <= 0) {\r\n // quantity = 1;\r\n // }\r\n // $(this).siblings(\".qty-tbx\").val(quantity);\r\n //});\r\n $('#variant-select').on('change', function () {\r\n showSelectedVariant();\r\n });\r\n function showSelectedVariant() {\r\n $(\".variantRow\").hide(50, function () {\r\n $(\".current\").removeClass(\"current\");\r\n var selected = $(\"#variant-select\").find(\":selected\");\r\n var selectedID = $(selected).val();\r\n var selectorString = \"#variant-row-\" + selectedID;\r\n $(selectorString).show(50);\r\n $(selectorString).addClass(\"current\");\r\n });\r\n }\r\n $('.productwrapper').matchHeight();\r\n\r\n $('#other-products-tabs a').click(function (e) {\r\n e.preventDefault();\r\n $(this).tab('show');\r\n });\r\n\r\n $('#product-media-holder').lightGallery({\r\n selector: '.product-media',\r\n loadYoutubeThumbnail: false,\r\n loadVimeoThumbnail: false\r\n });\r\n\r\n $('#product-media-holder-2').lightGallery({\r\n selector: '.mobile-vid',\r\n loadYoutubeThumbnail: false,\r\n loadVimeoThumbnail: false\r\n });\r\n\r\n $('.pf-detail-view-add-cart-wrapper .pf-qty-btn-minus').click(function () {\r\n var wrapper = $(this).closest('.pf-qty-wrapper');\r\n var qtyTbx = wrapper.find('.pf-qty-select');\r\n var qty = Number(qtyTbx.val());\r\n var uom = qtyTbx.data('uom');\r\n if (qty > uom)\r\n qty -= uom;\r\n if (qty < 0)\r\n qty = 0;\r\n qtyTbx.val(qty);\r\n });\r\n\r\n $('.pf-detail-view-add-cart-wrapper .pf-qty-btn-plus').click(function () {\r\n var wrapper = $(this).closest('.pf-qty-wrapper');\r\n var qtyTbx = wrapper.find('.pf-qty-select');\r\n var qty = Number(qtyTbx.val());\r\n var uom = qtyTbx.data('uom');\r\n qty += uom;\r\n qtyTbx.val(qty);\r\n });\r\n\r\n // main call to add a product to the cart\r\n $('.pf-add-to-cart-btn').click(function () {\r\n var fbPixelEnabled = $('#pf-product-details-page').data(\"fb-pixel\");\r\n var limitToStock = $('#pf-product-details-page').data('limit-to-stock') === 'True';\r\n var personalisationRequired = $('#pf-product-details-page').data('product-personalisation-required') === 'True';\r\n var cartWarningEnabled = $('#pf-product-details-page').data('cart-warning-enabled') === 'True';\r\n var btn = $(this);\r\n var id = btn.data(\"id\");\r\n var wrapper = btn.closest('.pf-detail-view-add-cart-wrapper');\r\n var qty = wrapper.find('.pf-qty-select').val();\r\n var optionsAdv;\r\n\r\n // check if this is a product with components, if so check all have been selected\r\n var hasComponents = $('#pf-product-details-page').data('product-has-components') === 'True';\r\n if (hasComponents) {\r\n // check all selected otherwise cannot add to cart\r\n if (!CheckComponentsSelected()) {\r\n alert(\"Please select from the available product options\");\r\n return false;\r\n }\r\n\r\n // if product purchase is limited to available stock then check qty against current stock\r\n if (limitToStock) {\r\n var currentStock = parseInt($('#pf-calculated-stock').text());\r\n var qtyCheck = parseInt(qty);\r\n if (qtyCheck > currentStock) {\r\n alert(\"Sorry there are \" + currentStock + \" of this combination currently in stock\");\r\n return false;\r\n }\r\n }\r\n\r\n // if all selected then setup the object to pass into the cart\r\n optionsAdv = GetSelectedOptionsAdv();\r\n }\r\n\r\n var prodOptsOk = true;\r\n $('.productOptions').each(function () {\r\n if ($(this).length > 0) {\r\n if ($(this).val() == 0) {\r\n $(this).next('.productOptionWarn').fadeIn();\r\n $(this).addClass(\"highlight\");\r\n prodOptsOk = false;\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n if (prodOptsOk == false) {\r\n return false;\r\n }\r\n\r\n var opts = [];\r\n $('.productOptions').each(function (i, o) {\r\n var opt = {};\r\n var name = $(this).attr('id');\r\n name = name.replace(\"option-select-\", \"\");\r\n opt.index = i;\r\n opt.name = name;\r\n opt.value = $(this).val();\r\n opts.push(opt);\r\n });\r\n\r\n\r\n var parentID = $('#parent-id').val();\r\n var catID = $('#cat-id').val();\r\n var listby = $('#listby').val();\r\n var size = $('#size-select').val();\r\n var personalizeText = $('#PersonalizeProductText').val();\r\n\r\n\r\n // gift option and message\r\n var useGiftBox = false;\r\n if (canBeGiftWrapped == \"True\") {\r\n $('#giftBoxingCbx').prop('checked');\r\n useGiftBox = true;\r\n }\r\n if (useGiftBox) {\r\n var personalMessage = $('#giftBoxText').val();\r\n }\r\n\r\n var variantId = $(btn).data(\"variant-id\");\r\n\r\n if (variantId != 0) {\r\n qty = $(this).closest(\".variant-table\").find('.qty-tbx').val();\r\n }\r\n //check if personalisation it is required\r\n if (personalisationRequired)\r\n {\r\n if (!$('#PersonalizeProductText').val())\r\n {\r\n $('#PersonalizeProductText').addClass('validity-erroneous');\r\n alert('Please personalise the product before adding it to the cart.');\r\n return false;\r\n }\r\n }\r\n\r\n var addToCart = function () {\r\n $.ajax({\r\n url: root + \"Cart/AddToCart\",\r\n type: 'POST',\r\n dataType: 'json',\r\n data: JSON.stringify({\r\n productId: id,\r\n variantId: variantId === 0 ? null : variantId,\r\n quantity: qty,\r\n options: opts,\r\n optionsAdv: optionsAdv,\r\n personalizeText: personalizeText\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n success: function (data) {\r\n //AddedToCart(data);\r\n $(document).trigger('itemAdded.product.platform', data);\r\n //SetCartQty();\r\n if (fbPixelEnabled == \"True\") {\r\n fbq_addToBag();\r\n }\r\n }\r\n });\r\n };\r\n\r\n if (cartWarningEnabled) {\r\n $.ajax({\r\n url: root + 'Cart/CheckProductExistsInCart',\r\n type: 'POST',\r\n dataType: 'json',\r\n data: JSON.stringify({\r\n productId: id,\r\n variantId: variantId === 0 ? null : variantId,\r\n options: opts,\r\n optionsAdv: optionsAdv,\r\n personalizeText: personalizeText\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n success: function (response) {\r\n if (response.result === 'ok-not-exists') {\r\n addToCart();\r\n } else if (response.result === 'ok-exists') {\r\n $('#cartWarningModalAddBtn').off('click').click(function () {\r\n addToCart();\r\n });\r\n $('#cartWarningModalQuantity').text(qty);\r\n $('[data-remodal-id=cartWarningModal]').remodal().open();\r\n }\r\n }\r\n });\r\n } else {\r\n addToCart();\r\n }\r\n\r\n return false;\r\n });\r\n\r\n $('#size-select').change(function () {\r\n $('#choose-size-warn').fadeOut();\r\n });\r\n\r\n $('.productOptions').change(function () {\r\n $(this).removeClass('highlight');\r\n $(this).next('.productOptionWarn').fadeOut();\r\n });\r\n\r\n \r\n\r\n // group products\r\n $(\".pf-product-group-wrapper\").on({\r\n mouseenter: function () {\r\n var swapIn = $(this).data(\"image-url\");\r\n var mainImgContainer = $('.pf-product-main-image-wrapper').find('img');\r\n var mainImage = mainImgContainer.prop('src');\r\n $(this).data(\"orig-img-url\", mainImage);\r\n mainImgContainer.prop('src', swapIn);\r\n },\r\n mouseleave: function () {\r\n var swapIn = $(this).data(\"orig-img-url\");\r\n var mainImgContainer = $('.pf-product-main-image-wrapper').find('img');\r\n mainImgContainer.prop('src', swapIn);\r\n },\r\n click: function () {\r\n // Handle click...\r\n }\r\n }, \".pf-group-prod\");\r\n\r\n // accordion for component products\r\n var acc = document.getElementsByClassName(\"pf-product-component-accordion\");\r\n var i;\r\n // attach listener to each accordion header\r\n for (i = 0; i < acc.length; i++) {\r\n acc[i].addEventListener(\"click\", function () {\r\n this.classList.toggle(\"pf-product-component-accordion-active\");\r\n var panel = this.nextElementSibling;\r\n if (panel.style.maxHeight) {\r\n panel.style.maxHeight = null;\r\n } else {\r\n panel.style.maxHeight = panel.scrollHeight + \"px\";\r\n }\r\n });\r\n }\r\n\r\n // init advanced options in case they are pre-selected\r\n var componentPriceType = $('#pf-product-details-page').data(\"product-component-price-type\");\r\n if (CheckComponentsSelected()) {\r\n var optionsAdv = GetSelectedOptionsAdv();\r\n if (componentPriceType === 'BASE_PLUS_OPTIONS' || componentPriceType === 'HIGHEST_OPTION_PRICE') {\r\n GetCalculatedPrice(optionsAdv);\r\n SetFavButtons(optionsAdv);\r\n if (showStockCount)\r\n GetCalculatedStock(optionsAdv);\r\n }\r\n }\r\n\r\n $(document).on('click', '.pf-product-component-select', function (e) {\r\n //e.preventDefault();\r\n var $this = $(this);\r\n var id = $this.data('id');\r\n var name = $this.data('name');\r\n\r\n var $panel = $this.closest('.pf-product-component-accordion-panel');\r\n var $selectorHead = $panel.prev();\r\n var allowMultipleSelections = $selectorHead.data('allow-multiple-selections') === 'True';\r\n\r\n // Read existing selected options\r\n var selectedOptions = $selectorHead.data('selected-json') || [];\r\n\r\n var selectedOption = { id: id, name: name };\r\n if (id === -1 || !allowMultipleSelections) { // ID -1 is 'none' option\r\n // Replace array with selected option\r\n selectedOptions = [selectedOption];\r\n\r\n // Slide panel up\r\n $panel.css('max-height', '');\r\n $selectorHead.removeClass(\"pf-product-component-accordion-active\");\r\n\r\n // Find all options in this set and remove selected class, then add to this option\r\n $panel.find('.pf-product-component-select').removeClass('pf-product-component-selected');\r\n $this.addClass('pf-product-component-selected');\r\n } else {\r\n var alreadySelected = false;\r\n\r\n // Check if 'none' selected\r\n if (selectedOptions.length === 1 && selectedOptions[0].id === -1) {\r\n // 'None' selected, so remove it\r\n selectedOptions = [];\r\n $panel.find('.pf-product-component-select').removeClass('pf-product-component-selected');\r\n } else {\r\n // 'None' not selected, so check if selected option is already selected, if so then remove from array\r\n for (var i = 0; i < selectedOptions.length; i++) {\r\n if (selectedOptions[i].id === id) {\r\n alreadySelected = true;\r\n selectedOptions.splice(i, 1);\r\n $this.removeClass('pf-product-component-selected');\r\n break;\r\n }\r\n }\r\n }\r\n \r\n if (!alreadySelected) {\r\n selectedOptions.push(selectedOption);\r\n $this.addClass('pf-product-component-selected');\r\n }\r\n }\r\n\r\n // Set selected text in head\r\n var selectedOptionNames = $.map(selectedOptions, function (so) { return so.name; });\r\n $selectorHead.find('.pf-component-select-text > u').text(selectedOptionNames.length > 0 ? selectedOptionNames.join(', ') : 'Please Select');\r\n\r\n // Update selected options with modified array\r\n $selectorHead.data('selected-json', selectedOptions);\r\n\r\n // Check if all options are selected, and if so calculate price and stock where necessary\r\n if (CheckComponentsSelected()) {\r\n var optionsAdv = GetSelectedOptionsAdv();\r\n if (componentPriceType === 'FIXED_PRICE') {\r\n SetFavButtons(optionsAdv);\r\n if (showStockCount)\r\n GetCalculatedStock(optionsAdv);\r\n } else if (componentPriceType === 'BASE_PLUS_OPTIONS' || componentPriceType === 'HIGHEST_OPTION_PRICE') {\r\n GetCalculatedPrice(optionsAdv);\r\n SetFavButtons(optionsAdv);\r\n if (showStockCount)\r\n GetCalculatedStock(optionsAdv);\r\n }\r\n }\r\n });\r\n //Variant Grid\r\n $(document).on('click', '.pf-product-details-variant-grid', function (e) {\r\n //e.preventDefault();\r\n var obj = $(this);\r\n var id = obj.data(\"id\");\r\n $('.variantGrid').hide(50);\r\n //var title = obj.data(\"name\");\r\n var variantWrapper = obj.closest('.pf-product-details-variant-grid-wrapper');\r\n\r\n // find all variants in this set and remove selected class\r\n variantWrapper.each(function () {\r\n $(this).find('.pf-product-details-variant-grid').removeClass('pf-product-details-variant-grid-selected');\r\n });\r\n // add selected to this item\r\n obj.addClass('pf-product-details-variant-grid-selected');\r\n //var selectorString = \"#variant-grid-actions-\" + id;\r\n $(\"#variant-grid-actions-\" + id).show(50);\r\n });\r\n}\r\n\r\nfunction openTab(evt, tabName) {\r\n var i, tabcontent, tablinks;\r\n tabcontent = document.getElementsByClassName(\"w-tab-pane\");\r\n for (i = 0; i < tabcontent.length; i++) {\r\n tabcontent[i].style.display = \"none\";\r\n }\r\n tablinks = document.getElementsByClassName(\"w-tab-link\");\r\n for (i = 0; i < tablinks.length; i++) {\r\n tablinks[i].className = tablinks[i].className.replace(\" w--current\", \"\");\r\n }\r\n document.getElementById(tabName).style.display = \"block\";\r\n evt.currentTarget.className += \" w--current\";\r\n}\r\n\r\n// checks if all all components of a product with component options have been selected true if they have, false if not\r\nfunction CheckComponentsSelected() {\r\n if ($('#pf-product-details-page').data('product-has-components') === \"True\") {\r\n // check all have been selected\r\n var allSelected = true;\r\n $('.pf-product-component-select-data').each(function () {\r\n var selectedOptions = $(this).data('selected-json') || [];\r\n if (selectedOptions.length === 0)\r\n allSelected = false;\r\n });\r\n return allSelected;\r\n }\r\n}\r\n\r\n\r\n// gets an object with all the currently selected components\r\nfunction GetSelectedOptionsAdv() {\r\n var optionsAdv = [];\r\n $('.pf-product-component-select-data').each(function (i, o) {\r\n var $this = $(this);\r\n var selectedOptions = $this.data('selected-json') || [];\r\n $.each(selectedOptions, function () {\r\n optionsAdv.push({\r\n groupId: $this.data('component-group-id'),\r\n groupName: $this.data('component-name'),\r\n optionProductId: this.id,\r\n optionProductName: this.name\r\n });\r\n });\r\n });\r\n\r\n return optionsAdv;\r\n}\r\n\r\nfunction GetCalculatedPrice(optionsAdv) {\r\n var optionsAdvPriceHandling = $('#pf-product-details-page').data('options-adv-price-handling');\r\n if (hasVariants) {\r\n // get product related prices (discounts etc? - do these work with variants???)\r\n\r\n // loop each variant and get its calculated price\r\n $('.pf-product-variant-item').each(function () {\r\n var variantId = $(this).data(\"variant-id\");\r\n var productId = $(this).data(\"product-id\");\r\n $.post(root + \"Products/GetPriceOptionsAdv\", {\r\n productId: productId,\r\n optionsAdv: optionsAdv,\r\n variantId: variantId,\r\n isVariant: true\r\n }, function (data) {\r\n // find the variant container and set the data for it\r\n if (data.result === 0) {\r\n var $priceWrapper = $('.pf-product-variant-item[data-variant-id=\"' + data.variantId + '\"] .pf-product-details-price-wrapper');\r\n\r\n if (optionsAdvPriceHandling === 'Combine') {\r\n var $detailPrice = $priceWrapper.find('.product-detail-price');\r\n var $discTable = $priceWrapper.find('.pf-disc-table');\r\n\r\n $detailPrice.find('span[itemprop=price]').text(data.showSalePrice ? data.salePriceString : data.priceString);\r\n $detailPrice.find('span.pf-price-old').text(data.showSalePrice ? data.priceString : '');\r\n\r\n if (data.quantityPriceListPrices.length > 0) {\r\n if ($discTable.length === 0) {\r\n $discTable = $('
').append($(''));\r\n $priceWrapper.append($discTable);\r\n } else {\r\n $discTable.find('tbody').empty();\r\n }\r\n\r\n var $discTableTbody = $discTable.find('tbody');\r\n $.each(data.quantityPriceListPrices, function () {\r\n var $discTableTd = $('').append(document.createTextNode('Buy ' + this.quantityBreak + ' for '));\r\n if (this.showSalePrice)\r\n $discTableTd.append($('').text(this.priceString)).append(document.createTextNode(' ' + this.salePriceString + ' each'));\r\n else\r\n $discTableTd.append(document.createTextNode(this.priceString + ' each'));\r\n var $discTableTr = $('').append($discTableTd);\r\n $discTableTbody.append($discTableTr);\r\n });\r\n } else {\r\n if ($discTable.length > 0) $discTable.remove();\r\n }\r\n } else if (optionsAdvPriceHandling === 'Separate') {\r\n var $optionsPrice = $priceWrapper.find('.product-options-price');\r\n\r\n $optionsPrice.find('span[itemprop=price]').text(data.optionsShowSalePrice ? data.optionsSalePriceString : data.optionsPriceString);\r\n $optionsPrice.find('span.pf-price-old').text(data.optionsShowSalePrice ? data.optionsPriceString : '');\r\n }\r\n } else {\r\n alert(\"Error: \" + data.error);\r\n }\r\n }, \"json\");\r\n });\r\n }\r\n else {\r\n $.post(root + \"Products/GetPriceOptionsAdv\", {\r\n productId: $('#pf-product-details-page').data('product-id'),\r\n optionsAdv: optionsAdv\r\n }, function (data) {\r\n if (data.result === 0) {\r\n var $priceWrapper = $('.pf-product-details-price-wrapper');\r\n\r\n if (optionsAdvPriceHandling === 'Combine') {\r\n var $detailPrice = $priceWrapper.find('.product-detail-price');\r\n var $discTable = $priceWrapper.find('.pf-disc-table');\r\n\r\n $detailPrice.find('span[itemprop=price]').text(data.showSalePrice ? data.salePriceString : data.priceString);\r\n $detailPrice.find('span.pf-price-old').text(data.showSalePrice ? data.priceString : '');\r\n\r\n if (data.quantityPriceListPrices.length > 0) {\r\n if ($discTable.length === 0) {\r\n $discTable = $('').append($(''));\r\n $priceWrapper.append($discTable);\r\n } else {\r\n $discTable.find('tbody').empty();\r\n }\r\n\r\n var $discTableTbody = $discTable.find('tbody');\r\n $.each(data.quantityPriceListPrices, function () {\r\n var $discTableTd = $('').append(document.createTextNode('Buy ' + this.quantityBreak + ' for '));\r\n if (this.showSalePrice)\r\n $discTableTd.append($('').text(this.priceString)).append(document.createTextNode(' ' + this.salePriceString + ' each'));\r\n else\r\n $discTableTd.append(document.createTextNode(this.priceString + ' each'));\r\n var $discTableTr = $('').append($discTableTd);\r\n $discTableTbody.append($discTableTr);\r\n });\r\n } else {\r\n if ($discTable.length > 0) $discTable.remove();\r\n }\r\n } else if (optionsAdvPriceHandling === 'Separate') {\r\n var $optionsPrice = $priceWrapper.find('.product-options-price');\r\n\r\n $optionsPrice.find('span[itemprop=price]').text(data.optionsShowSalePrice ? data.optionsSalePriceString : data.optionsPriceString);\r\n $optionsPrice.find('span.pf-price-old').text(data.optionsShowSalePrice ? data.optionsPriceString : '');\r\n }\r\n } else {\r\n alert(\"Error: \" + data.error);\r\n }\r\n }, \"json\");\r\n }\r\n}\r\n\r\nfunction GetCalculatedStock(optionsAdv) {\r\n if (hasVariants) {\r\n // loop each variant and get its calculated price\r\n $('.pf-product-variant-item').each(function () {\r\n var variantId = $(this).data(\"variant-id\");\r\n var productId = $(this).data(\"product-id\");\r\n $.post(root + \"Products/GetStockOptionsAdv\", {\r\n productId: productId,\r\n optionsAdv: optionsAdv,\r\n variantId: variantId,\r\n isVariant: true\r\n }, function (data) {\r\n // find the variant container and set the data for it\r\n if (data.result === 0) {\r\n var $variantWrapper = $('.pf-product-variant-item[data-variant-id=\"' + data.variantId + '\"]');\r\n var $variantStockInfo = $variantWrapper.find('.pf-stock-info');\r\n var $variantStockSummary = $variantStockInfo.find('.pf-stock-summary');\r\n var stockSummaryHtml = '';\r\n if (data.isInStock) {\r\n $variantStockSummary.attr('class', 'pf-stock-summary pf-stock-summary-available');\r\n if (hideStockNumbers)\r\n stockSummaryHtml += 'In stock';\r\n else\r\n stockSummaryHtml += '' + data.stock + ' in stock';\r\n } else if (data.isOnBackorder) {\r\n $variantStockSummary.attr('class', 'pf-stock-summary pf-stock-summary-backorder');\r\n stockSummaryHtml += ' ';\r\n if (hideStockNumbers)\r\n stockSummaryHtml += data.backorderDueString !== null ? 'Due in ' + data.backorderDueString : 'On backorder';\r\n else\r\n stockSummaryHtml += '' + data.stockBackordered + ' ' + (data.backorderDueString !== null ? 'due in ' + data.backorderDueString : 'on backorder');\r\n } else {\r\n $variantStockSummary.attr('class', 'pf-stock-summary pf-stock-summary-unavailable');\r\n stockSummaryHtml += ' Out of stock';\r\n }\r\n $variantStockSummary.html(stockSummaryHtml);\r\n $variantStockInfo.removeClass('pf-hide');\r\n } else {\r\n alert(\"Error: \" + data.error);\r\n }\r\n }, \"json\");\r\n });\r\n } else {\r\n $.post(root + \"Products/GetStockOptionsAdv\", {\r\n productId: $('#pf-product-details-page').data('product-id'),\r\n optionsAdv: optionsAdv\r\n }, function (data) {\r\n if (data.result === 0) {\r\n var $productStockInfo = $('#product-stock-info');\r\n var $productStockSummary = $productStockInfo.find('.pf-stock-summary');\r\n var stockSummaryHtml = '';\r\n if (data.isInStock) {\r\n $productStockSummary.attr('class', 'pf-stock-summary pf-stock-summary-available');\r\n if (hideStockNumbers)\r\n stockSummaryHtml += 'In stock';\r\n else\r\n stockSummaryHtml += '' + data.stock + ' in stock';\r\n } else if (data.isOnBackorder) {\r\n $productStockSummary.attr('class', 'pf-stock-summary pf-stock-summary-backorder');\r\n stockSummaryHtml += ' ';\r\n if (hideStockNumbers)\r\n stockSummaryHtml += data.backorderDueString !== null ? 'Due in ' + data.backorderDueString : 'On backorder';\r\n else\r\n stockSummaryHtml += '' + data.stockBackordered + ' ' + (data.backorderDueString !== null ? 'due in ' + data.backorderDueString : 'on backorder');\r\n } else {\r\n $productStockSummary.attr('class', 'pf-stock-summary pf-stock-summary-unavailable');\r\n stockSummaryHtml += ' Out of stock';\r\n }\r\n $productStockSummary.html(stockSummaryHtml);\r\n $productStockInfo.removeClass('pf-hide');\r\n } else {\r\n alert(\"Error: \" + data.error);\r\n }\r\n }, \"json\");\r\n }\r\n}\r\n\r\n\r\n\r\n//function AddedToCart(data) {\r\n// if (data.result == \"ok\") {\r\n// GetAndOpenTopCart();\r\n// $(\"html, body\").animate({ scrollTop: 0 }, \"slow\"); // scroll to top\r\n// }\r\n// if (data.result == \"ok-stock-limited\") {\r\n// alert(\"Sorry there are only \" + data.qty + \" of these items available in stock.\");\r\n// GetAndOpenTopCart();\r\n// $(\"html, body\").animate({ scrollTop: 0 }, \"slow\"); // scroll to top\r\n// }\r\n// if (data.result == \"ok-out-of-stock\") {\r\n// alert(\"Sorry this item is no longer in stock.\");\r\n// GetTopCart();\r\n// }\r\n//}\r\n\r\nfunction vidClosed() {\r\n jQuery(\"#youtubePlayerContainer\").tubeplayer(\"stop\");\r\n}\r\n","Platform.Deferred.execute(setProductCommonScript);\r\n\r\n\r\nfunction setProductCommonScript() {\r\n\r\n var $modal = $('[data-remodal-id=wishlist-modal]').remodal({\r\n hashTracking: false\r\n });\r\n\r\n // favourites handlers\r\n $('.add-to-wishlist-btn').click(function () {\r\n $modal.open();\r\n wishListsChecked = $(this).data(\"wishlists-checked\");\r\n if (!wishListsChecked)\r\n wishListsChecked = [];\r\n\r\n CheckWishListCheckboxes(wishListsChecked);\r\n\r\n var $wishListModal = $('.pf-modal-wishlist');\r\n $wishListModal.find('.pf-modal-wishlist-image').show();\r\n $wishListModal.find('.pf-modal-wishlist-list').css('width', '');\r\n\r\n var imgLink = $(this).closest(\".pf-product-list-item\").find(\".pf-list-item-img\").attr(\"src\")\r\n || $(\".pf-product-main-image-wrapper\").find(\".img:first\").attr(\"src\");\r\n $wishListModal.find(\".wishlist-picture-img\").attr(\"src\", imgLink);\r\n var id = $(this).data(\"id\");\r\n $wishListModal.find(\".add-to-favorites-btn\").data(\"product-ids\", id);\r\n });\r\n\r\n $('.pf-add-all-to-wish-list-btn').click(function () {\r\n var $productsTarget = $($(this).data('products-target'));\r\n var productIds = $productsTarget.find('.pf-product-list-item').map(function () {\r\n return $(this).data('id');\r\n }).get();\r\n\r\n CheckWishListCheckboxes([]);\r\n\r\n var $wishListModal = $('.pf-modal-wishlist');\r\n $wishListModal.find('.pf-modal-wishlist-image').hide();\r\n $wishListModal.find('.pf-modal-wishlist-list').css('width', '100%');\r\n $wishListModal.find(\".add-to-favorites-btn\").data(\"product-ids\", productIds.join(','));\r\n\r\n $modal.open();\r\n return false;\r\n });\r\n\r\n $('.create-wish-List-btn').click(function () {\r\n $(this).closest(\".pf-modal-wishlist-list\").find(\".pf-modal-wishlist-create-new\").removeClass('hidden');\r\n $(this).closest(\".wishlist-main-buttons\").addClass('hidden');\r\n $(\".pf-create-wish-list\").focus();\r\n });\r\n\r\n $('.pf-create-wish-list').bind('keypress', function (e) {\r\n if (e.keyCode == 13) \r\n $(\".post-new-wishlist-btn\").trigger(\"click\");\r\n });\r\n\r\n $(\".post-new-wishlist-btn\").click(function () {\r\n var newListName = $(this).closest(\".pf-modal-wishlist-create-new\").find(\".pf-create-wish-list\").val();\r\n if (newListName === '') {\r\n alert(\"Please enter a wish list name\");\r\n return;\r\n }\r\n $.post(root + \"UserAccount/AddNewWishList\", {\r\n newListName: newListName\r\n }, function (data) {\r\n if (data.result == \"ok\") {\r\n AddNewWishListCheckbox(data.wishListName, data.wishlistId);\r\n $(\".pf-modal-wishlist-create-new\").addClass('hidden');\r\n $(\".wishlist-main-buttons\").removeClass('hidden');\r\n }\r\n else {\r\n alert(\"Error: \" + data.error);\r\n }\r\n }, \"json\");\r\n });\r\n\r\n $('.add-to-favorites-btn').click(function () {\r\n var loggedIn = $('#pf-product-details-page').data(\"logged-in\") || $('.pf-product-list-item').data(\"logged-in\");\r\n if (loggedIn == \"True\") {\r\n var btn = $(this);\r\n var isVariant = btn.data(\"is-variant\");\r\n var productIds = btn.data(\"product-ids\").toString().split(',');\r\n var wishlistIds = [];\r\n $(this).closest(\".pf-modal-wishlist-list\").find(\"input[class ='wishlistCheckbox']:checked\").each(function () {\r\n wishlistIds.push($(this).val());\r\n });\r\n var isFav = btn.data(\"is-fav\");\r\n var optionsAdv = [];\r\n // check if this is a product with components\r\n var hasComponents = $('#pf-product-details-page').data('product-has-components');\r\n if (hasComponents === \"True\") {\r\n // check all selected otherwise cannot add to cart\r\n if (!CheckComponentsSelected()) {\r\n alert(\"Please select from the available product options\");\r\n return false;\r\n }\r\n // if all selected then setup the object to pass into the cart\r\n optionsAdv = GetSelectedOptionsAdv();\r\n }\r\n\r\n if (!wishlistIds || wishlistIds === [] || wishlistIds.length === 0) {\r\n if (productIds.length === 1) {\r\n $.post(root + \"UserAccount/RemoveProductFromFavourites\", {\r\n id: productIds[0],\r\n isVariant: isVariant,\r\n optionsAdv: optionsAdv\r\n }, function (data) {\r\n if (data.result == \"ok\") {\r\n $(document).trigger('removedFromFavs.product.platform', data);\r\n\r\n ReturnWishlistsCheckedAndSwitchFavIcon(wishlistIds, productIds[0]);\r\n\r\n $modal.close();\r\n }\r\n else {\r\n alert(\"Error: \" + data.error);\r\n }\r\n }, \"json\");\r\n }\r\n } else {\r\n if (productIds.length === 1) {\r\n // if any options make sure all have a selection made\r\n var prodOptsOk = true;\r\n $('.productOptions').each(function () {\r\n if ($(this).length > 0) {\r\n if ($(this).val() == 0) {\r\n $(this).next('.productOptionWarn').fadeIn();\r\n $(this).addClass(\"highlight\");\r\n prodOptsOk = false;\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n if (prodOptsOk == false) {\r\n return false;\r\n }\r\n\r\n var opts = [];\r\n $('.productOptions').each(function (i, o) {\r\n var opt = {};\r\n var name = $(this).attr('id');\r\n name = name.replace(\"option-select-\", \"\");\r\n opt.index = i;\r\n opt.name = name;\r\n opt.value = $(this).val();\r\n opts.push(opt);\r\n });\r\n\r\n $.post(root + \"UserAccount/AddProductToFavourites\", {\r\n id: productIds[0],\r\n isVariant: isVariant,\r\n options: opts,\r\n optionsAdv: optionsAdv,\r\n wishListIds: wishlistIds\r\n }, function (data) {\r\n if (data.result == \"ok\") {\r\n $(document).trigger('addedToFavs.product.platform', data);\r\n ReturnWishlistsCheckedAndSwitchFavIcon(wishlistIds, productIds[0]);\r\n $modal.close();\r\n }\r\n else {\r\n alert(\"Error: \" + data.error);\r\n }\r\n }, \"json\");\r\n } else {\r\n $.post(root + \"UserAccount/AddProductsToWishLists\", {\r\n productIds: productIds,\r\n wishListIds: wishlistIds\r\n }, function (data) {\r\n if (data.result === 'ok' || data.result === 'multiple') {\r\n $(document).trigger('addedToFavs.product.platform', data);\r\n $modal.close();\r\n } else {\r\n alert(\"Error: \" + data.error);\r\n }\r\n }, \"json\");\r\n }\r\n }\r\n }\r\n else {\r\n loginModal.open();\r\n }\r\n });\r\n\r\n}\r\n\r\n\r\nfunction ReturnWishlistsCheckedAndSwitchFavIcon(wishListsChecked, productId) {\r\n var favbutton = $('.add-to-wishlist-btn.isfav-icon[data-id=\"' + productId + '\"]');\r\n var notFavbutton = $('.add-to-wishlist-btn.isnotfav-icon[data-id=\"' + productId + '\"]');\r\n var checkedstr = \"[\" + wishListsChecked.toString() + \"]\";\r\n if (wishListsChecked.length == 0) {\r\n favbutton.addClass('hidden')\r\n favbutton.data(\"wishlists-checked\", checkedstr);\r\n notFavbutton.removeClass('hidden')\r\n notFavbutton.data(\"wishlists-checked\", checkedstr);\r\n } else {\r\n favbutton.removeClass('hidden')\r\n favbutton.data(\"wishlists-checked\", checkedstr);\r\n notFavbutton.addClass('hidden')\r\n notFavbutton.data(\"wishlists-checked\", checkedstr);\r\n }\r\n}\r\n\r\n\r\n\r\nfunction CheckWishListCheckboxes(wishListsChecked) {\r\n \r\n $.each($(\"input[class ='wishlistCheckbox']\"), function () {\r\n var id = $(this).val();\r\n if (wishListsChecked.includes(Number(id))) {\r\n $(this).prop('checked', true);\r\n } else {\r\n $(this).prop('checked', false);\r\n }\r\n });\r\n \r\n}\r\n\r\n\r\nfunction AddNewWishListCheckbox(wishlistName, wishlistId) {\r\n $(\".wishlistCheckboxList\").append(\"\");\r\n}\r\n\r\n\r\n// currently used for products with components only, once all options have been selected we set the add or remove favs buttons by checking via ajax\r\nfunction SetFavButtons(optionsAdv) {\r\n var loggedIn = $('#pf-product-details-page').data('logged-in');\r\n if (loggedIn === \"True\") {\r\n $.post(root + \"Products/CheckProductIsFavOptionsAdv\", {\r\n productId: $('#pf-product-details-page').data('product-id'),\r\n optionsAdv: optionsAdv\r\n }, function (data) {\r\n if (data.result === 0) {\r\n var isFav = data.isFav;\r\n } else {\r\n alert(\"Error: \" + data.error);\r\n }\r\n }, \"json\");\r\n }\r\n}"]} | |