1/* Mobile Detect */ 2var siteDomain = location.hostname; 3var CurrentUrl = window.location.href; 4var md = new MobileDetect(window.navigator.userAgent); 5var detectMobile = 'computer'; 6 7if (typeof md.mobile() !== 'undefined' && md.mobile()) { 8 detectMobile = "phone"; 9} 10if (typeof md.tablet() !== 'undefined' && md.tablet()) { 11 detectMobile = "tablet"; 12} 13 14 15/* visibilityState */ 16function getHiddenProp() { 17 var prefixes = ['webkit', 'moz', 'ms', 'o']; 18 // if 'hidden' is natively supported just return it 19 if ('hidden' in document) { 20 return 'hidden'; 21 } 22 // otherwise loop over all the known prefixes until we find one 23 for (var i = 0; i < prefixes.length; i++) { 24 if ((prefixes[i] + 'Hidden') in document) { 25 return prefixes[i] + 'Hidden'; 26 } 27 } 28 // otherwise it's not supported 29 return null; 30} 31 32var bHavePV = getHiddenProp(); 33var bInitialShow = false; 34 35if (bHavePV) { 36 document.addEventListener("visibilityChange", handleVisEvt); 37} else { 38 // console.log("PageVisibility is not present"); // track page view normally 39 // when PageVisibility is not present 40} 41 42function handleVisEvt() { 43 var value = bInitialShow; 44 45 if (document.visibilityState == "prerender") { 46 // console.log("PageVisibility is pre-rendering"); // might be interesting 47 // to keep track of pre-rendering 48 } 49 if (document.visibilityState == "visible" && !bInitialShow) { 50 bInitialShow = true; // don't trigger this code again 51 // console.log("PageVisibility is visible and trigger will not push again"); 52 } 53 value = true; 54 55 return value; 56} 57 58 59/* CreateCookie */ 60var j = new Date; 61j.setTime(j.getTime()); 62j = new Date(j.getTime()); 63 64// console.log(j.toString()); 65 66function crumbleCookie(a) { 67 for (var d = document.cookie.split(";"), c = {}, b = 0; b < d.length; b++) { 68 var e = d[b].substring(0, d[b].indexOf("=")).trim(), 69 i = d[b].substring(d[b].indexOf("=") + 1, d[b].length).trim(); 70 c[e] = i 71 } 72 if (a) { 73 return c[a] ? c[a] : null; 74 } 75 return c 76} 77 78function bakeCookie(a, d, c, b, e, i) { 79 var j = new Date; 80 j.setTime(j.getTime()); 81 c && (c *= 864E5); 82 j = new Date(j.getTime() + c); 83 document.cookie = a + "=" + d + (c ? ";expires=" + j.toGMTString() : "") + (b ? ";path=" + b : "") + (e ? ";domain=" + e : "") + (i ? ";secure" : "") 84} 85 86 87/* Let's create the __dplz cookie*/ 88function __dplz(n) { 89 var a = getTrafficSource(n, siteDomain); 90 91 a = a.replace(/\|{2,}/g, "|"); 92 a = a.replace(/^\|/, ""); 93 a = unescape(a); 94 60 95 96 bakeCookie(n, a, 0.125, "/", siteDomain, ""); //Cookie expiration sets to 3 hours ((1/24)*3) 97}; 98 99/* Let's create the __dpla cookie*/ 100function __dpla(n) { 101 var f = visitData(n); 102 f = unescape(f); 103 104 bakeCookie(n, f, 0.125, "/", siteDomain, ""); //Cookie expiration sets to 3 hours ((1/24)*3) 105}; 106 107/* Let's create the __dplf cookie*/ 108function __dplf(n) { 109 var j = new Date; 110 j.setTime(j.getTime()); 111 j = new Date(j.getTime()); 112 var g = 1; 113 g = unescape(g); 114 115 bakeCookie(n, g, 0.125, "/", siteDomain, ""); //Cookie expiration sets to 3 hours ((1/24)*3) 116}; 117 118/* Let's create the mobile_detect cookie*/ 119function mobile_detect(n) { 120 var j = new Date; 121 j.setTime(j.getTime()); 122 j = new Date(j.getTime()); 123 124 bakeCookie(n, detectMobile, 30, "/", siteDomain, ""); //Cookie expiration sets to 30 days 125}; 126 127/* Let's create the first_page cookie*/ 128function first_page(n) { 129 var j = new Date; 130 j.setTime(j.getTime()); 131 j = new Date(j.getTime()); 132 133 bakeCookie(n, CurrentUrl.substring(0, CurrentUrl.indexOf('?') != -1 ? CurrentUrl.indexOf('?') : CurrentUrl.length), 30, "/", siteDomain, ""); //Cookie expiration sets to 30 days 134}; 135 136/* Check is cookie exists */ 137function getCookie(name) { 138 var dc = document.cookie; 139 var prefix = name + "="; 140 var begin = dc.indexOf("; " + prefix); 141 if (begin == -1) { 142 begin = dc.indexOf(prefix); 143 if (begin != 0) { 144 return null; 145 } 146 } else { 147 begin += 2; 148 var end = document.cookie.indexOf(";", begin); 149 if (end == -1) { 150 end = dc.length; 151 } 152 } 153 return unescape(dc.substring(begin + prefix.length, end)); 154} 155 156function doSomething() { 157 var value = false;
158 var myCookie = getCookie("__dplf"); 159 160 if (myCookie == null) { 161 // do cookie doesn't exist stuff; 162 value = true; 163 } 164 165 return value; 166} 167 168 169/*Provide __dpla information*/ 170function visitData() { 171 var domaineHash = Math.floor((Math.random() * 10000000) + 1); 172 var dateNow = new Date().getTime() / 1000; 173 var firstVisit = ""; 174 var lastVisit = ""; 175 var currentVisit = dateNow; 176 var sessionNumber = ""; 177 178 /*Test firsVisit*/ 179 if (firstVisit !== dateNow) { 180 firstVisit = dateNow; 181 lastVisit = dateNow; 182 sessionNumber = 1; 183 } 184 ; 185 186 var value = 187 domaineHash + 188 '.' + domaineHash + 189 '.' + firstVisit + 190 '.' + lastVisit + 191 '.' + currentVisit + 192 '.' + sessionNumber; 193 194 return value; 195} 196 197 198function getParam(s, q) { 199 try { 200 var match = s.match('[?&]' + q + '=([^&]+)'); 201 return match ? match[1] : ''; 202 } catch (e) { 203 return ''; 204 } 205} 206 207/*Provide __dplz information*/ 208function calculateTrafficSource() { 209 var dplcsr = '', dplcmd = '', dplccn = '', dplctr = '', dplcct = '', gclid = '', gclidSynapse = ''; 210 211 // Identify the method 212 var ref = document.referrer; 213 ref = ref.substr(ref.indexOf('//') + 2); 214 ref_domain = ref; 215 ref_path = '/'; 216 ref_search = ''; 217 var url_search = document.location.search; 218 219 220 if (getParam(url_search, 'utm_source').length >= 1) { 221 dplcsr = getParam(url_search, 'utm_source'); 222 dplcmd = getParam(url_search, 'utm_medium').length >= 1 ? getParam(url_search, 'utm_medium') : '(not set)'; 223 dplccn = getParam(url_search, 'utm_campaign').length >= 1 ? getParam(url_search, 'utm_campaign') : '(not set)'; 224 dplctr = getParam(url_search, 'utm_term').length >= 1 ? getParam(url_search, 'utm_term') : ''; 225 dplcct = getParam(url_search, 'utm_content').length >= 1 ? getParam(url_search, 'utm_content') : ''; 226 gclidSynapse = getParam(url_search, 'gclid').length >= 1 ? getParam(url_search, 'gclid') : ''; 227 method = 'dpl_source'; 228 } else if (getParam(url_search, 'gge_source').length >= 1) { 229 dplcsr = getParam(url_search, 'gge_source'); 230 dplcmd = getParam(url_search, 'gge_medium').length >= 1 ? getParam(url_search, 'gge_medium') : '(not set)'; 231 dplccn = getParam(url_search, 'gge_campaign').length >= 1 ? getParam(url_search, 'gge_campaign') : '(not set)'; 232 dplctr = getParam(url_search, 'gge_term').length >= 1 ? getParam(url_search, 'gge_term') : ''; 233 dplcct = getParam(url_search, 'gge_content').length >= 1 ? getParam(url_search, 'gge_content') : ''; 234 gclidSynapse = getParam(url_search, 'gclid').length >= 1 ? getParam(url_search, 'gclid') : ''; 235 method = 'gge_source'; 236 237 // console.log(gclidSynapse); 238 } else if (getParam(url_search, 'gclid').length >= 1) { 239 gclid = getParam(url_search, 'gclid'); 240 dplcsr = ''; 241 dplcmd = '(not set)'; 242 dplccn = 'undefined'; 243 dplcct = '(none)'; 244 gclidSynapse = getParam(url_search, 'gclid').length >= 1 ? getParam(url_search, 'gclid') : ''; 245 method = 'gclid'; 246 } else if (ref) { 247 // separate domain, path and query parameters 248 if (ref.indexOf('/') > -1) { 249 ref_domain = ref.substr(0, ref.indexOf('/')); 250 ref_path = ref.substr(ref.indexOf('/')); 251 method = 'ref'; 252 if (ref_path.indexOf('?') > -1) { 253 ref_search = ref_path.substr(ref_path.indexOf('?') + 1); 254 ref_path = ref_path.substr(0, ref_path.indexOf('?')); 255 } 256 } 257 var search_engines = [['bing', 'q'], ['google', 'q'], ['yahoo', 'p'], ['baidu', 'q'], ['yandex', 'text'], ['ask', 'q'], ['duckduckgo', 'q'], ['naver', 'query'], ['baidu', 'wd']]; //List of search engines 258 // Tester le referral, est-ce organic ou referral 259 dplcmd = 'referral'; 260 dplcsr = ref_domain; 261 dplcct = '(none)'; 262 dplccn = '(referral)'; 263 method = 'ref'; 264 // Extract dplctr for organic dplcsr 265 for (var i = 0; i < search_engines.length; i++) { 266 if (ref_domain.indexOf(search_engines[i][0]) > -1) { 267 dplcmd = 'organic'; 268 dplccn = '(not set)'; 269 dplcsr = search_engines[i][0]; 270 dplctr = getParam(ref_search, search_engines[i][1]) || '(not provided)'; 271 break; 272 } 273 } 274 } else { 275 dplcsr = '(direct)'; 276 dplccn = '(direct)'; 277 dplcmd = '(none)'; 278 method = 'direct'; 279 } 280 281 return { 282 'gclid': gclid, 283 'dplcsr': dplcsr, 284 'dplccn': dplccn, 285 'dplcmd': dplcmd, 286 'dplctr': dplctr, 287 'dplcct': dplcct, 288 'gclidSynapse': gclidSynapse, 289 'method': method, 290 }; 291 292} 293 294 295/* Search engine and campaing parse */ 296function getTrafficSource(cookieName, hostname) { 297 var trafficSource = calculateTrafficSource(); 298 var domaineHash = Math.floor((Math.random() * 10000000) + 1); 299 var dateNow = new Date().getTime() / 1000; 300 301 /* Let's create the variables*/ 302 var gclid = trafficSource.gclid.length > 0 ? '.utmgclid=' + trafficSource.gclid : ''; 303 var dplcsr = trafficSource.dplcsr.length > 0 ? '.utmcsr=' + trafficSource.dplcsr : ''; 304 var dplccn = trafficSource.dplccn.length > 0 ? '|utmccn=' + trafficSource.dplccn : ''; 305 var dplcmd = trafficSource.dplcmd.length > 0 ? '|utmcmd=' + trafficSource.dplcmd : ''; 306 var dplctr = trafficSource.dplctr.length > 0 ? '|utmctr=' + trafficSource.dplctr : ''; 307 var dplcct = trafficSource.dplcct.length > 0 ? '|utmcct=' + trafficSource.dplcct : ''; 308 var gclidSynapse = trafficSource.gclidSynapse.length > 0 ? '|dplgclid=' + trafficSource.gclidSynapse : ''; 309 310 var testData = 311 gclid + 312 dplcsr + 313 dplccn + 314 dplcmd + 315 dplctr + 316 dplcct + 317 gclidSynapse + 318 ''; 319 320 var sessionVisit = 321 domaineHash + 322 '.' + dateNow + 323 '.' + '1' + 324 ''; 325 326 var value = 327 sessionVisit + 328 testData + 329 ''; 330 331 // console.log(trafficSource); 332 333 return decodeURIComponent(value); 334} 335 336 337/* generateCookie_dpl */ 338function generateCookie_dpl() { 339 var date = new Date(); 340 var fr_date = date.getUTCFullYear().toString() + ((date.getUTCMonth() < 9) ? '0' + (date.getUTCMonth() + 1).toString() : (d
340ate.getUTCMonth() + 1).toString()) + ((date.getUTCDate() < 10) ? '0' + date.getUTCDate().toString() : date.getUTCDate().toString()); 341 var session = crumbleCookie()['__dplz']; 342 __dplf('__dplf'); 343 __dplz('__dplz'); 344 __dpla('__dpla'); 345 mobile_detect('mobile_detect'); 346 first_page('first_page'); 347} 348 349/* generateCookie_firstpage */ 350function generateCookie_first_page() { 351 var date = new Date(); 352 var fr_date = date.getUTCFullYear().toString() + ((date.getUTCMonth() < 9) ? '0' + (date.getUTCMonth() + 1).toString() : (date.getUTCMonth() + 1).toString()) + ((date.getUTCDate() < 10) ? '0' + date.getUTCDate().toString() : date.getUTCDate().toString()); 353 var session = crumbleCookie()['first_page']; 354 first_page('first_page'); 355} 356 357/* generateCookie_mobile_detect */ 358function generateCookie_mobile_detect() { 359 var date = new Date(); 360 var fr_date = date.getUTCFullYear().toString() + ((date.getUTCMonth() < 9) ? '0' + (date.getUTCMonth() + 1).toString() : (date.getUTCMonth() + 1).toString()) + ((date.getUTCDate() < 10) ? '0' + date.getUTCDate().toString() : date.getUTCDate().toString()); 361 var session = crumbleCookie()['mobile_detect']; 362 mobile_detect('mobile_detect'); 363} 364 365/* Let's cook */ 366var gclidUrl = calculateTrafficSource('gclid')['gclid']; 367var methodUrl = calculateTrafficSource('method')['method']; 368 369 370if (handleVisEvt()) { 371 if (doSomething()) { 372 generateCookie_dpl(); 373 } 374} 375 376if (document.cookie.indexOf('mobile_detect') <= 0) { 377 generateCookie_mobile_detect(); 378} 379if (document.cookie.indexOf('first_page') <= 0) { 380 generateCookie_first_page(); 381}
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.