PageSourceSearch

https://www.alinma.com/-/media/Themes/AlinmaNew/Portal/AlinmaNew/Scripts/xa.js

js alinma.com collected 2026-09-24 10:08:28 UTC 7,881 bytes, 181 lines download raw bytes

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 = "", secureFlag = "";
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            if (location.protocol === 'https:') {
119                secureFlag = "; secure";
120            }
121            document.cookie = name + "=" + value + expires + ";" + sameSiteValue + " path=/" + secureFlag;
122        },
123        readCookie: function (name) {
124            var nameEQ = name + "=";
125            var ca = document.cookie.split(';');
126            for (var i = 0; i < ca.length; i++) {
127                var c = ca[i];
128                while (c.charAt(0) == ' ') {
129                    c = c.substring(1, c.length);
130                }
131                if (c.indexOf(nameEQ) == 0) {
132                    return c.substring(nameEQ.length, c.length);
133                }
134            }
135            return null;
136        },
137        removeCookieWarning: function () {
138            var cookieWarning = $xa(".privacy-warning");
139            cookieWarning.remove();
140        }
141    };
142    api.queryString = {
143        getQueryParam: function (variable) {
144            if (variable != null) {
145                variable = variable.toLocaleLowerCase();
146            }
147            var query = window.location.search.substring(1);
148            var vars = query.split("&");
149            for (var i = 0; i < vars.length; i++) {
150                var pair = vars[i].split("=");
151                if (decodeURIComponent(pair[0].toLocaleLowerCase()) === variable) {
152                    return decodeURIComponent(pair[1]);
153                }
154            }
155            return null;
156        }
157    };
158    var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
159    var eventListenerSupported = window.addEventListener;
160    api.dom = {
161        observeDOM: function (obj, callback) {
162            if (MutationObserver) {
163                var obs = new MutationObserver(function (mutations) {
164                    if (mutations[0].addedNodes.length || mutations[0].removedNodes.length)
165                        callback();
166                });
167                var options = {
168                    childList: true,
169                    subtree: true
170                };
171                obs.observe(obj, options);
172            }
173            else if (eventListenerSupported) {
174                obj.addEventListener('DOMNodeInserted', callback, false);
175                obj.addEventListener('DOMNodeRemoved', callback, false);
176            }
177        }
178    };
179    return api;
180})($, document);
181XA.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.