docs: function dataLayer_init($element, thisID) {
        // Grab this Paragraph from our cached array
        var thisParagraph = allRows[thisID];
        // Construct object to push to datalayer, staring with Other Amount field
        var ecommerceObj = {
          'ecommerce': {
            'currencyCode': 'GBP',
            'impressions': [{
              id:'manual-entry',      
              name:'manual-entry',      
              price:0.00,       
              category: thisParagraph['cart_id'],
              position: 0,
              list: thisParagraph['client_id'] + '_' + thisID,
              dimenstion10: thisParagraph['giving_type'],
            }],
          }
        };
  
        /*  Construct obj to represent each moneybuy button
            use 1-index, not zero as it maps to our btn 'position' values */
        for (i = 1; i < thisParagraph['buttons'].length; i++) {
  
          var thisAmount = parseFloat(parseFloat(thisParagraph['buttons'][i]['amount']).toFixed(2));
  
          var thisObj = {
            id:'moneybuy-' + thisParagraph['buttons'][i]['amount'],
            name:'moneybuy-' + thisParagraph['buttons'][i]['amount'],
            price: thisAmount,
            brand: allRows[thisID]['giving_type'],
            category: thisParagraph['cart_id'],   
            position: thisParagraph['buttons'][i]['position'],
            list: thisParagraph['client_id'] + '_' + thisID,
            dimenstion10: thisParagraph['giving_type']
          };
  
          // Add this 'button' object to the impressions array
          ecommerceObj['ecommerce']['impressions'].push(thisObj);
        };
  
        // Push to the data layer
        dataLayer.push(ecommerceObj);
  
        // If we have a default 'active' button, store the position value
        var $activeBtn = $element.find('.select-amount-btn.active');
  
        if ($activeBtn.length > 0) {
          lastBtnPos = $activeBtn.data('position');
        }
      }