PageSourceSearch

https://www.blackanddecker.cz/modules/custom/sbd_aic/js/sbd-td.js?tm45a3

js blackanddecker.cz collected 2026-10-04 18:39:10 UTC 11,256 bytes, 289 lines download raw bytes

1(function ($, Drupal, drupalSettings) {
2
3  Drupal.behaviors.td = {
4    attach: function (context, settings) {
5      // Onetrust cookie.
6      var consentCookie = Cookies.get("OptanonConsent");
7      var OptanonAlertBoxClosed = Cookies.get("OptanonAlertBoxClosed");
8      if (consentCookie !== undefined) {
9        if (OptanonAlertBoxClosed !== undefined) {
10          // Check if TD is configured.
11          if (drupalSettings.td_js_sdk_write_key !== undefined) {
12            // Initiate TD cookies on every page load.
13            // Get cookie consent values.
14            var targetCookieArr = [];
15            var functionalCookieArr = [];
16
17            consentCookieArr = consentCookie.split('&');
18            $.each(consentCookieArr, (index, item) => {
19              itemArr = item.split('=');
20              if (itemArr[0] == 'groups') {
21                itemCatArr = itemArr[1].split(',');
22
23                // Tergeting cookie.
24                if (itemCatArr[3] !== undefined) {
25                  targetCookieArr = itemCatArr[3].split(':');
26                }
27                // Functional Cookie
28                if (itemCatArr[2] !== undefined) {
29                  functionalCookieArr = itemCatArr[2].split(':');
30                }
31              }
32            });
33
34            // Configure an instance for your database.
35            var td = new Treasure({
36              host: drupalSettings.td_js_sdk_domain,
37              writeKey: drupalSettings.td_js_sdk_write_key,
38              database: drupalSettings.td_js_sdk_db,
39              useServerSideCookie: true
40            });
41
42            // Check functional & Targeting cookie consent.
43            if (functionalCookieArr[0] == 3 && functionalCookieArr[1] == 1) {
44              // Set TD signed mode.
45              td.setSignedMode();
46              // Set _td_domain_<domain> cookie.
47              td.fetchServerCookie();
48            }
49            else if (targetCookieArr[0] == 4 && targetCookieArr[1] == 1) {
50              // Set TD signed mode.
51              td.setSignedMode();
52              // Remove _td_domain_<domain> cookie.
53              removeTdDomainCookie();
54            }
55            else {
56              // Set TD anonymous mode.
57              td.setAnonymousMode();
58              // Remove _td_domain_<domain> cookie.
59              removeTdDomainCookie();
60            }
61          }
62          else {
63            Cookies.remove('__td_signed');
64            Cookies.remove('_td');
65          }
66        }
67        else {
68          Cookies.remove('__td_signed');
69          Cookies.remove('_td');
70        }
71      }
72      else {
73        Cookies.remove('__td_signed');
74        Cookies.remove('_td');
75      }
76
77      function removeTdDomainCookie() {
78        // Remove _td_domain_<domain> cookie.
79        hostName = window.location.hostname;
80        domain = hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
81        document.cookie = '_td_domain_' + domain + '=; domain=.' + domain + '; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
82      }
83
84      $('.webform-submission-subscribe-newsletter-form #edit-actions-submit').click(function (e) {
85        // To prevent second submission.
86        if (this.beenSubmitted) {
87          return false;
88        }
89        else {
90          this.beenSubmitted = true;
91          // This delay is for to complete the validation.
92          setTimeout(function () {
93            if ($('.webform-submission-subscribe-newsletter-form').find(".error").length > 0) {
94              // Enable the button if there is any error.
95              $('.webform-submission-subscribe-newsletter-form #edit-actions-submit').prop('disabled', false);
96              return false;
97            }
98            // Send data.
99            sendDataToTD('webform-submission-subscribe-newsletter-form');
100          }, 1000);
101        }
102        this.beenSubmitted = false;
103      });
104
105      $('.webform-submission-my-preferences-form #edit-actions-submit').click(function (e) {
106        // To prevent second submission.
107        if (this.beenSubmitted) {
108          return false;
109        }
110        else {
111          this.beenSubmitted = true;
112          // This delay is for to complete the validation.
113          setTimeout(function () {
114            if ($('.webform-submission-my-preferences-form').find(".error").length > 0) {
115              // Enable the button if there is any error.
116              $('.webform-submission-my-preferences-form #edit-actions-submit').prop('disabled', false);
117              return false;
118            }
119            // Send data.
120            sendDataToTD('webform-submission-my-preferences-form');
121          }, 1000);
122        }
123      });
124
125      function sendDataToTD(formClass) {
126        // Check CDP and Region.
127        if (drupalSettings.cdp == 'new_aic_cdp') {
128          if (drupalSettings.region == 'EM_EANZ' || drupalSettings.region == 'NA') {
129            // Check if TD is configured.
130            if (drupalSettings.td_js_sdk_write_key) {
131              // Configure an instance for your database
132              var td = new Treasure({
133                host: drupalSettings.td_js_sdk_domain,
134                writeKey: drupalSettings.td_js_sdk_write_key,
135                database: drupalSettings.td_js_sdk_db,
136                useServerSideCookie: true
137              });
138
139              // Field mapping.
140              var field_mapping = drupalSettings.newsletter_form_field_mapping;
141
142              // Create an Object.
143              const data = {};
144
145              // Add fields based on mapping.
146              if (drupalSettings.preferences == 1) {
147                for (var key in field_mapping) {
148                  var type = $('.webform-submission-my-preferences-form').find('[name^=' + field_mapping[key] + ']').attr("type");
149                  var val = [];
150                  if (type == 'checkbox' || type == 'radio') {
151                    if (type == 'checkbox') {
152                      $('.webform-submission-my-preferences-form').find('[name^=' + field_mapping[key] + ']:checked').each(function (i) {
153                        val[i] = $(this).val();
154                      });
155                      if (val.length > 1) {
156                        data[key] = val.join(" | ");
157                      }
158                      else {
159                        data[key] = val;
160                      }
161                    }
162                    else {
163                      data[key] = $('.webform-submission-my-preferences-form').find('[name^=' + field_mapping[key] + ']:checked').val();
164                    }
165                  }
166                  else {
167                    data[key] = $('.webform-submission-my-preferences-form').find('[name=' + field_mapping[key] + ']').val();
168                  }
169                }
170                data['email'] = drupalSettings.email;
171              }
172              else {
173                for (var key in field_mapping) {
174                  var type = $('.webform-submission-subscribe-newsletter-form').find('[name^=' + field_mapping[key] + ']').attr("type");
175                  var val = [];
176                  if (type == 'checkbox' || type == 'radio') {
177                    if (type == 'checkbox') {
178                      $('.webform-submission-subscribe-newsletter-form').find('[name^=' + field_mapping[key] + ']:checked').each(function (i) {
179                        val[i] = $(this).val();
180                      });
181                      if (val.length > 1) {
182                        data[key] = val.join(" | ");
183                      }
184                      else {
185                        data[key] = val[0];
186                      }
187                    }
188                    else {
189                      data[key] = $('.webform-submission-subscribe-newsletter-form').find('[name^=' + field_mapping[key] + ']:checked').val();
190                    }
191                  }
192                  else {
193                    data[key] = $('.webform-submission-subscribe-newsletter-form').find('[name=' + field_mapping[key] + ']').val();
194                  }
195                }
196
197                // Opt In data.
198                data['opt_in_marketing'] = true;
199                data['opt_in_newsletters_date'] = $.now();
200                // Set page url.
201                data['td_url'] = window.location.href;
202              }
203
204              // Set Brand, Region and Market.
205              data['brand'] = drupalSettings.brand;
206              data['region'] = drupalSettings.region;
207              data['market'] = drupalSettings.market;
208              data['locale'] = drupalSettings.locale;
209
210              // Get cookie consent values.
211              var targetCookieArr = [];
212              var functionalCookieArr = [];
213              var consentCookie = Cookies.get("OptanonConsent");
214
215              // Onetrust cookie.
216              if (consentCookie !== undefined) {
217                consentCookieArr = consentCookie.split('&');
218                $.each(consentCookieArr, (index, item) => {
219                  itemArr = item.split('=');
220                  if (itemArr[0] == 'groups') {
221                    itemCatArr = itemArr[1].split(',');
222
223                    // Tergeting cookie.
224                    if (itemCatArr[3] !== undefined) {
225                      targetCookieArr = itemCatArr[3].split(':');
226                    }
227                    // Functional Cookie.
228                    if (itemCatArr[2] !== undefined) {
229                      functionalCookieArr = itemCatArr[2].split(':');
230                    }
231                  }
232                });
233              }
234
235              // Check functional & Targeting cookie consent.
236              if (functionalCookieArr[0] == 3 && functionalCookieArr[1] == 1) {
237                // Set TD signed mode.
238                td.setSignedMode();
239                // Set domain cookie.
240                td.fetchServerCookie();
241
242                // Get td client id.
243                var tdClientId = Cookies.get("_td");
244                data['td_client_id'] = tdClientId;
245
246                // Set global id.
247                td.set("$global", "td_global_id", "td_global_id");
248              }
249              else if (targetCookieArr[0] == 4 && targetCookieArr[1] == 1) {
250                // Set TD signed mode.
251                td.setSignedMode();
252                // Remove _td_domain_<domain> cookie.
253                removeTdDomainCookie();
254
255                // Get td client id.
256                var tdClientId = Cookies.get("_td");
257                data['td_client_id'] = tdClientId;
258
259                // Set global id.
260                td.set("$global", "td_global_id", "td_global_id");
261              }
262              else {
263                // Set TD anonymous mode.
264                td.setAnonymousMode();
265                // Remove _td_domain_<domain> cookie.
266                removeTdDomainCookie();
267              }
268
269              // Send data.
270              td.addRecord(drupalSettings.td_js_sdk_table, data);
271            }
272            else {
273              // Log error.
274              console.log('No TD configuration.');
275            }
276          }
277        }
278
279        // Add little delay to form submit.
280        setTimeout(function () {
281          // Submit the form.
282          $('.' + formClass).submit();
283        }, 1000);
284        return true;
285      }
286    }
287  };
288
289})(jQuery, Drupal, drupalSettings);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.