PageSourceSearch

https://www.magneticdays.com/wp-content/plugins/enhanced-e-commerc…/js/con-gtm-google-analytics.js?ver=6.3.6

js magneticdays.com collected 2026-09-29 15:34:16 UTC 13,295 bytes, 397 lines download raw bytes

1(function( $ ) {
2  'use strict';
3  /**
4   * This enables you to define handlers, for when the DOM is ready:
5   * $(function() { });
6   * When the window is loaded:
7   * $( window ).load(function() { }); 
8   */  
9})( jQuery );
10class TVC_GTM_Enhanced {
11  constructor(options = {}){
12    this.options = {
13      tracking_option: 'UA'
14    };
15    if(options){
16      Object.assign(this.options, options);
17    } 
18    //console.log(this.options);
19    //this.addEventBindings();  
20  }
21  singleProductaddToCartEventBindings(variations_data, product_detail_addtocart_selector){
22    var single_btn = "";
23    if(product_detail_addtocart_selector != ""){
24      single_btn = document.querySelectorAll("button[class*='btn-buy-shop'],button[class*='single_add_to_cart_button'], button[class*='add_to_cart']"+product_detail_addtocart_selector);
25    }else{
26      single_btn = document.querySelectorAll("button[class*='btn-buy-shop'],button[class*='single_add_to_cart_button'], button[class*='add_to_cart']");
27    }
28    if(single_btn.length > 0){
29      single_btn.forEach((aCartBut) => {
30        aCartBut.addEventListener("click", () => this.add_to_cart_click(variations_data, "Product Pages"));
31      });
32    }    
33  }
34  ListProductaddToCartEventBindings(){
35    var elements = "";    
36    elements = document.querySelectorAll("a[href*=add-to-cart]");
37    if(elements.length > 0){
38      for (var i = 0; i < elements.length; i++) {
39        if(elements[i]){
40          elements[i].addEventListener("click", () => this.list_add_to_cart_click());
41        }
42      }
43    }    
44  }
45  ListProductSelectItemEventBindings(){
46    var elements = "";    
47    elements = document.querySelectorAll("li.product a:not([href*=add-to-cart],.product_type_variable, .product_type_grouped");
48    if(elements.length > 0){
49      for (var i = 0; i < elements.length; i++) {
50        if(elements[i]){
51          elements[i].addEventListener("click", () => this.list_select_item_click());
52        }
53      }
54    }    
55  }
56  RemoveItemCartEventBindings(){
57    var elements = "";    
58    elements = document.querySelectorAll("a[href*=\"?remove_item\"]");
59    if(elements.length > 0){
60      for(var i = 0; i < elements.length; i++){
61        if(elements[i]){
62          elements[i].addEventListener("click", () => this.remove_item_click());
63        }
64      }
65    }
66  }
67  /*
68   * check remarketing option 
69   */
70  is_add_remarketing_tags(){
71    if(this.options.is_admin == false && this.options.ads_tracking_id != "" && ( this.options.remarketing_tags == 1 || this.options.dynamic_remarketing_tags == 1)){
72      return true;
73    }else{
74      return false;
75    }
76  }
77  
78  get_variation_data_by_id(variations_data, variation_id){
79    //console.log(variations_data.available_variations)
80    var r_val = "";
81    if(variations_data.available_variations.length > 0 ){
82      variations_data.available_variations.forEach((element, index) => { 
83        if(element.variation_id == variation_id){
84          r_val = element;
85        }
86      });
87      return r_val;
88      //console.log(variations_data.available_variations)
89    }
90  }
91  get_variation_attribute_name(p_attributes){
92    //console.log(p_attributes);
93    var p_v_title = "";
94    if(Object.keys(p_attributes).length >0 ){
95      for(var index in p_attributes) {
96        p_v_title+=(p_v_title=="")?p_attributes[index]:' | '+p_attributes[index];        
97      }
98      return p_v_title;
99    }
100  }
101  get_event_data_layer(event_name){
102    if(event_name != ""){
103      if(Object.keys(dataLayer).length >0 ){
104        for(var dataLayer_item in dataLayer){
105          event = dataLayer[dataLayer_item].event;
106          if(event_name == event){
107            return dataLayer[dataLayer_item];
108          }
109        }
110      }
111    }
112  }
113  get_product_from_product_list(product_id){
114    if(product_id != ""){
115      if(Object.keys(conProductList).length >0 ){
116        for(var dataLayer_item in conProductList[0]){
117          if(conProductList[0][dataLayer_item].hasOwnProperty('id')){
118            var id = conProductList[0][dataLayer_item].id;            
119            if(product_id == id){
120              return conProductList[0][dataLayer_item];
121            }
122          }
123        }
124      }
125    }
126  }
127  get_product_from_product_list_by_url(prod_obj, key, product_url){
128    if(product_url != ""){
129      if(Object.keys(prod_obj).length >0 ){
130        for(var dataLayer_item in prod_obj[0]){
131          if(prod_obj[0][dataLayer_item].hasOwnProperty(key)){
132            var map_val = prod_obj[0][dataLayer_item][key]; 
133            if(product_url == map_val){
134              return prod_obj[0][dataLayer_item];
135            }
136          }
137        }
138      }
139    }
140  }
141  list_select_item_click(){
142    var this_var =  event.currentTarget;
143    var href = this_var.getAttribute( 'href' );
144    var item = this.get_product_from_product_list_by_url(conProductList, 'productlink', href);
145    var add_to_cart_datalayer = {
146      event: "select_item",
147      ecommerce: {
148        items: [
149        {
150          affiliation: this.options.affiliation,
151          item_id: item.id,
152          item_name: item.name,
153          currency: this.options.currency,
154          item_category: item.category,
155          price: item.price,
156          quantity: 1
157        }]
158      }
159    };
160    dataLayer.push(add_to_cart_datalayer);
161  }
162  remove_item_click(this_var){
163    var href = this_var.getAttribute( 'href' );
164    if(href){
165      var item = this.get_product_from_product_list_by_url(conCarttList, 'remove_cart_link', href);
166      var add_to_cart_datalayer = {
167        event: "remove_from_cart",
168        ecommerce: {
169          items: [
170          {
171            affiliation:this.options.affiliation,
172            item_id:item.id,
173            item_name:item.name,
174            currency:this.options.currency,
175            item_category:item.category,
176            price:item.price,
177            quantity:item.quantity
178
179          }]
180        }
181      };
182      dataLayer.push(add_to_cart_datalayer);
183    }
184    
185  }
186  list_add_to_cart_click(){
187    var this_var =  event.currentTarget;
188    var href = this_var.getAttribute( 'href' );
189    var product_id = this.getParameterByName("add-to-cart",href);
190    var item = this.get_product_from_product_list(product_id);
191    var add_to_cart_datalayer = {
192      event: "add_to_cart",
193      ecommerce: {
194        items: [
195        {
196          affiliation:this.options.affiliation,
197          item_id:item.id,
198          item_name:item.name,
199          currency:this.options.currency,
200          item_category:item.category,
201          price:item.price,
202          quantity:1
203        }]
204      }
205    };
206    
207    if(this.options.fb_pixel_id != undefined && this.options.fb_pixel_id != null && this.options.fb_pixel_id != ""){
208      add_to_cart_datalayer.fb_event_id = this.options.fb_event_id+'p'+item.id;    
209    }
210
211    dataLayer.push(add_to_cart_datalayer);
212    
213    if(this.options.fb_conversion_api_token != undefined && this.options.fb_conversion_api_token != null && this.options.fb_conversion_api_token != ""){
214      //facebook api
215      var data = {
216        action: "facebook_converstion_api",
217        fb_event:"AddToCart",
218        event_id:this.options.fb_event_id+'p'+item.id,
219        prodct_data:[item]
220      };
221      jQuery.ajax({
222        type: "POST",
223        dataType: "json",
224        url:  this.options.tvc_ajax_url,
225        data: data,
226        beforeSend: function () {        
227        },
228        success: function (response) {
229          console.log(response);
230        }
231      });
232    }
233  }
234  getParameterByName(name, url = window.location.href){
235    name = name.replace(/[\[\]]/g, '\\$&');
236    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
237        results = regex.exec(url);
238    if (!results) return null;
239    if (!results[2]) return '';
240    return decodeURIComponent(results[2].replace(/\+/g, ' '));
241  }
242  /*
243   * below code run while add to cart on product page. 
244   * ( Event=>  add_to_cart)
245   */
246  add_to_cart_click( variations_data, page_type ="Product Pages" ){
247    var this_var =  event.currentTarget;
248    var item_dataLayer = this.get_event_data_layer("view_item");    
249    if(this.options.is_admin == true){
250      return;
251    }    
252    if(Object.keys(item_dataLayer.ecommerce.items[0]).length > 0){
253      var item = item_dataLayer.ecommerce.items[0];
254      var variation_attribute_name= "";
255      var vari_data ="";
256      var variation_id = "";
257      var variation_id_obj = document.getElementsByClassName("variation_id");
258      if (variation_id_obj.length > 0) {
259        variation_id = document.getElementsByClassName("variation_id")[0].value;
260      }
261      var varPrice = item.price;
262      if(variation_id != ""){
263        vari_data = this.get_variation_data_by_id(variations_data, variation_id);
264        var p_attributes = vari_data.attributes;
265        if( Object.keys(p_attributes).length > 0){
266          variation_attribute_name = this.get_variation_attribute_name(p_attributes);
267        }
268        if(vari_data.display_price){
269          varPrice = vari_data.display_price;
270        }else if(vari_data.display_regular_price){
271          varPrice = vari_data.display_regular_price;
272        }      
273      }
274      
275      var add_to_cart_datalayer = {
276        event: "add_to_cart",
277        ecommerce: {
278          items: [
279          {
280            affiliation:item.affiliation,
281            item_id:item.item_id,
282            item_name:item.item_name,
283            currency:item.currency,
284            item_category:item.item_category,
285            price:varPrice,
286            quantity:jQuery(this_var).parent().find("input[name=quantity]").val(),
287            item_variant:variation_attribute_name
288
289          }]
290        }
291      };
292      if(this.options.fb_pixel_id != undefined && this.options.fb_pixel_id != null && this.options.fb_pixel_id != ""){
293        add_to_cart_datalayer.fb_event_id = this.options.fb_event_id+'p'+item.id;    
294      }
295      dataLayer.push(add_to_cart_datalayer);
296
297      //facebook api
298      if(this.options.fb_conversion_api_token != undefined && this.options.fb_conversion_api_token != null && this.options.fb_conversion_api_token != ""){
299        var quantity = jQuery(this_var).parent().find("input[name=quantity]").val();
300        var data = {
301          action: "facebook_converstion_api",
302          fb_event:"AddToCart",
303          event_id:this.options.fb_event_id+'p'+item.item_id,
304          prodct_data:[{id:item.item_id,quantity:quantity, price:varPrice}]
305        };
306        jQuery.ajax({
307          type: "POST",
308          dataType: "json",
309          url:  this.options.tvc_ajax_url,
310          data: data,
311          beforeSend: function () {        
312          },
313          success: function (response) {
314            console.log(response);
315          }
316        });
317      }  
318    }    
319  }
320  /*
321  *
322  */
323  checkout_step_2_tracking(){
324    var item_dataLayer = this.get_event_data_layer("begin_checkout");
325    if(this.options.is_admin == true){
326      return;
327    }    
328    if(Object.keys(item_dataLayer.ecommerce.items[0]).length > 0){    
329      var checkout_step_2_datalayer = {
330        event: "add_shipping_info",
331        ecommerce: {
332          currency: this.options.currency,
333          value: item_dataLayer.ecommerce.value,
334          items: item_dataLayer.ecommerce.items
335        }
336      };
337      dataLayer.push(checkout_step_2_datalayer); 
338    }
339    console.log(dataLayer);
340  }
341  checkout_step_3_tracking(){
342    var item_dataLayer = this.get_event_data_layer("begin_checkout");
343    if(this.options.is_admin == true){
344      return;
345    }    
346    if(Object.keys(item_dataLayer.ecommerce.items[0]).length > 0){      
347      var checkout_step_3_datalayer = {
348        event: "add_payment_info",
349        ecommerce: {
350          currency: this.options.currency,
351          value: item_dataLayer.ecommerce.value,
352          items: item_dataLayer.ecommerce.items
353        }
354      };
355      dataLayer.push(checkout_step_3_datalayer); 
356    }
357  }
358  
359  getCurrentTime(){
360    if (!Date.now) {
361       return new Date().getTime(); 
362    }else{
363      //Math.floor(Date.now() / 1000)
364      return Date.now();
365    }
366  }
367  getClientId() {
368    let client_id = this.getCookie("_ga");
369    if(client_id != null && client_id != ""){
370     return client_id;
371    }else{
372      return ;
373    }     
374  }
375  setCookie(name,value,days) {
376    var expires = "";
377    if (days) {
378        var date = new Date();
379        date.setTime(date.getTime() + (days*24*60*60*1000));
380        expires = "; expires=" + date.toUTCString();
381    }
382    document.cookie = name + "=" + (value || "")  + expires + "; path=/";
383  }
384  getCookie(name) {
385    var nameEQ = name + "=";
386    var ca = document.cookie.split(";");
387    for(var i=0;i < ca.length;i++) {
388        var c = ca[i];
389        while (c.charAt(0)==" ") c = c.substring(1,c.length);
390        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
391    }
392    return null;
393  }
394  eraseCookie(name) {   
395    document.cookie = name +"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;";
396  }
397}

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.