(function () { var displayTopMessage = function (message, elemId, type, duration) { if (!type || !type.length) { type = 'default'; } var elem = document.createElement('div'); elem.innerText = message; elem.classList.add('ecom-message'); elem.classList.add(type); if (elemId !== undefined) { elem.id = elemId; } document.querySelector('#ecom-master-entrypoint').prepend(elem); // if duration is defined, set a timeout to remove the message if (duration !== null && duration !== undefined) { setTimeout(function () { elem.parentElement.removeChild(elem); }, duration); } }; var options = { // Returns a list of the selected options for the product ID passed gatherSelectedOptionsForProduct: function (productId) { // grab the selected elements for this product var selected = document.querySelectorAll('.product-options-entrypoint[data-prodid="' + productId + '"] .option-select .ioSelected, .product-options-entrypoint[data-prodid="' + productId + '"] select>option:checked'); var optList = ''; // loop thru elements and build option list [].forEach.call(selected, function (elem) { optList += elem.getAttribute('data-optid') + ','; }); optList = optList.slice(0, -1); return optList; } }; var product = { renderSeriesProductDetails: function (seriesProductId, childProductId, optList, categoryId, ecomTemplateId, siteId, onRenderComplete) { var endpoint = "/SpecialFunctions/Ecom/BuildEcomTemplate.ashx?action=productdetails&seriesproductid=" + seriesProductId + "&categoryid=" + categoryId + "&templateid=" + ecomTemplateId + "&siteid=" + siteId + "&selectedoptions=" + optList; var oReq = new XMLHttpRequest(); oReq.open('GET', endpoint); oReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); oReq.send(); oReq.onload = function (e) { if (onRenderComplete) onRenderComplete(e.target.response); } }, getProductBySeriesAndOptions: function (seriesProductId, options, callback) { var endpoint = "/SpecialFunctions/Ecom/BuildEcomTemplate.ashx?action=getproductbyseriesandoptions&seriesproductid=" + seriesProductId + "&selectedoptions=" + options; var oReq = new XMLHttpRequest(); oReq.open('GET', endpoint); oReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); oReq.send(); oReq.onload = function (e) { if (callback) callback(e.target.response); } }, }; var utils = { getQueryStringVal: function (name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"); var results = regex.exec(location.search); return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); } }; window.EcomMaster = { displayTopMessage: displayTopMessage, options: { gatherSelectedOptionsForProduct: options.gatherSelectedOptionsForProduct }, product: { renderSeriesProductDetails: product.renderSeriesProductDetails, getProductBySeriesAndOptions: product.getProductBySeriesAndOptions, displayTopMessage: product.displayTopMessage }, utils: { getQueryStringVal: utils.getQueryStringVal } } })();