if (typeof Nosto === "undefined") {
Nosto.addProductToCart = function(productId, element) {
Nosto.trackAddToCartClick(productId, element);
"form_key": "<?php echo $formKey; ?>"
Nosto.postAddToCartForm(fields, "<?php echo $formAction; ?>");
// Product object must have fields productId and skuId {productId: 123, skuId: 321}
Nosto.addSkuToCart = function(product, element) {
Nosto.trackAddToCartClick(product.productId, element);
"product": product.productId,
"form_key": "<?php echo $formKey; ?>"
Nosto.postAddToCartForm(fields, "<?php echo $this->getAddSkuToCartUrl(); ?>");
Nosto.resolveContextSlotId = function(element) {
while (typeof e.parentElement !== "undefined" && e.parentElement) {
if (e.getAttribute('class') === 'nosto_element' && e.getAttribute('id')) {
return e.getAttribute('id');
Nosto.trackAddToCartClick = function(productId, element) {
if (typeof nostojs !== 'undefined' && typeof element === 'object') {
var slotId = Nosto.resolveContextSlotId(element);
api.recommendedProductAddedToCart(productId, slotId);
Nosto.postAddToCartForm = function(data, url) {
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", url);
if (data.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", data[key]);
form.appendChild(hiddenField);
document.body.appendChild(form);