1var XA = XA || (function ($, document) { 2 var api = {}, onPreInitHandlers, onPostInitHandlers, modules = {}; 3 onPreInitHandlers = new Array(); 4 onPostInitHandlers = new Array(); 5 api.register = function (name, api, init) { 6 modules[name] = { 7 name: name, 8 api: api, 9 init: init || api.init || (function () { }) 10 }; 11 }; 12 api.hasPageModes = function () { return !!(window.Sitecore && window.Sitecore.PageModes); }; 13 api.registerOnPreInitHandler = function (handler) { onPreInitHandlers.push(handler); }; 14 api.registerOnPostInitHandler = function (handler) { onPostInitHandlers.push(handler); }; 15 var initScheduled = false; 16 api.init = function () { 17 if (!initScheduled) { 18 initScheduled = true; 19 XA.ready(function () { 20 try { 21 for (var name in modules) 22 if (modules.hasOwnProperty(name)) { 23 $xa.each(onPreInitHandlers, function (i, h) { h.process(name, modules[name]); }); 24 modules[name].init(); 25 $xa.each(onPostInitHandlers, function (i, h) { h.process(name, modules[name]); }); 26 } 27 } 28 finally { 29 initScheduled = false; 30 } 31 }); 32 } 33 }; 34 api.ready = function (fn) { 35 $(document).ready(fn); 36 }; 37 api.component = {}; 38 api.connector = {}; 39 api.cookies = { 40 shouldSendSameSiteNone: function (useragent) { 41 return !this.isSameSiteNoneIncompatible(useragent); 42 }, 43 isSameSiteNoneIncompatible: function (useragent) { 44 return this.hasWebKitSameSiteBug(useragent) || 45 this.dropsUnrecognizedSameSiteCookies(useragent); 46 }, 47 hasWebKitSameSiteBug: function (useragent) { 48 return this.isIosVersion(12, useragent) || 49 (this.isMacosxVersion(10, 14, useragent) && 50 (this.isSafari(useragent) || this.isMacEmbeddedBrowser(useragent))); 51 }, 52 dropsUnrecognizedSameSiteCookies: function (useragent) { 53 if (this.isUcBrowser(useragent)) { 54 return !this.isUcBrowserVersionAtLeast(12, 13, 2, useragent); 55 } 56 return this.isChromiumBased(useragent) && 57 this.isChromiumVersionAtLeast(51, useragent) && 58 !this.isChromiumVersionAtLeast(67, useragent); 59 }, 60 isIosVersion: function (major, useragent) { 61 var regex = /\(iP.+; CPU .*OS (\d+)[_\d]*.*\) AppleWebKit\//; 62 return useragent.match(regex) !== null && useragent.match(regex)[0] == major.toString(); 63 }, 64 isMacosxVersion: function (major, minor, useragent) { 65 var regex = /\(Macintosh;.*Mac OS X (\d+)_(\d+)[_\d]*.*\) AppleWebKit\//; 66 return useragent.match(regex) !== null && 67 ((useragent.match(regex)[0] == major.toString()) && 68 useragent.match(regex)[1] == minor.toString()); 69 }, 70 isSafari: function (useragent) { 71 var safari_regex = /Version\/.* Safari\//; 72 return useragent.match(safari_regex) !== null && 73 !this.isChromiumBased(useragent); 74 }, 75 isMacEmbeddedBrowser: function (useragent) { 76 var regex = /^Mozilla\/[\.\d]+ \(Macintosh;.*Mac OS X [_\d]+\) AppleWebKit\/[\.\d]+ \(KHTML, like Gecko\)$/; 77 return useragent.match(regex) !== null; 78 }, 79 isChromiumBased: function (useragent) { 80 var regex = /Chrom(e|ium)/; 81 return useragent.match(regex) !== null; 82 }, 83 isChromiumVersionAtLeast: function (major, useragent) { 84 var regex = /Chrom[^ \/]+\/(\d+)[\.\d]* /; 85 var version = parseInt(useragent.match(regex)[1]); 86 return version >= major; 87 }, 88 isUcBrowser: function (useragent) { 89 var regex = /UCBrowser\//; 90 return useragent.match(regex) !== null; 91 }, 92 isUcBrowserVersionAtLeast: function (major, minor, build, useragent) { 93 var regex = /UCBrowser\/(\d+)\.(\d+)\.(\d+)[\.\d]* /; 94 var major_version = parseInt(useragent.match(regex)[0]); 95 var minor_version = parseInt(useragent.match(regex)[1]); 96 var build_version = parseInt(useragent.match(regex)[2]); 97 if (major_version != major) { 98 return major_version > major; 99 } 100 if (minor_version != minor) { 101 return minor_version > minor; 102 } 103 return build_version >= build; 104 },
105 createCookie: function (name, value, days, sameSite, sameSiteForce) { 106 var cookieValue = "", sameSiteValue = ""; 107 if (days) { 108 var date = new Date(); 109 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 110 var expires = "; expires=" + date.toUTCString(); 111 } 112 else { 113 expires = ""; 114 } 115 if (sameSite && sameSite.length > 0 && (sameSiteForce || this.shouldSendSameSiteNone(window.navigator.userAgent))) { 116 sameSiteValue = "SameSite=" + sameSite + ";"; 117 } 118 document.cookie = name + "=" + value + expires + ";" + sameSiteValue + " path=/"; 119 }, 120 readCookie: function (name) { 121 var nameEQ = name + "="; 122 var ca = document.cookie.split(';'); 123 for (var i = 0; i < ca.length; i++) { 124 var c = ca[i]; 125 while (c.charAt(0) == ' ') { 126 c = c.substring(1, c.length); 127 } 128 if (c.indexOf(nameEQ) == 0) { 129 return c.substring(nameEQ.length, c.length); 130 } 131 } 132 return null; 133 }, 134 removeCookieWarning: function () { 135 var cookieWarning = $xa(".privacy-warning"); 136 cookieWarning.remove(); 137 } 138 }; 139 api.queryString = { 140 getQueryParam: function (variable) { 141 if (variable != null) { 142 variable = variable.toLocaleLowerCase(); 143 } 144 var query = window.location.search.substring(1); 145 var vars = query.split("&"); 146 for (var i = 0; i < vars.length; i++) { 147 var pair = vars[i].split("="); 148 if (decodeURIComponent(pair[0].toLocaleLowerCase()) === variable) { 149 return decodeURIComponent(pair[1]); 150 } 151 } 152 return null; 153 } 154 }; 155 var MutationObserver = window.MutationObserver || window.WebKitMutationObserver; 156 var eventListenerSupported = window.addEventListener; 157 api.dom = { 158 observeDOM: function (obj, callback) { 159 if (MutationObserver) { 160 var obs = new MutationObserver(function (mutations) { 161 if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) 162 callback(); 163 }); 164 var options = { 165 childList: true, 166 subtree: true 167 }; 168 obs.observe(obj, options); 169 } 170 else if (eventListenerSupported) { 171 obj.addEventListener('DOMNodeInserted', callback, false); 172 obj.addEventListener('DOMNodeRemoved', callback, false); 173 } 174 } 175 }; 176 return api; 177})($, document); 178XA.init();
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.