PageSourceSearch

https://www.totalsystemcare.com/js/tag.js?v=1

js totalsystemcare.com collected 2026-10-04 13:26:27 UTC 4,160 bytes, 207 lines download raw bytes

1// var exampleTag = {
2//   params: {
3//     gclid: {
4//       value: "gclid",
5//     },
6//     utm: {
7//       source: "google",
8//       medium: "ppc",
9//       campaign: "NB",
10//       term: "optimize+my+pc",
11//       content: "default",
12//     },
13//   },
14//   expiryDate: new Date()
15// };
16
17function getParam(p) {
18  var match = RegExp('[?&]' + p + '=([^&]*)').exec(window.location.search)
19  return match && decodeURIComponent(match[1].replace(/\+/g, ' '))
20}
21
22function mergeObject(A, B) {
23  var res = {}
24  Object.keys(Object.assign(A, B)).map(function (key) {
25    res[key] = B[key] || A[key]
26  })
27  return res
28}
29
30function truthy(obj) {
31  var res = {}
32  Object.keys(obj).map(function (key) {
33    if (obj[key]) {
34      res[key] = obj[key]
35    }
36  })
37  return res
38}
39
40function toQueryString(obj) {
41  var params = Object.keys(obj).map(function (key) {
42    return encodeURIComponent(key) + '=' + encodeURIComponent(obj[key])
43  })
44
45  return params.join('&')
46}
47
48function getTagFromLocalStorage() {
49  var tag = localStorage.getItem('tag')
50
51  if (!tag) {
52    return createBlankTag()
53  }
54
55  try {
56    return JSON.parse(tag) || createBlankTag()
57  } catch {
58    return createBlankTag()
59  }
60}
61
62function getExpirationDate(days) {
63  var expiryPeriod = days * 24 * 60 * 60 * 1000 // 90 day expiry in milliseconds
64  return new Date().getTime() + expiryPeriod
65}
66
67function setCookie(name, value) {
68  const expiration = new Date()
69  expiration.setTime(getExpirationDate(90))
70
71  const expires = 'expires=' + expiration.toUTCString()
72  document.cookie = name + '=' + value + ';' + expires + ';Secure;path=/'
73}
74
75function createBlankTag() {
76  return {
77    params: {},
78    expiryDate: getExpirationDate(90),
79  }
80}
81
82function getTagParams(tag) {
83  var params = {}
84
85  if (tag.params.gclid) {
86    params = Object.assign(params, { gclid: tag.params.gclid.value })
87  }
88
89  if (tag.params.msclkid) {
90    params = Object.assign(params, { msclkid: tag.params.msclkid.value })
91  }
92
93  if (tag.params.utm) {
94    params = Object.assign(params, tag.params.utm)
95  }
96
97  if (tag.params.affiliate) {
98    params = Object.assign(params, tag.params.affiliate)
99  }
100
101  return params
102}
103
104function getFastSpringTags() {
105  var tag = getTagFromLocalStorage()
106
107  if (isTagExpired(tag)) {
108    return {}
109  }
110
111  return getTagParams(tag)
112}
113
114function appendSearchParamsForTag(searchParams) {
115  var tag = getTagFromLocalStorage()
116
117  if (isTagExpired(tag)) {
118    return searchParams
119  }
120
121  var params = getTagParams(tag)
122
123  if (!searchParams) {
124    searchParams = '?'
125  } else {
126    if (searchParams !== '?') {
127      searchParams += '&'
128    }
129  }
130
131  return searchParams + toQueryString(params)
132}
133
134function isTagExpired(tag) {
135  return tag && new Date().getTime() > tag.expiryDate
136}
137
138function captureGclid(tag) {
139  var gclid = getParam('gclid')
140  var gclsrc = getParam('gclsrc')
141  var isValid = !gclsrc || gclsrc.indexOf('aw') !== -1
142
143  if (gclid && isValid) {
144    tag.params.gclid = { value: gclid }
145  }
146}
147
148function captureMsclkid(tag) {
149  var msclkid = getParam('msclkid')
150
151  if (msclkid) {
152    tag.params.msclkid = { value: msclkid }
153  }
154}
155
156function captureUtm(tag) {
157  var params = {
158    utm_source: getParam('utm_source'),
159    utm_medium: getParam('utm_medium'),
160    utm_campaign: getParam('utm_campaign'),
161    utm_term: getParam('utm_term'),
162    utm_content: getParam('utm_content'),
163  }
164
165  if (
166    Object.keys(params).some(function (key) {
167      return params[key]
168    })
169  ) {
170    tag.params.utm = mergeObject(tag.params.utm || {}, truthy(params))
171  }
172}
173
174function captureOffer(tag) {
175  var offerId = getParam('offer')
176
177  if (offerId) {
178    setCookie('offer', offerId)
179  }
180}
181
182function captureAffiliate(tag) {
183  var params = {
184    aid: getParam('aid'),
185    cid: getParam('cid'),
186  }
187
188  if (
189    Object.keys(params).some(function (key) {
190      return params[key]
191    })
192  ) {
193    tag.params.aff = mergeObject(tag.params.aff || {}, truthy(params))
194  }
195}
196
197function captureTag() {
198  var tag = getTagFromLocalStorage()
199  captureGclid(tag)
200  captureMsclkid(tag)
201  captureUtm(tag)
202  captureOffer(tag)
203  captureAffiliate(tag)
204  localStorage.setItem('tag', JSON.stringify(tag))
205}
206
207window.addEventListener('load', captureTag)

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.