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 createCookie: function (name, value, days) { 41 if (days) { 42 var date = new Date(); 43 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 44 var expires = "; expires=" + date.toUTCString(); 45 } 46 else { 47 expires = ""; 48 } 49 document.cookie = name + "=" + value + expires + "; path=/"; 50 }, 51 readCookie: function (name) { 52 var nameEQ = name + "="; 53 var ca = document.cookie.split(';'); 54 for (var i = 0; i < ca.length; i++) { 55 var c = ca[i]; 56 while (c.charAt(0) == ' ') { 57 c = c.substring(1, c.length); 58 } 59 if (c.indexOf(nameEQ) == 0) { 60 return c.substring(nameEQ.length, c.length); 61 } 62 } 63 return null; 64 }, 65 removeCookieWarning: function () { 66 var cookieWarning = $xa(".privacy-warning"); 67 cookieWarning.remove(); 68 } 69 }; 70 api.queryString = { 71 getQueryParam: function (variable) { 72 if (variable != null) { 73 variable = variable.toLocaleLowerCase(); 74 } 75 var query = window.location.search.substring(1); 76 var vars = query.split("&"); 77 for (var i = 0; i < vars.length; i++) { 78 var pair = vars[i].split("="); 79 if (decodeURIComponent(pair[0].toLocaleLowerCase()) === variable) { 80 return decodeURIComponent(pair[1]); 81 } 82 } 83 return null; 84 } 85 }; 86 var MutationObserver = window.MutationObserver || window.WebKitMutationObserver; 87 var eventListenerSupported = window.addEventListener; 88 api.dom = { 89 observeDOM: function (obj, callback) { 90 if (MutationObserver) { 91 var obs = new MutationObserver(function (mutations) { 92 if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) 93 callback(); 94 }); 95 var options = { 96 childList: true, 97 subtree: true 98 }; 99 obs.observe(obj, options); 100 } 101 else if (eventListenerSupported) { 102 obj.addEventListener('DOMNodeInserted', callback, false); 103 obj.addEventListener('DOMNodeRemoved', callback, false); 104 } 105 } 106 }; 107 return api; 108})($, document); 109XA.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.