(function() { if(window.__cg) { return; } window.__cg = true; window.__cgSettings = window.__cgSettings || {}; var info = document.getElementById('custom-gateway-info'); if(window.__cgSettings.buttonSelector) { var button = document.querySelector(window.__cgSettings.buttonSelector); } else { var button = document.querySelector("form[action='/cart/add'] button[type='submit']") || document.querySelector("form[action='/cart/add'] input[type='submit']"); } var id = document.querySelector("form[action='/cart/add'] *[name='id']"); if(info && button && id) { var json = info.innerText.replace('// ', ''); info = JSON.parse(json); if(info.type == 'smartlink') { button.value = button.innerText = 'Personalise / Buy'; button.addEventListener('click', function(e) { e.stopPropagation(); e.preventDefault(); var mei = Math.random().toString(16).substr(2); var iframe = document.createElement('iframe'); var state = ""; var selector = document.getElementById('SingleOptionSelector-0') || document.getElementById('ProductSelect-product-template-option-0'); if(selector && selector.value) { state = "&state[variant]=" + encodeURIComponent(selector.value); } iframe.setAttribute('src', info.desktop_url + "&meo=" + location.origin + "&mei=" + mei + state); var close = document.createElement('div'); close.innerHTML = '×'; close.setAttribute('style', "cursor: pointer; margin-right: 5px; z-index: 10000; Position: Fixed; padding: 5px 15px; background-color: indianred; right: 30px; top: 20px; border-radius: 2px;"); close.addEventListener('click', function() { window.location.reload(false); }); if(window.__cgSettings.iframeContainerSelector) { document.querySelector(window.__cgSettings.iframeContainerSelector).appendChild(close); document.querySelector(window.__cgSettings.iframeContainerSelector).appendChild(iframe); } else { document.body.appendChild(close); iframe.setAttribute('style', 'position: fixed; top: 2%; height: 96%; left: 2%; width: 96%; border: 0; background: white; z-index: 1000;'); document.body.appendChild(iframe); } window.addEventListener('message', function(e) { if(e.data.id = mei && e.data.name == 'ADD_TO_CART_CALLBACK') { var xhr = new XMLHttpRequest(); xhr.open("POST", "/cart/add.js"); xhr.setRequestHeader('content-type', 'application/json'); xhr.send(JSON.stringify({ items: e.data.body.items.map(function(item) { var properties = { 'Print Job Ref': item.ref, }; if(item.variant) { var variant = item.variant; var product = item.product; properties['_variant_aspect_option_1_name'] = variant.aspect_option_1_name; properties['_variant_aspect_option_2_name'] = variant.aspect_option_2_name; properties['_variant_attribute_1_name'] = variant.attribute_1_name; properties['_variant_attribute_2_name'] = variant.attribute_2_name; properties['_variant_print_size_description'] = variant.print_size_description; var option = document.querySelector("form[action='/cart/add'] *[name='id'] *[data-sku='" + product.ref + "-" + variant.ref + "']"); if(option) { id = option; } else { var options = Array.prototype.slice.call(document.querySelector("form[action='/cart/add'] *[name='id']")); option = options.filter(option => { return option.innerText.trim() == variant.name; })[0]; if(option) { id = option; } else { option = options.filter(option => { return option.innerText.trim().lastIndexOf(variant.name) === 0; })[0]; if(option) { id = option; } } } } item.thumbnails.forEach(function(thumbnail) { properties["_" + thumbnail.name] = thumbnail.url; }); return { quantity: item.quantity, id: id.value, properties: properties }; }) })); xhr.onreadystatechange = function(e) { if(xhr.readyState == 4 && xhr.status == 200) { window.location.href = "/cart"; } }; } }); return false; }); } } })();