(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;
});
}
}
})();