PageSourceSearch

https://www.raredisease.at/assets/headfiles/xmscache_04604351f2eb4b080d2e1217103f906c.js

js raredisease.at collected 2026-10-04 16:05:47 UTC 374,077 bytes, 289 lines download raw bytes

1if (!tsc) var tsc = {};tsc.fetch = async (url, options, onSuccess, onError) => {return fetch(url, options).then(async (response) => {const contentType = response.headers.get('content-type');const ret = (contentType && contentType.includes('application/json')) ? await response.json() : await response.text();if (response.ok) return ret;throw ret;}).then((ret) => {if (typeof ret === 'object' && ret.message) tsc.modal.alert.render(ret.message, 'success', 3000);onSuccess?.(ret);}).catch((error) => {if (error instanceof Error) {console.error(error);return;}if (typeof error === 'object' && error.message) tsc.modal.alert.render(error.message, 'danger', 3000);onError?.(error);});};tsc.clone = function (obj) {if (obj == null || obj == "" || typeof (obj) != "object" || obj.nodeType || obj instanceof NodeList) return obj;if (obj instanceof Array) {var clonedObj = [];for (var i = 0; i < obj.length; i++) {clonedObj[i] = tsc.clone(obj[i]);}} else {var clonedObj = new obj.constructor();for (var key in obj) {clonedObj[key] = tsc.clone(obj[key]);}}return clonedObj;};tsc.copyArray = function (arr) {var ret = [];for (var i = 0; i < arr.length; i++) {ret.push(arr[i]);}return ret;};tsc.doLater = function (ms, fn, args, scope, buffer) {let id = window.setTimeout(fn.bind(scope || window, ...(args || [])), ms);if (buffer) {let addingFnCompare = String(fn) + String(args) + String(scope) + String(ms);if (tsc._doLaterBuffers.hasOwnProperty(addingFnCompare)) {window.clearTimeout(tsc._doLaterBuffers[addingFnCompare]);}tsc._doLaterBuffers[addingFnCompare] = id;}return id;};tsc._doLaterBuffers = {};tsc.defer = tsc.doLater;tsc.createDelegate = function (fn, args, scope) {return function () {return fn.apply(scope || window,args && args.length ? args : arguments
2);};};tsc.loadScript = function (srcs, cb, args, scope) {if (!tsc.loadScriptCb) tsc.loadScriptCb = [];if (!Array.isArray(srcs)) srcs = [srcs];let srcExists = [];let existIndex = -1;for (let i = 0; i < tsc.loadScriptCb.length; i++) {let entrySrcCount = tsc.loadScriptCb[i].srcs.length;for (entrySrc of tsc.loadScriptCb[i].srcs) {srcs.forEach(src => {if (src == entrySrc.uri) {entrySrcCount--;srcExists.push(src.uri);}});}if (entrySrcCount == 0) {existIndex = i;break;}}if (existIndex !== -1) {if (tsc.loadScriptCb[existIndex].srcs.every(src => src.loaded)) {cb.apply(scope, args);} else {tsc.loadScriptCb[existIndex].cb.push(cb.bind(scope, ...args));}} else {let newEntry = {cb: [cb.bind(scope, ...args)],srcs: []
3};srcs.forEach(src => {newEntry.srcs.push({uri: src,loaded: false
4});});tsc.loadScriptCb.push(newEntry);let srcsNotExist = srcs.filter(src => !srcExists.includes(src));srcsNotExist.forEach(src => {let existingScript = dg('script[src="' + src + '"]');if (existingScript) {throw "Trying to tsc.loadScript('" + src + "') which is loaded already manually. Please remove the manual inclusion or some js-callbacks won't be fired.";}let el = document.createElement('script');el.onerror = event => {throw new URIError("The script " + event.target.src + " didn't load correctly.");};el.onload = event => {tsc._loadScriptCbChecker(event.target.src);};dg('head').appendChild(el);el.src = src;});}};tsc._loadScriptCbChecker = function (loadedSrc) {tsc.loadScriptCb.forEach((entry, lsIndex) => {let allLoaded = true;let loadedSrcEntry = false;entry.srcs.forEach((src, sIndex) => {if (src.uri == loadedSrc) {tsc.loadScriptCb[lsIndex].srcs[sIndex].loaded = true;loadedSrcEntry = true;}if (!src.loaded) allLoaded = false;});if (loadedSrcEntry && allLoaded) {entry.cb.forEach(cb => cb());}});};tsc.setCookie = function (name, value, lifetime) {if (lifetime) {var date = new Date();date.setTime(date.getTime() + (lifetime * 1000));var expires = "; expires=" + date.toUTCString();}document.cookie = name + "=" + (value || "") + (expires || "") + "; path=/";};tsc.getCookie = function (name) {var nameEQ = name + "=";var ca = document.cookie.split(';');for (var i = 0; i < ca.length; i++) {var c = ca[i];while (c.charAt(0) == ' ') c = c.substring(1, c.length);if (c.indexOf(nameEQ) == 0) {return c.substring(nameEQ.length, c.length);}}return null;};tsc.removeCookie = function (name) {tsc.setCookie(name, "", -86400);};tsc.getGet = function (getVar) {var gets = {};if (window.location.search != "") {var queryString = window.location.search.substring(1);var pairedVars = queryString.split("&");for (var i = 0; i < pairedVars.length; i++) {var varData = pairedVars[i].split("=");gets[varData[0]] = decodeURIComponent(varData[1]);}}if (getVar) {return gets[getVar] || false;} else {return gets;}};tsc.escapeHtml = function (str) {var map = {'&': '&amp;','<': '&lt;','>': '&gt;','"': '&quot;',"'": '&#039;'
5};return str.replace(/[&<>"']/g, function (m) { return map[m]; });};tsc.shuffle = function (array) {var cnt = array.length;var tmp;var idx;while (cnt > 0) {idx = Math.floor(Math.random() * cnt);cnt--;tmp = array[cnt];array[cnt] = array[idx];array[idx] = tmp;}return array;};tsc.intersect = function (array1, array2) {return array1.filter(function (item) {return array2.indexOf(item) !== -1;});};tsc.trim = function (x) {return x.replace(/^\s+|\s+$/gm, '');};tsc.stripHTML = function (html) {let doc = new DOMParser().parseFromString(html, 'text/html');return doc.body.textContent || "";};tsc.regExpEscape = function (s) {return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');};tsc.setBrowserBodyClass = function () {tsc.event.onReady(function () {tsc.dom.addClass("body", tsc.browser.bodyCls);}, [], null, true);};(function () {tsc.os = {};tsc.browser = {};tsc.browser.ua = navigator.userAgent.toLowerCase();var testUa = function (reg) { return reg.test(tsc.browser.ua); };var uaVersion = function (browser, reg) {var match = reg.exec(tsc.browser.ua);if (browser && match) return parseInt(match[1]);return 0;};tsc.browser.bodyCls = "";tsc.browser.isOpera = (testUa(/opera/) || testUa(/opr/));tsc.browser.operaVersion = (uaVersion(tsc.browser.isOpera, /version\/(\d+)/) || uaVersion(tsc.browser.isOpera, /opera\s(\d+)/) || uaVersion(tsc.browser.isOpera, /opr\/(\d+)/));if (tsc.browser.isOpera) tsc.browser.bodyCls += " opera";if (tsc.browser.operaVersion) tsc.browser.bodyCls += " opera" + tsc.browser.operaVersion;tsc.browser.isChrome = (testUa(/chrome/) || testUa(/crios/)) && !testUa(/edge/) && !testUa(/opr/);tsc.browser.chromeVersion = (uaVersion(tsc.browser.isChrome, /chrome\/(\d+)/) || uaVersion(tsc.browser.isChrome, /crios\/(\d+)/));if (tsc.browser.isChrome) tsc.browser.bodyCls += " chrome";if (tsc.browser.chromeVersion) tsc.browser.bodyCls += " chrome" + tsc.browser.chromeVersion;tsc.browser.isWebkit = testUa(/webkit/);tsc.browser.webkitVersion = uaVersion(tsc.browser.isWebkit, /webkit\/(\d+)/);if (tsc.browser.isWebkit) tsc.browser.bodyCls += " webkit";if (tsc.browser.webkitVersion) tsc.browser.bodyCls += " webkit" + tsc.browser.webkitVersion;tsc.browser.isIE = (testUa(/msie/) || testUa(/trident\//));tsc.browser.ieVersion = (uaVersion(tsc.browser.isIE, /msie (\d+)/) || uaVersion(tsc.browser.isIE, /rv:(\d+)/));if (tsc.browser.isIE) tsc.browser.bodyCls += " ie";if (tsc.browser.ieVersion) tsc.browser.bodyCls += " ie" + tsc.browser.ieVersion;tsc.browser.isTrident = testUa(/trident/);tsc.browser.tridentVersion = uaVersion(tsc.browser.isTrident, /rv:\/(\d+)/);if (tsc.browser.isTrident) tsc.browser.bodyCls += " trident";if (tsc.browser.tridentVersion) tsc.browser.bodyCls += " trident" + tsc.browser.tridentVersion;tsc.browser.isEdge = (testUa(/edge\//) || testUa(/edgios\//));tsc.browser.edgeVersion = (uaVersion(tsc.browser.isEdge, /edge\/(\d+)/) || uaVersion(tsc.browser.isEdge, /edgios\/(\d+)/));if (tsc.browser.isEdge) tsc.browser.bodyCls += " edge";if (tsc.browser.edgeVersion) tsc.browser.bodyCls += " edge" + tsc.browser.edgeVersion;tsc.browser.isFf = (testUa(/firefox\//) || testUa(/fxios/));tsc.browser.ffVersion = (uaVersion(tsc.browser.isFf, /firefox\/(\d+)/) || uaVersion(tsc.browser.isFf, /fxios\/(\d+)/));if (tsc.browser.isFf) tsc.browser.bodyCls += " ff";if (tsc.browser.ffVersion) tsc.browser.bodyCls += " ff" + tsc.browser.ffVersion;tsc.browser.isGecko = !tsc.browser.isWebkit && testUa(/gecko/);tsc.browser.geckoVersion = uaVersion(tsc.browser.isGecko, /gecko\/(\d+)/);if (tsc.browser.isGecko) tsc.browser.bodyCls += " gecko";if (tsc.browser.geckoVersion) tsc.browser.bodyCls += " gecko" + tsc.browser.geckoVersion;tsc.browser.isSafari = testUa(/safari/) && !testUa(/firefox\//) && !testUa(/chrome\//) && !testUa(/chrome\//) && !tsc.browser.isIE;tsc.browser.safariVersion = (uaVersion(tsc.browser.isSafari, /version\/(\d+)/) || uaVersion(tsc.browser.isSafari, /cpu os (\d+)/));if (tsc.browser.isSafari) tsc.browser.bodyCls += " safari";if (tsc.browser.safariVersion) tsc.browser.bodyCls += " safari" + tsc.browser.safariVersion;tsc.os.isLinux = testUa(/(linux|unix)/) && !testUa(/android/);if (tsc.os.isLinux) tsc.browser.bodyCls += " linux";tsc.os.isWindows = testUa(/windows/) && !testUa(/windows phone/);if (tsc.os.isWindows) tsc.browser.bodyCls += " windows";tsc.os.isMacOS = testUa(/mac os x/) && !testUa(/ipad|iphone|ipod/);if (tsc.os.isMacOS) tsc.browser.bodyCls += " macos";tsc.os.isWindowsPhone = testUa(/windows phone/);if (tsc.os.isWindowsPhone) tsc.browser.bodyCls += " windowsphone";tsc.os.isAndroid = testUa(/android/) && !testUa(/windows phone/);if (tsc.os.isAndroid) tsc.browser.bodyCls += " android";tsc.os.isIOS = testUa(/ipad|iphone|ipod/) && !window.MSStream;if (tsc.os.isIOS) tsc.browser.bodyCls += " ios";
5tsc.os.isMobile = tsc.os.isWindowsPhone || tsc.os.isAndroid || tsc.os.isIOS || testUa(/mobile/);if (tsc.os.isMobile) tsc.browser.bodyCls += " mobile";tsc.browser.isHttps = window.location.protocol.substring(0, 5) == "https";tsc.browser.isTouch = false;if ('ontouchstart' in window) tsc.browser.isTouch = true;if (navigator.msMaxTouchPoints > 1 || navigator.maxTouchPoints > 1) tsc.browser.isTouch = true;if (window.navigator.msMaxTouchPoints > 1 || window.navigator.maxTouchPoints > 1) tsc.browser.isTouch = true;if (tsc.browser.isTouch) tsc.browser.bodyCls += " isTouch";if (tsc.browser.bodyCls) {tsc.browser.bodyCls = tsc.browser.bodyCls.substring(1).replace(".", "_");}})();if (!tsc) var tsc = {};tsc.lang = {active: 'en',fallbackLang: 'en',set: function (langCode) {tsc.lang.active = langCode;},get: function (code, replaces) {if (!tsc.lang[tsc.lang.active] || !tsc.lang[tsc.lang.active][code]) {if (!tsc.lang[tsc.lang.fallbackLang] || !tsc.lang[tsc.lang.fallbackLang][code]) {return this.replace(code, replaces);} else {return this.replace(tsc.lang[tsc.lang.fallbackLang][code], replaces);}}return this.replace(tsc.lang[tsc.lang.active][code], replaces);},replace: function (text, replaces) {if (!replaces) return text;replaces.forEach((replace, key) => {text = text.replace('?' + key, replace);});return text;}};tsc.lang.de = {MODAL_BTN_CLOSE: 'Schließen',LIGHTBOX_BTN_CLOSE: 'Schließen',LIGHTBOX_BTN_PREV: 'Zurück',LIGHTBOX_BTN_NEXT: 'Weiter',NOTIFICATION_BTN_CLOSE: 'Schließen',SLIDER_BTN_PREV: 'Zurück',SLIDER_BTN_NEXT: 'Weiter',AUTOCOMPLETE_RESULTS_NONE: 'Keine Ergebnisse für "?0"',AUTOCOMPLETE_RESULTS_ONE: '1 Ergebnis',AUTOCOMPLETE_RESULTS_MORE: '?0 Ergebnisse',AUTOCOMPLETE_RESULTS_XOFY: '?0 von ?1 Ergebnissen'
6};tsc.lang.en = {MODAL_BTN_CLOSE: 'Close',LIGHTBOX_BTN_CLOSE: 'Close',LIGHTBOX_BTN_PREV: 'Back',LIGHTBOX_BTN_NEXT: 'Next',NOTIFICATION_BTN_CLOSE: 'Close',SLIDER_BTN_PREV: 'Back',SLIDER_BTN_NEXT: 'Next',AUTOCOMPLETE_RESULTS_NONE: 'No results for "?0"',AUTOCOMPLETE_RESULTS_ONE: '1 result',AUTOCOMPLETE_RESULTS_MORE: '?0 results',AUTOCOMPLETE_RESULTS_XOFY: '?0 of ?1 results'
7};if (!tsc) var tsc = {};tsc.dom = {get: function (sel, root) {var ret = tsc.dom.getAll(sel, root);if (ret.length >= 1) return ret[0];return null;},getAll: function (sel, root) {if (typeof sel == "string") {return (root || document).querySelectorAll(sel);} else if (typeof sel == "object" || (typeof sel == "function" && sel.tagName.toLowerCase() == "object")) {if (sel.nodeType) {return [sel];}}console.trace();throw "tsc.dom.getAll() needes a string or node as first argument, type  '" + (typeof sel) + "' given.";},_autoIdNumber: 1,autoId: function (el) {var el = tsc.dom.get(el);if (!el.id) {el.id = "tsc" + tsc.dom._autoIdNumber;tsc.dom._autoIdNumber += 1;}return el;},getParentNode: function (sel, el) {if (typeof sel !== 'string') throw "tsc.dom.getParentNode() selector must be a string";let pe = dg(el).parentElement;if (!pe) return null;return pe.closest(sel);},getAllParentNodes: function (sel, el) {if (typeof sel !== 'string') throw "tsc.dom.getAllParentNodes() selector must be a string";let ret = [];let parentEl = dg(el).parentElement;while (parentEl) {if (parentEl.matches(sel)) ret.push(parentEl);parentEl = parentEl.parentElement;}return ret;},addClass: function (el, cls) {if (!cls) return;el = dg(el);cls.split(/\s+/).forEach(function (singleCls) {el.classList.add(singleCls);});},removeClass: function (el, cls) {if (!cls) return;el = dg(el);cls.split(/\s+/).forEach(function (singleCls) {el.classList.remove(singleCls);});},hasClass: function (el, cls) {return dg(el).classList.contains(cls);},toggleClass: function (el, cls) {dg(el).classList.toggle(cls);},switchClass: function (el, oldCls, newCls) {el = dg(el);el.classList.remove(oldCls);el.classList.add(newCls);},onClickSelectAll: function (el) {if (!tsc.event) alert("2script Error: dom.onClickSelectAll needs the event.js to be present");tsc.event.onReady(function (el) {tsc.event.onClick(el, tsc.dom.selectAll, [el]);}, [el], null, true);},selectAll: function (el) {var el = tsc.dom.get(el);el.focus();el.select();},textareaAutoResize: function (el, minHeight, minHeightInactive) {if (!tsc.event) alert("2script Error: dom.onClickSelectAll needs the event.js to be present");if (typeof minHeightInactive == "undefined") var minHeightInactive = minHeight;tsc.event.onReady(function (el) {var els = tsc.dom.getAll(el);for (var i = 0; i < els.length; i++) {if (els[i].tscAutoResizeInited) continue;
7els[i].style.transition = 'none';tsc.event.onFocus(els[i], tsc.dom._textareaDoResize, [els[i], minHeight], window, 1);tsc.event.onKeyPress(els[i], tsc.dom._textareaDoResize, [els[i], minHeight], window, 1);tsc.event.onBlur(els[i], tsc.dom._textareaDoResize, [els[i], minHeightInactive], window, 1);tsc.dom._textareaDoResize(els[i], minHeightInactive);els[i].tscAutoResizeInited = true;}}, [el], null, true);},_textareaDoResize: function (el, minHeight) {el.style.height = (minHeight || 2) + "px";if (el.scrollHeight + 3 > parseInt(el.style.height)) {el.style.height = (el.scrollHeight + 3) + "px";}},_buildElsByCfg: function (cfg) {var ret = [];if (typeof cfg == "string" || cfg.tag || cfg.tagName) var cfg = [cfg];for (var i = 0; i < cfg.length; i++) {if (typeof cfg[i] == "string") {ret.push(document.createTextNode(cfg[i]));continue;}var newEl = document.createElement(cfg[i].tagName || cfg[i].tag);for (var attr in cfg[i]) {if (attr == "tag" || attr == "tagName") continue;if (attr == "child" || attr == "children") {tsc.dom.appendChild(newEl, cfg[i][attr]);continue;}if (attr == "cls") {newEl.className = cfg[i][attr];continue;}if (attr == "innerHTML") {newEl.innerHTML = cfg[i][attr];continue;}newEl.setAttribute(attr, cfg[i][attr]);}ret.push(newEl);}return ret;},appendChild: function (el, cfg) {var ret = [];var el = tsc.dom.get(el);if (!el) throw "el not found for appendChild";var appendEls = tsc.dom._buildElsByCfg(cfg);for (var i = 0; i < appendEls.length; i++) {ret.push(el.appendChild(appendEls[i]));}if (ret.length == 0) return null;else if (ret.length == 1) return ret[0];else return ret;},prependChild: function (el, cfg) {var ret = [];var el = tsc.dom.get(el);if (!el) throw "el not found for prependChild";var prependEls = tsc.dom._buildElsByCfg(cfg);for (var i = 0; i < prependEls.length; i++) {if (el.firstChild) {ret.push(el.insertBefore(prependEls[i], el.firstChild));} else {ret.push(el.appendChild(prependEls[i]));}}if (ret.length == 0) return null;else if (ret.length == 1) return ret[0];else return ret;},removeNode: function (el, rootNode) {tsc.dom.getAll(el, rootNode || null).forEach(el => {if (el && el.parentElement) {el.parentElement.removeChild(el);}});},insertAfter: function (el, newNode) {var el = tsc.dom.get(el);var children = el.parentElement.children;var done = false;for (var i = 0; i < children.length; i++) {if (children[i] == el && children[i + 1]) {el.parentElement.insertBefore(newNode, children[i + 1]);done = true;}}if (!done) {el.parentElement.appendChild(newNode);}return newNode;},insertBefore: function (el, newNode) {var el = tsc.dom.get(el);el.parentElement.insertBefore(newNode, el);return newNode;},getPreviousSibling: function (sel, startEl) {if (!startEl) throw "no startEl has been given for getPreviousSibling";let ret = dg(startEl).previousElementSibling;if (!sel) return ret;while (ret) {if (ret.matches(sel)) return ret;ret = ret.previousElementSibling;}return null;},getNextSibling: function (sel, startEl) {if (!startEl) throw "no startEl has been given for getNextSibling";let ret = dg(startEl).nextElementSibling;if (!sel) return ret;while (ret) {if (ret.matches(sel)) return ret;ret = ret.nextElementSibling;}return ret;},getScrollingParent: function (el) {var el = tsc.dom.get(el);var parent = el.parentElement;while (parent && (parent instanceof HTMLElement)) {if (window.getComputedStyle(parent).overflow.match(/(auto|scroll)/)|| window.getComputedStyle(parent).overflowY.match(/(auto|scroll)/)) {return parent;}parent = parent.parentElement;}return window;},getXY: function (el) {var el = tsc.dom.get(el);if (el == document.body) return [0, 0];return [
8el.getBoundingClientRect().left + window.scrollX,el.getBoundingClientRect().top + window.scrollY
9];},setXY: function (el, x, y) {var el = tsc.dom.get(el);document.body.appendChild(el);el.style.position = "absolute";el.style.left = x + "px";el.style.top = y + "px";},getWidth: function (el) {el = tsc.dom.get(el);return el.offsetWidth;},getHeight: function (el) {el = tsc.dom.get(el);return el.offsetHeight;},getScrollXY: function (el) {var x = 0, y = 0;if (!el) {return [tsc.window.getScrollX(), tsc.window.getScrollY()];} else {var el = dg(el);if (el && (el.scrollLeft || el.scrollTop)) {x = el.scrollLeft;y = el.scrollTop;}return [x, y];}},isOverlapping: function (el1, el2) {var el1xy = tsc.dom.getXY(el1);var el2xy = tsc.dom.getXY(el2);if (el1xy[0] < el2xy[0]) {var xOverlaps = (el1xy[0] + tsc.dom.getWidth(el1) > el2xy[0]);} else {var xOverlaps = (el2xy[0] + tsc.dom.getWidth(el2) > el1xy[0]);}if (el1xy[1] < el2xy[1]) {var yOverlaps = (el1xy[1] + tsc.dom.getHeight(el1) > el2xy[1]);} else {var yOverlaps = (el2xy[1] + tsc.dom.getHeight(el2) > el1xy[1]);}return (xOverlaps && yOverlaps);},draggable: function (el, config) {tsc.event.onReady(function (el, config) {if (!config) var config = {};config.el = tsc.dom.get(el);tsc.dom.autoId(config.el);config.el.draggable = true;tsc.event.onDragStart(config.el, config.dragStartFn || function (config, ev) {ev.dataTransfer.effectAllowed = config.effectAllowed || "copy";ev.dataTransfer.setData(config.dataType || "text", // IE only allows "text", although "text/plain" would be correct
10config.dataValue || config.el.id
11);if (config.mouseDragEl) ev.dataTransfer.setDragImage(dg(config.mouseDragEl), 0, 0);}, [config], config.scope || window);}, [el, config], null, true);},droppable: function (el, config) {tsc.event.onReady(function (el, config) {if (!config) var config = {};config.el = tsc.dom.get(el);tsc.event.onDragOver(config.el, function (config, ev) {if (ev && ev.preventDefault) ev.preventDefault();tsc.dom.addClass(config.el, "tscDragHover");ev.dataTransfer.dropEffect = config.dropEffect || "copy";return false;}, [config]);tsc.event.onDrop(config.el, function (config, ev) {if (ev && ev.stopPropagation) ev.stopPropagation();tsc.dom.removeClass(config.el, "tscDragHover");var value = ev.dataTransfer.getData(config.dataType || "text");if (config.callback) {config.callback.call(config.scope || this, value, config, ev);}return false;}, [config]);tsc.event.onDragLeave(config.el, function (config, ev) {tsc.dom.removeClass(config.el, "tscDragHover");}, [config]);}, [el, config], null, true);},replaceWithAjaxLoad: function (el, noFormSubmit) {el = tsc.dom.get(el);var loader = document.createElement("span");loader.className = "xmsAjaxLoadWrapper";tsc.dom.appendChild(loader, [
12{tag: "div", cls: "xmsUtilsLoadingspinner", children: [
13{tag: "div", cls: "spinner-border", children: [
14{ tag: "span", cls: "sr-only", innerHTML: "Loading..." }]
15}]
16}]);el.style.display = "none";tsc.dom.insertBefore(el, loader);var form = el.closest('form');if (form && noFormSubmit !== true) {tsc.doLater(100, function (form) { form.submit(); }, [form]);}return false;}};if (!dg) var dg = tsc.dom.get;if (!tsc) var tsc = {};tsc.event = {_callOnMainEvent: { ready: [], windowLoad: [] },domReady: false,windowLoaded: false,onReady: function (fn, args, scope, once) {tsc.event._onMainEvent('ready', fn, args, scope, once);},onWindowLoad: function (fn, args, scope, once) {tsc.event._onMainEvent('windowLoad', fn, args, scope, once);},_onMainEvent: function (evName, fn, args, scope, once) {if ((tsc.event.domReady && evName == 'ready')|| (tsc.event.windowLoaded && evName == 'windowLoad')) {tsc.doLater(1, fn, args || [], scope || window);if (once) return;}tsc.event._callOnMainEvent[evName].push({fn: fn,args: args,scope: scope,once: once || false
17});},callMainEventFns: function (evName) {if (evName == 'all') evName = null;var evNames = evName ? [evName] : ['ready', 'windowLoad'];for (var en = 0; en < evNames.length; en++) {var fns = tsc.event._callOnMainEvent[evNames[en]];for (var i = 0; i < fns.length; i++) {if (!fns[i]) continue;fns[i].fn.apply(fns[i].scope || window,fns[i].args || []
18);if (fns[i].once) fns[i] = null;}}},onWindowBeforeUnload: function (fn) {window.addEventListener("beforeunload", fn);},onClick: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("click", el, fn, args, scope, buffer);},onDblClick: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("dblclick", el, fn, args, scope, buffer);},onFocus: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("focus", el, fn, args, scope, buffer);},onBlur: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("blur", el, fn, args, scope, buffer);},onMouseEnter: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("mouseenter", el, fn, args, scope, buffer);},onMouseOver: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("mouseover", el, fn, args, scope, buffer);},onMouseLeave: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("mouseleave", el, fn, args, scope, buffer);},onMouseOut: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("mouseout", el, fn, args, scope, buffer);},onMouseDown: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("mousedown", el, fn, args, scope, buffer);},onMouseMove: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("mousemove", el, fn, args, scope, buffer);},onMouseUp: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("mouseup", el, fn, args, scope, buffer);},onKeyDown: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("keydown", el, fn, args, scope, buffer);},onKeyPress: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("keypress", el, fn, args, scope, buffer);},onKeyUp: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("keyup", el, fn, args, scope, buffer);},onChange: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("change", el, fn, args, scope, buffer);},onInput: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("input", el, fn, args, scope, buffer);},onPause: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("pause", el, fn, args, scope, buffer);},onCompositionStart: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("compositionstart", el, fn, args, scope, buffer);},onCompositionUpdate: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("compositionupdate", el, fn, args, scope, buffer);},onCompositionEnd: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("compositionend", el, fn, args, scope, buffer);},onPaste: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("paste", el, fn, args, scope, buffer);},onSubmit: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("submit", el, fn, args, scope, buffer);},onResize: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("resize", el, fn, args, scope, buffer);},onPopState: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("popstate", el, fn, args, scope, buffer);},onScroll: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("scroll", el, fn, args, scope, buffer);},onLoad: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("load", el, fn, args, scope, buffer);},onHashChange: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("hashchange", el, fn, args, scope, buffer);},onDrag: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("drag", el, fn, args, scope, buffer);},onDrop: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("drop", el, fn, args, scope, buffer);},onDragStart: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("dragstart", el, fn, args, scope, buffer);},onDragEnd: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("dragend", el, fn, args, scope, buffer);},onDragEnter: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("dragenter", el, fn, args, scope, buffer);},onDragLeave: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("dragleave", el, fn, args, scope, buffer);},onDragOver: function (el, fn, args, scope, buffer) {tsc.event._applyEvent("dragover", el, fn, args, scope, buffer);},onTouchStart: function (el, fn, args, scope, buffer, doEmulate) {if (tsc.browser.isTouch) {tsc.event._measureTouchOffset(el);tsc.event._applyEvent("touchstart", el, fn, args, scope, buffer);}if (doEmulate) {tsc.event._emulateTouch("emulateTouchStart", el, fn, args, scope, buffer);}},onTouchEnd: function (el, fn, args, scope, buffer, doEmulate) {if (tsc.browser.isTouch) {tsc.event._measureTouchOffset(el);tsc.event._applyEvent("touchend", el, fn, args, scope, buffer);}if (doEmulate) {tsc.event._emulateTouch("emulateTouchEnd", el, fn, args, scope, buffer);}},onTouchMove: function (el, fn, args, scope, buffer, doEmulate) {if (tsc.browser.isTouch) {tsc.event._measureTouchOffset(el);tsc.event._applyEvent("touchmove", el, fn, args, scope, buffer);}if (doEmulate) {tsc.event._emulateTouch("emulateTouchMove", el, fn, args, scope, buffer);}},onTouchCancel: function (el, fn, args, scope, buffer, doEmulate) {if (tsc.browser.isTouch) {tsc.event._measureTouchOffset(el);tsc.event._applyEvent("touchcancel", el, fn, args, scope, buffer);}if (doEmulate) {tsc.event._emulateTouch("emulateTouchEnd", el, fn, args, scope, buffer);}},onTouchLeave: function (el, fn, args, scope, buffer, doEmulate) {if (tsc.browser.isTouch) {tsc.event._measureTouchOffset(el);tsc.event._applyEvent("touchleave", el, fn, args, scope, buffer);}if (doEmulate) {tsc.event._emulateTouch("emulateTouchEnd", el, fn, args, scope, buffer);}},_measureTouchOffset: function (el) {if (!el.tscMeasureTouchInited) {el.tscMeasureTouchInited = true;tsc.event.onTouchStart(el, function (el, ev) {if (!ev.touches || ev.touches.length < 1) return;el.tscTouchOffset = {startPageX: ev.touches[0].pageX,startPageY: ev.touches[0].pageY,currentPageX: ev.touches[0].pageX,currentPageY: ev.touches[0].pageY,offsetPageX: 0,offsetPageY: 0
19};}, [el]);tsc.event.onTouchMove(el, function (el, ev) {if (!ev.touches || ev.touches.length < 1) return;el.tscTouchOffset.currentPageX = ev.touches[0].pageX;el.tscTouchOffset.currentPageY = ev.touches[0].pageY;el.tscTouchOffset.offsetPageX = el.tscTouchOffset.currentPageX - el.tscTouchOffset.startPageX;el.tscTouchOffset.offsetPageY = el.tscTouchOffset.currentPageY - el.tscTouchOffset.startPageY;}, [el]);}},_emulateTouch: function (evType, el, fn, args, scope, buffer) {if (buffer) alert('Buffer does not yet work when emulating touch.');if (el !== window) var el = tsc.dom.get(el);tsc.event.onCustom(el, evType, fn, args, scope);if (!el.tscEmulateTouchInited) {el.tscEmulateTouchInited = true;tsc.event.onMouseDown(el, function (el, ev) {el.tscTouchOffset = {startPageX: ev.pageX,startPageY: ev.pageY,currentPageX: ev.pageX,currentPageY: ev.pageY,offsetPageX: 0,offsetPageY: 0
20};tsc.event.onMouseMove(el, tsc.event._emulateTouchMoveFn, [el]);tsc.event.onMouseUp(document.body, tsc.event._emulateTouchEndFn, [el]);if (el.tscTouchOffset) ev.tscTouchOffset = el.tscTouchOffset;tsc.event.fireCustom(el, 'emulateTouchStart', [ev], true);}, [el]);}},_emulateTouchMoveFn: function (el, ev) {el.tscTouchOffset.currentPageX = ev.pageX;el.tscTouchOffset.currentPageY = ev.pageY;el.tscTouchOffset.offsetPageX = el.tscTouchOffset.currentPageX - el.tscTouchOffset.startPageX;el.tscTouchOffset.offsetPageY = el.tscTouchOffset.currentPageY - el.tscTouchOffset.startPageY;if (el.tscTouchOffset) ev.tscTouchOffset = el.tscTouchOffset;tsc.event.fireCustom(el, 'emulateTouchMove', [ev], true);},_emulateTouchEndFn: function (el, ev) {tsc.event.removeEvents(el, "mousemove", tsc.event._emulateTouchMoveFn);
20tsc.event.removeEvents(document.body, "mouseup", tsc.event._emulateTouchEndFn);if (el.tscTouchOffset) ev.tscTouchOffset = el.tscTouchOffset;tsc.event.fireCustom(el, 'emulateTouchEnd', [ev], true);},removeEvents: function (el, evType, fn) {if (el != window) var el = tsc.dom.get(el);if (!evType) {el.tscEvent = {};el.tscEvents = {};} else {if (evType.substring(0, 2) == 'on') evType = evType.substring(2);if (el.tscEvents && el.tscEvents["ev_" + evType]) {if (fn) {for (var i = 0; i < el.tscEvents["ev_" + evType].length; i++) {if (fn.toString() === el.tscEvents["ev_" + evType][i].fn.toString()) {el.tscEvents["ev_" + evType].splice(i, 1);i--;}}} else {el.tscEvents["ev_" + evType] = [];}}if (evType == "onmouseenter" || evType == "onmouseleave") el.tscEvent = {};}},hasEvent: function (el, evType) {if (el != window) var el = tsc.dom.get(el);if (evType.substring(0, 2) == 'on') evType = evType.substring(2);if (el.tscEvents && el.tscEvents["ev_" + evType]) return true;return false;},_applyEvent: function (evType, el, fn, args, scope, buffer) {if (!tsc.dom) alert("2script Error: Events needs the dom.js to be present");if (el !== window) var el = tsc.dom.get(el);if (!el.tscEvents) el.tscEvents = {};if (!el.tscEvents["ev_" + evType]) el.tscEvents["ev_" + evType] = [];el.tscEvents["ev_" + evType].push({fn: fn, args: args, scope: scope, buffer: buffer
21});if (!el.tscEventsInitDone) el.tscEventsInitDone = {};if (!el.tscEventsInitDone["ev_" + evType]) {el.addEventListener(evType, function (eventObj) {if (!eventObj && window.event) eventObj = window.event;var ourEventsRet = tsc.event._doEvent.call(el, evType, eventObj);if (ourEventsRet === false) {tsc.event.preventDefault(eventObj);}}, false);el.tscEventsInitDone["ev_" + evType] = true;}},_doEvent: function (evType, eventObj) {var ret = true;if (!this.tscEvents["ev_" + evType]) return ret;if (this.tscTouchOffset) eventObj.tscTouchOffset = this.tscTouchOffset;for (var i = 0; i < this.tscEvents["ev_" + evType].length; i++) {if (!this.tscEvents["ev_" + evType][i]) continue;var args = [];if (this.tscEvents["ev_" + evType][i].args) {var args = tsc.copyArray(this.tscEvents["ev_" + evType][i].args);}if (eventObj) args.push(eventObj);if (this.tscEvents["ev_" + evType][i].buffer) {tsc.doLater(this.tscEvents["ev_" + evType][i].buffer, function (args, evType, i) {this.tscEvents["ev_" + evType][i].fn.apply(this.tscEvents["ev_" + evType][i].scope || this,args
22);}, [args, evType, i], this, true);} else {var fnRet = this.tscEvents["ev_" + evType][i].fn.apply(this.tscEvents["ev_" + evType][i].scope || this,args
23);if (fnRet === false) ret = false;}}if (ret === false) return false;},onCustom: function (elOrObject, evName, fn, addedArgs, scope, once) {if (typeof elOrObject == "string") {elOrObject = tsc.dom.get(elOrObject);}if (!elOrObject.tscEventsCustom) elOrObject.tscEventsCustom = {};if (!elOrObject.tscEventsCustom[evName]) elOrObject.tscEventsCustom[evName] = [];elOrObject.tscEventsCustom[evName].push({fn: fn, addedArgs: addedArgs, scope: scope, once: once || false
24});},hasCustomListener: function (elOrObject, evName) {if (typeof elOrObject == "string") {elOrObject = tsc.dom.get(elOrObject);}if (elOrObject.tscEventsCustom && elOrObject.tscEventsCustom[evName] && elOrObject.tscEventsCustom[evName].length) return true;return false;},fireCustom: function (elOrObject, evName, args, appendOwnArgs) {if (typeof elOrObject == "string") {elOrObject = tsc.dom.get(elOrObject);}if (!args) args = [];if (elOrObject.tscEventsCustom && elOrObject.tscEventsCustom[evName]) {for (var i = 0; i < elOrObject.tscEventsCustom[evName].length; i++) {if (!elOrObject.tscEventsCustom[evName][i]) continue;if (appendOwnArgs) {var applyArgs = [];if (elOrObject.tscEventsCustom[evName][i].addedArgs) {var applyArgs = tsc.copyArray(elOrObject.tscEventsCustom[evName][i].addedArgs);}if (args) {for (var ai = 0; ai < args.length; ai++) {applyArgs.push(args[ai]);}}} else {var applyArgs = tsc.copyArray(args);if (elOrObject.tscEventsCustom[evName][i].addedArgs) {for (var ai = 0; ai < elOrObject.tscEventsCustom[evName][i].addedArgs.length; ai++) {applyArgs.push(elOrObject.tscEventsCustom[evName][i].addedArgs[ai]);}}}elOrObject.tscEventsCustom[evName][i].fn.apply(elOrObject.tscEventsCustom[evName][i].scope || elOrObject,applyArgs
25);if (elOrObject.tscEventsCustom[evName][i].once) {elOrObject.tscEventsCustom[evName][i] = false;}}}},fireNative: function (el, evName) {var el = tsc.dom.get(el);if (evName.substring(0, 2) == 'on') {evName = evName.substring(2);}var eventClass = "";switch (evName) {case "click": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.
26case "mousedown":
27case "mouseup":
28eventClass = "MouseEvents";break;case "focus":
29case "change":
30case "blur":
31case "select":
32case "input":
33eventClass = "HTMLEvents";break;default:
34throw "tsc.event.fireNative: Can't find eventClass for event: " + evName;break;}var event = document.createEvent(eventClass);event.initEvent(evName, true, true);event.synthetic = true;el.dispatchEvent(event, true);},getMouseXY: function (ev) {if (tsc.browser.isIE) {var scrollXY = tsc.dom.getScrollXY();return {x: ev.clientX + scrollXY[0],y: ev.clientY + scrollXY[1]
35};} else {return { x: ev.pageX, y: ev.pageY };}},preventDefault: function (ev) {if (ev && ev.preventDefault) ev.preventDefault();},stopPropagation: function (ev) {if (ev && ev.stopPropagation) ev.stopPropagation();}};(function () {var readyCb = function () {tsc.event.callMainEventFns('ready');tsc.event.domReady = true;};if (document.readyState === "complete" || document.readyState === "interactive") {readyCb();} else {document.addEventListener("DOMContentLoaded", readyCb);}var windowLoadCb = function () {tsc.event.callMainEventFns('windowLoad');tsc.event.windowLoaded = true;};if (document.readyState === "complete") {windowLoadCb();} else {window.addEventListener('load', windowLoadCb);}})();if (!tsc) var tsc = {};if (!tsc.dom || !tsc.event || !tsc.clone) alert("2script Error: tsc.anim needs the 2script.js, dom.js and event.js to be present");tsc.anim = class {constructor(cfg) {if (cfg) this.setConfig(cfg);}setConfig(cfg) {cfg.el = dg(cfg.el);while (cfg.cssProp.indexOf("-") !== -1) {let ido = cfg.cssProp.indexOf("-");cfg.cssProp = cfg.cssProp.slice(0, ido) + cfg.cssProp.slice(ido + 1, ido + 2).toUpperCase() + cfg.cssProp.slice(ido + 2);}if ((!cfg.hasOwnProperty('unit') || cfg.unit === null || typeof cfg.unit === 'undefined')&& cfg.cssProp !== 'opacity'
36) {cfg.unit = "px";}if (!cfg.hasOwnProperty('duration') || cfg.duration === null || typeof cfg.duration === 'undefined') cfg.duration = 500;if (false && tsc.anim._propertyIsColor(cfg.cssProp)) {cfg.unit = "";}this.cfg = cfg;this.preFnCalled = false;this.stopped = false;this.animProgress = 0.0;}start() {if (this.cfg.startDelay) {tsc.doLater(this.cfg.startDelay, () => {let startDelayBefore = this.cfg.startDelay;this.cfg.startDelay = null;this.start();this.cfg.startDelay = startDelayBefore;});return;}let start = null;let animFrameStep = (timestamp) => {if (this.stopped) return;if (!start) start = timestamp;if (timestamp - start > 0.0) {this.animProgress = (timestamp - start) / this.cfg.duration;}if (this.animProgress < 1.0) {this.updateAnimation();requestAnimationFrame(animFrameStep);} else {this.animProgress = 1.0;this.finalAnimation();}};requestAnimationFrame(animFrameStep);}stop() {this.stopped = true;}updateAnimation() {if (!this.preFnCalled && this.cfg.preFn) {this.cfg.preFn();this.preFnCalled = true;}this.cfg.el.style[this.cfg.cssProp] = this.animValueByTimingFunction() + ('' + (this.cfg.unit || ''));if (this.cfg.updateFn) this.cfg.updateFn();}finalAnimation() {this.cfg.el.style[this.cfg.cssProp] = this.cfg.to + ('' + (this.cfg.unit || ''));if (this.cfg.updateFn) this.cfg.updateFn();if (this.cfg.postFn) this.cfg.postFn();}animValueByTimingFunction() {let scrollAmount = this.cfg.to - this.cfg.from;let factor = 0;switch (this.cfg.timingFunction) {case 'linear':
37factor = this.timingFunctionLinear();break;case 'ease-in':
38factor = this.timingFunctionEaseIn();break;case 'ease':
39case 'ease-in-out':
40factor = this.timingFunctionEaseInOut();break;case 'ease-out':
41default:
42factor = this.timingFunctionEaseOut();break;}return this.cfg.from + (scrollAmount * factor);}timingFunctionLinear() {return this.animProgress;}timingFunctionEaseIn() {return this.animProgress * this.animProgress;}timingFunctionEaseOut() {return 1 - Math.pow(this.animProgress - 1, 2);}timingFunctionEaseInOut() {if (this.animProgress <= 0.5) {return 2 * this.animProgress * this.animProgress;}let t = this.animProgress - 0.5;return 2 * t * (1 - t) + 0.5;}static run(cfg) {let anim = new tsc.anim();let args = cfg.args || [];args.unshift(tsc.dom.autoId(cfg.el).id);if (cfg.preFn) cfg.preFn = cfg.preFn.bind(cfg.scope || anim, ...args);if (cfg.updateFn) cfg.updateFn = cfg.updateFn.bind(cfg.scope || anim, ...args);
42if (cfg.postFn) cfg.postFn = cfg.postFn.bind(cfg.scope || anim, ...args);anim.setConfig(cfg);anim.start();return anim;}static hover(cfg) {if (!cfg.animEl) cfg.animEl = cfg.hoverEl;tsc.event.onReady(function (cfg) {let el = dg(cfg.hoverEl);if (el) {let overCfg = {el: cfg.animEl,cssProp: cfg.cssProp,from: cfg.from,to: cfg.to,duration: cfg.duration,unit: cfg.unit,preFn: cfg.inPreFn || cfg.preFn,postFn: cfg.inPostFn || cfg.postFn,args: cfg.args,scope: cfg.scope
43};tsc.event.onMouseEnter(el, tsc.anim.run, [overCfg]);let outCfg = tsc.clone(overCfg);outCfg.from = cfg.to;outCfg.to = cfg.from;outCfg.preFn = cfg.outPreFn || cfg.preFn;outCfg.postFn = cfg.outPostFn || cfg.postFn;tsc.event.onMouseLeave(el, tsc.anim.run, [outCfg]);}}, [cfg], null, true);}static toggle(cfg) {if (!cfg.animEl) cfg.animEl = cfg.clickEl;if (!cfg.clickEls) cfg.clickEls = [];if (cfg.clickEl) cfg.clickEls.push(cfg.clickEl);tsc.event.onReady(function () {var runEls = [];for (var i = 0; i < cfg.clickEls.length; i++) {var realEls = tsc.dom.getAll(cfg.clickEls[i]);for (var k = 0; k < realEls.length; k++) {runEls.push(realEls[k]);}}for (var i = 0; i < runEls.length; i++) {let clickEl = dg(runEls[i]);if (clickEl) {tsc.event.onClick(clickEl, function (ev) {tsc.event.preventDefault(ev);let animEl = dg(cfg.animEl);if (!animEl._clickCount) animEl._clickCount = 0;let moveCfg = {el: cfg.animEl,cssProp: cfg.cssProp,from: cfg.from,to: cfg.to,duration: cfg.duration,unit: cfg.unit,preFn: cfg.preFn,postFn: cfg.postFn,args: cfg.args,scope: cfg.scope
44};if (animEl._clickCount % 2 == 0) {moveCfg.from = cfg.from;moveCfg.to = cfg.to;moveCfg.preFn = cfg.inPreFn;moveCfg.postFn = cfg.inPostFn;} else {moveCfg.from = cfg.to;moveCfg.to = cfg.from;moveCfg.preFn = cfg.outPreFn;moveCfg.postFn = cfg.outPostFn;}tsc.anim.run(moveCfg);animEl._clickCount += 1;});}}}, [], null, true);}static flash(cfg) {cfg.el = dg(cfg.el);cfg.el.tscAnimFlashCount = 0;if (cfg.el.tscAnimFlashInterval) {clearInterval(cfg.el.tscAnimFlashInterval);cfg.el.tscAnimFlashInterval = null;}let flashDelegate = () => {tsc.anim.run({el: cfg.el,cssProp: "opacity",from: 1,to: 0.2,duration: cfg.duration || 300,postFn: function () {tsc.anim.run({el: cfg.el,cssProp: "opacity",from: 0.2,to: 1,duration: cfg.duration || 300
45});}});cfg.el.tscAnimFlashCount++;if (cfg.times && cfg.el.tscAnimFlashCount >= cfg.times) {clearInterval(cfg.el.tscAnimFlashInterval);cfg.el.tscAnimFlashInterval = null;}};cfg.el.tscAnimFlashInterval = setInterval(flashDelegate, (cfg.wait || 1900) + 2 * (cfg.duration || 300));}static move(cfg) {var sourceEl = dg(cfg.el);var sourcePos = tsc.dom.getXY(sourceEl);var targetEl = dg(cfg.targetEl);var targetPos = tsc.dom.getXY(targetEl);var sourceParent = sourceEl;while (sourceParent && sourceParent.tagName.toLowerCase() != 'html') {if (window.getComputedStyle(sourceParent).position == "fixed") {sourcePos[0] += tsc.dom.getScrollXY()[0];sourcePos[1] += tsc.dom.getScrollXY()[1];}if (window.getComputedStyle(sourceParent).overflow.match(/^(auto|scroll)/)) {sourcePos[0] -= tsc.dom.getScrollXY(sourceParent)[0];sourcePos[1] -= tsc.dom.getScrollXY(sourceParent)[1];}sourceParent = sourceParent.parentNode;}var targetParent = targetEl;while (targetParent && targetParent.tagName.toLowerCase() != 'html') {if (window.getComputedStyle(targetParent).position == "fixed") {targetPos[0] += tsc.dom.getScrollXY()[0];targetPos[1] += tsc.dom.getScrollXY()[1];}if (window.getComputedStyle(targetParent).overflow.match(/^(auto|scroll)/)) {targetPos[0] -= tsc.dom.getScrollXY(targetParent)[0];targetPos[1] -= tsc.dom.getScrollXY(targetParent)[1];}targetParent = targetParent.parentNode;}var animElCopied = sourceEl.cloneNode(true);animElCopied.id = '';animElCopied.style.position = 'absolute';animElCopied.style.zIndex = 55;animElCopied.style.left = sourcePos[0] + 'px';animElCopied.style.top = (sourcePos[1]) + 'px';animElCopied.style.width = tsc.dom.getWidth(sourceEl) + 'px';animElCopied.style.height = tsc.dom.getHeight(sourceEl) + 'px';animElCopied.style.overflow = 'hidden';animElCopied.style.transition = 'none';animElCopied.className = animElCopied.className.replace(/[wh]-[0-9]+\s*
45/g, '');document.body.appendChild(animElCopied);tsc.dom.autoId(animElCopied);tsc.anim.run({ el: animElCopied, cssProp: "left", from: sourcePos[0], to: targetPos[0] });tsc.anim.run({ el: animElCopied, cssProp: "top", from: sourcePos[1], to: targetPos[1] });tsc.anim.run({ el: animElCopied, cssProp: "width", from: tsc.dom.getWidth(sourceEl), to: tsc.dom.getWidth(targetEl) });tsc.anim.run({ el: animElCopied, cssProp: "height", from: tsc.dom.getHeight(sourceEl), to: tsc.dom.getHeight(targetEl) });tsc.anim.run({el: animElCopied, cssProp: "opacity", from: 1, to: 0, duration: 1000, postFn: function () {tsc.dom.removeNode(animElCopied);}});}};if (!tsc || !tsc.doLater) alert("2script Error: Window needs the 2script.js to be present");if (!tsc.dom) alert("2script Error: Window needs the dom.js to be present");if (!tsc) var tsc = {};tsc.window = {_scrollTimeouts: [],bootstrapBreakpoints: [
46{ name: 'xxl', from: 1400 },{ name: 'xl', from: 1200 },{ name: 'lg', from: 992 },{ name: 'md', from: 768 },{ name: 'sm', from: 576 },{ name: 'xs', from: 0 }],getBootstrapBreakpoint: function () {var iw = tsc.window.getInnerWidth();for (var i = 0; i < tsc.window.bootstrapBreakpoints.length; i++) {if (iw >= tsc.window.bootstrapBreakpoints[i].from) return tsc.window.bootstrapBreakpoints[i].name;}return null;},scrollBy: function (x, y, el) {if (x == 0 && y == 0) return;if (el && el !== window) var el = dg(el);if (!el) var el = window;if (el == window) {var startX = tsc.window.getScrollX();var startY = tsc.window.getScrollY();} else {var startX = el.scrollLeft;var startY = el.scrollTop;}var duration = 400;var start = null;var animFrameStep = function (timestamp) {if (!start) start = timestamp;if (timestamp - start > 0.0) {var progressPercent = (timestamp - start) / duration;} else {var progressPercent = 0;}if (progressPercent < 1.0) {var scrollToX = x * progressPercent + startX;var scrollToY = y * progressPercent + startY;el.scrollTo(scrollToX, scrollToY);requestAnimationFrame(animFrameStep);} else {el.scrollTo(x + startX, y + startY);tsc.doLater(100, el.scrollTo, [x + startX, y + startY], el);}};requestAnimationFrame(animFrameStep);},scrollToBottom: function () {tsc.window.scrollBy(0, tsc.window.getScrollableHeight() - tsc.window.getScrollY());},scrollToTop: function () {tsc.window.scrollToY(0);},scrollToXY: function (x, y) {tsc.window.scrollBy(x - tsc.window.getScrollX(), y - tsc.window.getScrollY());},scrollToX: function (x) {tsc.window.scrollBy(x - tsc.window.getScrollX(), 0);},scrollToY: function (y) {tsc.window.scrollBy(0, y - tsc.window.getScrollY());},scrollToNode: function (el, offsetX, offsetY) {var el = tsc.dom.get(el);var xy = tsc.dom.getXY(el);if (typeof offsetX == "undefined") var offsetX = 0;if (typeof offsetY == "undefined") var offsetY = 0;var toX = xy[0] + offsetX;var toY = xy[1] + offsetY;if (tsc.window.getScrollX() > toX || tsc.window.getScrollX() + tsc.window.getInnerWidth() < toX) {tsc.window.scrollToXY(toX, toY);} else {tsc.window.scrollToY(toY);}},getScrollX: function () {if (window.pageXOffset) {return window.pageXOffset;} else if (document.scrollingElement.scrollLeft) {return document.scrollingElement.scrollLeft;}return 0;},getScrollY: function () {if (window.pageYOffset) {return window.pageYOffset;} else if (document.scrollingElement.scrollTop) {return document.scrollingElement.scrollTop;}return 0;},getScrollableHeight: function () {return document.scrollingElement.scrollHeight - tsc.window.getInnerHeight();},getInnerHeight: function () {return window.innerHeight || document.body.clientHeight;},getInnerWidth: function () {return window.innerWidth || document.body.clientWidth;},elementInViewport: function (el) {var el = tsc.dom.get(el);var viewportTopY = tsc.window.getScrollY(),viewportBottomY = Math.round(tsc.window.getScrollY() + tsc.window.getInnerHeight()),elTopY = tsc.dom.getXY(el)[1],elBottomY = tsc.dom.getXY(el)[1] + tsc.dom.getHeight(el);if (viewportTopY <= elBottomY && viewportBottomY > elTopY) return true;return false;},addScrollAreas: function () {var topScrollArea = dg(".tscWindowTopScrollArea");if (topScrollArea) return;var topScrollArea = tsc.dom.appendChild(document.body, { tag: "div", cls: "tscWindowTopScrollArea" });topScrollArea.style.position = "fixed";topScrollArea.style.top = "0px";
46topScrollArea.style.left = "0px";topScrollArea.style.zIndex = 60;topScrollArea.style.width = "100%";topScrollArea.style.height = "50px";tsc.event.onMouseEnter(topScrollArea, tsc.window._scrollAreasStartScroll, ["up"]);tsc.event.onDragEnter(topScrollArea, tsc.window._scrollAreasStartScroll, ["up"]);tsc.event.onMouseMove(topScrollArea, tsc.window._scrollAreasSetSpeedMulti);tsc.event.onDragOver(topScrollArea, tsc.window._scrollAreasSetSpeedMulti);tsc.event.onMouseLeave(topScrollArea, tsc.window._scrollAreasStopScroll, ["up"]);tsc.event.onDragLeave(topScrollArea, tsc.window._scrollAreasStopScroll, ["up"]);var bottomScrollArea = tsc.dom.appendChild(document.body, { tag: "div", cls: "tscWindowBottomScrollArea" });bottomScrollArea.style.position = "fixed";bottomScrollArea.style.bottom = "0px";bottomScrollArea.style.left = "0px";bottomScrollArea.style.zIndex = 60;bottomScrollArea.style.width = "100%";bottomScrollArea.style.height = "50px";tsc.event.onMouseEnter(bottomScrollArea, tsc.window._scrollAreasStartScroll, ["down"]);tsc.event.onDragEnter(bottomScrollArea, tsc.window._scrollAreasStartScroll, ["down"]);tsc.event.onMouseMove(bottomScrollArea, tsc.window._scrollAreasSetSpeedMulti);tsc.event.onDragOver(bottomScrollArea, tsc.window._scrollAreasSetSpeedMulti);tsc.event.onMouseLeave(bottomScrollArea, tsc.window._scrollAreasStopScroll, ["down"]);tsc.event.onDragLeave(bottomScrollArea, tsc.window._scrollAreasStopScroll, ["down"]);tsc.event.onScroll(document.body, tsc.window._scrollAreasCheckVisibility, [], window, 30);tsc.window._scrollAreasCheckVisibility();},removeScrollAreas: function () {var topScrollArea = dg(".tscWindowTopScrollArea");if (topScrollArea) {tsc.event.removeEvents(topScrollArea);tsc.dom.removeNode(topScrollArea);}var bottomScrollArea = dg(".tscWindowBottomScrollArea");if (bottomScrollArea) {tsc.event.removeEvents(bottomScrollArea);tsc.dom.removeNode(bottomScrollArea);}tsc.window._scrollAreasStopScroll("up");tsc.window._scrollAreasStopScroll("down");tsc.event.removeEvents(document.body, "onscroll", tsc.window._scrollAreasCheckVisibility);},_scrollAreasStopScrolling: false,_scrollAreasIsScrolling: false,_scrollAreasSpeedMulti: 1.0,_scrollAreasAreaHeight: null,_scrollAreasSetSpeedMulti: function (ev) {if (tsc.window._scrollAreasAreaHeight === null) {var el = dg(".tscWindowBottomScrollArea");if (!el) var el = dg(".tscWindowTopScrollArea");if (el) tsc.window._scrollAreasAreaHeight = tsc.dom.getHeight(el);}if (tsc.window._scrollAreasAreaHeight > 0) {if (ev.clientY <= tsc.window._scrollAreasAreaHeight) {tsc.window._scrollAreasSpeedMulti = 0.5 + ((tsc.window._scrollAreasAreaHeight - ev.clientY) / tsc.window._scrollAreasAreaHeight);} else {tsc.window._scrollAreasSpeedMulti = 0.5 + (Math.abs((tsc.window.getInnerHeight() - ev.clientY) - tsc.window._scrollAreasAreaHeight) / tsc.window._scrollAreasAreaHeight);}} else {tsc.window._scrollAreasSpeedMulti = 1.0;}},_scrollAreasStartScroll: function (direction, ev) {if (!tsc.window._scrollAreasIsScrolling) {tsc.window._scrollAreasIsScrolling = direction;var supportsBehavior = 'scrollBehavior' in document.documentElement.style;var lastTimestamp = null;var pxPerMillisec = direction == "up" ? -0.5 : 0.5;var animFrameStep = function (timestamp, el) {if (tsc.window._scrollAreasStopScrolling) {tsc.window._scrollAreasStopScrolling = false;tsc.window._scrollAreasIsScrolling = false;return;}if (!lastTimestamp) lastTimestamp = timestamp;var scrollByY = (pxPerMillisec * tsc.window._scrollAreasSpeedMulti) * (timestamp - lastTimestamp);if (supportsBehavior) {window.scrollBy({ left: 0, top: scrollByY, behavior: 'instant' });} else {window.scrollBy(0, scrollByY);}tsc.doLater(100, tsc.window._scrollAreasCheckVisibility);requestAnimationFrame(animFrameStep);lastTimestamp = timestamp;};requestAnimationFrame(animFrameStep);tsc.doLater(100, tsc.window._scrollAreasCheckVisibility);}},_scrollAreasStopScroll: function (direction) {if (tsc.window._scrollAreasIsScrolling && direction == tsc.window._scrollAreasIsScrolling) {tsc.window._scrollAreasStopScrolling = true;}},_scrollAreasCheckVisibility: function () {if (tsc.window.getScrollY() >= tsc.window.getScrollableHeight()) {tsc.window._scrollAreasStopScroll("down");var el = dg(".tscWindowBottomScrollArea");if (el) el.style.display = "none";} else {var el = dg(".tscWindowBottomScrollArea");if (el && el.style.display != "block") el.style.display = "block";}if (tsc.window.getScrollY() <= 0) {tsc.window._scrollAreasStopScroll("up");var el = dg(".tscWindowTopScrollArea");if (el) el.style.display = "none";} else {var el = dg(".tscWindowTopScrollArea");if (el && el.style.display != "block") el.style.display = "block";}},historyBackIfSameDomain: function (ev) {if (!ev) throw "Event objected needed as first argument. Call example: <a href=\"/\" onclick=\"tsc.window.historyBackIfSameDomain(event);\">";if (document.referrer) {var parser = document.createElement('a');parser.href = document.referrer;if (location.hostname == parser.hostname) {tsc.event.preventDefault(ev);window.history.back();}}}};if (!tsc.win) tsc.win = tsc.window;if (!tsc) var tsc = {};tsc.ajax = {activeConnections: 0,request: function (url, vars, callback, cfg) {if (!cfg) var cfg = {};if (typeof vars != "object") {throw "2script ajax error: vars must be of type object, e.g. { foo: 'bar' }";}if (vars instanceof FormData) {var content = vars;cfg.method = 'post';} else {var content = "";for (var i in vars) { content += (content.length ? "&" : "") + i + "=" + encodeURIComponent(vars[i]); }}var method = cfg.method || (content.length > 100 || cfg.isUpload ? "post" : "get");var req = tsc.ajax._requestObject();req.onreadystatechange = function () {if (req.readyState == 4) {if (tsc.event) tsc.event.fireCustom(tsc.ajax, "afterRequest", [req.responseText, req]);if (req.status == 200) {if (reqTimeout) window.clearTimeout(reqTimeout);if (typeof callback == "function") {if (cfg && cfg.scope && !cfg.callbackArgs) {callback.call(cfg.scope, req.responseText, req);} else if (cfg && cfg.callbackArgs) {var callbackArgs = cfg.callbackArgs;callbackArgs.unshift(req.responseText, req);callback.apply(cfg.scope || window, callbackArgs);} else {callback(req.responseText, req);}}} else if (req.status == 0) {} else {throw "2script error: ajax request returned an error. status: " + req.status + " statusText: " + req.statusText;}tsc.ajax.activeConnections -= 1;if (tsc.event && tsc.ajax.activeConnections <= 0) {tsc.event.fireCustom(tsc.ajax, "allRequestsFinished", []);}}};if (method == "get") url += (url.indexOf("?") >= 0 ? "&" : "?") + content;req.open(method, url, true);if (!cfg.isUpload && !(vars instanceof FormData)) {req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");}
46if (cfg.headers) {cfg.headers.forEach(function (header) {var headerName = header.slice(0, header.indexOf(':'));var headerValue = header.slice(header.indexOf(':') + 1);req.setRequestHeader(tsc.trim(headerName), tsc.trim(headerValue));});}if (cfg.uploadProgressCallback) {req.upload.onprogress = function (ev) {cfg.uploadProgressCallback.apply(cfg.uploadProgressCallbackScope || window, [ev]);};}req.send(method == "post" ? content : null);tsc.ajax.activeConnections += 1;if (cfg.timeout) {var reqTimeout = tsc.doLater(cfg.timeout * 1000, tsc.ajax.timeout, [req, cfg || null]);}return req;},timeout: function (ajaxReq, cfg) {ajaxReq.abort();if (cfg && cfg.timeoutCallback && typeof cfg.timeoutCallback == "function") {var timeoutCallbackScope = window;if (cfg.timeoutCallbackScope) {timeoutCallbackScope = cfg.timeoutCallbackScope;} else if (cfg.scope) {timeoutCallbackScope = cfg.scope;}if (timeoutCallbackScope && !cfg.timeoutCallbackArgs) {cfg.timeoutCallback.call(timeoutCallbackScope, ajaxReq);} else if (cfg && cfg.timeoutCallbackArgs) {var timeoutCallbackArgs = cfg.timeoutCallbackArgs;timeoutCallbackArgs.unshift(ajaxReq);cfg.timeoutCallback.apply(timeoutCallbackScope, timeoutCallbackArgs);} else {cfg.timeoutCallback(ajaxReq);}}},_requestObject: function () {var req;try {req = new XMLHttpRequest();} catch (e) {try {req = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try {req = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {throw "2script error: can't determine ajax request object.";}}}return req;},processAjaxLoader: function (loader) {tsc.ajax.request(loader.getAttribute('data-tsc-ajax-url'), {}, function (responseText, req) {var ret = JSON.parse(responseText);if (ret.status) {tsc.event.fireCustom(tsc.ajax, 'tscAjaxReplaceBefore');var replaceSelector = loader.getAttribute('data-tsc-ajax-replaceselector') ? loader.getAttribute('data-tsc-ajax-replaceselector') : loader;var replaceEl = dg(replaceSelector);var wrapper = document.createElement('div');wrapper.style.opacity = 0;wrapper.innerHTML = ret.html;tsc.anim.run({el: replaceEl, cssProp: 'opacity', from: 1, to: 0, postFn: function () {replaceEl.insertAdjacentElement('beforebegin', wrapper);tsc.dom.removeNode(replaceEl);tsc.anim.run({el: wrapper, cssProp: 'opacity', from: 0, to: 1, postFn: function () {wrapper.insertAdjacentHTML('beforebegin', ret.html);tsc.dom.removeNode(wrapper);tsc.event.callMainEventFns();tsc.event.fireCustom(tsc.ajax, 'tscAjaxReplaced');}});}});}});}};tsc.event.onReady(function () {var loaders = tsc.dom.getAll('*[data-tsc-ajax-url]');for (var i = 0; i < loaders.length; i++) {if (loaders[i].loaderInited) continue;loaders[i].loaderInited = true;tsc.ajax.processAjaxLoader(loaders[i]);}});if (!tsc || !tsc.dom) alert("2script Error: tsc.dom.selection needs tsc.dom to be present");tsc.dom.getSelection = function (el) {var e = tsc.dom.get(el);if ("selectionStart" in e) {var l = e.selectionEnd - e.selectionStart;return { start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.slice(e.selectionStart, l + e.selectionStart) };} else if (document.selection) {e.focus();var r = document.selection.createRange();var tr = e.createTextRange();var tr2 = tr.duplicate();tr2.moveToBookmark(r.getBookmark());tr.setEndPoint("EndToStart", tr2);if (r == null || tr == null) return { start: e.value.length, end: e.value.length, length: 0, text: "" };var text_part = r.text.replace(/[\r\n]/g, '.');var text_whole = e.value.replace(/[\r\n]/g, '.');var the_start = text_whole.indexOf(text_part, tr.text.length);return { start: the_start, end: the_start + text_part.length, length: text_part.length, text: r.text };}else return { start: e.value.length, end: e.value.length, length: 0, text: "" };};tsc.dom.replaceSelection = function (el, replaceStr) {var e = tsc.dom.get(el);selection = tsc.dom.getSelection(e);var startPos = selection.start;var endPos = startPos + replaceStr.length;e.value = e.value.slice(0, startPos) + replaceStr + e.value.slice(selection.end, e.value.length + selection.end);tsc.dom.setSelection(el, startPos, endPos);return { start: startPos, end: endPos, length: replaceStr.length, text: replaceStr };};tsc.dom.setSelection = function (el, startPos, endPos) {var e = tsc.dom.get(el);if ("selectionStart" in e) {e.focus();e.selectionStart = startPos;e.selectionEnd = endPos;} else if (document.selection) {e.focus();var tr = e.createTextRange();var stopIt = startPos;for (i = 0; i < stopIt; i++) if (e.value[i].search(/[\r\n]/) != -1) startPos = startPos - .5;stopIt = endPos;for (i = 0; i < stopIt; i++) if (e.value[i].search(/[\r\n]/) != -1) endPos = endPos - .5;tr.moveEnd("textedit", -1);tr.moveStart("character", startPos);tr.moveEnd("character", endPos - startPos);tr.select();}return tsc.dom.getSelection(el);};tsc.dom.wrapSelection = function (el, leftStr, rightStr, selOffset, selLength) {var selText = tsc.dom.getSelection(el).text;var selection = tsc.dom.replaceSelection(el, leftStr + selText + rightStr);if (selOffset !== undefined && selLength !== undefined) selection = tsc.dom.setSelection(el, selection.start + selOffset, selection.start + selOffset + selLength);else if (selText == "") selection = tsc.dom.setSelection(el, selection.start + leftStr.length, selection.start + leftStr.length);return selection;};
46if (!tsc) var tsc = {};if (!tsc.ui) tsc.ui = {};if (!tsc.event) alert("2script Error: tsc.ui needs the event.js to be present");if (!tsc.dom) alert("2script Error: tsc.ui needs the dom.js to be present");if (!tsc.window) alert("2script Error: tsc.ui needs the window.js to be present");tsc.ui.notification = function (config, ev) {this.config = config;if (!this.config.type) this.config.type = "window";if (!this.config.style) this.config.style = "default";if (typeof this.config.closable == 'undefined') this.config.closable = true;if (ev) {this.config.x = tsc.event.getMouseXY(ev).x;this.config.y = tsc.event.getMouseXY(ev).y;}if (typeof this.config.anim == 'undefined') this.config.anim = true;if (this.config.single) tsc.ui.notification.destroyAll();tsc.ui.notification.objects.push(this);this.dom = tsc.dom.appendChild(document.body, { tag: "div", cls: "tscNotification " + this.config.type + " " + this.config.style });var middleWrapper = tsc.dom.appendChild(this.dom, { tag: "div", cls: "tscUiNotificationMiddleWrapper" });var innerWrapper = tsc.dom.appendChild(middleWrapper, { tag: "div", cls: "tscUiNotificationMiddleWrapperInner" });this.innerContent = tsc.dom.appendChild(innerWrapper, { tag: "div", cls: "tscUiNotificationMiddleWrapperInnerContent" });if (this.config.anim) tsc.anim.run({ el: this.dom, cssProp: 'opacity', from: 0, to: 1, duration: 300 });if (this.config.header) this.setHeader(this.config.header);this.setContent(this.config.content);if (this.config.input) this.setInput(this.config.input);if (this.config.warning) this.setWarning(this.config.warning);this.addButtons();if (this.config.type == "context") {var setX = this.config.x;if (setX + tsc.dom.getWidth(this.innerContent) >= tsc.window.getInnerWidth()) setX = (setX - tsc.dom.getWidth(this.innerContent));var setY = this.config.y;if (setY + tsc.dom.getHeight(this.innerContent) >= tsc.window.getInnerHeight()) {if (tsc.dom.getHeight(this.innerContent) > tsc.window.getInnerHeight() * .5) {setY = tsc.window.getScrollY() + 20;} else {setY = (setY - tsc.dom.getHeight(this.innerContent));}}tsc.dom.setXY(this.dom, setX, setY);}if (this.config.onReady) this.config.onReady(this);};tsc.ui.notification.prototype = {setHeader: function (innerHTML) {this.header = this.header ?? tsc.dom.appendChild(this.innerContent, { tag: "div", cls: "tscUiNotificationHeader", innerHTML: innerHTML });this.header.innerHTML = innerHTML;},setContent: function (htmlOrNodeConfig) {this.content = this.content ?? tsc.dom.appendChild(this.innerContent, { tag: "div", cls: "tscUiNotificationContent" });if (typeof htmlOrNodeConfig == "string") {this.content.innerHTML = htmlOrNodeConfig || "";} else if (typeof htmlOrNodeConfig == "object") {tsc.dom.appendChild(this.content, htmlOrNodeConfig);}},setInput: function (config) {this.input = this.input ?? tsc.dom.appendChild(this.innerContent, { tag: "div", cls: "tscUiNotificationInputWrapper" });if (this.input.element) {this.input.element.value = (config.value) ? config.value : this.input.element.value;if (!config.label) return;this.input.label = (this.input.label) ? this.input.label : tsc.dom.prependChild(this.input, { tag: "label", cls: "tscUiNotificationLabel", for: 'tuniid', innerHTML: config.label });this.input.label.innerHTML = (config.label) ? config.label : this.input.label.innerHTML;} else {this.input.element = tsc.dom.appendChild(this.input, { tag: "input", cls: "tscUiNotificationInput", type: 'text', value: (config.value) ? config.value : '', id: 'tuniid' });if (!config.label) return;this.input.label = tsc.dom.prependChild(this.input, { tag: "label", cls: "tscUiNotificationLabel", for: 'tuniid', innerHTML: config.label });}},setWarning: function (innerHTML) {if (!this.warning && this.buttonWrapper) {const warning = document.createElement('div');warning.classList.add("tscUiNotificationWarning", ((this.config.style != 'default') ? this.config.style : 'primary'));this.warning = tsc.dom.insertBefore(this.buttonWrapper, warning);} else if (!this.warning) {this.warning = tsc.dom.appendChild(this.innerContent, { tag: "div", cls: "tscUiNotificationWarning" });}if (!this.warning.message && (this.config.warning || innerHTML)) {const colorClass = (this.config.style != 'danger') ? 'warning' : 'danger';tsc.dom.appendChild(this.warning, { tag: "i", cls: "fa-solid fa-triangle-exclamation text-" + colorClass });const warningBlock = tsc.dom.appendChild(this.warning, {tag: "div",cls: "font-weight-normal",children: [{tag: "span",cls: "text-" + colorClass + " d-block font-weight-bold lh-1 mb-05",innerHTML: xms.trl('Warning', 'Warnung')}]
47});this.warning.message = tsc.dom.appendChild(warningBlock, { tag: "span", innerHTML: innerHTML });} else if (innerHTML && this.warning.message) {this.warning.message.innerHTML = innerHTML;}},getInput: function () {if (this.input.element) return this.input.element;return false;},addButtons: function () {this.addAcceptButtonIf();this.addCancelButtonIf();this.addCloseButtonIf();if (!this.config.closable || !this.config.cancel) return;tsc.event.onClick(this.dom, function (ev) {var target = ev.target || ev.srcElement;var clickedInContent = tsc.dom.getParentNode(".tscUiNotificationMiddleWrapperInner", target);if (target.parentNode && tsc.dom.getParentNode('body', target) && !clickedInContent) this.destroy();}, [], this);},addCloseButtonIf: function () {if (!this.config.closable) return;const closeBtn = tsc.dom.appendChild(this.innerContent,{tag: "a", href: "#", 
47cls: "tscUiNotificationClose", role: "button", children: [
48{ tag: 'span', cls: 'sr-only', innerHTML: tsc.lang.get('NOTIFICATION_BTN_CLOSE') }]
49});tsc.event.onClick(closeBtn, function (ev) {if (ev) tsc.event.preventDefault(ev);this.destroy();}, [], this);tsc.event.onKeyDown(document, function (ev) {if (ev && ev.keyCode && ev.keyCode == 27) this.destroy();}, [], this);},addAcceptButtonIf: function () {if (!this.config.accept) return;if (tsc.dom.get('.tscUiNotificationAccept', this.dom)) return;this.buttonWrapper = this.buttonWrapper ?? tsc.dom.appendChild(this.innerContent, { tag: "div", cls: "tscUiNotificationButtons" });const acceptBtn = tsc.dom.appendChild(this.buttonWrapper, {tag: "button",cls: "tscUiNotificationAccept btn btn-" + ((this.config.style != 'default') ? this.config.style : 'primary'),innerHTML: this.config.accept,});tsc.event.onClick(acceptBtn, function (ev) {if (ev) tsc.event.preventDefault(ev);if (this.config.onAccept) this.config.onAccept(ev, this);}, [], this);tsc.event.onKeyDown(document, function (ev) {if (ev && ev.keyCode && ev.keyCode == 27) this.destroy();if (this.config.onAccept && ev.key === "Enter") this.config.onAccept(ev, this);}, [], this);},addCancelButtonIf: function () {if (!this.config.cancel) return;if (tsc.dom.get('.tscUiNotificationCancel', this.dom)) return;this.buttonWrapper = this.buttonWrapper ?? tsc.dom.appendChild(this.innerContent, { tag: "div", cls: "tscUiNotificationButtons d-flex w-100" });const cancelBtn = tsc.dom.appendChild(this.buttonWrapper, { tag: "button", cls: "tscUiNotificationCancel btn btn-secondary", innerHTML: this.config.cancel });tsc.event.onClick(cancelBtn, function (ev) {if (ev) tsc.event.preventDefault(ev);this.destroy();}, [], this);},destroy: function () {if (this.dom) {if (this.config.anim) {tsc.anim.run({el: this.dom, cssProp: 'opacity', from: 1, to: 0, duration: 300, postFn: function () {tsc.dom.removeNode(this.dom);this.dom = null;}, scope: this
50});} else {tsc.dom.removeNode(this.dom);this.dom = null;}}}};tsc.ui.notification.objects = [];tsc.ui.notification.destroyAll = function () {for (var i = 0; i < tsc.ui.notification.objects.length; i++) {if (tsc.ui.notification.objects[i].dom) {tsc.ui.notification.objects[i].destroy();}}tsc.ui.notification.objects = [];};if (!tsc) var tsc = {};if (!tsc.ui) tsc.ui = {};if (!tsc.event) alert("2script Error: tsc.ui needs the event.js to be present");if (!tsc.dom) alert("2script Error: tsc.ui needs the dom.js to be present");tsc.ui.mask = function (el, config) {this.dom = dg(el);this.domIsBody = (this.dom == dg(document.body));this.mask = null;this.maskContent = null;this.config = config || {};if (typeof this.config.fixed == 'undefined') this.config.fixed = this.domIsBody;if (typeof this.config.content == 'undefined') this.config.content = '';if (typeof this.config.single == 'undefined') this.config.single = false;if (typeof this.config.delay == 'undefined') this.config.delay = false;if (this.config.delay === true) this.config.delay = 300;if (this.config.single) tsc.ui.mask.destroyAll();tsc.ui.mask.objects.push(this);if (this.config.delay) {this.showDelayTimeout = tsc.doLater(this.config.delay, this.show, [], this);} else {this.show();}tsc.event.onResize(window, this.repositionMask, [], this);};tsc.ui.mask.prototype = {show: function () {if (!this.mask) {this.mask = tsc.dom.appendChild(document.body, { tag: "div", cls: "tscUiMask" });}if (this.config.content != '' && !this.maskContent) {this.maskContent = tsc.dom.appendChild(this.mask, { tag: "div", cls: "tscUiMaskContent", innerHTML: this.config.content });}this.mask.style.display = 'block';this.repositionMask();},hide: function () {this.mask.style.display = 'none';},destroy: function () {if (this.showDelayTimeout) {window.clearTimeout(this.showDelayTimeout);}if (this.maskContent) {tsc.dom.removeNode(this.maskContent);this.maskContent = null;}if (this.mask) {tsc.dom.removeNode(this.mask);this.mask = null;}},repositionMask: function () {if (!this.mask) return;if (this.config.fixed) {this.mask.style.position = 'fixed';} else {this.mask.style.position = 'absolute';}if (this.domIsBody && this.config.fixed) {this.mask.style.top = this.mask.style.left = '0';this.mask.style.width = this.mask.style.height = '100%';} else {var xy = tsc.dom.getXY(this.dom);this.mask.style.left = xy[0] + 'px';this.mask.style.top = xy[1] + 'px';this.mask.style.width = tsc.dom.getWidth(this.dom) + 'px';this.mask.style.height = tsc.dom.getHeight(this.dom) + 'px';}}};tsc.ui.mask.objects = [];tsc.ui.mask.destroyAll = function () {for (var i = 0; i < tsc.ui.mask.objects.length; i++) {if (tsc.ui.mask.objects[i].dom) {tsc.ui.mask.objects[i].destroy();}}tsc.ui.mask.objects = [];};if (!tsc) var tsc = {};if (!tsc.ui) tsc.ui = {};if (!tsc.event) alert("2script Error: tsc.ui.lightbox needs the event.js to be present");if (!tsc.dom) alert("2script Error: tsc.ui.lightbox needs the dom.js to be present");if (!tsc.anim) alert("2script Error: tsc.ui.lightbox needs the anim.js to be present");tsc.ui.lightbox = function (config) {this.config = config || {};if (!this.config.items) this.config.items = 1;if (!this.config.hasOwnProperty('carousel')) this.config.carousel = false;if (!this.config.hasOwnProperty('removeContentOnHide')) this.config.removeContentOnHide = true;if (!this.config.hasOwnProperty('maskClickCloses')) this.config.maskClickCloses = true;if (!this.config.hasOwnProperty('closeButton')) this.config.closeButton = true;if (!this.config.hasOwnProperty('closeButtonParentNode')) this.config.closeButtonParentNode = null;if (!this.config.hasOwnProperty('switchArrowsParentNode')) this.config.switchArrowsParentNode = null;if (!this.config.hasOwnProperty('maxWidthPercent')) this.config.maxWidthPercent = "90";if (!this.config.hasOwnProperty('maxHeightPercent')) this.config.maxHeightPercent = "90";this.mask = null;this.dom = null;this.domContent = null;this.prevButton = null;this.nextButton = null;this.closeButton = null;this.index = null;tsc.ui.lightbox.leftRightEscKeyEvents();tsc.event.onCustom(this, 'show', this.setTabindex, [], this);tsc.event.onCustom(this, 'hide', this.setTabindex, [], this);};tsc.ui.lightbox.prototype = {renderIf: function () {if (!this.dom) {this.mask = tsc.dom.appendChild(document.body, {tag: "div", cls: "tscLightboxMask"
51});this.dom = tsc.dom.appendChild(document.body, {tag: "div", cls: "tscLightbox"
52});var outer = tsc.dom.appendChild(this.dom, { tag: "div", cls: "tscLightboxOuter" });var inner = tsc.dom.appendChild(outer, { tag: "div", cls: "tscLightboxInner" });this.domContent = tsc.dom.appendChild(inner, { tag: "div", cls: "tscLightboxContent", role: "dialog" });this.domContent.setAttribute('aria-modal', 'true');this.domContent.setAttribute('aria-label', 'Lightbox');if (this.config.closeButton) {var closeButtonParentNode = inner;if (this.config.closeButtonParentNode && dg(this.config.closeButtonParentNode, this.dom)) {closeButtonParentNode = dg(this.config.closeButtonParentNode, this.dom);}this.closeButton = tsc.dom.appendChild(closeButtonParentNode, {tag: "a", href: "#", 
52cls: "tscLightboxClose", role: "button", children: [
53{ tag: 'span', cls: 'sr-only', innerHTML: tsc.lang.get('LIGHTBOX_BTN_CLOSE') }]
54});}this.domContent.style.maxWidth = this.config.maxWidthPercent + "vw";this.domContent.style.maxHeight = this.config.maxHeightPercent + "vh";if (this.closeButton) {tsc.event.onClick(this.closeButton, function (ev) {tsc.event.preventDefault(ev);tsc.event.stopPropagation(ev);this.hide();}, [], this);}if (this.config.maskClickCloses) {tsc.event.onClick(this.dom, function (ev) {var target = ev.target || ev.srcElement;var clickedInContent = tsc.dom.getParentNode(".tscLightboxContent", target);if (target.parentNode && tsc.dom.getParentNode('body', target) && !clickedInContent) {this.hide();}}, [], this);}if (this.config.items > 1) {var switchArrowsParentNode = this.domContent;if (this.config.switchArrowsParentNode && dg(this.config.switchArrowsParentNode, this.dom)) {switchArrowsParentNode = dg(this.config.switchArrowsParentNode, this.dom);}this.prevButton = tsc.dom.appendChild(switchArrowsParentNode, {tag: "a", href: "#", cls: "tscLightboxPrevious", role: "button", children: [
55{ tag: 'span', cls: 'sr-only', innerHTML: tsc.lang.get('LIGHTBOX_BTN_PREV') }]
56});this.nextButton = tsc.dom.appendChild(switchArrowsParentNode, {tag: "a", href: "#", cls: "tscLightboxNext", role: "button", children: [
57{ tag: 'span', cls: 'sr-only', innerHTML: tsc.lang.get('LIGHTBOX_BTN_NEXT') }]
58});tsc.event.onClick(this.prevButton, function (ev) {tsc.event.preventDefault(ev);tsc.event.stopPropagation(ev);this.prev();this.prevButton.blur();}, [], this);tsc.event.onClick(this.nextButton, function (ev) {tsc.event.preventDefault(ev);tsc.event.stopPropagation(ev);this.next();this.nextButton.blur();}, [], this);}this.mask.style.display = "none";this.dom.style.display = "none";this.dom.tscLightbox = this;}},next: function () {if (this.config.items > 1) {if (this.index < this.config.items - 1 || this.config.carousel) {this.show((this.index + 1) % this.config.items);}}},prev: function () {if (this.config.items > 1) {if (this.index >= 1 || this.config.carousel) {this.show(this.index - 1 >= 0 ? this.index - 1 : this.config.items - 1);}}},reload: function () {this.show(this.index);},hide: function () {tsc.event.fireCustom(this, "beforeHide");tsc.anim.run({el: this.mask, cssProp: "opacity", from: 0.7, to: 0, postFn: function () {this.mask.style.display = "none";}, scope: this
59});tsc.anim.run({el: this.dom, cssProp: "opacity", from: 1, to: 0, postFn: function () {if (this.config.removeContentOnHide) this._removeContent();this.dom.style.display = "none";tsc.event.fireCustom(this, "hide", [this.index, this]);}, scope: this
60});},destroy: function () {if (this.dom) {tsc.dom.removeNode(this.dom);this.dom = null;}if (this.mask) {tsc.dom.removeNode(this.mask);this.mask = null;}},show: function (idx) {this.renderIf();if (this.mask.style.display != "block") {tsc.anim.run({el: this.mask, cssProp: "opacity", from: 0, to: 0.7, preFn: function () {this.mask.style.display = "block";}, scope: this
61});}if (this.dom.style.display != "block") {tsc.anim.run({el: this.dom, cssProp: "opacity", from: 0, to: 1, preFn: function () {this.dom.style.display = "block";}, scope: this
62});}if (typeof idx != "undefined") this.index = idx;else this.index = 0;tsc.event.fireCustom(this, "show", [this.index, this]);this.setButtonVisibility();},setContent: function (nodeOrHtml) {this.renderIf();var oldNodes = this._getContentNodes();for (var i = 0; i < oldNodes.length; i++) {tsc.dom.removeNode(oldNodes[i]);}if (typeof nodeOrHtml == "object") {nodeOrHtml.style.opacity = 0;this.domContent.insertBefore(nodeOrHtml, this.domContent.firstChild);var contentNode = nodeOrHtml;} else {var div = document.createElement("div");div.innerHTML = nodeOrHtml;div.style.opacity = 0;this.domContent.insertBefore(div, this.domContent.firstChild);var contentNode = div;}tsc.anim.run({el: contentNode,cssProp: "opacity",from: 0,to: 1,duration: 500,postFn: function (contentNodeId) {this.domContent.setAttribute('aria-describedby', contentNodeId);},scope: this
63});},isVisible: function () {return (this.dom && this.dom.style.display != "none");},_getContentNodes: function () {var ret = [];for (var i = 0; i < this.domContent.childNodes.length; i++) {var child = this.domContent.childNodes[i];if (child.className && (child.className == "tscLightboxClose" || child.className == "tscLightboxPrevious" || child.className == "tscLightboxNext"
64)) continue;
64ret.push(this.domContent.childNodes[i]);}return ret;},_removeContent: function () {var nodes = this._getContentNodes();for (var i = 0; i < nodes.length; i++) {tsc.dom.removeNode(nodes[i]);}},setButtonVisibility: function () {if (this.prevButton) {if (this.index >= 1 || this.config.carousel) {this.prevButton.style.visibility = "visible";} else {this.prevButton.style.visibility = "hidden";}}if (this.nextButton) {if (this.index < this.config.items - 1 || this.config.carousel) {this.nextButton.style.visibility = "visible";} else {this.nextButton.style.visibility = "hidden";}}if (this.closeButton) {tsc.doLater(0, function () {this.closeButton.focus();}, [], this);}},setTabindex: function () {if (this.isVisible()) {tsc.dom.getAll('[href], input, select, textarea, button, iframe, object, embed, [tabindex]:not([tabindex="-1"])', document.body).forEach(function (tabableEl) {if (tsc.dom.getParentNode('.tscLightbox', tabableEl)) return;tabableEl.setAttribute('tabindex', '-1');tabableEl.setAttribute('data-temporaryModifiedTabindex' + this.dom.id, true);}, this);} else {tsc.dom.getAll('[data-temporaryModifiedTabindex' + this.dom.id + ']', document.body).forEach(function (tabableEl) {tabableEl.removeAttribute('tabindex');tabableEl.removeAttribute('data-temporaryModifiedTabindex' + this.dom.id);}, this);}}};tsc.ui.lightbox.leftRightEscKeyEventsInited = false;tsc.ui.lightbox.leftRightEscKeyEvents = function () {if (tsc.ui.lightbox.leftRightEscKeyEventsInited) return;tsc.event.onKeyUp(document.body, function (ev) {if (event.defaultPrevented) return;var targetTag = event.target.tagName.toLowerCase();if (targetTag == 'input' || targetTag == 'textarea' || tsc.dom.getParentNode('form', targetTag)) return;var action = false;if (ev.key == 'ArrowLeft' || ev.keyCode == 37) {action = 'left';}if (ev.key == 'ArrowRight' || ev.keyCode == 39) {action = 'right';}if (ev.key == 'Escape' || ev.keyCode == 27) {action = 'close';}if (action !== false) {tsc.dom.getAll('.tscLightbox').forEach(function (el) {if (!el.tscLightbox || !el.tscLightbox.isVisible()) return;switch (action) {case 'left':
65el.tscLightbox.prev();tsc.event.preventDefault(ev);break;case 'right':
66el.tscLightbox.next();tsc.event.preventDefault(ev);break;case 'close':
67if (el.tscLightbox.closeButton || el.tscLightbox.maskClickCloses) {el.tscLightbox.hide();}tsc.event.preventDefault(ev);break;}});}}, [], this);tsc.ui.lightbox.leftRightEscKeyEventsInited = true;};if (!tsc) var tsc = {};if (!tsc.ui) tsc.ui = {};if (!tsc.ui.gallery) tsc.ui.gallery = {};if (!tsc.event) alert("2script Error: tsc.ui needs the event.js to be present");if (!tsc.dom) alert("2script Error: tsc.ui needs the dom.js to be present");if (!tsc.anim) alert("2script Error: tsc.ui needs the anim.js to be present");if (!tsc.ui.lightbox) alert("2script Error: tsc.ui.gallery.lightbox needs the ui-lightbox.js to be present");tsc.event.onReady(function () {tsc.ui.gallery.autoInitLightboxes();});tsc.ui.gallery.autoInitLightboxes = function () {var wrappers = tsc.dom.getAll(".tscGalleryLightbox");for (var i = 0; i < wrappers.length; i++) {if (!wrappers[i].tscGalleryLightbox) {tsc.ui.gallery.lightbox(wrappers[i]);}}};tsc.ui.gallery.lightbox = function (wrapper) {wrapper = tsc.dom.get(wrapper);wrapper.tscGalleryLightbox = new tsc.ui.gallery.lightboxObj(wrapper);return wrapper.tscGalleryLightbox;};tsc.ui.gallery.lightboxObj = function (wrapper) {this.dom = tsc.dom.get(wrapper);this.showThumbs = false;this.children = [];let lightboxConfig = {};if (this.dom.hasAttribute('data-carousel')) lightboxConfig.carousel = this.dom.dataset.carousel === '1' ? true : false;if (this.dom.hasAttribute('data-remove-content-on-hide')) lightboxConfig.removeContentOnHide = this.dom.dataset.removeContentOnHide === '0' ? false : true;if (this.dom.hasAttribute('data-mask-click-closes')) lightboxConfig.maskClickCloses = this.dom.dataset.maskClickCloses === '0' ? false : true;if (this.dom.hasAttribute('data-close-button')) lightboxConfig.closeButton = this.dom.dataset.closeButton === '0' ? false : true;if (this.dom.hasAttribute('data-close-button-parent-node')) lightboxConfig.closeButtonParentNode = this.dom.dataset.closeButtonParentNode;if (this.dom.hasAttribute('data-switch-arrows-parent-node')) lightboxConfig.switchArrowsParentNode = this.dom.dataset.switchArrowsParentNode;if (this.dom.hasAttribute('data-max-width-percent')) lightboxConfig.maxWidthPercent = this.dom.dataset.maxWidthPercent;if (this.dom.hasAttribute('data-max-height-percent')) lightboxConfig.maxHeightPercent = this.dom.dataset.maxHeightPercent;if (this.dom.getAttribute("data-tsc-gallery")) {if (this.dom.getAttribute("data-tsc-gallery").match("thumbs")) {this.showThumbs = true;}}var children = tsc.dom.getAll("a", this.dom);for (var i = 0; i < children.length; i++) {var img = dg("img,video", children[i]);if (!img) continue;this.children.push({aNode: children[i],imgNode: img,srcLarge: this._getSizedImageSrcForViewport(children[i].href),caption: img.alt
68});}lightboxConfig.items = this.children.length;this.lightbox = new tsc.ui.lightbox(lightboxConfig);tsc.event.onCustom(this.lightbox, "show", this.onLightboxShow, [], this);tsc.event.onCustom(this.lightbox, "enter", this.onLightboxEnter, [], this);tsc.event.onCustom(this.lightbox, "leave", this.onLightboxLeave, [], this);for (var i = 0; i < this.children.length; i++) {tsc.event.onClick(this.children[i].aNode, function (idx) {this.lightbox.show(idx);return false;}, [i], this);}tsc.event.onResize(window, this.resizeImageSrcsForViewport, [], this, 500);};tsc.ui.gallery.lightboxObj.prototype = {onLightboxShow: function (idx) {var child = this.children[idx];var div = document.createElement("div");var figure = tsc.dom.appendChild(div, { tag: "figure" });if (this.showThumbs) {var thumbsWrapper = tsc.dom.appendChild(div, { tag: "ul", cls: "thumbsWrapper" });for (var i = 0; i < this.children.length; i++) {var thumbli = tsc.dom.appendChild(thumbsWrapper, { tag: "li", cls: (this.lightbox.index == i ? "active" : "") });var thumba = tsc.dom.appendChild(thumbli, { tag: "a", href: "#" });if (this.children[i].imgNode.nodeName.toLowerCase() == 'video') {var clone = this.children[i].imgNode.cloneNode(true);clone.style.height = '75px';thumba.appendChild(clone);}
68 else {tsc.dom.appendChild(thumba, {tag: "img", src: this.children[i].srcLarge.replace(/\/ic-.*?\//, '/ic-75x75-crop/')});}tsc.event.onClick(thumba, function (idx) {this.lightbox.show(idx);}, [i], this);}}if (child.imgNode.nodeName.toLowerCase() == 'video') {var clone = child.imgNode.cloneNode(true);clone.style.maxWidth = '100%';clone.style.maxHeight = '100%';figure.appendChild(clone);} else {tsc.dom.appendChild(figure, { tag: "img", src: child.srcLarge, alt: child.caption });}if (child.caption) {tsc.dom.appendChild(figure, { tag: "figcaption", innerHTML: child.caption });}this.lightbox.setContent(div);tsc.doLater(100, this.preload, [idx], this);},preload: function (idx) {if (idx > 0) {var prevImg = new Image();prevImg.src = this.children[idx - 1].srcLarge;}if (idx < this.children.length - 1) {var nextImg = new Image();nextImg.src = this.children[idx + 1].srcLarge;}},onLightboxEnter: function () {var figcap = tsc.dom.get("figcaption", this.lightbox.domContent);if (!figcap) return false;tsc.anim.run({el: figcap,cssProp: "opacity",from: 0,to: .9
69});},onLightboxLeave: function () {var figcap = tsc.dom.get("figcaption", this.lightbox.domContent);if (!figcap) return false;tsc.anim.run({el: figcap,cssProp: "opacity",from: 0.9,to: 0
70});},resizeImageSrcsForViewport: function () {for (var i = 0; i < this.children.length; i++) {this.children[i].srcLarge = this._getSizedImageSrcForViewport(this.children[i].srcLarge);}if (this.lightbox.isVisible()) {var im = new Image();tsc.event.onLoad(im, function (idx) {if (idx == this.lightbox.index) {this.lightbox.reload();}}, [this.lightbox.index], this);im.src = this.children[this.lightbox.index].srcLarge;}},_getSizedImageSrcForViewport: function (src) {var viewportWidth = document.body.clientWidth;var viewportHeight = document.body.clientHeight;const ratio = (window.devicePixelRatio > 2 ? 2 : window.devicePixelRatio);if (viewportWidth && viewportHeight) {var newWidth = Math.floor(viewportWidth * 0.9 * ratio);var newHeight = Math.floor(viewportHeight * 0.9 * ratio);if (newWidth && newHeight) {return src.replace(/\/ic-.*?\//, '/ic-' + newWidth + 'x' + newHeight + '-bestfit/');}}return src;}};if (!tsc) var tsc = {};if (!tsc.ui) tsc.ui = {};if (!tsc.event) alert("2script Error: tsc.ui needs the event.js to be present");if (!tsc.dom) alert("2script Error: tsc.ui needs the dom.js to be present");tsc.event.onReady(function () {tsc.ui.autoInitTabs();});tsc.ui.tabs = function (wrapper) {var wrapper = tsc.dom.get(wrapper);wrapper.tscTabs = new tsc.ui.tabsObj(wrapper);return wrapper.tscTabs;};tsc.ui.autoInitTabs = function () {var tabsWrapper = tsc.dom.getAll(".tscTabs");for (var i = 0; i < tabsWrapper.length; i++) {if (!tabsWrapper[i].tscTabs) {tsc.ui.tabs(tabsWrapper[i]);}}};tsc.ui.tabsObj = function (wrapper) {this.wrapper = wrapper;this.dom = wrapper;this.navWrapper = dg(".tscTabsNav", this.dom);this.navSelect = dg(".tscTabsNavSelect select", this.dom);this.contentWrapper = dg(".tscTabsContent", this.dom);this.navEls = Array.from(this.navWrapper.children);this.contentEls = Array.from(this.contentWrapper.children);this.activeTab = null;if (this.navEls.length != this.contentEls.length) alert("2script Error: tsc.ui.tabs found " + this.navEls.length + " navEls but " + this.contentEls.length + " contentEls");var activeNavEls = tsc.dom.getAll(".tscTabsNavActive", this.navWrapper);var activeContentEls = tsc.dom.getAll(".tscTabsContentActive", this.contentWrapper);if (activeNavEls.length + activeContentEls.length >= 2) alert("2script Error: tsc.ui.tabs only understands one cssClass of 'tscTabsNavActive' or 'tscTabsContentActive'");for (var i = 0; i < this.navEls.length; i++) {if (tsc.dom.hasClass(this.navEls[i], "tscTabsNavActive") || tsc.dom.hasClass(this.contentEls[i], "tscTabsContentActive")) {var initTabIndex = i;}this.contentEls[i].style.display = "none";}this.contentWrapper.style.display = "block";this.activate(initTabIndex || 0);for (var i = 0; i < this.navEls.length; i++) {tsc.event.onClick(this.navEls[i], this.activate, [i], this);}if (this.navSelect) {tsc.event.onChange(this.navSelect, function () {this.navEls[this.navSelect.options.selectedIndex].click();}, [], this);}};tsc.ui.tabsObj.prototype = {activate: function (idx) {tsc.event.fireCustom(this, "beforeTabChange", [idx]);if (this.activeTab !== null) {this.contentEls[this.activeTab].style.display = "none";tsc.dom.removeClass(this.navEls[this.activeTab], "tscTabsNavActive");tsc.dom.removeClass(this.contentEls[this.activeTab], "tscTabsContentActive");}tsc.dom.addClass(this.navEls[idx], "tscTabsNavActive");tsc.dom.addClass(this.contentEls[idx], "tscTabsContentActive");if (this.navSelect) this.navSelect.options[idx].selected = true;this.contentEls[idx].style.display = "block";this.activeTab = idx;tsc.event.fireCustom(this, "tabChange", [idx]);},addTab: function (tabTitle, contentNodeConfig) {var navNode = tsc.dom.appendChild(this.navWrapper, { tag: 'li', children: [tabTitle] });var contentNode = tsc.dom.appendChild(this.contentWrapper, contentNodeConfig);contentNode.style.display = "none";this.navEls = Array.from(this.navWrapper.children);this.contentEls = Array.from(this.contentWrapper.children);var newIdx = this.navEls.length - 1;tsc.event.onClick(this.navEls[newIdx], this.activate, [newIdx], this);}};if (!tsc) var tsc = {};if (!tsc.event || !tsc.dom || !tsc.anim) alert("2script Error: tsc.ui needs the event.js, dom.js and anim.js to be present");tsc.event.onReady(function () {tsc.timeSelect.autoInit();});tsc.timeSelect = function (input, config) {this.input = tsc.dom.get(input);this.wrapper = null;this.dom = null;this.config = {};this.initConfig(config);this.init();};tsc.timeSelect.prototype = {initConfig: function (config) {this.config = {min: 0,max: 86399,step: 1800,preselect: '12:00'
71};if (this.input.getAttribute('data-tsc-timeselect-min')) this.config.min = this.input.getAttribute('data-tsc-timeselect-min');if (this.input.getAttribute('data-tsc-timeselect-max')) this.config.max = this.input.getAttribute('data-tsc-timeselect-max');if (this.input.getAttribute('data-tsc-timeselect-step')) this.config.step = this.input.getAttribute('data-tsc-timeselect-step');if (this.input.getAttribute('data-tsc-timeselect-preselect')) this.config.preselect = this.input.getAttribute('data-tsc-timeselect-preselect');if (config) {if (config.min) this.config.min = config.min;if (config.max) this.config.max = config.max;if (config.step) this.config.step = config.step;if (config.preselect) this.config.preselect = config.preselect;}this.config.min = tsc.timeSelect.timeToInt(this.config.min);this.config.max = tsc.timeSelect.timeToInt(this.config.max);this.config.step = tsc.timeSelect.timeToInt(this.config.step);this.sanityCheckConfig();},convertTimeToInt: function (time) {},sanityCheckConfig: function () {if (this.config.min < 0 || this.config.min >= 86400) {throw new Error("2script TimeSelect: 'min' config value is '" + this.config.min + "', but must be between 0 and 86399 (00:00:00 to 23:59:59)");}if (this.config.max < 0 || this.config.max >= 86400) {throw new Error("2script TimeSelect: 'max' config value is '" + this.config.max + "', but must be between 0 and 86399 (00:00:00 to 23:59:59)");}if (this.config.step <= 0 || this.config.step >= 86400) {throw new Error("2script TimeSelect: 'step' config value is '" + this.config.step + "', but must be between 1 and 86399 (00:00:01 to 23:59:59)");}},init: function () {this.input.autocomplete = "off";this.wrapper = document.createElement('span');this.input.parentNode.replaceChild(this.wrapper, this.input);this.wrapper.appendChild(this.input);this.wrapper.style.position = "relative";this.wrapper.style.display = "inline-block";this.dom = tsc.dom.appendChild(this.wrapper, { tag: "div", cls: "tscTimeSelectWrapper" });this.hide();if (tsc.dom.getParentNode('.tscLightboxContent', this.input)) {this.dom.style.zIndex = 60;} else {this.dom.style.zIndex = 10;}tsc.event.onFocus(this.input, function () {this.show();}, [], this);tsc.event.onClick(this.input, function () {this.show();}, [], this);tsc.event.onClick(document.body, function (ev) {if (!ev.target.closest('#' + tsc.dom.autoId(this.wrapper).id)) {this.hide();}}, [], this);tsc.event.onKeyUp(this.input, this.markSuggestion, [], this);tsc.event.onKeyDown(this.input, function (ev) {if (this.isOpen()) {if (ev.keyCode == 13) return false;if (ev.keyCode == 38) return false;if (ev.keyCode == 40) return false;}this.hide();}, [], this);tsc.event.onKeyPress(this.input, function (ev) {if (this.isOpen()) {if (ev.keyCode == 13) return false;if (ev.keyCode == 38) return false;if (ev.keyCode == 40) return false;}this.hide();}, [], this);this.rebuildSelectItems();},setMin: function (min) {this.config.min = tsc.timeSelect.timeToInt(min);this.sanityCheckConfig();this.rebuildSelectItems();},setMax: function (max) {this.config.max = tsc.timeSelect.timeToInt(max);this.sanityCheckConfig();this.rebuildSelectItems();},setStep: function (step) {this.config.step = tsc.timeSelect.timeToInt(step);this.sanityCheckConfig();this.rebuildSelectItems();},rebuildSelectItems: function () {tsc.dom.removeNode('a.tscTimeSelectTime', this.dom);var oneSecondExists = false;var items = [];for (var sec = this.config.min; sec <= this.config.max; sec += this.config.step) {items.push(tsc.timeSelect.intToTime(sec, true));if (Math.floor(sec % 60) >= 1) oneSecondExists = true;}
71items.forEach(function (timeItem) {if (!oneSecondExists) timeItem = timeItem.substring(0, 5);var time = tsc.dom.appendChild(this.dom, { tag: "a", cls: "tscTimeSelectTime", href: "#", children: [timeItem] });tsc.event.onClick(time, this._timeSelected, [time], this);tsc.event.onMouseOver(time, this.activateItem, [time], this);}, this);},isOpen: function () {return (this.dom.style.display == "block");},hide: function () {this.dom.style.display = "none";},show: function () {if (this.isOpen()) return false;this.dom.style.display = "block";var allNodes = tsc.dom.getAll("a.tscTimeSelectTime", this.dom);for (var i = 0; i < allNodes.length; i++) {var isActive = false;if (allNodes[i].innerHTML == this.input.value) {isActive = true;} else if (this.input.value == "" && allNodes[i].innerHTML == this.config.preselect) {isActive = true;} else {var inpMatch = this.input.value.match(/^([0-9][0-9]):([0-9][0-9])$/);if (!isActive && inpMatch) {var inpHr = parseInt(inpMatch[1]);var inpMin = parseInt(inpMatch[2]);var nodeMatch = allNodes[i].innerHTML.match(/^([0-9][0-9]):([0-9][0-9])$/);if (inpHr == parseInt(nodeMatch[1]) && inpMin > parseInt(nodeMatch[2]) && inpMin < parseInt(nodeMatch[2]) + 30) {isActive = true;}}}if (isActive) this.activateItem(allNodes[i]);}this.scrollActiveToVisible(true);},activateItem: function (item) {var actives = tsc.dom.getAll("a.hover", this.dom);for (var i = 0; i < actives.length; i++) {if (item === actives[i] && tsc.dom.hasClass(item, "hover")) continue;tsc.dom.removeClass(actives[i], "hover");}tsc.dom.addClass(item, "hover");},scrollActiveToVisible: function (middle) {var active = dg("a.hover", this.dom);if (active) {var visibleIdxFrom = Math.ceil(this.dom.scrollTop / tsc.dom.getHeight(active));var visibleIdxTo = visibleIdxFrom + Math.floor(tsc.dom.getHeight(this.dom) / tsc.dom.getHeight(active));visibleIdxTo -= 2;var allNodes = tsc.dom.getAll("a.tscTimeSelectTime", this.dom);for (var i = 0; i < allNodes.length; i++) {if (allNodes[i] == active) break;}if (middle) {this.dom.scrollTop = (i) * tsc.dom.getHeight(active) - (tsc.dom.getHeight(this.dom) / 2);} else {if (visibleIdxFrom > i) {this.dom.scrollTop = (i - 0.5) * tsc.dom.getHeight(active);} else if (visibleIdxTo < i) {this.dom.scrollTop = ((i + 1.5) * tsc.dom.getHeight(active)) - tsc.dom.getHeight(this.dom);}}}},markSuggestion: function (ev) {if (this.input.value.match(/^[0-9]{4}$/)) {this.input.value = this.input.value.substring(0, 2) + ':' + this.input.value.substring(2, 4);} else if (this.input.value.match(/^[0-9]{2}[^:][0-9]{2}$/)) {this.input.value = this.input.value.substring(0, 2) + ':' + this.input.value.substring(3, 5);}if (!this.isOpen()) return;if (ev.keyCode == 38) {var active = dg('a.hover', this.dom);if (!active) {var lastChild = this.dom.lastChild;if (lastChild.tagName.toLowerCase() != 'a') {lastChild = tsc.dom.getPreviousSibling('a', lastChild);}tsc.dom.addClass(lastChild, 'hover');this.scrollActiveToVisible();} else {var prevSib = tsc.dom.getPreviousSibling('a', active);if (prevSib) {tsc.dom.addClass(prevSib, 'hover');tsc.dom.removeClass(active, 'hover');this.scrollActiveToVisible();}}tsc.event.preventDefault(ev);} else if (ev.keyCode == 40) {var active = dg('a.hover', this.dom);if (!active) {tsc.dom.addClass(dg('a', this.dom), 'hover');this.scrollActiveToVisible();} else {var nextSib = tsc.dom.getNextSibling('a', active);if (nextSib) {tsc.dom.addClass(nextSib, 'hover');tsc.dom.removeClass(active, 'hover');this.scrollActiveToVisible();}}tsc.event.preventDefault(ev);} else if (ev.keyCode == 13) {var active = dg('a.hover', this.dom);if (active) {this._timeSelected(active);}tsc.event.preventDefault(ev);}},_timeSelected: function (link, ev) {if (ev) tsc.event.preventDefault(ev);this.input.value = link.innerHTML;this.input.blur();this.hide();}};tsc.timeSelect.timeToInt = function (time) {if (typeof time == 'string') {if (time.match(':')) {var parts = time.split(':');time = 3600 * parseInt(parts[0]);if (parts[1]) time += 60 * parseInt(parts[1]);if (parts[2]) time += parseInt(parts[2]);} else {time = parseInt(time);}}return time;};tsc.timeSelect.intToTime = function (timeInt, alwaysWithSeconds) {if (typeof timeInt == 'string') {if (timeInt.match(':')) return timeInt;timeInt = parseInt(timeInt);}var hour = Math.floor(timeInt / 3600);var minute = Math.floor((timeInt % 3600) / 60);var second = Math.floor(timeInt % 60);var ret = hour < 10 ? "0" + hour : "" + hour;ret += ':' + (minute < 10 ? "0" + minute : "" + minute);if (alwaysWithSeconds || second > 0) {ret += ':' + (second < 10 ? "0" + second : "" + second);}return ret;};tsc.timeSelect.autoInit = function () {var inputs = tsc.dom.getAll(".tscTimeSelect");for (var i = 0; i < inputs.length; i++) {if (inputs[i].tscTimeSelect) continue;inputs[i].tscTimeSelect = new tsc.timeSelect(inputs[i]);}}
71;if (!tsc) var tsc = {};if (!tsc.event || !tsc.dom || !tsc.anim) console.error("2script Error: tsc.collapsible needs the event.js, dom.js and anim.js to be present");tsc.event.onReady(function () {tsc.collapsible.autoInit();});tsc.collapsible = function (wrapper, config) {this.dom = wrapper;this.animEl = dg(".tscCollapsibleContent", this.dom);this.links = [];tsc.dom.getAll(".tscCollapsibleOpener", this.dom).forEach(function (link) {if (tsc.dom.getParentNode('.tscCollapsibleContent', link) === this.animEl) {return;}this.links.push(link);}, this);if (!this.links || !this.animEl) return;this.openOnContentLoaded = false;this.clickCount = 0;this.currentCallbackTimeout = null;this.config = {};this.initConfig(config);this.init();};tsc.collapsible.prototype = {initConfig: function (config) {this.config = {openIfSelector: '',alwaysOpen: false,initialOpen: false
72};if (this.dom.getAttribute('data-tsc-collapsible-openifselector')) this.config.openIfSelector = this.dom.getAttribute('data-tsc-collapsible-openifselector');if (this.dom.hasAttribute('data-tsc-collapsible-alwaysopen')&& (this.dom.getAttribute('data-tsc-collapsible-alwaysopen') == '1'
73|| this.dom.getAttribute('data-tsc-collapsible-alwaysopen').toLowerCase() == 'true')) {this.config.alwaysOpen = true;}if (this.dom.hasAttribute('data-tsc-collapsible-initialopen')&& (this.dom.getAttribute('data-tsc-collapsible-initialopen') == '1'
74|| this.dom.getAttribute('data-tsc-collapsible-initialopen').toLowerCase() == 'true')) {this.config.initialOpen = true;}if (config) {if (config.openIfSelector) this.config.openIfSelector = config.openIfSelector;if (config.alwaysOpen) this.config.alwaysOpen = config.alwaysOpen;if (config.initialOpen) this.config.initialOpen = config.initialOpen;}},init: function () {if (this.config.initialOpen
75|| (this.config.openIfSelector && dg(this.config.openIfSelector, this.dom))) {tsc.dom.addClass(this.dom, 'tscCollapsibleIsOpen');this.links[0].setAttribute('aria-expanded', 'true');}tsc.dom.autoId(this.animEl);this.animEl.setAttribute('role', 'region');if (this.config.alwaysOpen) {this.expandReplaceImages(this.dom);tsc.dom.addClass(this.dom, "tscCollapsibleIsOpen");for (var j = 0; j < this.links.length; j++) {this.links[j].setAttribute('aria-expanded', 'true');tsc.event.onClick(this.links[j], function (ev) {tsc.event.preventDefault(ev);tsc.event.stopPropagation(ev);});}return;}for (var j = 0; j < this.links.length; j++) {tsc.dom.autoId(this.links[j]);this.links[j].setAttribute('aria-expanded', 'false');this.links[j].setAttribute('aria-controls', this.animEl.id);tsc.event.onClick(this.links[j], function (link, ev) {tsc.event.preventDefault(ev);this.openOnContentLoaded = true;if (!dg('.xmsAjaxLoadWrapper', link)) {tsc.dom.replaceWithAjaxLoad(tsc.dom.appendChild(link, { tag: 'span' }), true);tsc.dom.appendChild(link, { tag: 'span', cls: 'imageReplaceProgress' });}if (this.hasReplaceImages()) {this.expandReplaceImages();}this.runContentLoadedCheck();}, [this.links[j]], this);}var heightStyle = '0px';if (tsc.dom.hasClass(this.dom, 'tscCollapsibleIsOpen')) {tsc.event.fireCustom(tsc.collapsible, 'beforeOpen', [this]);this.expandReplaceImages();heightStyle = 'auto';this.clickCount = 1;tsc.event.fireCustom(tsc.collapsible, 'opened', [this]);}this.animEl.setAttribute('aria-labelledby', this.links[0].id);this.animEl.style.height = heightStyle;tsc.event.onCustom(tsc.collapsible, 'collapsibleContentLoaded', this.initToggle, [], this);},hasReplaceImages: function () {var hasReplaceSrc = dg('img[data-tsc-collapsible-replace-src]', this.dom);var hasReplaceSrcset = dg('img[data-tsc-collapsible-replace-srcset]', this.dom);var hasReplaceBgimage = dg('[data-tsc-collapsible-replace-bgimage]', this.dom);if (hasReplaceSrc || hasReplaceSrcset || hasReplaceBgimage) return true;return false;},expandReplaceImages: function () {tsc.dom.getAll('img[data-tsc-collapsible-replace-src]', this.dom).forEach(function (el) {el.src = el.getAttribute('data-tsc-collapsible-replace-src');el.removeAttribute('data-tsc-collapsible-replace-src');}, this);tsc.dom.getAll('img[data-tsc-collapsible-replace-srcset]', this.dom).forEach(function (el) {el.srcset = el.getAttribute('data-tsc-collapsible-replace-srcset');el.removeAttribute('data-tsc-collapsible-replace-srcset');}, this);tsc.dom.getAll('[data-tsc-collapsible-replace-bgimage]', this.dom).forEach(function (el) {el.setAttribute('style', el.getAttribute('data-tsc-collapsible-replace-bgimage') + ' ' + el.getAttribute('style'));el.removeAttribute('data-tsc-collapsible-replace-bgimage');}, this);},runContentLoadedCheck: function () {var imgs = tsc.dom.getAll("img", this.animEl);this.dom.tscCollapsibleNotTriedImages = imgs.length;if (this.dom.tscCollapsibleNotTriedImages >
75 0) {var decreaseNotTried = tsc.createDelegate(function () {this.dom.tscCollapsibleNotTriedImages -= 1;this.links.forEach(link => {dg('.imageReplaceProgress', link).innerHTML = Math.floor(((imgs.length - this.dom.tscCollapsibleNotTriedImages) / imgs.length) * 100) + '%';});if (this.dom.tscCollapsibleNotTriedImages == 0) {tsc.event.fireCustom(tsc.collapsible, 'collapsibleContentLoaded', [this]);}}, [], this);for (var j = 0; j < imgs.length; j++) {var myImg = new Image();myImg.onload = decreaseNotTried;myImg.onerror = decreaseNotTried;myImg.onabort = decreaseNotTried;tsc.doLater(10, function (qMyImg, qSourceImg) {qMyImg.src = qSourceImg.src;}, [myImg, imgs[j]]);}} else {tsc.event.fireCustom(tsc.collapsible, 'collapsibleContentLoaded', [this]);}},initToggle: function (collapsibleObj) {if (collapsibleObj !== this) return;for (var j = 0; j < this.links.length; j++) {tsc.event.removeEvents(this.links[j], 'onclick');tsc.event.onClick(this.links[j], this.toggle, [], this);}if (this.openOnContentLoaded) {this.openOnContentLoaded = false;for (var j = 0; j < this.links.length; j++) {tsc.dom.removeNode('.xmsAjaxLoadWrapper', this.links[j]);tsc.dom.removeNode('.imageReplaceProgress', this.links[j]);}tsc.doLater(5, function (link) {tsc.event.fireNative(link, 'click');}, [this.links[0]]);}},toggle: function (ev) {if (ev) tsc.event.preventDefault(ev);if (this.currentCallbackTimeout) window.clearTimeout(this.currentCallbackTimeout);var duration = parseFloat(window.getComputedStyle(this.animEl).transitionDuration) * 1000;if (!this.isOpen()) {tsc.dom.addClass(this.dom, "tscCollapsibleIsToggling");tsc.event.fireCustom(tsc.collapsible, 'beforeOpen', [this]);var heightBefore = tsc.dom.getHeight(this.animEl);this.animEl.style.height = 'auto';var targetHeight = tsc.dom.getHeight(this.animEl);requestAnimationFrame(tsc.createDelegate(function () {this.animEl.style.height = heightBefore + 'px';requestAnimationFrame(tsc.createDelegate(function () {this.animEl.style.height = targetHeight + 'px';this.currentCallbackTimeout = tsc.doLater(duration + 50, function () {tsc.dom.addClass(this.dom, "tscCollapsibleIsOpen");this.links[0].setAttribute('aria-expanded', 'true');tsc.dom.removeClass(this.dom, "tscCollapsibleIsToggling");this.animEl.style.height = 'auto';tsc.event.fireCustom(tsc.collapsible, 'opened', [this]);this.currentCallbackTimeout = null;}, [], this);}, [], this));}, [], this));} else {tsc.dom.removeClass(this.dom, "tscCollapsibleIsOpen");this.links[0].setAttribute('aria-expanded', 'false');tsc.dom.addClass(this.dom, "tscCollapsibleIsToggling");tsc.event.fireCustom(tsc.collapsible, 'beforeClose', [this]);requestAnimationFrame(tsc.createDelegate(function () {if (this.animEl.style.height == 'auto') this.animEl.style.height = tsc.dom.getHeight(this.animEl) + 'px';requestAnimationFrame(tsc.createDelegate(function () {this.animEl.style.height = '0px';this.currentCallbackTimeout = tsc.doLater(duration + 50, function () {tsc.dom.removeClass(this.dom, "tscCollapsibleIsToggling");tsc.event.fireCustom(tsc.collapsible, 'closed', [this]);this.currentCallbackTimeout = null;}, [], this);}, [], this));}, [], this));}this.clickCount++;},isOpen: function () {return (this.clickCount % 2 !== 0);}};tsc.collapsible.autoInit = function () {var els = tsc.dom.getAll(".tscCollapsible");for (var i = 0; i < els.length; i++) {if (els[i].tscCollapsible) continue;els[i].tscCollapsible = new tsc.collapsible(els[i]);}};if (!tsc) var tsc = {};if (!tsc.event) console.error("2script Error: tsc.ui needs the event.js to be present");if (!tsc.dom) console.error("2script Error: tsc.ui needs the dom.js to be present");if (!tsc.anim) console.error("2script Error: tsc.ui needs the anim.js to be present");tsc.event.onReady(function () {tsc.slider.autoInit();});tsc.slider = function (dom) {this.dom = dg(dom);tsc.slider.leftRightKeyEvents();this.sliderContents = dg(".tscSliderContents", this.dom);if (!this.sliderContents) this.sliderContents = this.dom;this.sliderThumbs = dg(".tscSliderThumbs", this.dom);this.index = 0;this.children = [];this.sliderType = this.dom.hasAttribute('data-tsc-slider-type') ? this.dom.getAttribute('data-tsc-slider-type') 
75: 'carousel';this.switchBy = this.dom.getAttribute('data-tsc-slider-switch-by') || 'page';this.cutNextBy = parseFloat(this.dom.getAttribute('data-tsc-slider-cut-next-by') || false);if (this.cutNextBy < 0.01) this.cutNextBy = false;this.isAutoplay = !this.dom.hasAttribute('data-tsc-slider-autoplay') || this.dom.getAttribute('data-tsc-slider-autoplay') == '1';this.pauseOnHover = this.dom.getAttribute('data-tsc-slider-pause-on-hover') || '0';this.hasSwitchArrows = !this.dom.hasAttribute('data-tsc-slider-arrows') || this.dom.getAttribute('data-tsc-slider-arrows') == '1';this.switchBulletType = this.dom.getAttribute('data-tsc-slider-bullets') || '';if (this.switchBulletType == '1') this.switchBulletType = 'bullet';this.switchBulletEvent = this.dom.getAttribute('data-tsc-slider-bullets-event') || 'click';this.pagingType = this.dom.getAttribute('data-tsc-slider-paging') || '';if (this.pagingType == '1') this.pagingType = 'item';this.openInLightbox = this.dom.getAttribute('data-tsc-slider-lightbox') == '1';this.hasImageZoom = this.dom.getAttribute('data-tsc-slider-imagezoom') == '1';this.swipeOnDesktop = this.dom.getAttribute('data-tsc-slider-swipeondesktop') == '1';this.showtime = this.dom.hasAttribute('data-tsc-slider-showtime') ? parseInt(this.dom.getAttribute('data-tsc-slider-showtime')) : 7000;this.animtime = this.dom.hasAttribute('data-tsc-slider-animtime') ? parseInt(this.dom.getAttribute('data-tsc-slider-animtime')) : 500;this.animTimingFunction = this.dom.hasAttribute('data-tsc-slider-animtimingfunction') ? this.dom.getAttribute('data-tsc-slider-animtimingfunction') : 'ease-out';this.initialAddTime = this.dom.hasAttribute('data-tsc-slider-initialaddtime') ? parseInt(this.dom.getAttribute('data-tsc-slider-initialaddtime')) : this.animtime;this.doShuffle = this.dom.getAttribute('data-tsc-slider-shuffle') == '1';this.arrowtextNext = this.dom.getAttribute('data-tsc-slider-arrowtext-next') || '';this.arrowtextPrev = this.dom.getAttribute('data-tsc-slider-arrowtext-prev') || '';this.pageItems = {};for (var i = 0; i < tsc.window.bootstrapBreakpoints.length; i++) {var breakpoint = tsc.window.bootstrapBreakpoints[i].name;if (this.dom.getAttribute('data-tsc-slider-page-items-' + breakpoint)) {this.pageItems[breakpoint] = parseInt(this.dom.getAttribute('data-tsc-slider-page-items-' + breakpoint));} else if (this.dom.getAttribute('data-tsc-slider-page-items-all')) {this.pageItems[breakpoint] = parseInt(this.dom.getAttribute('data-tsc-slider-page-items-all'));} else if (this.dom.getAttribute('data-tsc-slider-page-items')) {this.pageItems[breakpoint] = parseInt(this.dom.getAttribute('data-tsc-slider-page-items'));if (breakpoint == 'xs') {this.pageItems[breakpoint] -= 2;} else if (breakpoint == 'sm' || breakpoint == 'md') {this.pageItems[breakpoint] -= 1;}if (this.pageItems[breakpoint] < 1) this.pageItems[breakpoint] = 1;} else {this.pageItems[breakpoint] = 1;}}this._timeout = null;this.bullets = null;this.paging = null;this.touchSkipUntilEnd = false;this.galleryLightbox = null;this.anim = null;this.startDragLeft = null;this.youtubeWillPause = false;this.vimeoWillPause = false;this.youtubeIframeApiState = 0;this.vimeoIframeApiState = 0;this.sliderContents.style.position = "relative";this.sliderContents.style.overflow = "hidden";this.sliderContents.style.whiteSpace = "nowrap";for (var i = 0; i < this.sliderContents.childNodes.length; i++) {if (this.sliderContents.childNodes[i].tagName && !tsc.dom.hasClass(this.sliderContents.childNodes[i], "tscSliderThumbs")) {if (this.sliderContents.childNodes[i].tagName.toLowerCase() == 'img') {console.error("images are not allowed for .tscSliderItem node");continue;}this.children.push(this.sliderContents.childNodes[i]);this.sliderContents.childNodes[i].setAttribute('data-tsc-slider-item-index', this.children.length - 1);}}if (this.children.length == 0) return false;if (this.doShuffle) {this.children = tsc.shuffle(this.children);}if (this.openInLightbox && this.sliderContents) {this.galleryLightbox = tsc.ui.gallery.lightbox(this.sliderContents);tsc.event.onCustom(this.galleryLightbox.lightbox, "show", this.syncSliderToLightbox, [], this);}
75this.children.forEach((sliderChild) => {var foundLazyLoad = dg('[data-tsc-slider-src], [data-tsc-slider-bgimage]', sliderChild);sliderChild.lazyLoadState = foundLazyLoad ? 1 : 0;var imgs = tsc.dom.getAll('img', sliderChild);for (var k = 0; k < imgs.length; k++) {tsc.event.onDragStart(imgs[k], function (ev) {tsc.event.preventDefault(ev);});}tsc.dom.getAll('video', sliderChild).forEach((hasVideo) => {let anySlideVideoPlaying = (child) => {let ret = false;tsc.dom.getAll('video', child).forEach((pausedVideoCheck) => {if (!pausedVideoCheck.paused) ret = true;});return ret;};hasVideo.addEventListener('pause', () => {this.stop();if (this.isAutoplay && !anySlideVideoPlaying(sliderChild)) {this.play();}});hasVideo.addEventListener('ended', (ev) => {this.stop();if (this.isAutoplay && !anySlideVideoPlaying(sliderChild)) {this.next();this.play();}});});});if (this.children.length >= 1) {this.slideNode = document.createElement("div");this.slideNode.style.position = "relative";tsc.dom.insertBefore(this.children[0], this.slideNode);tsc.dom.addClass(this.slideNode, 'clearfix');for (var i = 0; i < this.children.length; i++) {this.slideNode.appendChild(this.children[i]);}}this._measureChildLeftPositions();tsc.event.onResize(window, function () {tsc.doLater(50, function () {for (var i = 0; i < this.children.length; i++) {if (this.children[i].lazyLoadState > 1) this.children[i].lazyLoadState = 1;}this._measureChildLeftPositions();this.activate(this.index);}, [], this);}, [], this, 100);if (this.hasImageZoom) {for (var i = 0; i < this.dom.attributes.length; i++) {if (this.dom.attributes[i].name.indexOf('data-tsc-slider-imagezoom-') != -1) {this.sliderContents.setAttribute(this.dom.attributes[i].name.replace('data-tsc-slider-imagezoom-', 'data-tsc-imagezoom-'),this.dom.attributes[i].value
76);}}this.tscImageZoom = new tsc.imageZoom(this.sliderContents, { image: 'none' });tsc.event.onCustom(tsc.slider, "activate", function (sliderObj) {if (sliderObj !== this) return;var imageZoomPath = null;var foundLazyLoadEl = dg('[data-tsc-slider-src], [data-tsc-slider-bgimage]', this.children[this.index]);if (foundLazyLoadEl) {imageZoomPath = foundLazyLoadEl.getAttribute('data-tsc-slider-src') || foundLazyLoadEl.getAttribute('data-tsc-slider-bgimage');} else if (dg('img', this.children[this.index])) {imageZoomPath = dg('img', this.children[this.index]).src;}if (imageZoomPath) {var match = imageZoomPath.match(/\/ic-([0-9]*)x([0-9]*).*?\//);if (match) {var newWidth = (match[1] ? parseInt(parseInt(match[1]) * this.tscImageZoom.getMagnifyMultiplier()) : '');if (newWidth > 3840) newWidth = 3840;var newHeight = (match[2] ? parseInt(parseInt(match[2]) * this.tscImageZoom.getMagnifyMultiplier()) : '');if (newHeight > 2160) newHeight = 2160;imageZoomPath = imageZoomPath.replace(/\/ic-.*?\//, '/ic-' + newWidth + 'x' + newHeight + '-bestfit/');}this.tscImageZoom.setImage(imageZoomPath);} else if (dg('video', this.children[this.index])) {this.tscImageZoom.setImage(dg('video', this.children[this.index]));}}, [], this);}if (this.hasSwitchArrows) {this.prevButton = tsc.dom.appendChild(this.dom, {tag: "a", href: "#", cls: "sliderArrowPrev", role: "button", innerHTML: this.arrowtextPrev, children: [
77{ tag: 'span', cls: 'sr-only', innerHTML: this.arrowtextPrev || tsc.lang.get('SLIDER_BTN_PREV') }]
78});this.nextButton = tsc.dom.appendChild(this.dom, {tag: "a", href: "#", cls: "sliderArrowNext", role: "button", innerHTML: this.arrowtextNext, children: [
79{ tag: 'span', cls: 'sr-only', innerHTML: this.arrowtextNext || tsc.lang.get('SLIDER_BTN_NEXT') }]
80});this.setArrowVisibility();tsc.event.onClick(this.prevButton, function (ev) {if (ev) tsc.event.preventDefault(ev);this.stop();this.prev();if (this.isAutoplay) this.play();}, [], this);tsc.event.onClick(this.nextButton, function (ev) {if (ev) tsc.event.preventDefault(ev);this.stop();this.next();if (this.isAutoplay) this.play();}, [], this);tsc.doLater(10, function () {this._setArrowsPosition();tsc.event.onResize(window, function () {this._setArrowsPosition();}, [], this, 100);}, [], this);}if (this.sliderThumbs) {this.thumbs = tsc.dom.getAll("a", this.sliderThumbs);for (var i = 0; i < this.thumbs.length; i++) {tsc.event.onClick(this.thumbs[i], function (idx, ev) {if (ev) tsc.event.preventDefault(ev);this.stop();this.activate(idx);if (this.isAutoplay) this.play();}, [i], this);}}for (var i = 0; i < this.children.length; i++) {var videoStarter = dg('[data-tsc-slider-videostarter-embed]', this.children[i]);if (videoStarter) {tsc.event.onClick(videoStarter, function (videoStarter) {videoStarter.insertAdjacentHTML('beforebegin', videoStarter.getAttribute('data-tsc-slider-videostarter-embed'));tsc.dom.removeNode(videoStarter);}, [videoStarter], this);}}this.activate(0);if (this.children.length >
80 1 && !this.hasImageZoom) {tsc.event.onTouchMove(this.slideNode, this.slideTouchMove, [], this, null, this.swipeOnDesktop);tsc.event.onTouchEnd(this.slideNode, this.slideTouchEnd, [], this, null, this.swipeOnDesktop);}if (this.switchBulletType && this.switchBulletType != '0') {this.bullets = new tsc.slider.bullets(this, {renderTo: this.sliderContents,type: this.switchBulletType,activationBy: this.switchBulletEvent,slideItems: this.children.length,data: [] // for image/text mode only
81});}if (this.pagingType) {this.paging = new tsc.slider.paging(this, {renderTo: this.sliderContents,type: this.pagingType
82});}if (this.isAutoplay && this.children.length > this.getPageItems()) {this.intersectionPlayer();}if (this.pauseOnHover === '1') {tsc.event.onMouseEnter(this.dom, ev => {this.stop();});if (this.isAutoplay && this.children.length > this.getPageItems()) {tsc.event.onMouseLeave(this.dom, ev => {this.play();});}}var tabsEl = tsc.dom.getParentNode('.tscTabs', this.dom);if (tabsEl) {this.stop();tsc.doLater(1, function () {this.tabsObj = tabsEl.tscTabs;tsc.event.onCustom(this.tabsObj, "tabChange", function () {var ourTabIsActive = tsc.dom.getParentNode('.tscTabsContentActive', this.dom);if (ourTabIsActive) {this._measureChildLeftPositions();this.activate(this.index);if (this.isAutoplay && this.children.length > 1) {this.play();}} else {this.stop();}}, [], this);}, [], this);}};tsc.slider.prototype = {getPageItems: function () {return this.pageItems[tsc.window.getBootstrapBreakpoint()];},play: function () {this._timeout = tsc.doLater(this.showtime + this.initialAddTime, this._player, [], this);},_player: function () {var videoIsPlaying = false;tsc.dom.getAll('video', this.children[this.index]).forEach((hasVideo) => {if (hasVideo && !hasVideo.paused) videoIsPlaying = true;});var youtubeIframeEl = dg('iframe', this.children[this.index]);if (youtubeIframeEl && youtubeIframeEl.src.indexOf('youtu') !== -1) {if (!youtubeIframeEl.ytPlayer) {this._callYoutubePlayerFnIf(this.index, tsc.createDelegate(this._player, [], this));return;} else if (youtubeIframeEl.ytPlayer.getPlayerState() == 1 && !this.youtubeWillPause) {videoIsPlaying = true;}}var vimeoIframeEl = dg('iframe', this.children[this.index]);if (vimeoIframeEl && vimeoIframeEl.src.indexOf('vimeo') !== -1) {if (!vimeoIframeEl.vimeoPlayer) {this._callVimeoPlayerFnIf(this.index, tsc.createDelegate(this._player, [], this));return;} else if (!this.vimeoWillPause) {videoIsPlaying = true;vimeoIframeEl.vimeoPlayer.getPaused().then(tsc.createDelegate(function (paused) {if (paused) this.next();}, [], this));}}if (!document.hidden) {if (!videoIsPlaying) this.next();this._timeout = tsc.doLater(this.showtime + this.animtime, this._player, [], this);} else {let handleVisibilityChange = () => {if (!document.hidden) {this._player();document.removeEventListener('visibilitychange', handleVisibilityChange, false);}};document.addEventListener('visibilitychange', handleVisibilityChange, false);}},intersectionPlayer: function (selector) {if (!this.isAutoplay || this.children.length <= this.getPageItems()) return;const observer = new IntersectionObserver((els, obs) => {els.forEach(el => {if (el.isIntersecting) {this.play();} else {this.stop();}})}, {threshold: 0.1
83});observer.observe(this.dom);},stop: function () {if (this._timeout) window.clearTimeout(this._timeout);},next: function () {tsc.event.fireCustom(tsc.slider, "beforeNext", [this]);var switchBy = (this.switchBy === 'item' ? 1 : this.getPageItems());if (this.sliderType == 'carousel' && this.getSliderPositionLeft(this.index) < this.getSliderPositionLeft(this.index + this.getPageItems())) {this.carouselRepositionTargetItems('next');this.activate(this.index + switchBy);} else if (this.sliderType == 'jumptostart') {if (this.index + switchBy <= this.children.length - this.getPageItems() && this.get
83SliderPositionLeft(this.index) > this.getSliderPositionLeft(this.index + switchBy)) {this.activate(this.index + switchBy);} else {this.activate(0);}} else if (this.getSliderPositionLeft(this.index) > this.getSliderPositionLeft(this.index + switchBy)) {this.activate(this.index + switchBy);}tsc.event.fireCustom(tsc.slider, "next", [this]);},prev: function () {tsc.event.fireCustom(tsc.slider, "beforePrev", [this]);var switchBy = (this.switchBy === 'item' ? 1 : this.getPageItems());if (this.sliderType == 'carousel' && this.getSliderPositionLeft(this.index) > this.getSliderPositionLeft(this.index - switchBy)) {this.carouselRepositionTargetItems('prev');this.activate(this.index - switchBy);} else if (this.getSliderPositionLeft(this.index) < this.getSliderPositionLeft(this.index - switchBy)) {this.activate(this.index - switchBy);} else if (this.sliderType == 'jumptostart') {if (this.switchBy === 'item') {this.activate(this.children.length - this.getPageItems());} else {var lastIndex = (this.children.length - 1);this.activate(lastIndex - (lastIndex % this.getPageItems()));}}tsc.event.fireCustom(tsc.slider, "prev", [this]);},carouselRepositionTargetItems: function (direction) {var difference = this.getSliderPositionLeft(this.index) - parseInt(this.slideNode.style.left || 0);var switchBy = (this.switchBy === 'item' ? 1 : this.getPageItems());for (var i = 0; i < switchBy; i++) {if (direction == 'next') {this.slideNode.appendChild(dg('.tscSliderItem', this.slideNode));} else if (direction == 'prev') {var all = tsc.dom.getAll('.tscSliderItem', this.slideNode);tsc.dom.insertBefore(dg('.tscSliderItem', this.slideNode), all[all.length - 1]);}}this.slideNode.style.left = (this.getSliderPositionLeft(this.index) - difference) + "px";},_pauseVideoIf: function () {tsc.dom.getAll('video', this.children[this.index]).forEach((hasVideo) => {if (hasVideo && !hasVideo.paused) {hasVideo.pause();}});this._callYoutubePlayerFnIf(this.index,function (ytPlayer) {ytPlayer.pauseVideo();},tsc.createDelegate(function () {this.youtubeWillPause = true;}, [], this));this._callVimeoPlayerFnIf(this.index,function (vimeoPlayer) {vimeoPlayer.pause();},tsc.createDelegate(function () {this.vimeoWillPause = true;}, [], this));},_playVideoIf: function () {tsc.dom.getAll('video', this.children[this.index]).forEach((hasVideo) => {if (hasVideo && hasVideo.paused && window.getComputedStyle(hasVideo).display != 'none') {hasVideo.play();}});},_callYoutubePlayerFnIf: function (idx, fn, beforeFn) {var youtubeIframeEl = dg('iframe', this.children[idx]);if (youtubeIframeEl && youtubeIframeEl.src.indexOf('youtu') !== -1) {if (youtubeIframeEl.src.indexOf('enablejsapi=1') === -1 || youtubeIframeEl.src.indexOf('origin=') === -1) {console.error("Please add the following get parameters to YouTube iframe when using in 2script UI Gallery Slide.\nThis way it can read/control playing/pause of the video.\nenablejsapi=1&origin=http(s)://www.example.com");}if (beforeFn) beforeFn();var callOnPlayer = function () {if (!youtubeIframeEl.ytPlayer) {youtubeIframeEl.ytPlayer = new YT.Player(youtubeIframeEl, {events: {'onReady': function () {fn(youtubeIframeEl.ytPlayer, youtubeIframeEl);},'onStateChange': tsc.createDelegate(function (ev) {if (ev.data != 1) {this.youtubeWillPause = false;this.stop();if (this.isAutoplay) this.play();}}, [], this)}});} else {fn(youtubeIframeEl.ytPlayer, youtubeIframeEl);}};if (this.youtubeIframeApiState == 0) {this.youtubeIframeApiState = 1;tsc.loadScript('https://www.youtube.com/iframe_api');window.onYouTubeIframeAPIReady = tsc.createDelegate(function () {this.youtubeIframeApiState = 2;tsc.event.fireCustom(tsc.slider, 'youtubeApiReady', [this]);}, [], this);}if (this.youtubeIframeApiState < 2) {tsc.event.onCustom(tsc.slider, 'youtubeApiReady', function (sliderObj) {callOnPlayer.call(sliderObj);});} else {callOnPlayer();}}},_callVimeoPlayerFnIf: function (idx, fn, beforeFn) {var vimeoIframeEl = dg('iframe', this.children[idx]);if (vimeoIframeEl && vimeoIframeEl.src.indexOf('vimeo') !== -1) {if (beforeFn) beforeFn();var callOnPlayer = function () {if (!vimeoIframeEl.vimeoPlayer) {vimeoIframeEl.vimeoPlayer = new Vimeo.Player(vimeoIframeEl);vimeoIframeEl.vimeoPlayer.on('play', tsc.createDelegate(function () {this.vimeoWillPause = false;}, [], this));var resetAutoplay = tsc.createDelegate(function () {this.stop();if (this.isAutoplay) this.play();}, [], this);vimeoIframeEl.vimeoPlayer.on('pause', resetAutoplay);vimeoIframeEl.vimeoPlayer.on('ended', resetAutoplay);fn(vimeoIframeEl.vimeoPlayer, vimeoIframeEl);} else {fn(vimeoIframeEl.vimeoPlayer, vimeoIframeEl);}};if (this.vimeoIframeApiState == 0) {this.vimeoIframeApiState = 1;tsc.loadScript('https://player.vimeo.com/api/player.js', function () {this.vimeoIframeApiState = 2;tsc.event.fireCustom(tsc.slider, 'vimeoApiReady', [this]);}, [], this);}if (this.vimeoIframeApiState < 2) {tsc.event.onCustom(tsc.slider, 'vimeoApiReady', function (sliderObj) {callOnPlayer.call(sliderObj);});} else {callOnPlayer();}}},activate: function (idx) {idx = this.correctOutOfBoundsIndex(idx);if (this.index != idx) this._pauseVideoIf();if (this.sliderThumbs) {tsc.dom.getAll(".active", this.sliderThumbs).forEac
83h(function (thumb) { tsc.dom.removeClass(thumb, "active"); });}this.index = idx;var from = 0;if (this.slideNode.style.left) from = parseInt(this.slideNode.style.left);var to = this.getSliderPositionLeft(this.index);if (from != to) {this.anim = tsc.anim.run({ el: this.slideNode, duration: this.animtime, timingFunction: this.animTimingFunction, cssProp: "left", from: from, to: to });}this._lazyLoadBoundingImages();this._playVideoIf();if (this.bullets) this.bullets.render();if (this.sliderThumbs) {var startIdx = this.index;if (this.index >= this.thumbs.length) startIdx = 0;for (var i = startIdx; i < startIdx + this.getPageItems(); i++) {if (this.thumbs[i]) tsc.dom.addClass(this.thumbs[i], "active");}}if (this.paging) this.paging.render();this.setArrowVisibility();tsc.event.fireCustom(tsc.slider, "activate", [this]);},correctOutOfBoundsIndex: function (idx) {while (idx >= this.children.length) {idx -= this.children.length;}while (idx < 0) {idx += this.children.length;}if (this.sliderType != 'carousel' && idx >= this.children.length - this.getPageItems()) {idx = this.children.length - this.getPageItems();if (idx < 0) idx = 0;}if (this.switchBy == 'page' && idx % this.getPageItems() !== 0) {idx = idx - (idx % this.getPageItems());}return idx;},getSliderPositionLeft: function (idx) {idx = this.correctOutOfBoundsIndex(idx);if (this.cutNextBy) {if (idx >= this.children.length - this.getPageItems()) {return (this.children[idx].offsetLeft - (tsc.dom.getWidth(this.children[idx]) * (this.cutNextBy / 100))) * (-1);}}return this.children[idx].offsetLeft * (-1);},setArrowVisibility: function () {if (this.hasSwitchArrows) {if (this.children.length > this.getPageItems() && (this.sliderType == 'jumptostart' || this.sliderType == 'carousel' || this.index >= 1)) {this.prevButton.style.visibility = "visible";} else {this.prevButton.style.visibility = "hidden";}if (this.children.length > this.getPageItems() && (this.sliderType == 'jumptostart' || this.sliderType == 'carousel' || this.index + this.getPageItems() < this.children.length)) {this.nextButton.style.visibility = "visible";} else {this.nextButton.style.visibility = "hidden";}}},_measureChildLeftPositions: function () {this._createPlaceholderIfSwitchByPage();var cutByMultiplier = 1;if (this.cutNextBy) {cutByMultiplier = this.getPageItems() / (this.getPageItems() + (this.cutNextBy / 100));}var domWidth = tsc.dom.getWidth(this.dom);var allWidth = 0;for (var i = 0; i < this.children.length; i++) {this.children[i].style.width = ((cutByMultiplier * domWidth) / this.getPageItems()) + "px";allWidth += ((cutByMultiplier * domWidth) / this.getPageItems());}if (allWidth < domWidth) allWidth = domWidth;if (this.slideNode) {this.slideNode.style.width = (allWidth + 20 * this.children.length) + "px";}},_createPlaceholderIfSwitchByPage: function () {if (this.switchBy === 'page') {var createEmptyElements = (this.children.length % this.getPageItems() === 0) ? 0 : this.getPageItems() - (this.children.length % this.getPageItems());var existingEmptyElements = tsc.dom.getAll('.tscSliderItem[data-tsc-slider-is-placeholder]', this.slideNode).length;if (createEmptyElements > existingEmptyElements) {for (var i = existingEmptyElements; i < createEmptyElements; i++) {var placeholder = document.createElement('div');placeholder.classList.add('tscSliderItem');placeholder.classList.add('js');placeholder.setAttribute('data-tsc-slider-is-placeholder', '1');placeholder.innerHTML = '&nbsp;';tsc.dom.insertAfter(this.children[this.children.length - 1], placeholder);this.children.push(placeholder);}} else if (createEmptyElements < existingEmptyElements) {tsc.dom.removeNode(this.children.pop());}}},_setArrowsPosition: function () {this.prevButton.style.top = tsc.dom.getHeight(this.sliderContents) / 2 + "px";this.nextButton.style.top = tsc.dom.getHeight(this.sliderContents) / 2 + "px";},_lazyLoadBoundingImages: function () {var switchBy = (this.switchBy === 'item' ? 1 : this.getPageItems());var preloadOnEachSide = switchBy * 2;var carouselIsOutOfBounds = false;var preloadStartIndex = this.index - preloadOnEachSide;if (this.sliderType == 'carousel' && preloadStartIndex < 0) {preloadStartIndex += this.children.length;carouselIsOutOfBounds = true;}var preloadEndIndex = this.index + this.getPageItems() - 1 + preloadOnEachSide;if (this.sliderType == 'carousel' && preloadEndIndex >= this.children.length) {preloadEndIndex -= this.children.length;carouselIsOutOfBounds = true;}for (var i = 0; i < this.children.length; i++) {if (!carouselIsOutOfBounds && i >= preloadStartIndex && i <= preloadEndIndex) {this._lazyLoadByIndexIfNeeded(i);} else if (carouselIsOutOfBounds && (i >= preloadStartIndex || i <= preloadEndIndex)) {this._lazyLoadByIndexIfNeeded(i);} else {}}},_lazyLoadByIndexIfNeeded: function (idx) {if (this.children[idx].lazyLoadState != 1) return;this.children[idx].lazyLoadState = 2;var imageLoader = tsc.createDelegate(function (idx) {tsc.dom.getAll('img[loading="lazy"]', this.children[idx]).forEac
83h((img) => {img.setAttribute('loading', 'eager');});var lazyLoadEls = tsc.dom.getAll('[data-tsc-slider-src]', this.children[idx]);for (var i = 0; i < lazyLoadEls.length; i++) {if (typeof lazyLoadEls[i].tscSliderOrigSrc == 'undefined') lazyLoadEls[i].tscSliderOrigSrc = lazyLoadEls[i].src;lazyLoadEls[i].src = lazyLoadEls[i].getAttribute('data-tsc-slider-src');if (lazyLoadEls[i].getAttribute('data-tsc-slider-srcset') && lazyLoadEls[i].getAttribute('data-tsc-slider-srcset').length >= 1) {lazyLoadEls[i].srcset = lazyLoadEls[i].getAttribute('data-tsc-slider-srcset');}}var lazyLoadEls = tsc.dom.getAll('[data-tsc-slider-bgimage]', this.children[idx]);for (var i = 0; i < lazyLoadEls.length; i++) {if (typeof lazyLoadEls[i].tscSliderOrigSrc == 'undefined') lazyLoadEls[i].tscSliderOrigBgimage = lazyLoadEls[i].style.backgroundImage;if (lazyLoadEls[i].getAttribute('data-tsc-slider-srcset') && lazyLoadEls[i].getAttribute('data-tsc-slider-srcset').length >= 1) {var parts = lazyLoadEls[i].getAttribute('data-tsc-slider-srcset').split(/,\s*/);var sources = [];for (var p = 0; p < parts.length; p++) {var matches = parts[p].match(/^(.+)\s+([0-9]+)w$/);if (matches) {sources.push({ src: matches[1], width: parseInt(matches[2]) });}}sources.sort(function (a, b) { return (a.width - b.width); });for (var s = 0; s < sources.length; s++) {if (s == sources[s].length - 1 // last one, use it.
84|| sources[s].width >= tsc.dom.getWidth(lazyLoadEls[i])) {var srcsetSource = sources[s].src;break;}}}lazyLoadEls[i].style.backgroundImage = "url('" + (srcsetSource || lazyLoadEls[i].getAttribute('data-tsc-slider-bgimage')) + "')";}}, [idx], this);if (this.index == idx) {imageLoader();} else {tsc.doLater(200, imageLoader);}},syncSliderToLightbox: function (idx) {var sliderItem = this.galleryLightbox.children[idx].aNode.closest('.tscSliderItem');if (!sliderItem) console.error("Couldn't find tscSliderItem for lightbox item index " + idx);for (var i = 0; i < this.children.length; i++) {if (this.children[i] == sliderItem) {this.activate(i);break;}}},slideTouchMove: function (ev) {if (tsc.browser.isTouch && this.touchSkipUntilEnd) {this.touchSkipUntilEnd = true;return;}if (Math.abs(ev.tscTouchOffset.offsetPageX) > 5 || Math.abs(ev.tscTouchOffset.offsetPageY) > 5) {if (Math.abs(ev.tscTouchOffset.offsetPageX) > Math.abs(ev.tscTouchOffset.offsetPageY)) {this.stop();if (this.anim) this.anim.stop();tsc.event.preventDefault(ev);var switchBy = (this.switchBy === 'item' ? 1 : this.getPageItems());if (this.sliderType == 'carousel' && ev.tscTouchOffset.offsetPageX < 0 && this.get
84SliderPositionLeft(this.index) < this.getSliderPositionLeft(this.index + switchBy)) {this.carouselRepositionTargetItems('next');} else if (this.sliderType == 'carousel' && ev.tscTouchOffset.offsetPageX > 0 && this.getSliderPositionLeft(this.index) > this.getSliderPositionLeft(this.index - switchBy)) {this.carouselRepositionTargetItems('prev');}if (this.startDragLeft === null) {this.startDragLeft = this.slideNode.style.left ? parseFloat(this.slideNode.style.left) : 0.0;}this.slideNode.style.left = (this.startDragLeft + ev.tscTouchOffset.offsetPageX) + 'px';} else {this.touchSkipUntilEnd = true;}}},slideTouchEnd: function (ev) {this.startDragLeft = null;let animBefore = this.animtime;this.animtime = 300;if (!this.touchSkipUntilEnd) {let moveAmount = ev.tscTouchOffset.offsetPageX;var currentLeft = parseInt(this.slideNode.style.left || 0);var offsetLeft = currentLeft - this.getSliderPositionLeft(this.index);var domWidth = tsc.dom.getWidth(this.dom);var lastActiveIndex = this.switchBy === 'item' ? this.children.length - this.getPageItems() : this.children.length - (this.children.length % this.getPageItems()) - 1;if (moveAmount < 0 && offsetLeft < domWidth * (-0.15) && (this.index < lastActiveIndex || this.sliderType == 'carousel' || this.sliderType == 'jumptostart')) {this.next();} else if (moveAmount > 0 && offsetLeft > domWidth * 0.15 && (this.index > 0 || this.sliderType == 'carousel' || this.sliderType == 'jumptostart')) {this.prev();} else {this.activate(this.index);}} else {this.activate(this.index);}this.animtime = animBefore;if (this.isAutoplay) {this.stop();this.play();}this.touchSkipUntilEnd = false;}};tsc.slider.bullets = function (slider, config) {this.slider = slider;if (!config) var config = {};this.renderTo = config.renderTo || this.slider.sliderContents;this.type = 'bullet'
85if (config.type === 'bullet' || config.type === 'image' || config.type === 'text') {this.type = config.type;}this.activationBy = 'click';if (config.activationBy === 'click' || config.activationBy === 'hover') {this.activationBy = config.activationBy;}this.slideItems = parseInt(config.slideItems) || 1;this.bulletNodes = [];this.wrapper = null;this.init();};tsc.slider.bullets.prototype = {init: function () {this.wrapper = tsc.dom.appendChild(this.renderTo, { tag: "div", cls: "tscSliderBullets" });this.render();},render: function () {var renderItems = this.slideItems;var activeBulletIndex = this.slider.index;if (this.type === 'bullet') {if (this.slider.switchBy === 'item') {renderItems = this.slideItems - this.slider.getPageItems() + 1;if (renderItems < 1) renderItems = 1;} else {renderItems = Math.ceil(this.slideItems / this.slider.getPageItems());activeBulletIndex = Math.floor(this.slider.index / this.slider.getPageItems());}}if (activeBulletIndex > renderItems - 1) activeBulletIndex -= renderItems;for (var i = this.bulletNodes.length; i > renderItems; i--) {tsc.dom.removeNode(this.bulletNodes.pop());}for (var i = this.bulletNodes.length; i < renderItems; i++) {var linkContent = "";if (this.type === 'image') {if (dg("img", this.slider.children[i])) {linkContent = { tag: "img", src: dg("img", this.slider.children[i]).src.replace(/\/ic-[0-9]+.*?\//, "/ic-160x90-crop/"), alt: "" };}} else if (this.type === 'text') {if (this.slider.children[i].hasAttribute('data-tsc-slider-bullet-text')) {linkContent = this.slider.children[i].getAttribute('data-tsc-slider-bullet-text');} else {var bulletText = dg('[data-tsc-slider-bullet-text]', this.slider.children[i]);if (bulletText) linkContent = bulletText.getAttribute('data-tsc-slider-bullet-text');}} else if (this.type === 'bullet') {linkContent = (i + 1).toString();}var node = tsc.dom.appendChild(this.wrapper, { tag: "a", cls: "tscSliderBullet", href: "#", children: [linkContent] });if (this.activationBy === 'hover') {tsc.event.onMouseOver(node, this.onBulletEvent, [node, i], this);tsc.event.onClick(node, function (ev) { if (ev) tsc.event.preventDefault(ev); });} else if (this.activationBy === 'click') {tsc.event.onClick(node, this.onBulletEvent, [node, i], this);}if (i == this.index) tsc.dom.addClass(node, "active");this.bulletNodes.push(node);}if (this.bulletNodes.length <= 1) {this.wrapper.style.visibility = 'hidden';} else {this.wrapper.style.visibility = 'visible';for (var i = 0; i < this.bulletNodes.length; i++) {if ((this.type !== 'bullet' && i >= activeBulletIndex && i < activeBulletIndex + this.slider.getPageItems())|| (this.t
85ype === 'bullet' && i === activeBulletIndex)) {this.bulletNodes[i].classList.add('active');} else {this.bulletNodes[i].classList.remove('active');}}}},onBulletEvent: function (node, nodeIdx, ev) {if (ev) tsc.event.preventDefault(ev);if (tsc.dom.hasClass(node, "active")) return false;this.slider.stop();this.slider.activate(this.type === 'bullet' && this.slider.switchBy === 'page' ? nodeIdx * this.slider.getPageItems() : nodeIdx);if (this.slider.isAutoplay) this.slider.play();}};tsc.slider.paging = function (slider, config) {this.slider = slider;if (!config) var config = {};this.renderTo = config.renderTo || this.slider.sliderContents;this.type = 'item'
86if (config.type === 'page' || config.type === 'item') {this.type = config.type;}this.slideItems = parseInt(config.slideItems || this.slider.children.length);this.wrapper = this.elCurrent = this.elCount = null;this.init();};tsc.slider.paging.prototype = {init: function () {this.wrapper = tsc.dom.appendChild(this.renderTo, { tag: "div", cls: "tscSliderPaging" });this.elCurrent = tsc.dom.appendChild(this.wrapper, { tag: "span", cls: "tscSliderPage current" });this.elCount = tsc.dom.appendChild(this.wrapper, { tag: "span", cls: "tscSliderPage" });this.render();},render: function () {var countContent = this.slideItems;var from = this.slider.index + 1;if (from > countContent) from = 1;var to = from + this.slider.getPageItems() - 1;if (to > countContent) to = countContent;if (this.type === 'item') {var currentContent = from;if (from !== to) currentContent = from + '-' + to;} else if (this.type === 'page') {var currentContent = Math.ceil(from / this.slider.getPageItems());var countContent = Math.ceil(this.slideItems / this.slider.getPageItems());}this.elCurrent.innerHTML = currentContent;this.elCount.innerHTML = countContent;}};tsc.slider.autoInit = function () {var slidesWrappers = tsc.dom.getAll(".tscSlider");for (var i = 0; i < slidesWrappers.length; i++) {if (!slidesWrappers[i].tscSlider) {slidesWrappers[i].tscSlider = new tsc.slider(slidesWrappers[i]);}}};tsc.slider.leftRightKeyEventsInited = false;tsc.slider.leftRightKeyEvents = function () {if (tsc.slider.leftRightKeyEventsInited) return;tsc.event.onKeyUp(document, function (ev) {if (event.defaultPrevented) return;var targetTag = event.target.tagName.toLowerCase();if (targetTag == 'input' || targetTag == 'textarea' || tsc.dom.getParentNode('form', targetTag)) return;var action = false;if (ev.key == 'ArrowLeft' || ev.keyCode == 37) {action = 'left';}if (ev.key == 'ArrowRight' || ev.keyCode == 39) {action = 'right';}if (action !== false) {var doneOne = false;tsc.dom.getAll('.tscSlider').forEach(function (el) {if (doneOne || el.tscSlider.children.length <= 1 || !tsc.window.elementInViewport(el)) return;switch (action) {case 'left':
87el.tscSlider.prev();doneOne = true;break;case 'right':
88el.tscSlider.next();doneOne = true;break;}});}}, [], this);tsc.slider.leftRightKeyEventsInited = true;};if (!tsc) var tsc = {};tsc.modal = class tscModal {MODAL_LOCATIONS = [
89'header','body','footer'
90];MODAL_POSITIONS = [
91'center','top-center','top-right','right-center','bottom-right','bottom-center','bottom-left','left-center','top-left'
92];static MODAL_TYPE = 'default';static MODAL_ANIMATIONS = [
93'bounce','reveal','zoom','fade','grow'
94];static MODAL_ANIMATION_DEFAULT = {style: 'bounce',duration: 500
95};constructor(classList = [], {position = 'center',close = 'header',clickaway = false,lonely = false,scrollable = false,animation = tsc.modal.MODAL_ANIMATION_DEFAULT,width = undefined,height = undefined,container = null
96} = {}) {this._dom = document.createElement('dialog');this._dom.instance = this;this._dom.classList.add('tscModal', ...this._convertToClassList(classList));this._wrapper = document.createElement('div');this._wrapper.classList.add('tscModalWrapper');this._dom.append(this._wrapper);this.position = position;this.close = close;this.clickaway = clickaway;this.lonely = lonely;this.scrollable = scrollable;this.animation = animation;this.width = width;this.height = height;this.container = container;}static render(innerHTML, classList = [], config = {}) {const modal = new tsc.modal(classList, config);modal.body.innerHTML = innerHTML;modal.show();return modal;}set position(position) {if (position === null) {delete this._dom.dataset.modalPosition;this._position = null;return;}if (!this.MODAL_POSITIONS.includes(position)) throw new Error(`Invalid position "${position}".`);this._position = position;this._dom.dataset.modalPosition = position;}set close(location) {if (location === null) {const close = this._dom.querySelector('.tscModalClose');if (!close) return;const parent = close.parentElement;close.remove();if (parent && parent.classList.contains('hasClose')) parent.classList.remove('hasClose');if (parent && !parent.hasChildNodes()) parent.remove();this._close = null;return;}if (!['wrapper', ...this.MODAL_LOCATIONS].includes(location)) throw new Error(`Invalid location "${location}". Possible locations are: ${['wrapper', ...this.MODAL_LOCATIONS].join(', ')}.`);const exists = ('wrapper' === location) ? this._dom.querySelector('.tscModalClose') : ((this['_' + location]) ? this['_' + location].querySelector('.tscModalClose') : false);if (exists) return exists;if (!exists && this._close) this.close = null;this._close = document.createElement('button');this._close.classList.add('tscModalClose');this._close.addEventListener('click', () => this.remove());if (location == 'wrapper') {this._wrapper.before(this._close);} else {this[location].prepend(this._close);this[location].classList.add('hasClose');}}set clickaway(clickaway) {if (typeof clickaway !== 'boolean') throw new Error(`Invalid clickaway "${clickaway}". Needs to be boolean`);if (!clickaway) {document.removeEventListener('click', this._clickaway);this._clickaway = null;return;};this._clickaway = ((e) => {const allModals = document.querySelectorAll('.tscModal');const currentModal = allModals[allModals.length - 1];const targetModal = e.target.closest('.tscModal');if (!currentModal || currentModal?.instance === targetModal?.instance) return;this.remove();}).bind(this);}set lonely(lonely) {if (typeof lonely !== 'boolean') throw new Error(`Invalid lonely "${lonely}". Needs to be boolean`);this._lonely = lonely;}set scrollable(scrollable) {if (typeof scrollable !== 'boolean') throw new Error(`Invalid scrollable "${scrollable}". Needs to be boolean`);this._scrollable = scrollable;this._dom.dataset.modalScrollable = scrollable.toString();}
96set animation(animation) {if (animation === null) {delete this._dom.dataset.modalAnimation;this._animation = null;return;}if (!animation.duration) animation.duration = tsc.modal.MODAL_ANIMATION_DEFAULT.duration;if (animation && (typeof animation.duration !== 'number' || animation.duration < 100)) throw new Error(`Invalid animation "${animation}". Animation duration must be greater than 100ms`);if (animation && (!animation.style || !this.constructor.MODAL_ANIMATIONS.includes(animation.style))) throw new Error(`Invalid animation "${animation}". Animation style must be one of ${this.constructor.MODAL_ANIMATIONS}`);this._animation = {};this._animation.style = animation.style;this._animation.duration = animation.duration;this._dom.dataset.modalAnimation = animation.style;}set width(width) {if (width === undefined) return;if (typeof width !== 'string') throw new Error(`Invalid width "${width}". Needs to be of type string`);this._dom.style.width = width;}set height(height) {if (height === undefined) return;if (typeof height !== 'string') throw new Error(`Invalid height "${height}". Needs to be of type string`);this._dom.style.height = height;}set container(container) {if (!(container instanceof Element) && container !== null) throw new Error(`Invalid container "${container}".`);if (("modalType" in this._dom.dataset) && this._container) throw new Error(`Can not set container after calling show() on modal object.`);container = (container === null) ? document.body : container;container.classList.add('tscModalRoot');if (container !== document.body) container.classList.add('tscModalContainer');container.getCssVariable = (name) => {return container.style.getPropertyValue(`--${name}`);};container.setCssVariable = (name, value) => {container.style.setProperty(`--${name}`, value);};container.removeCssVariable = (name) => {container.style.removeProperty(`--${name}`);if (container.getAttribute('style') === "") container.removeAttribute('style');};this._container = container;}get dom() {return this._dom;}get header() {if (this._header) return this._header;this._header = document.createElement('div');this._header.classList.add('tscModalHeader');const { _wrapper, _body, _footer } = this;if (_body) {_body.before(this._header);} else if (_footer) {_footer.before(this._header);} else {_wrapper.append(this._header);}return this._header;}get body() {if (this._body) return this._body;this._body = document.createElement('div');this._body.classList.add('tscModalBody');const { _wrapper, _header, _footer } = this;if (_header) {_header.after(this._body);} else if (_footer) {_footer.before(this._body);} else {_wrapper.append(this._body);}return this._body;}get footer() {if (this._footer) return this._footer;this._footer = document.createElement('div');this._footer.classList.add('tscModalFooter');const { _wrapper, _header, _body } = this;if (_body) {_body.after(this._footer);} else if (_header) {_header.after(this._footer);} else {_wrapper.append(this._footer);}return this._footer;}get close() {return this._close;}show() {this._beforeShow();setTimeout(() => this.dispatchEvent(new CustomEvent("beforeShow", { detail: this })), 0);setTimeout(() => {if (this._dom.dataset.modalAnimationMode !== 'show') return;this._afterShow();this.dispatchEvent(new CustomEvent("afterShow", { detail: this }));}, (this._animation && this._animation.duration) ? this._animation.duration : 500);}remove() {this._beforeRemove();setTimeout(() => this.dispatchEvent(new CustomEvent("beforeRemove", { detail: this })), 0);setTimeout(() => {if (this._dom.dataset.modalAnimationMode !== 'remove') return;this._afterRemove();this.dispatchEvent(new CustomEvent("afterRemove", { detail: this }));}, (this._animation && this._animation.duration) ? this._animation.duration : 500);}wiggle() {this._dom.dataset.modalAnimationMode = 'wiggle';setTimeout(() => this.dispatchEvent(new CustomEvent("wiggle", { detail: this })), 0);setTimeout(() => {this._dom.dataset.modalAnimationMode = 'idle';}, 300);}addEventListener(...args) {this._dom.addEventListener(...args);}dispatchEvent(...args) {this._dom.dispatchEvent(...args);}removeEventListener(...args) {this._dom.removeEventListener(...args);}_beforeShow() {const { _dom, _container, _stack } = this;_dom.dataset.modalAnimationMode = _container.dataset.modalAnimationMode = 'show';_dom.dataset.modalType = _container.dataset.modalType = this.constructor.MODAL_TYPE;if (this._scrollable == false && !_container.classList.contains('tscModalContainer') && document.documentElement.scrollHeight > document.documentElement.clientHeight) {_container.setCssVariable('tsc-modal-scrollable-top', "-" + document.documentElement.scrollTop + 'px');_container.dataset.modalScrollable = 'false';}_container.setCssVariable('tsc-modal-animation-duration', this._animation.duration + 'ms');if (_stack) {_stack.append(_dom);
96_container.append(_stack);} else {_container.append(_dom);}}_afterShow() {const { _dom, _container, _clickaway, _close, _lonely } = this;_dom.dataset.modalAnimationMode = 'idle';if (_lonely) document.querySelectorAll('.tscModal').forEach(dialog => {if (dialog.dataset.modalType !== this.constructor.MODAL_TYPE || dialog.instance === this) return;dialog.instance.remove();});if (!Array.from(_container.querySelectorAll('.tscModal')).find(modal => modal.dataset.modalAnimationMode === 'show')) _container.dataset.modalAnimationMode = 'idle';if (_clickaway) _container.addEventListener('click', _clickaway);if (_clickaway || _close) {this._removeOnEscape = ((e) => {if (e.key === 'Escape') this.remove();}).bind(this);_container.addEventListener('keydown', this._removeOnEscape);}}_beforeRemove() {const { _dom, _container, _clickaway, _close } = this;_dom.dataset.modalAnimationMode = _container.dataset.modalAnimationMode = 'remove';_container.setCssVariable('tsc-modal-animation-duration', this._animation.duration + 'ms');if (_clickaway) _container.removeEventListener('click', _clickaway);if (_clickaway || _close) _container.removeEventListener('keydown', this._removeOnEscape);}_afterRemove() {const { _dom, _container, _stack } = this;_dom.dataset.modalAnimationMode = 'idle';if (!Array.from(_container.querySelectorAll('.tscModal')).find(modal => modal.dataset.modalAnimationMode === 'remove')) _container.dataset.modalAnimationMode = 'idle';_dom.remove();if (_stack && !_stack.hasChildNodes()) _stack.remove();const hasNonScrollableModal = _container.getAttribute('data-modal-scrollable') === 'false';if (hasNonScrollableModal) {_container.dataset.modalScrollable = 'true';window.scrollTo({top: Math.abs(parseFloat(_container.getCssVariable('tsc-modal-scrollable-top').replace('px', ''))),behavior: 'instant'
97});_container.removeCssVariable('tsc-modal-scrollable-top');}const hasModalClass = _container.classList.contains('tscModalContainer') || _container.classList.contains('tscModalRoot');const hasModalChild = _stack?.querySelector(':scope > .tscModal') || _container.querySelector(':scope > .tscModal');const hasModalStack = _container.querySelector('.tscModalStack');if (!hasModalClass || hasModalChild || hasModalStack) return;delete _container.dataset.modalAnimationMode;delete _container.dataset.modalType;delete _container.dataset.modalScrollable;_container.classList.remove('tscModalContainer', 'tscModalRoot');if (_container.classList.length === 0) _container.removeAttribute('class');_container.removeCssVariable('tsc-modal-scrollable-top');_container.removeCssVariable('tsc-modal-animation-duration');}_convertToClassList(classList) {if (!(typeof classList === 'string') && !Array.isArray(classList)) throw new Error(`Invalid classList "${classList}". Needs to be type of array or string.`);classList = (typeof classList === 'string') ? classList.split(' ') : classList;if (classList.includes('tscModal')) throw new Error(`Invalid classList "${classList}". You can not add or remove the tscModal class.`);return classList;}};tsc.modal.alert = class tscModalAlert extends tsc.modal {static MODAL_TYPE = 'alert';static MODAL_ANIMATIONS = [
98'reveal'
99];static MODAL_ANIMATION_DEFAULT = {style: 'reveal',duration: 1000
100};static MODAL_STACK_LIMIT = 5;constructor(classList = [], {position = 'top-right',timeout = null,animation = tsc.modal.alert.MODAL_ANIMATION_DEFAULT,width = undefined,height = undefined,container = null
101} = {}) {super(classList, {position,close: 'header',clickaway: false,lonely: false,scrollable: true,animation,width,height,container
102});this.timeout = timeout;}static render(innerText, classList = [], timeout = null, config = {}) {config.timeout = timeout;const alert = new tsc.modal.alert(classList, config);alert.innerText = innerText;alert.show();return alert;}set innerText(innerText) {if (typeof innerText !== 'string') throw new Error(`Invalid innerText "${innerText}". Needs to be of type string.`);const span = document.createElement('span');span.innerText = innerText;this.header.append(span);this._innerText = innerText;}set timeout(timeout) {if (timeout === null) return;if (typeof timeout !== 'number' || timeout < 1000) throw new Error(`Invalid timeout "${timeout}". Needs to be of type number and greater than 1000 or null.`);if (("modalType" in this._dom.dataset) && this._timeout) throw new Error(`Can not set timeout after calling show() on modal object.`);this._timeout = timeout;}_beforeShow() {this._setStack();super._beforeShow();this._compressStack();}_afterShow() {super._afterShow();if (this._timeout) setTimeout(() => this.remove(), this._timeout);}_afterRemove() {super._afterRemove();this._compressStack();}_setStack() {let stack = Array.from(this._container.querySelectorAll(':scope > .tscModalStack')).find(stack => stack.dataset.modalPosition === this._position);if (!stack) {stack = document.createElement('div');stack.classList.add('tscModalStack');stack.dataset.modalPosition = this._position;}this._stack = stack;}_compressStack() {const modals = Array.from(this._stack.querySelectorAll('.tscModal')).reverse();if (modals.length === 0) return;const isPositionBottom = this._position.includes('bottom');const isPositionCenter = this._position === 'center' || this._position === 'right-center' || this._position === 'left-center';const offsetHeights = modals.map(modal => modal.offsetHeight);const offsetHeight = (isPositionBottom) ? Math.max(...offsetHeights) : Math.min(...offsetHeights);const stackHeight = offsetHeight + modals.slice(1).reduce((total, modal) => total + modal.offsetHeight, 0);const isCompressStack = modals.length > tsc.modal.alert.MODAL_STACK_LIMIT;this._stack.style.height = (isPositionCenter ? 0 : (isCompressStack ? offsetHeight + ((modals.length) * 2) : stackHeight)) + 'px';
102modals.forEach((modal, index) => {const height = isCompressStack ? index * 2 : modals.slice(0, index).reduce((total, modal) => total + modal.offsetHeight, 0);modal.style.position = 'absolute';modal.style[((isPositionBottom) ? 'bottom' : 'top')] = + height + 'px';});}};tsc.modal.lightbox = class tscModalLightbox extends tsc.modal {static MODAL_TYPE = 'lightbox';static MODAL_ANIMATION_DEFAULT = {style: 'reveal',duration: 600
103};static MODAL_OPACITY_DEFAULT = 0.5;constructor(classList = [], {position = 'center',opacity = tsc.modal.lightbox.MODAL_OPACITY_DEFAULT,close = 'wrapper',clickaway = true,lonely = false,scrollable = false,animation = tsc.modal.lightbox.MODAL_ANIMATION_DEFAULT,width = undefined,height = undefined,container = null
104} = {}) {super(classList, {position,close,clickaway,lonely,scrollable,animation,width,height,container
105});this.mask = opacity;}static render(innerHTML, classList = [], config = {}) {const lightbox = new tsc.modal.lightbox(classList, config);lightbox.body.innerHTML = innerHTML;lightbox.show();return lightbox;}set mask(opacity) {if (typeof opacity !== 'number' || opacity < 0 || opacity > 1) throw new Error(`Invalid opacity "${opacity}". Needs to be of type number and needs to be between 0 and 1`);this._mask = document.createElement('div');this._mask.classList.add('tscModalMask');this._mask.opacity = opacity;}_beforeShow() {this._container.append(this._mask);this._mask.dataset.modalAnimationMode = 'show';super._beforeShow();this._container.setCssVariable('tsc-modal-mask-opacity', this._mask.opacity);if (this._container !== document.body) this._mask.style.position = 'absolute';}_afterShow() {super._afterShow();this._mask.dataset.modalAnimationMode = 'idle';}_beforeRemove() {super._beforeRemove();this._mask.dataset.modalAnimationMode = 'remove';}_afterRemove() {super._afterRemove();this._mask.remove();this._container.removeCssVariable('tsc-modal-mask-opacity');}};tsc.modal.context = class tscModalContext extends tsc.modal {static MODAL_TYPE = 'context';static MODAL_ANIMATIONS = [
106'fade'
107];static MODAL_ANIMATION_DEFAULT = {style: 'fade',duration: 100
108};constructor(coordinates, classList = [], {close = null,clickaway = true,animation = tsc.modal.context.MODAL_ANIMATION_DEFAULT,width = undefined,height = undefined,} = {}) {super(classList, {position: null,close,clickaway,lonely: true,scrollable: true,animation,width,height,container: null
109});this.coordinates = coordinates;}static render(innerHTML, coordinates, classList = [], config = {}) {const context = new tsc.modal.context(coordinates, classList, config);context.body.innerHTML = innerHTML;context.coordinates = coordinates;context.show();return context;}set coordinates(coordinates) {if (coordinates && (!coordinates.x || !coordinates.y || typeof coordinates !== 'object')) throw new Error(`Invalid coordinates "${coordinates}". Needs to be an object containing x and y.`);if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') throw new Error(`Invalid coordinates "${coordinates}". Coordinates x and y needs to be type of number.`);this._coordinates = coordinates;}get coordinates() {return this._coordinates;}_beforeShow() {super._beforeShow();this._calculateCoordinates();}_calculateCoordinates() {const { _dom, coordinates } = this;const { clientWidth, clientHeight } = document.documentElement;const { clientWidth: modalWidth, clientHeight: modalHeight } = _dom;if ((modalWidth + coordinates.x) > clientWidth) coordinates.x = clientWidth - modalWidth - (clientWidth - coordinates.x);if ((modalHeight + coordinates.y) > clientHeight) coordinates.y = clientHeight - modalHeight - (clientHeight - coordinates.y);_dom.style.left = coordinates.x + 'px';_dom.style.top = coordinates.y + 'px';}};if(!xms)var xms={};xms.languages=[];if (typeof web == "undefined") var web = {};if (typeof xms == "undefined") var xms = {};xms.getScrollOffsetY = function () {var oh = dg('#outerHeader');if (!oh) return 0;if (window.getComputedStyle(oh).position == 'fixed') return (-1) * tsc.dom.getHeight('#outerHeader');return 0;};xms.decodeMails = function () {var tags = tsc.dom.getAll("span.mailDecode");for (var i = 0; i < tags.length; i++) {tags[i].innerHTML = tags[i].innerHTML.replace(/\(xmsAt\)/g, "@").replace(/\(xmsDot\)/g, ".");}};tsc.event.onReady(xms.decodeMails);xms.autoScrollToNode = function () {if (window.location.hash.substring(0, 5) == '#stn-') {var cls = window.location.hash.substring(5);var srch = '#' + cls + ', [name="' + cls + '"], .' + cls;if (dg(srch)) tsc.window.scrollToNode(srch, 0, xms.getScrollOffsetY());}};tsc.event.onReady(xms.autoScrollToNode);xms.lazyLoadImages = function () {let lazyIO = new IntersectionObserver(function (entries, observer) {entr
109ies.forEach((entry) => {if (!entry.isIntersecting) return;let el = entry.target;if (el.hasAttribute('data-xms-lazyload-bgimage')) {el.style.backgroundImage = el.getAttribute('data-xms-lazyload-bgimage');el.removeAttribute('data-xms-lazyload-bgimage');}if (el.hasAttribute('data-xms-lazyload-preload')) {el.setAttribute('preload', el.getAttribute('data-xms-lazyload-preload'));el.removeAttribute('data-xms-lazyload-preload');} else {el.setAttribute('preload', 'metadata');}if (el.hasAttribute('data-xms-lazyload-autoplay')) {el.setAttribute('autoplay', el.getAttribute('data-xms-lazyload-autoplay'));el.play();}lazyIO.unobserve(el);});}, {rootMargin: "0px 0px 200px 0px" // preload 200px in advance
110});let selector = '[data-xms-lazyload-bgimage]';selector += ', audio[data-xms-lazyload-preload], audio[data-xms-lazyload-autoplay]';selector += ', video[data-xms-lazyload-preload], video[data-xms-lazyload-autoplay]';tsc.dom.getAll(selector).forEach((el) => {lazyIO.observe(el);});};tsc.event.onWindowLoad(xms.lazyLoadImages);tsc.setBrowserBodyClass();xms.keepaliveUnconfirmed = 0;xms.keepalive = function () {xms.keepaliveUnconfirmed++;tsc.doLater(180 * 1000, function () {if (xms.keepaliveUnconfirmed < 5) xms.keepalive();tsc.ajax.request('/xmskeepalive/', {}, function (responseText, req) {if (responseText == 'ok') xms.keepaliveUnconfirmed = 0;});});};tsc.event.onWindowLoad(xms.keepalive);tsc.event.onCustom(tsc.ajax, "afterRequest", function (response) {if (response.substring(0, 19) == "xmsDoLoginRedirect:") {location.href = response.substring(19) + '&ral=' + encodeURIComponent(location.href);}});xms.clipboard = {remove: function (link, clipboardKey, clipKey) {tsc.ajax.request('/xmsclipboardremove/', { clipboardKey: clipboardKey, clipKey: clipKey }, function (responseText, req) {if (responseText == 'ok') {if (clipKey == '*') {tsc.dom.removeNode(tsc.dom.getParentNode('ul', link));} else {var ul = tsc.dom.getParentNode('ul', link);tsc.dom.removeNode(tsc.dom.getParentNode('li', link));if (!dg('li.xmsClipboardItem', ul)) {tsc.dom.removeNode(ul);}}} else {tsc.modal.alert.render(xms.trlb("Error while deleting the clipboard.", "Fehler beim Löschen der Zwischenablage."), 'isBackend danger', 3000);}});}};if (!xms.revisions) xms.revisions = {};xms.revisions.showRevisioningLightbox = function (params, ev) {if (ev) tsc.event.preventDefault(ev);params.headline = true;var content = '';for (var i in params) {content += (content.length ? "&" : "") + i + "=" + encodeURIComponent(params[i]);}fetch('/adminajax/revisions/renderRevisionsForList?' + content, {method: 'GET'
111}).then((response) => {if (response.ok) return response.json();}).then((ret) => {if (ret.status) {const lightbox = tsc.modal.lightbox.render('<div class="xmsRevisionFrame">' + ret.html + '</div>', 'isBackend', {close: 'header',clickaway: false,position: 'right-center',height: '100%',});lightbox.header.append(Object.assign(document.createElement('span'), {innerHTML: `<strong>${ret.header}</strong>`
112}));lightbox.body.classList.add('p-1');lightbox.body.prepend(Object.assign(document.createElement('message'), {className: 'info mb-1',innerHTML: xms.trlb('Revision are created after every save.', 'Nach jeder Speicher-Aktion wird eine Revision erzeugt.')}));lightbox.addEventListener('beforeShow', () => {xms.initDatas();lightbox.body.style.overflowY = 'auto';});} else {tsc.modal.alert.render(ret.message, 'isBackend info', 3000);}});};xms.revisions.restoreRevision = function (revisionsId, ev) {tsc.event.preventDefault(ev);const lightbox = new tsc.modal.lightbox('isBackend danger prompt', {clickaway: false,close: 'header'
113});lightbox.header.append(Object.assign(document.createElement('span'), {innerHTML: `<strong>${xms.trlb('Restore Revision', 'Revision wiederherstellen')}</strong>`
114}));const errorMessage = Object.assign(document.createElement('message'), {className: 'danger d-none'
115});lightbox.body.append(Object.assign(document.createElement('message'), {className: 'danger',innerHTML: xms.trlb('You are about to restore a previous revision of the selected entry.','Sie sind dabei, eine frühere Revision des ausgewählten Eintrages wiederherzustellen.'
116)}), errorMessage);const acceptBtn = Object.assign(document.createElement('button'), {innerHTML: `<i class="fa-solid fa-backward mr-05"></i>${xms.trlb('Restore revision', 'Revision wiederherstellen')}`,className: 'btn btn-danger',});acceptBtn.addEventListener('click', () => {acceptBtn.disabled = true;tsc.ajax.request('/adminajax/revisions/renderRestoreRevision', { 'revisionsId': revisionsId }, function (responseText, req) {var ret = JSON.parse(responseText);if (ret.status) {var frames = Array.from(tsc.dom.getAll('.xmsRevisionFrame'));frames.push(window.top);
116frames.forEach(function (frame) {var reminders = tsc.dom.getAll('*[data-remind-on-unload]', frame.document);reminders.forEach(function (reminder) {reminder.removeAttribute('data-remind-on-unload');});});lightbox.remove();window.top.location.reload();} else {lightbox.wiggle();errorMessage.innerText = ret.html;errorMessage.removeClass('d-none');}}, {}, this);});const cancelBtn = Object.assign(document.createElement('button'), {innerHTML: `<i class="fa-solid fa-xmark mr-05"></i>${xms.trlb('Cancel', 'Abbrechen')}`,className: 'btn xms-btn-secondary',});cancelBtn.addEventListener('click', () => lightbox.remove());lightbox.footer.append(acceptBtn, cancelBtn);lightbox.show();};xms.revisions.restoreParagraphOnPage = function (revisionsId, ev) {tsc.event.preventDefault(ev);tsc.ajax.request('/' + xms.currentLanguageB + '/adminajax/revisions/renderPageselect', {}, function (responseText) {var ret = JSON.parse(responseText);if (ret.status) {const lightbox = new tsc.modal.lightbox('isBackend info prompt', {clickaway: false,close: 'header'
117});lightbox.header.append(Object.assign(document.createElement('span'), {innerHTML: `<strong>${xms.trlb('Restore Revision', 'Revision wiederherstellen')}</strong>`
118}));const errorMessage = Object.assign(document.createElement('message'), {className: 'danger d-none'
119});lightbox.body.append(Object.assign(document.createElement('p'), {innerHTML: xms.trlb('The page or paragraph to which this paragraph belongs was deleted.','Die Seite oder der Absatz, zu welchen dieser Absatz gehört, wurde gelöscht.'
120)}), Object.assign(document.createElement('p'), {innerHTML: xms.trlb('Would you like to restore a new independent version on a different page?','Wollen Sie eine neue unabhängige Version auf einer anderen Seite wiederherstellen?'
121)}), Object.assign(document.createElement('div'), {innerHTML: ret.pageSelect
122}), Object.assign(document.createElement('message'), {className: 'info mt-1',innerHTML: xms.trlb('A new version of the current state will be created.','Der aktuelle Zustand wird gleichzeitig in einer weiteren Version gesichert.'
123)}), errorMessage);const acceptBtn = Object.assign(document.createElement('button'), {innerHTML: `<i class="fa-solid fa-chevrons-left mr-05"></i>${xms.trlb('Restore', 'Wiederherstellen')}`,className: 'btn btn-info',});acceptBtn.addEventListener('click', () => {acceptBtn.disabled = true;var pageselect = dg('select[name=xmsRestorePageId]', lightbox.dom);if (pageselect === null) return;var pageId = pageselect.options[pageselect.selectedIndex].value;tsc.ajax.request('/adminajax/revisions/renderRestoreRevision', { 'revisionsId': revisionsId, 'paragraphTargetPageId': pageId }, function (responseText, req) {var ret = JSON.parse(responseText);if (ret.status) {lightbox.remove();window.parent.location.reload();} else {lightbox.wiggle();errorMessage.innerText = ret.html;errorMessage.removeClass('d-none');}}, {}, this);});const cancelBtn = Object.assign(document.createElement('button'), {innerHTML: `<i class="fa-solid fa-xmark mr-05"></i>${xms.trlb('Cancel', 'Abbrechen')}`,className: 'btn xms-btn-secondary',});cancelBtn.addEventListener('click', () => lightbox.remove());lightbox.footer.append(acceptBtn, cancelBtn);lightbox.addEventListener('beforeShow', () => acceptBtn.focus());lightbox.show();}});};if (!xms.currentLanguage) xms.currentLanguage = xms.currentLanguageB || 'en';if (!xms.currentLanguageB) xms.currentLanguageB = xms.currentLanguage;xms.trl = function (en, de, replacements, trlTo) {if (!trlTo) var trlTo = xms.currentLanguage;if (xms.languages) {for (var i = 0; i < xms.languages.length; i++) {if (xms.languages[i].src_en == en && xms.languages[i].src_de == de && xms.languages[i][trlTo]) {return xms._trlReplace(xms.languages[i][trlTo], replacements);}}}if (trlTo == 'de') return xms._trlReplace(de, replacements);return xms._trlReplace(en, replacements);};xms.trlb = function (en, de, replacements) {var tmp = xms.trl;return tmp(en, de, replacements, xms.currentLanguageB);};xms._trlReplace = function (text, replacements) {if (replacements) {if (typeof replacements != 'object') var replacements = [replacements];for (var i = 0; i < replacements.length; i++) {text = text.replace(new RegExp('\\?' + i, 'g'), replacements[i]);}}return text;};tsc.lang.set(xms.currentLanguage);tsc.event.onWindowBeforeUnload(function (ev) {if (dg('*[data-remind-on-unload]')) {ev.returnValue = true;return true;}}
123);if (!xmse) var xmse = {};tsc.event.onReady(() => {Object.entries(xmse).forEach(([className, extensionClass]) => {const xmseElements = document.querySelectorAll('.' + className + ':not(.noJs)');xmseElements.forEach(dom => dom.xmseInstance ??= new xmse[className](dom));xmseElements.forEach(dom => dom.dispatchEvent(new CustomEvent('xmseInitialized')));});});if (!xms) var xms = {};tsc.event.onReady(function () {tsc.event.onWindowLoad(xms.initGmaps);});xms.initGmaps = function () {document.querySelectorAll('div[data-xms-gmap-config]').forEach(map => {if (!map.xmsGmapInstance) {map.xmsGmapInstance = new xms.gmap(map);}});};window.xmsGmapLoadCallback = function () {document.querySelectorAll('div[data-xms-gmap-config]').forEach(function (el) {el.xmsGmapInstance.gmapReady = true;el.xmsGmapInstance.callInitIf();});};xms.gmap = class xmsGmap {constructor(mapNode) {if (!xms.gmapApiKeyBrowser) throw "GoogleMap API key for browser is not set";this.dom = mapNode;this.info = JSON.parse(mapNode.getAttribute('data-xms-gmap-config'));this.markers = [];this.infoWindows = [];this.openInfoWindows = [];this.infoWindowNoAutoClose = false;this.dependenciesReady = false;this.gmapReady = false;var dependencies = ['https://maps.googleapis.com/maps/api/js?key=' + xms.gmapApiKeyBrowser + '&callback=xmsGmapLoadCallback'];if (this.info.clusterMarkers) dependencies.push(location.origin + '/assets/gmapclusterer/[email protected]');tsc.loadScript(dependencies, function () {this.dependenciesReady = true;this.callInitIf();}, [], this);}callInitIf() {if (this.dependenciesReady && this.gmapReady) this.init();}init() {this.markerBounds = new google.maps.LatLngBounds();if (this.info.center) var center = new google.maps.LatLng(this.info.center.lat, this.info.center.lng);var gMapConfig = {zoom: this.info.zoom || 14,center: center || (new google.maps.LatLng(this.info.markers[0].lat, this.info.markers[0].lng)),gestureHandling: this.info.gestureHandling || 'cooperative',keyboardShortcuts: false
124};if (this.info.mapTypeId && !this.info.style) {gMapConfig.mapTypeId = this.info.mapTypeId;}if (this.info.availableMapTypes) {gMapConfig.mapTypeControlOptions = { mapTypeIds: [] };this.info.availableMapTypes.forEach(function (type) {gMapConfig.mapTypeControlOptions.mapTypeIds.push(type);});} else {gMapConfig.mapTypeControlOptions = {mapTypeIds: ['roadmap', 'satellite']
125};}if (this.info.style) {gMapConfig.mapTypeControlOptions.mapTypeIds.push(xms.trl('Original', 'Original'));}if (typeof this.info.infoWindowNoAutoClose != "undefined") this.infoWindowNoAutoClose = this.info.infoWindowNoAutoClose;if (typeof this.info.draggable != "undefined") gMapConfig.draggable = this.info.draggable;if (typeof this.info.rotateControl != "undefined") gMapConfig.rotateControl = this.info.rotateControl;if (typeof this.info.scaleControl != "undefined") gMapConfig.scaleControl = this.info.scaleControl;if (typeof this.info.zoomControl != "undefined") gMapConfig.zoomControl = this.info.zoomControl;if (typeof this.info.minZoom != "undefined") gMapConfig.minZoom = this.info.minZoom;if (typeof this.info.maxZoom != "undefined") gMapConfig.maxZoom = this.info.maxZoom;if (typeof this.info.fullscreenControl != "undefined") gMapConfig.fullscreenControl = this.info.fullscreenControl;if (typeof this.info.mapTypeControl != "undefined") gMapConfig.mapTypeControl = this.info.mapTypeControl;if (typeof this.info.streetViewControl != "undefined") gMapConfig.streetViewControl = this.info.streetViewControl;this.map = new google.maps.Map(this.dom, gMapConfig);this.addMarkers();if (this.info.fitToBounds) this.fitToBounds();if (this.info.style) {var styledMapType = new google.maps.StyledMapType(this.info.style, { name: xms.trl('Original', 'Original') });this.map.mapTypes.set(xms.trl('Original', 'Original'), styledMapType);this.map.setMapTypeId(xms.trl('Original', 'Original'));}google.maps.event.addListenerOnce(this.map, 'idle', tsc.createDelegate(function () {tsc.event.fireCustom(xms.gmap, 'inited', [this]);}, [], this));}addMarkers() {this.info.markers.forEach(this.addMarker, this);if (this.info.clusterMarkers && this.markers.length > 0) {var config = { 'imagePath': this.info.clusterMarkersImagepath || '/assets/gmapclusterer/images/m' };this.markerClusterer = new MarkerClusterer(this.map, this.markers, config);}}
125addMarker(markerConfig) {var gMarkerConfig = {position: new google.maps.LatLng(markerConfig.lat, markerConfig.lng),initOpen: markerConfig.initOpen || false
126};if (!this.info.clusterMarkers) gMarkerConfig.map = this.map;if (markerConfig.icon) {gMarkerConfig.icon = markerConfig.icon;}if (markerConfig.opacity) {gMarkerConfig.opacity = markerConfig.opacity;}if (markerConfig.marker && markerConfig.marker.title) {gMarkerConfig.title = markerConfig.marker.title;}if (typeof markerConfig.fitToBounds == 'undefined' || markerConfig.fitToBounds == 1) this.markerBounds.extend(gMarkerConfig.position);var marker = new google.maps.Marker(gMarkerConfig);if (markerConfig.marker && markerConfig.marker.html) {var infoHtml = markerConfig.marker.html;if (markerConfig.routeplanner) {infoHtml += this.getRoutePlannerHtml(gMarkerConfig.position.lat(), gMarkerConfig.position.lng());}var infoWindow = new google.maps.InfoWindow({content: infoHtml
127});this.infoWindows.push(infoWindow);if (gMarkerConfig.initOpen) {tsc.doLater(1500, () => {infoWindow.open({map: this.map,anchor: marker,shouldFocus: false
128});});this.openInfoWindows.push(infoWindow);}if (!this.infoWindowNoAutoClose) {var markerClick = tsc.createDelegate(function () {if (this.openInfoWindows) {this.openInfoWindows.forEach(function (el) { el.close(); });}infoWindow.open({map: marker.getMap(),anchor: marker,shouldFocus: false
129});this.openInfoWindows = [infoWindow];}, [], this);} else {var markerClick = tsc.createDelegate(function () {infoWindow.open({map: marker.getMap(),anchor: marker,shouldFocus: false
130});}, [], this);}google.maps.event.addListener(marker, "click", markerClick);} else if (markerConfig.routeplannerOnClick) {google.maps.event.addListener(marker, "click", function () {window.open('https://maps.google.at/maps/?daddr=' + gMarkerConfig.position.lat() + ',' + gMarkerConfig.position.lng(), '_blank');});}this.markers.push(marker);}clearMarkers() {if (this.info.clusterMarkers) {this.markerClusterer.clearMarkers();} else {this.markers.forEach(marker => marker.setMap(null));}this.markers = [];}fitToBounds() {if (this.info.markers.length > 1) {this.map.fitBounds(this.markerBounds);} else if (this.info.markers.length == 1) {this.map.setCenter((new google.maps.LatLng(this.info.markers[0].lat, this.info.markers[0].lng)));}}getRoutePlannerHtml(planLat, planLng) {var ret = '<div style="width:230px; height: 45px;">'
131+ '<a href="https://maps.google.at/maps?daddr=' + planLat + ',' + planLng + '" class="btn btn-primary btn-sm" target="_blank" >' + xms.trl('Plan your route', 'Route hierher planen') + '</a>'
132+ '</div>';return ret;}};if (!xms) var xms = {};if (!Date.prototype.getWeek) {Date.prototype.getWeek = function () {var yearForFirstThursdayCalculation = this.getFullYear();do {var dayOfYear = 0;do {var firstThursday = new Date(yearForFirstThursdayCalculation, 0, ++dayOfYear);} while (firstThursday.getDay() != 4);var mondayOfWeek1 = new Date(firstThursday.getFullYear(), firstThursday.getMonth(), firstThursday.getDate() - 3);yearForFirstThursdayCalculation--;} while (firstThursday.getDate() > 4 && this < mondayOfWeek1);return Math.floor(((this - mondayOfWeek1) / 86400000) / 7) + 1;};}if (!Date.prototype.phpFormat) {Date.prototype.phpFormat = function (format) {let weekdays = Date.prototype.phpFormat.weekdays;let months = Date.prototype.phpFormat.months;let weekdaysSubstr = 3;if (weekdays[0] === 'Sonntag') weekdaysSubstr = 2;let replaces = {d: this.getDate().toString().padStart(2, '0'), // day of month: 01-31
133D: weekdays[this.getDay()].slice(0, weekdaysSubstr), // day: Mon-Sun
134j: this.getDate(), // day of month: 1-31
135l: weekdays[this.getDay()], // day: Monday-Sunday
136N: this.getDay() === 0 ? 7 : this.getDay(), // ISO 8601 day of week: 1-7
137w: this.getDay(), // day of week: 0-6
138W: this.getWeek(), // ISO 8601 week number of year: 1-53
139F: months[this.getMonth()], // month: January-December
140m: (this.getMonth() + 1).toString().padStart(2, '0'), // month: 01-12
141M: months[this.getMonth()].substring(0, 3), // month: Jan-Dec
142n: this.getMonth() + 1, // month: 1-12
143Y: this.getFullYear(), // year: 2021
144y: this.getFullYear().toString().slice(-2), // year: 21
145G: this.getHours(), // hour: 0-23
146H: this.getHours().toString().padStart(2, '0'), // hours: 00-23
147i: this.getMinutes().toString().padStart(2, '0'), // minutes: 00-59
148s: this.getSeconds().toString().padStart(2, '0'), // seconds: 00-59
149U: this.getTime().toString().slice(0, -3) // unix timestamp in seconds: 1637136363
150};let reg = new RegExp(Object.keys(replaces).join('|'), 'g');return format.replace(reg, match => replaces[match]);};Date.prototype.phpFormat.weekdays = [xms.trl('Sunday', 'Sonntag'), xms.trl('Monday', 'Montag'), xms.trl('Tuesday', 'Dienstag'),xms.trl('Wednesday', 'Mittwoch'), xms.trl('Thursday', 'Donnerstag'), xms.trl('Friday', 'Freitag'), xms.trl('Saturday', 'Samstag')];Date.prototype.phpFormat.months = [xms.trl('January', 'Januar'), xms.trl('February', 'Februar'), xms.trl('March', 'März'), xms.trl('April', 'April'),xms.trl('May', 'Mai'), xms.trl('June', 'Juni'), xms.trl('July', 'Juli'), xms.trl('August', 'August'), xms.trl('September', 'September'),xms.trl('October', 'Oktober'), xms.trl('November', 'November'), xms.trl('December', 'Dezember')];}xms.datepicker = class {constructor(dom, config) {this.dom = dg(dom);this.wrapper = null;this.renderEl = null;this.config = {};this.setConfig(config || []);let curDate = new Date();let minDate = this.config.minDate ? this.strToDate(this.config.minDate, 'Y-m-d') : null;let maxDate = this.config.maxDate ? this.strToDate(this.config.maxDate, 'Y-m-d') : null;if (maxDate && this.config.showMonths > 1) maxDate.setMonth(maxDate.getMonth() - (this.config.showMonths - 1));this.renderDate = (this.config.range ? this.inputDate[0] : this.inputDate)|| (minDate && minDate > curDate ? minDate : null)|| (maxDate && maxDate < curDate ? maxDate : null)|| curDate;this.init();if (this.config.initOpen) this.show();}getTemplate() {return '<div class="xmsDatepicker" data-closable="' + this.config.closable + '">' +
151'<div class="row flex-nowrap">' +
152'<div class="col xmsDatepickerMonth">' + // is multiplied automatically - if more months are viewed
153'<div class="row no-gutters flex-nowrap xmsDatepickerHeader">' +
154'<div class="col-auto">' +
155'<a class="btn xmsDatepickerBtnPrevYear" href="#" title="' + xms.trl('Previous year', 'Voriges Jahr') + '" tabindex="-1"><i class="fa-solid fa-angles-left"></i></a>' +
156'</div>' +
157'<div class="col-auto">' +
158'<a class="btn xmsDatepickerBtnPrevMonth" href="#" title="' + xms.trl('Previous month', 'Voriges Monat') + '" tabindex="-1"><i class="fa-solid fa-angle-left"></i></a>' +
159'</div>' +
160'<div class="col align-self-center text-center">' +
161'<span class="xmsDatepickerDateWritten"></span>' +
162'</div>' +
163'<div class="col-auto">' +
164'<a class="btn xmsDatepickerBtnNextMonth" href="#" title="' + xms.trl('Next month', 'Nächstes Monat') + '" tabindex="-1"><i class="fa-solid fa-angle-right"></i></a>' +
165'</div>' +
166'<div class="col-auto">' +
167'<a class="btn xmsDatepickerBtnNextYear" href="#" title="' + xms.trl('Next year', 'Nächstes Jahr') + '" tabindex="-1"><i class="fa-solid fa-angles-right"></i></a>' +
168'</div>' +
169'</div>' +
170'<div class="row no-gutters flex-nowrap xmsDatepickerWeekHead">' +
171(this.config.showCw ? '<div class="col xmsDatepickerCwHead">' + xms.trl('CW', 'KW') + '</div>' : '') +
172'<div class="col xmsDatepickerDayHead"></div>' + // is multiplied automatically
173'</div>' +
174'<div class="row no-gutters flex-nowrap xmsDatepickerWeek">' + // is multiplied automatically
175(this.config.showCw ? '<div class="col xmsDatepickerCw"></div>' : '') +
176'<div class="col xmsDatepickerDay"></div>' + // is multiplied automatically
177'</div>' +
178'</div>' +
179'</div>' +
180'<div class="row no-gutters flex-nowrap xmsDatepickerFooter">' +
181'<div class="col' + (this.config.closable ? '' : ' d-none') + '">' +
182'<a class="btn xmsDatepickerBtnClose" href="#" tabindex="-1">' + xms.trl('Close', 'Schließen') + '</a>' +
183'</div>' +
184'<div class="col">' +
185'<a class="btn disabled xmsDatepickerBtnClear" href="#" tabindex="-1">' + xms.trl('Clear', 'Löschen') + '</a>' +
186'</div>' +
187'<div class="col">' +
188'<a class="btn xmsDatepickerBtnToday" href="#" tabindex="-1">' + xms.trl('Today', 'Heute') + '</a>' +
189'</div>' +
190'</div>' +
191'</div>';}setConfig(config) {this.config.limitFromToday = !!config.limitFromToday;this.config.limitToToday = !!config.limitToToday;this.config.closable = !(config.hasOwnProperty('closable') && !config.closable);this.config.initOpen = !!config.initOpen;this.config.showCw = typeof config.showCw !== 'undefined' ? config.showCw : true;this.config.minDate = config.minDate || null;this.config.maxDate = config.maxDate || null;this.config.minSelectDays = config.minSelectDays || null;this.config.maxSelectDays = config.maxSelectDays || null;this.config.disabledDates = config.disabledDates || [];this.config.dateFormat = config.dateFormat || 'Y-m-d';this.config.weekStartDay = config.hasOwnProperty('weekStartDay') ? parseInt(config.weekStartDay) % 7 : 1;this.config.showMonths = parseInt(config.showMonths || 1);this.config.range = !!config.range;if (!this.config.minDate && this.config.limitFromToday) {this.config.minDate = (new Date()).phpFormat('Y-m-d');}if (!this.config.maxDate && this.config.limitToToday) {this.config.maxDate = (new Date()).phpFormat('Y-m-d');}}init() {this.wrapper = document.createElement('span');this.wrapper.style.position = "relative";this.wrapper.style.display = "inline-block";this.dom.insertAdjacentElement('beforebegin', this.wrapper);this.wrapper.appendChild(this.dom);this.dom.addEventListener('focus', () => {this.show();});this.dom.addEventListener('blur', () => {tsc.doLater(100, () => {if (document.activeElement && document.activeElement !== this.dom) {let tagName = document.activeElement.tagName.toLowerCase();if (tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "button") {this.hide();}}});});this.dom.addEventListener('input', () => {if ((!this.config.range && this.inputDate !== null)|| (this.config.range && this.inputDate.length >= 1)) {this.renderDate = new Date(this.config.range ? this.inputDate[0] : this.inputDate);this.render();}});if (!this.config.range) {this.dom.addEventListener('input', ev => { this.autocorrect(ev); });this.dom.addEventListener('blur', ev => { this.autocorrect(ev); });}this.wrapper.addEventListener('click', ev => {ev.stopPropagation();});document.body.addEventListener('click', () => {this.hide();});}render() {if (this.renderEl) {this.wrapper.removeChild(this.renderEl);}this.wrapper.insertAdjacentHTML('beforeend', this.getTemplate());this.renderEl = this.wrapper.lastChild;let dt = new Date(this.renderDate);dt.setDate(1);let dayOfLastMonth = parseInt(dt.getDay()) - this.config.weekStartDay;if (dayOfLastMonth < 0) dayOfLastMonth += 7;dt.setDate(1 - dayOfLastMonth);let dtRenderUntil = new Date(this.renderDate);dtRenderUntil.setMonth(dtRenderUntil.getMonth() + this.config.showMonths);dtRenderUntil.setDate(0);let dayOfNextMonth = this.config.weekStartDay - parseInt(dtRenderUntil.getDay()) - 1;
191if (dayOfNextMonth < 0) dayOfNextMonth += 7;dtRenderUntil.setDate(dtRenderUntil.getDate() + dayOfNextMonth);for (let monthNum = 1; monthNum <= this.config.showMonths; monthNum++) {let renderMonth = tsc.dom.getAll('.xmsDatepickerMonth', this.renderEl)[monthNum - 1];if (monthNum < this.config.showMonths) {renderMonth.parentNode.appendChild(renderMonth.cloneNode(true));}let dtHead = new Date(dt);let cw;if (this.config.showCw) {cw = dg('.xmsDatepickerCwHead', renderMonth);}let day = dg('.xmsDatepickerDayHead', renderMonth);for (let i = 0; i < 7; i++) {if (cw && dtHead.getDay() === 1) {cw.parentNode.appendChild(cw);}let renderDay = day.cloneNode();day.parentNode.appendChild(renderDay);renderDay.innerHTML = "" + dtHead.phpFormat('D');dtHead.setDate(dtHead.getDate() + 1);}day.parentNode.removeChild(day);let week = dg('.xmsDatepickerWeek', renderMonth);let inputDate = this.inputDate;let monthAfterFirstWeek = null;while (true) {let renderWeek = week.cloneNode(true);week.insertAdjacentElement('beforebegin', renderWeek);let cw;if (this.config.showCw) {cw = dg('.xmsDatepickerCw', renderWeek);}let day = dg('.xmsDatepickerDay', renderWeek);for (let i = 0; i < 7; i++) {let isPlaceholder = false;isPlaceholder = isPlaceholder || (monthNum !== this.config.showMonths && monthAfterFirstWeek !== null && monthAfterFirstWeek !== dt.getMonth());isPlaceholder = isPlaceholder || (monthNum !== 1 && monthAfterFirstWeek === null && dt.getDate() > 7);if (cw && dt.getDay() === 1) {if (!isPlaceholder) {cw.innerHTML = "<span>" + dt.getWeek() + "</span>";}cw.parentNode.appendChild(cw);}let renderDay = day.cloneNode();day.parentNode.appendChild(renderDay);if (!isPlaceholder) {renderDay.innerHTML = "<span>" + dt.getDate() + "</span>";renderDay.dataset.date = dt.phpFormat('Y-m-d');} else {renderDay.classList.add('xmsDatepickerPlaceholder');}if (dt.getDay() === 6 || dt.getDay() === 0) {renderDay.classList.add('xmsDatepickerDayWeekend');}if (dt.getMonth() !== dtHead.getMonth()) {renderDay.classList.add('xmsDatepickerDayAnotherMonth');}if (this.config.range) {if ((inputDate[0] && renderDay.dataset.date === inputDate[0].phpFormat('Y-m-d'))|| (inputDate[1] && renderDay.dataset.date === inputDate[1].phpFormat('Y-m-d'))) {renderDay.classList.add('xmsDatepickerDaySelected');}if (inputDate[0] && inputDate[1] && inputDate[0] <= new Date(renderDay.dataset.date)&& inputDate[1] >= new Date(renderDay.dataset.date)) {renderDay.classList.add('xmsDatepickerDaySelectedRange');}if (this.inputDate.length == 1 && (this.config.minSelectDays || this.config.maxSelectDays)) {this.disableMinMaxSelectDaysIf(renderDay);}} else {if (inputDate && renderDay.dataset.date === inputDate.phpFormat('Y-m-d')) {renderDay.classList.add('xmsDatepickerDaySelected');}}if (this.config.range) {if (inputDate[0]) dg('.xmsDatepickerBtnClear', this.renderEl).classList.remove('disabled');} else {if (inputDate) dg('.xmsDatepickerBtnClear', this.renderEl).classList.remove('disabled');}if (!isPlaceholder) {if (renderDay.dataset.date === (new Date()).phpFormat('Y-m-d')) {renderDay.classList.add('xmsDatepickerDayToday');}if (this.dayIsDisabled(renderDay.dataset.date)) {renderDay.classList.add('xmsDatepickerDayDisabled');}tsc.event.fireCustom(xms.datepicker, 'formatDay', [this, renderDay]);}dt.setDate(dt.getDate() + 1);}day.parentNode.removeChild(day);if (monthAfterFirstWeek === null) {monthAfterFirstWeek = dt.getMonth();dg('.xmsDatepickerDateWritten', renderMonth).innerHTML = dt.phpFormat('F Y');}if (dt.getMonth() !== monthAfterFirstWeek) {if (dt.getDate() != 1) {dt.setDate(dt.getDate() - 7);}break;}}week.parentNode.removeChild(week);if (dt > dtRenderUntil) {break;}}let dtButtons;if (this.config.minDate) {dtButtons = new Date(this.renderDate);dtButtons.setMonth(dtButtons.getMonth() - 11);dtButtons.setDate(0);if (dtButtons.phpFormat('Y-m-d') < this.config.minDate) {dg('.xmsDatepickerBtnPrevYear', this.renderEl).classList.add('invisible');}dtButtons = new Date(this.renderDate);dtButtons.setDate(0);if (dtButtons.phpFormat('Y-m-d') < this.config.minDate) {dg('.xmsDatepickerBtnPrevMonth', this.renderEl).classList.add('invisible');}}if (this.config.maxDate) {dtButtons = new Date(this.renderDate);dtButtons.setDate(1);dtButtons.setMonth(dtButtons.getMonth() + this.config.showMonths);if (dtButtons.phpFormat('Y-m-d') > this.config.maxDate) {dg('.xmsDatepickerMonth:last-of-type .xmsDatepickerBtnNextMonth', this.renderEl).classList.add('invisible');}dtButtons = new Date(this.renderDate);dtButtons.setDate(1);dtButtons.setMonth(dtButtons.getMonth() + (this.config.showMonths - 1));dtButtons.setFullYear(dtButtons.getFullYear() + 1);if (dtButtons.phpFormat('Y-m-d') > this.config.maxDate) {dg('.xmsDatepickerMonth:last-of-type .xmsDatepickerBtnNextYear', this.renderEl).classList.add('invisible');}}this.checkPosition();this.renderEvents();tsc.event.fireCustom(xms.datepicker, 'render', [this]);}checkPosition() {const rightEdgeX = this.renderEl.getBoundingClientRect().right + window.scrollX;if (rightEdgeX >= tsc.window.getInnerWidth()) {this.renderEl.style.right = '0';this.renderEl.style.left = 'auto';}}renderEvents() {dg('.xmsDatepickerBtnClose', this.renderEl).addEventListener('click', ev => {ev.preventDefault();this.hide();});dg('.xmsDatepickerBtnPrevYear', this.renderEl).addEventListener('click', ev => {ev.preventDefault();this.renderYear = this.renderYear - 1;this.render();});dg('.xmsDatepickerBtnPrevMonth', this.renderEl).addEventListener('click', ev => {ev.preventDefault();this.renderMonth = this.renderMonth - 1;this.render();});dg('.xmsDatepickerMonth:last-of-type .xmsDatepickerBtnNextMonth', this.renderEl).addEventListener('click', ev => {ev.preventDefault();this.renderMonth = this.renderMonth + 1;this.render();});dg('.xmsDatepickerMonth:last-of-type .xmsDatepickerBtnNextYear', this.renderEl).addEventListener('click', ev => {ev.preventDefault();this.renderYear = this.renderYear + 1;this.render();});if (this.dayIsDisabled((new Date()).phpFormat('Y-m-d'))) {dg('.xmsDatepickerBtnToday', this.renderEl).parentNode.classList.add('d-none');}dg('.xmsDatepickerBtnToday', this.renderEl).addEventListener('click', ev => {ev.preventDefault();this.inputDate = new Date();if (!this.config.range || this.inputDate.length >= 2) {this.hide();}});dg('.xmsDatepickerBtnClear', this.renderEl).addEventListener('click', ev => {ev.preventDefault();if (dg('.xmsDatepickerDaySelected', this.renderEl)) {tsc.dom.getAll('.xmsDatepickerDaySelected, .xmsDatepickerDaySelectedRange', this.renderEl).forEach(removeEl => {removeEl.classList.remove('xmsDatepickerDaySelected', 'xmsDatepickerDaySelectedRange');});}dg('.xmsDatepickerBtnClear', this.renderEl).classList.add('disabled');dg('.xmsDatepickerBtnClear', this.renderEl).blur();this.inputDate = null;this.hide();});tsc.dom.getAll('.xmsDatepickerDay:not(.xmsDatepickerDayDisabled):not(.xmsDatepickerPlaceholder)', this.renderEl).forEach(day => {if (this.config.range) {day.addEventListener('mouseenter', ev => {if (this.inputDate.length % 2 === 0) return;if (day.classList.contains('xmsDatepickerMinMaxSelectDisabled')) return;let selectDate = this.inputDate[0];let hoverDate = new Date(day.dataset.date);let lowDate = hoverDate < selectDate ? hoverDate : selectDate;let highDate = hoverDate > selectDate ? hoverDate : selectDate;tsc.dom.getAll('.xmsDatepickerDay', this.renderEl).forEach(rangeDay => {let rangeDate = new Date(rangeDay.dataset.date);if (rangeDate >= lowDate && rangeDate <= highDate) {rangeDay.classList.add('xmsDatepickerDaySelectedRange');} else {rangeDay.classList.remove('xmsDatepickerDaySelectedRange');}});});}day.addEventListener('click', ev => {ev.preventDefault();if (day.classList.contains('xmsDatepickerMinMaxSelectDisabled')) return;this.inputDate = new Date(day.dataset.date);if (this.config.range) {if (this.inputDate.length <= 1) {tsc.dom.getAll('.xmsDatepickerDaySelected, .xmsDatepickerDaySelectedRange', this.renderEl).forEach(el => {el.classList.remove('xmsDatepickerDaySelected', 'xmsDatepickerDaySelectedRange');});day.classList.add('xmsDatepickerDaySelected', 'xmsDatepickerDaySelectedRange');}if (this.inputDate.length == 1 && (this.config.minSelectDays || this.config.maxSelectDays)) {tsc.dom.getAll('.xmsDatepickerDay:not(.xmsDatepickerPlaceholder)', this.renderEl).forEach(this.disableMinMaxSelectDaysIf, this);}if (this.inputDate.length >= 2) {this.hide();}} else {this.hide();}});});}disableMinMaxSelectDaysIf(day) {let date = new Date(day.dataset.date);
191date.setHours(2, 0, 0);let inputDate = this.inputDate[0];inputDate.setHours(2, 0, 0);let diffDays = Math.round(Math.abs(date.getTime() - inputDate.getTime()) / 86400000);if (this.config.minSelectDays && diffDays < this.config.minSelectDays - 1) {day.classList.add('xmsDatepickerMinMaxSelectDisabled');}if (this.config.maxSelectDays && diffDays >= this.config.maxSelectDays) {day.classList.add('xmsDatepickerMinMaxSelectDisabled');}}hide() {if (this.renderEl && this.config.closable) {if (this.config.range) {if (this.inputDate[0]) this.renderDate = new Date(this.inputDate[0]);} else {if (this.inputDate) this.renderDate = new Date(this.inputDate);}this.renderEl.classList.add('d-none');tsc.event.fireCustom(xms.datepicker, 'hide', [this]);} else if (!this.config.closable) {this.render();}}show() {if (!this.renderEl) {if (this.config.range) {if (this.inputDate[0]) this.renderDate = new Date(this.inputDate[0]);} else {if (this.inputDate) this.renderDate = new Date(this.inputDate);}}this.render();}dayIsDisabled(dateYmd) {return ((this.config.minDate && dateYmd < this.config.minDate)|| (this.config.maxDate && dateYmd > this.config.maxDate)|| (this.config.disabledDates.indexOf(dateYmd) !== -1));}autocorrect(ev) {if (this.dom.value) {let newDate = '';let selectFrom = 0;let formatMatch = this.config.dateFormat.match(/^([djmn])[^a-z]+([djmn])[^a-z]+([yY])$/i);if (formatMatch) {let curdate = new Date();let matches = this.dom.value.match(/^([0-9]{1,2})[^0-9]([0-9]{1,2})[^0-9]([0-9]{2,4})?$/);if (!matches) {matches = this.dom.value.match(/^([0-9]{2,2})([0-9]{2,2})([0-9]{2,2}|[0-9]{4,4})?$/);}if (matches) {for (let i = 1; i <= 2; i++) {if (formatMatch[i] === 'j' || formatMatch[1] === 'n') {newDate += parseInt(matches[i]);} else {newDate += matches[i].padStart(2, '0');}newDate += '.';}if (!matches[3]) {selectFrom = newDate.length;newDate += formatMatch[3] === 'y' ? curdate.getFullYear().toString().substring(2, 4) : curdate.getFullYear();} else if (formatMatch[3] === 'Y' && matches[3].length == 2 && ev.type === 'blur') {if (parseInt("20" + matches[3]) <= curdate.getFullYear() + 10) {newDate += "20";} else {newDate += "19";}newDate += matches[3];} else {newDate += matches[3];}}}if (!newDate) {newDate = this.dom.value;}let formatDividers = this.config.dateFormat.replace(/[a-z]/ig, '').split('');let valueParts = newDate.split(/[^a-z0-9]+/i);let newValue = valueParts.shift();while (valueParts.length > 0) {if (formatDividers.length > 0) newValue += formatDividers.shift();newValue += valueParts.shift();}if (newValue && newValue != this.dom.value) {this.dom.value = newValue;if (selectFrom) tsc.dom.setSelection(this.dom, selectFrom, selectFrom + 4);this.render();}}}set renderYear(year) {this.renderDate.setDate(1);this.renderDate.setFullYear(parseInt(year));}set renderMonth(month) {this.renderDate.setDate(1);this.renderDate.setMonth(parseInt(month - 1));}set inputDate(dt) {if (this.config.range) {let cur = this.inputDate;if (!cur || !dt || cur.length >= 2) cur = [];if (dt !== null) {cur.push(dt);cur.sort((a, b) => { return a > b ? 1 : -1 });cur.forEach((v, k) => {cur[k] = v.phpFormat(this.config.dateFormat);});}this.dom.value = dt ? JSON.stringify(cur) : null;} else {this.dom.value = dt ? dt.phpFormat(this.config.dateFormat) : null;}tsc.event.fireCustom(xms.datepicker, 'selected', [this]);this.dom.dispatchEvent(new Event('input', { bubbles: true, cancelable: true }));}get renderYear() {return this.renderDate.getFullYear();}get renderMonth() {return this.renderDate.getMonth() + 1;}get inputDate() {if (this.config.range) {let ret = [];if (this.dom.value) {try {ret = JSON.parse(this.dom.value);} catch (error) {console.log('Datepicker: could not parse input');}ret.forEach((val, k) => {ret[k] = this.strToDate(val);});}return ret;} else {return this.strToDate(this.dom.value);}}strToDate(str, dateFormat) {if (!str) return null;if (!dateFormat) dateFormat = this.config.dateFormat;let regReplaces = {d: '(([0-2][0-9])|(3[01]))', // day of month: 01-31
192j: '(([0-9])|([1-2][0-9])|(3[01]))', // day of month: 1-31
193F: '[a-z]{3,}', // month: January-December
194m: '((0[0-9])|(1[0-2]))', // month: 01-12
195M: '[a-z]{3}', // month: Jan-Dec
196n: '(([0-9])|(1[0-2]))', // month: 1-12
197Y: '[0-9]{4}', // year: 2021
198y: '[0-9]{2}', // year: 21
199G: '(([0-9])|(1[0-9])|(2[0-3]))', // hour: 0-23
200H: '(([01][0-9])|(2[0-3]))', // hour: 00-23
201i: '[0-5][0-9]', // minutes: 00-59
202s: '[0-5][0-9]', // seconds: 00-59
203U: '[0-9]+' // unix timestamp in seconds: 1637136363
204};let reg = new RegExp(Object.keys(regReplaces).join('|'), 'g');let formatReg = new RegExp(dateFormat.replace(reg, match => regReplaces[match]), 'i');if (!str.match(formatReg)) return null;let formatDividers = dateFormat.replace(/[a-z]/ig, '').split('');formatDividers = formatDividers.map(x => x.replace('.', '\\.'));let matchReg = new RegExp('^(.*?)' + formatDividers.join('(.*?)') + '(.*?)$');let formatParts = dateFormat.match(matchReg);let valueParts = str.match(matchReg);let toSet = [];
204formatParts.forEach((formatPart, k) => {if (k === 0) return;switch (formatPart) {case "d":
205case "j":
206toSet[2] = { fn: 'setDate', val: parseInt(valueParts[k]) };break;case "m":
207case "n":
208toSet[1] = { fn: 'setMonth', val: parseInt(valueParts[k]) - 1 };break;case "F":
209case "M":
210let found = false;Date.prototype.phpFormat.months.forEach((month, mk) => {if (month.indexOf(valueParts[k]) === 0) {toSet[1] = { fn: 'setMonth', val: mk };found = true;}});if (!found) ret = null;break;case "Y":
211toSet[0] = { fn: 'setFullYear', val: parseInt(valueParts[k]) };break;case "y":
212let y = parseInt(valueParts[k]);y += (y <= parseInt((new Date()).phpFormat('y')) + 10) ? 2000 : 1900;toSet[0] = { fn: 'setFullYear', val: y };break;case "GH":
213toSet[3] = { fn: 'setHours', val: parseInt(valueParts[k]) };break;case "i":
214toSet[4] = { fn: 'setMinutes', val: parseInt(valueParts[k]) };break;case "s":
215toSet[5] = { fn: 'setSeconds', val: parseInt(valueParts[k]) };break;case "U":
216toSet[6] = { fn: 'setTime', val: parseInt(valueParts[k]) * 1000 };break;}});if (toSet.length === 0) return null;let ret = new Date();ret.setDate(1);toSet.forEach((item) => {ret[item.fn](item.val);});return ret;}};if (!xms) var xms = {};xms.paging = function (el) {this.dom = dg(el);if (!this._getAttr('item-selector')) return;this.scrollingTrigger = dg('.scrollingTrigger', this.dom);this.furtherButton = dg('.furtherButton', this.dom);this.pageLinks = tsc.dom.getAll('.page-link', this.dom);this._currentlyLoading = false;if (this.scrollingTrigger) {tsc.event.onScroll(window, this._checkScrollingTrigger, [], this);}if (this.furtherButton) {if (parseInt(this._getAttr('active-page')) >= parseInt(this._getAttr('page-count'))) {tsc.dom.addClass(this.dom, 'd-none');} else {tsc.event.onClick(this.furtherButton, this._checkFurtherButton, [], this);}}if (this.pageLinks) {this.pageLinks.forEach(function (pageLink) {var reg = new RegExp(this._getAttr('key') + '=([0-9]+)');var match = reg.exec(pageLink.getAttribute('href'));if (match) {tsc.event.onClick(pageLink, function (ev) {if (ev) tsc.event.preventDefault(ev);this._loadPage(match[1], true);}, [], this);}}, this);}};xms.paging.prototype = {_checkScrollingTrigger: function () {if (tsc.dom.getXY(this.scrollingTrigger)[1] < tsc.window.getScrollY() + (tsc.window.getInnerHeight() * 1.2)) {tsc.event.removeEvents(window, 'scroll', this._checkScrollingTrigger);this._loadNextPage();}},_checkFurtherButton: function (ev) {tsc.event.preventDefault(ev);this._loadNextPage();},_loadNextPage: function () {this._loadPage(parseInt(this._getAttr('active-page')) + 1, false);},_loadPage: function (page, removeOld) {if (this._currentlyLoading) return false;if (page > parseInt(this._getAttr('page-count'))) return false;if (page <= 0) return false;this._currentlyLoading = true;var reg = new RegExp('([\?&])' + this._getAttr('key') + '=[^&]*(&?)');var href = window.location.href.replace(reg, '$1').replace(/[?&]+$/, '');href = href.replace(window.location.hash, '');var historyUrl = href + (href.indexOf('?') >= 0 ? '&' : '?') + this._getAttr('key') + '=' + (!removeOld ? '1-' : '') + page + window.location.hash;href += (href.indexOf('?') >= 0 ? '&' : '?') + this._getAttr('key') + '=' + page + window.location.hash;tsc.ajax.request(href, {}, function (responseText) {window.history.replaceState({}, '', historyUrl);var bodyInnerHtml = responseText.substring(responseText.indexOf('<body') + 5, responseText.indexOf('</body>'));bodyInnerHtml = bodyInnerHtml.slice(bodyInnerHtml.indexOf('>') + 1);var tmpDiv = document.createElement('div');tmpDiv.insertAdjacentHTML('afterbegin', bodyInnerHtml);var ajaxPaging = dg('.xmsPaging[data-xms-paging-key="' + this._getAttr('key') + '"]', tmpDiv);var ajaxUpEl = ajaxPaging.parentNode;var upEl = this.dom.parentNode;while (ajaxUpEl && !dg(this._getAttr('item-selector'), ajaxUpEl)) {ajaxUpEl = ajaxUpEl.parentNode;upEl = upEl.parentNode;}var realItems = tsc.dom.getAll(this._getAttr('item-selector'), upEl);var lastRealItem = realItems[realItems.length - 1];var ajaxItems = tsc.dom.getAll(this._getAttr('item-selector'), ajaxUpEl);for (var i = ajaxItems.length - 1; i >= 0; i--) {tsc.dom.insertAfter(lastRealItem, ajaxItems[i]);}
216if (removeOld) {realItems.forEach(function (realItem) {tsc.dom.removeNode(realItem);});if (ajaxItems && ajaxItems[0]) {var pagingTopEl = dg('.xmsPaging[data-xms-paging-key="' + this._getAttr('key') + '"]');if (pagingTopEl && tsc.dom.getXY(pagingTopEl)[1] < tsc.dom.getXY(ajaxItems[0])[1]) {tsc.window.scrollToNode(pagingTopEl, 0, xms.getScrollOffsetY());} else {tsc.window.scrollToNode(ajaxItems[0], 0, xms.getScrollOffsetY() - 50);}}}var baseSelector = '.xmsPaging[data-xms-paging-key="' + this._getAttr('key') + '"]';tsc.dom.getAll(baseSelector).forEach(function (paging) {var selector = baseSelector;if (tsc.dom.hasClass(paging, 'xmsPagingTop')) selector = '.xmsPagingTop' + selector;if (tsc.dom.hasClass(paging, 'xmsPagingBottom')) selector = '.xmsPagingBottom' + selector;if (tsc.dom.hasClass(paging, 'xmsPagingItemIndex')) selector = '.xmsPagingItemIndex' + selector;var newPaging = dg(selector, tmpDiv);if (newPaging) {tsc.dom.insertAfter(paging, newPaging);tsc.dom.removeNode(paging);}});tsc.event.callMainEventFns();this._currentlyLoading = false;}, { scope: this });},_getAttr: function (varName) {return this.dom.getAttribute('data-xms-paging-' + varName);}};xms.paging.autoInit = function () {tsc.dom.getAll('.xmsPaging').forEach(function (dom) {if (!dom.xmsPaging) dom.xmsPaging = new xms.paging(dom);});};tsc.event.onWindowLoad(function () {xms.paging.autoInit();});if (!xms) var xms = {};xms.initForms = function (forms) {if (!forms) var forms = tsc.dom.getAll(".xmsForm:not(.noJs)");var newForms = [];for (var i = 0; i < forms.length; i++) {if (!forms[i].formInstance) {forms[i].formInstance = new xms.form(forms[i]);newForms.push(forms[i].formInstance);}}return newForms;};tsc.event.onReady(function () {xms.initForms();});xms.form = function (formRootNode) {tsc.event.fireCustom(xms.form, 'beforeFormInit', [this]);this.rootNode = formRootNode;this.hasValidators = false;this.isSaving = false;this.mode = this.rootNode.getAttribute('data-mode') == 'edit' ? 'edit' : 'add';this.initialValidation = this.rootNode.getAttribute('data-initial-validation');this.ckeditors = [];this._init();tsc.doLater(2, function (createdFormObj) {tsc.event.fireCustom(xms.form, 'formInited', [createdFormObj]);if (createdFormObj.mode == 'edit' && createdFormObj.hasValidators && createdFormObj.initialValidation != 'none') {createdFormObj._validateAll();}}, [this]);};xms.form.fileselectFiles = { ids: [], srcs: [] };try {if (sessionStorage.getItem('xmsFormFileselectFiles')) {xms.form.fileselectFiles = JSON.parse(sessionStorage.getItem('xmsFormFileselectFiles'));}} catch (err) { }xms.form.fileselectSelectionChanged = function (filemngFile, filemng) {let formBtnId = filemng.dom.getAttribute('data-fileselect-id');let selectLimit = parseInt(filemng.dom.getAttribute('data-fileselect-limit'));var indexOfFile = window.parent.xms.form.fileselectFiles.ids.indexOf(filemngFile.id);if (filemngFile.isSelected()) {if (indexOfFile === -1) {if (selectLimit === 1) {filemng.files.forEach(file => {if (file && window.parent.xms.form.fileselectFiles.ids.indexOf(file.id) !== -1 && file.isSelected()) {file.toggleSelection();}});window.parent.xms.form.fileselectFiles = { ids: [], srcs: [] };} else if (selectLimit <= window.parent.xms.form.fileselectFiles.ids.length) {tsc.modal.alert.render(xms.trlb('Only ?0 files may be selected.', 'Es dürfen nur ?0 Dateien gewählt werden.', [selectLimit]), 'isBackend danger');filemngFile.toggleSelection();return;}window.parent.xms.form.fileselectFiles.ids.push(filemngFile.id);window.parent.xms.form.fileselectFiles.srcs.push(filemngFile.src);}} else {if (indexOfFile !== -1) {window.parent.xms.form.fileselectFiles.ids.splice(indexOfFile, 1);window.parent.xms.form.fileselectFiles.srcs.splice(indexOfFile, 1);}}try {sessionStorage.setItem('xmsFormFileselectFiles', JSON.stringify(window.parent.xms.form.fileselectFiles));} catch (err) { }var takeSelection = dg('.selection a.multifileTakeSelection');if (!takeSelection) {var takeSelection = tsc.dom.appendChild('.selection section', {tag: 'a', href: '#', cls: 'js multifileTakeSelection bg-danger mt-05 p-05', children: [
217{ tag: 'i', cls: 'fa-solid fa-check fa-fw mr-05' },{ tag: 'span', innerHTML: xms.trlb('Take ?0 selected files', '?0 ausgewählte Dateien übernehmen', [0]) }]
218});tsc.event.onClick(takeSelection, function (filemng, formBtnId, ev) {if (ev) tsc.event.preventDefault(ev);tsc.event.fireCustom(this, 'fileselectsave', [filemng, formBtnId]);}, [filemng, formBtnId], window.parent);}var count = window.parent.xms.form.fileselectFiles.ids.length;if (count <= 0) {tsc.dom.removeNode(takeSelection);} else if (count == 1) {dg('span', takeSelection).innerHTML = xms.trlb('Take one selected file', 'Eine ausgewählte Datei übernehmen');} else {dg('span', takeSelection).innerHTML = xms.trlb('Take ?0 selected files', '?0 ausgewählte Dateien übernehmen', [count]);}};xms.form.fileselectSave = function (filemng, formBtnId) {if (filemng.dom.getAttribute('data-cke-funcnum')) {window.opener.CKEDITOR.tools.callFunction(filemng.dom.getAttribute('data-cke-funcnum'), xms.form.fileselectFiles.srcs[0]);window.close();return;}var formBtn = dg('#' + formBtnId);if (formBtn.matches('input[type="hidden"]') && xms.form.fileselectFiles.ids.length === 1) {let input = formBtn;input.value = xms.form.fileselectFiles.ids[0];input.setAttribute('data-src', xms.form.fileselectFiles.srcs[0]);tsc.event.fireCustom(input, "setValue");} else {var multiFieldButton = formBtn;var multiFieldWrapper = tsc.dom.getParentNode('.xmsFormMultiFields', multiFieldButton);if (!multiFieldButton || !multiFieldWrapper) return false;var insertPosition = 'end';var insertPositionEl = tsc.dom.getPreviousSibling('.xmsFormMultiFieldInsertPosition', multiFieldButton);if (insertPositionEl && insertPositionEl.value == 'begin') insertPosition = 'begin';var formEl = tsc.dom.getParentNode('.xmsForm', multiFieldButton);if (!formEl) return false;var form = formEl.formInstance;if (!form) return false;for (var i = 0; i < xms.form.fileselectFiles.ids.length; i++) {var newMultiField = form._addMultiField(multiFieldButton, insertPosition);
218if (newMultiField) {var input = dg(".xmsFormFieldFileSelectHidden", newMultiField);input.value = xms.form.fileselectFiles.ids[i];input.setAttribute('data-src', xms.form.fileselectFiles.srcs[i]);tsc.event.fireCustom(input, "setValue");}}}tsc.dom.removeNode(".tscLightboxMask");tsc.dom.removeNode(".fileSelectWindowWrapper");};tsc.event.onCustom(window, 'fileselectsave', xms.form.fileselectSave, [], window);xms.form.prototype = {_init: function () {this._initMultiCollapsible();this._initTables();this._initRadiosAndCheckboxes();this._initButtons();this._initDatepickers();this._initFileSelects();this._initImageMarker();this._initTextAutocompleter();this._initTextareas();this._initUploads();this._initMultiFields();this._initAutocomplete();this._initMultiAutocomplete();this._initMultiSelect();this._initColorhexs();this._initValidators();this._initFormRowWidth();this._initLatLngMap();this._initEditOptionsLightbox();this._initRecaptcha();tsc.doLater(1, function () {this._initRTEs();tsc.event.fireCustom(xms.form, 'init', [this]);}, [], this);},_initMultiCollapsible: function () {var els = tsc.dom.getAll('.xmsFormFieldMultiCollapsible', this.rootNode);for (var i = 0; i < els.length; i++) {if (els[i].tscCollapsible) continue;tsc.dom.addClass(dg('.xmsFormLabel > label', els[i]), 'tscCollapsibleOpener');tsc.dom.addClass(dg('.xmsFormField', els[i]), 'tscCollapsibleContent');tsc.dom.addClass(els[i], 'tscCollapsible');els[i].tscCollapsible = new tsc.collapsible(els[i], {openIfSelector: '.xmsFormFieldMultiCollapsibleInitialOpen'
219});}},_initRadiosAndCheckboxes: function () {var radios = tsc.dom.getAll('.xmsFormLabelRadio input[type="radio"]', this.rootNode);for (var i = 0; i < radios.length; i++) {if (radios[i].radioInstance) continue;radios[i].radioInstance = new xms.form.field.radio(radios[i]);}var checkboxes = tsc.dom.getAll('.xmsFormLabelCheckbox input[type="checkbox"]', this.rootNode);for (var i = 0; i < checkboxes.length; i++) {if (checkboxes[i].checkboxInstance) continue;checkboxes[i].checkboxInstance = new xms.form.field.checkbox(checkboxes[i]);}var buttons = tsc.dom.getAll(".xmsFormFieldMultiCheckboxSelectAll, .xmsFormFieldMultiCheckboxSelectNone", this.rootNode);for (var i = 0; i < buttons.length; i++) {if (buttons[i].buttonInited) continue;tsc.event.onClick(buttons[i], function (button, ev) {tsc.event.preventDefault(ev);if (tsc.dom.hasClass(button, 'xmsFormFieldMultiCheckboxSelectAll')) {var labels = tsc.dom.getAll('.xmsFormLabelCheckbox:not(.xmsFormLabelCheckboxChecked)+label', tsc.dom.getParentNode('.xmsFormField', button));} else {var labels = tsc.dom.getAll('.xmsFormLabelCheckboxChecked+label', tsc.dom.getParentNode('.xmsFormField', button));}labels.forEach(function (label) {tsc.event.fireNative(label, 'click');});}, [buttons[i]], this);buttons[i].buttonInited = true;}},_initButtons: function () {var buttons = tsc.dom.getAll('.xmsButtonSubmit, button[type="submit"]', this.rootNode);for (var i = 0; i < buttons.length; i++) {if (buttons[i].buttonInited) continue;tsc.event.onClick(buttons[i],this.doSave,[],this
220);buttons[i].buttonInited = true;}var buttons = tsc.dom.getAll(".xmsButtonCancel", this.rootNode);for (var i = 0; i < buttons.length; i++) {if (buttons[i].buttonInited) continue;tsc.event.onClick(buttons[i],() => {tsc.event.fireCustom(this, "cancel");tsc.event.fireCustom(xms.form, "cancel");},[],this
221);buttons[i].buttonInited = true;}},_initRTEs: function () {var rtes = tsc.dom.getAll('.xmsRteInput', this.rootNode);for (var i = 0; i < rtes.length; i++) {if (rtes[i].rteInited) continue;tsc.dom.autoId(rtes[i]);var configString = rtes[i].getAttribute("data-config");var ckConfig = tsc.clone(xms.ckeditorConfigPresets[configString]);ckConfig.customConfig = '/assets/xms/js/ckeditor/config.js';tsc.event.fireCustom(xms.form, "beforeRteInit", [ckConfig, this]);var stylesSet = CKEDITOR.stylesSet.get(ckConfig.stylesSet || 'fe');if (!stylesSet || stylesSet.length <= 0) {for (var j = 0; j < ckConfig.toolbar.length; j++) {if (ckConfig.toolbar[j].name == "styles") {for (var j2 = 0; j2 < ckConfig.toolbar[j].items.length; j2++) {if (ckConfig.toolbar[j].items[j2] == "Styles") {ckConfig.toolbar[j].items.splice(j2, 1);j2--;}}break;}}}this.ckeditors.push({name: rtes[i].name,editor: CKEDITOR.replace(rtes[i].id, ckConfig)});tsc.event.fireCustom(xms.form, "rteInited", [this.ckeditors[this.ckeditors.length - 1], this]);rtes[i].rteInited = true;}},unInitRteBelow: function (anyParentEl) {var rtes = tsc.dom.getAll(".xmsRteInput", anyParentEl);for (var i = 0; i < rtes.length; i++) {for (var k = 0; k < this.ckeditors.length; k++) {if (this.ckeditors[k].name == rtes[i].name) {this.ckeditors[k].editor.destroy();this.ckeditors.splice(k, 1);k--;rtes[i].rteInited = false;}}}},_initTextAutocompleter: function () {var textInputs = tsc.dom.getAll("input[data-ac]", this.rootNode);for (var i = 0; i < textInputs.length; i++) {if (textInputs[i].autocompleteObj) continue;if (textInputs[i].getAttribute('data-ac') == "auto") {var acUrl = this.getAction();} else {var acUrl = textInputs[i].getAttribute('data-ac');}textInputs[i].autocompleteObj = new tsc.ui.autocomplete(textInputs[i], acUrl);if (textInputs[i].getAttribute('data-ac-showifempty')) {textInputs[i].autocompleteObj.showIfEmpty = true;}textInputs[i].autocompleteObj.setSearchParams({ xmsFormAc: textInputs[i].name });}},_initTextareas: function () {tsc.dom.getAll('textarea[data-textarea-auto-resize]').forEach(function (textarea) {tsc.dom.textareaAutoResize(textarea, parseInt(textarea.getAttribute('data-textarea-auto-resize')));textarea.removeAttribute('data-textarea-auto-resize');});},_initDatepickers: function () {tsc.dom.getAll(".xmsFormFieldDateDate input, .xmsFormFieldDate input, .xmsFormFieldDatetime .xmsInputDate", this.rootNode).forEach(el => {if (el.xmsFormFieldDate) return;if (el.closest('.xmsFormFieldDaterangeDaterange')) {el.xmsFormFieldDate = new xms.formFieldDaterange(el);} else {el.xmsFormFieldDate = new xms.formFieldDate(el);}});
221tsc.event.onCustom(xms.datepicker, 'selected', (datepicker) => {tsc.event.fireCustom(xms.form, 'datePickerSelected', [this, datepicker]);}, [], this);var timeSelects = tsc.dom.getAll(".xmsFormFieldDatetime .xmsInputTime, .xmsFormFieldTime .xmsInputTime", this.rootNode);for (var i = 0; i < timeSelects.length; i++) {if (tsc.os.isMobile) {timeSelects[i].type = 'time';timeSelects[i].min = tsc.timeSelect.intToTime(timeSelects[i].getAttribute('data-tsc-timeselect-min'));timeSelects[i].max = tsc.timeSelect.intToTime(timeSelects[i].getAttribute('data-tsc-timeselect-max'));} else {if (!timeSelects[i].tscTimeSelect) {timeSelects[i].tscTimeSelect = new tsc.timeSelect(timeSelects[i]);}}}},_initFileSelects: function () {var fileSelectWrappers = tsc.dom.getAll(".xmsFormFieldFileSelectWrapper", this.rootNode);for (var i = 0; i < fileSelectWrappers.length; i++) {if (fileSelectWrappers[i].fileSelectInited) continue;var input = tsc.dom.get(".xmsFormFieldFileSelectHidden", fileSelectWrappers[i]);tsc.event.onCustom(input, "setValue", this._onFileSelectSetValue, [input], this);this._onFileSelectSetValue(input, 'isInitial');var button = tsc.dom.get(".xmsFormFieldFileSelect", fileSelectWrappers[i]);tsc.event.onClick(button, function (wrapper, ev) {var input = tsc.dom.get(".xmsFormFieldFileSelectHidden", wrapper);var activeFolder = '';if (input.getAttribute('data-start-folder')) {activeFolder = '&folder=' + encodeURIComponent(input.getAttribute('data-start-folder'));} else if (input.getAttribute('data-src')) {var activeFolderParts = input.getAttribute('data-src').split('/');activeFolderParts.pop();activeFolderParts.shift();activeFolderParts.shift();activeFolderParts.shift();activeFolder = '&folder=' + encodeURIComponent(activeFolderParts.join('/'));}let selectAcceptType = input.dataset.selectAcceptType || '';if (selectAcceptType !== '') selectAcceptType = '&selectAcceptType=' + encodeURIComponent(selectAcceptType);let selectAcceptMime = input.dataset.selectAcceptMime || '';if (selectAcceptMime !== '') selectAcceptMime = '&selectAcceptMime=' + encodeURIComponent(selectAcceptMime);window.parent.xms.form.fileselectFiles.ids = [];window.parent.xms.form.fileselectFiles.srcs = [];try {sessionStorage.setItem('xmsFormFileselectFiles', JSON.stringify(window.parent.xms.form.fileselectFiles));} catch (err) { }var mask = tsc.dom.appendChild(document.body, {tag: "div", cls: "tscLightboxMask"
222});mask.style.opacity = .7;var overlay = tsc.dom.appendChild(document.body, {tag: "div", cls: "fileSelectWindowWrapper", children: [
223{ tag: "iframe", cls: "fileSelectWindow", src: "/admin/filemanager/?fileselect=" + input.id + activeFolder + "&fileselectLimit=1" + selectAcceptType + selectAcceptMime },{ tag: "a", href: "#", cls: "btn fileSelectWindowCloser", children: [{ tag: "i", cls: "fa-solid fa-xmark" }] }]
224});tsc.event.onClick(tsc.dom.get(".fileSelectWindowCloser", overlay), function (overlay, mask, ev) {tsc.dom.removeNode(overlay);tsc.dom.removeNode(mask);if (input.getAttribute("data-validators")) this._validate(input);return false;}, [overlay, mask], this);tsc.event.onClick(mask, function (overlay, mask, ev) {var target = ev.target || ev.srcElement;var clickedInContent = tsc.dom.getParentNode(".fileSelectWindowWrapper", target);if (!clickedInContent) {tsc.dom.removeNode(overlay);tsc.dom.removeNode(mask);if (input.getAttribute("data-validators")) this._validate(input);}}, [overlay, mask], this);}, [fileSelectWrappers[i]], this);fileSelectWrappers[i].fileSelectInited = true;}},_initImageMarker: function () {tsc.dom.getAll(".xmsFormFieldImagemarkerImagemarker .xmsFormFieldImagemarkerWrapper", this.rootNode).forEach(function (el) {if (el.imageMarkerInstance) return;el.imageMarkerInstance = new xms.form.field.imagemarker(el);}, this);},_initUploads: function () {var uploadWrappers = tsc.dom.getAll(".xmsFormFieldUploadWrapper, .xmsFormFieldMultiUploadWrapper", this.rootNode);for (var i = 0; i < uploadWrappers.length; i++) {if (uploadWrappers[i].uploadInited) continue;this._initUpload(uploadWrappers[i], tsc.dom.hasClass(uploadWrappers[i], 'xmsFormFieldMultiUploadWrapper'));uploadWrappers[i].uploadInited = true;}},_initUpload: function (uploadWrapper, isMulti) {var eventBeforeUpload = function (file, uploadIdx) {tsc.dom.removeClass(dg(clsPrefix + "FileList", uploadWrapper), 'd-none');var headerText = xms.trlb('Uploading', 'Lade hoch') + ': ' + file.name;dg(clsPrefix + "FileList", uploadWrapper).innerHTML += '<div id="fileUploading' + uploadIdx + '">' + headerText + ' (<span class="progressPercent' + uploadIdx + '">0%</span>)</div>';var buttons = tsc.dom.getAll('button[type=submit]', this.rootNode);for (var b = 0; b < buttons.length; b++) {buttons[b].disabled = true;}};var eventUploadProgress = function (file, uploadIdx, ev) {var loaded = (file.chunkStart || 0) + ev.loaded;if (file.chunkEnd && loaded > file.chunkEnd) loaded = file.chunkEnd;dg(clsPrefix + 'FileList .progressPercent' + uploadIdx).innerHTML = Math.round(100 / file.size * loaded) + "%";};var eventAfterUpload = function (file, uploadIdx, responseText) {var ret = JSON.parse(responseText);dg(clsPrefix + 'FileList .progressPercent' + uploadIdx).innerHTML = '100%';tsc.dom.removeNode('div#fileUploading' + uploadIdx);if (!dg(clsPrefix + 'FileList div[id^="fileUploading"]')) {tsc.dom.addClass(dg(clsPrefix + "FileList", uploadWrapper), 'd-none');}if (xms.uploader.uploadsActive <= 0) {var buttons = tsc.dom.getAll('button[type=submit]', this.rootNode);for (var b = 0; b < buttons.length; b++) {buttons[b].disabled = false;}}if (!ret.status) {tsc.modal.alert.render(ret.message, 'isBackend danger');return;}if (isMulti) {var oldValue = input.value.length >= 1 ? JSON.parse(input.value) : [];oldValue.push(ret.id);var newValue = JSON.stringify(oldValue);var oldSrc = input.getAttribute('data-src');oldSrc = oldSrc ? JSON.parse(oldSrc) : [];oldSrc.push(ret.src);var newSrc = JSON.stringify(oldSrc);} else {var newValue = ret.id;var newSrc = ret.src;}input.value = newValue;input.setAttribute('data-src', newSrc);tsc.event.fireCustom(input, "setValue");};var eventError = function (file, err) {tsc.dom.appendChild(uploadWrapper, {tag: 'span', cls: 'text-danger', innerHTML: err.message
225});tsc.doLater(9000, function () {tsc.anim.run({el: dg('span.text-danger', uploadWrapper), cssProp: "opacity", from: 1, to: 0, postFn: function () {tsc.dom.removeNode(dg('span.text-danger', uploadWrapper));}});});};var clsPrefix = (isMulti ? ".xmsFormFieldMultiUpload" : ".xmsFormFieldUpload");if (isMulti) {var uploadSelectButton = dg(clsPrefix + "Btn", uploadWrapper);} else {var uploadSelectButton = dg(clsPrefix + "Button", uploadWrapper);}var input = dg(clsPrefix + "Hidden", uploadWrapper);var uploaderQueryString = this.getAction() + (this.getAction().indexOf("?") == -1 ? "?" : "&") + "uploadSaveFile=1&folder=" + encodeURIComponent(uploadSelectButton.getAttribute("data-folder"));var maxFilesize = uploadSelectButton.getAttribute("data-max-filesize");if (maxFilesize) maxFilesize = parseInt(maxFilesize);var acceptFiletypes = uploadSelectButton.getAttribute("data-accept-filetypes");tsc.dom.autoId(uploadWrapper);tsc.dom.autoId(uploadSelectButton);tsc.event.onCustom(input, "setValue", this._onFileUploadSetValue, [uploadWrapper, isMulti], this);this._onFileUploadSetValue(uploadWrapper, isMulti);this.uploader = new xms.uploader({el: uploadSelectButton,url: uploaderQueryString,multiple: isMulti,maxFilesize: maxFilesize || null,acceptFiletypes: acceptFiletypes || null
226});tsc.event.onCustom(this.uploader, 'beforeUpload', eventBeforeUpload, [], this);tsc.event.onCustom(this.uploader, 'uploadProgress', eventUploadProgress, [], this);tsc.event.onCustom(this.uploader, 'afterUpload', eventAfterUpload, [], this);tsc.event.onCustom(this.uploader, 'error', eventError, [], this);},_onFileUploadSetValue: function (uploadWrapper, isMulti) {var clsPrefix = (isMulti ? ".xmsFormFieldMultiUpload" : ".xmsFormFieldUpload");var inp = dg(clsPrefix + "Hidden", uploadWrapper);var header = dg(clsPrefix + "Header", uploadWrapper);var filepaths = [];var ids = [];if (isMulti && inp.value) {ids = JSON.parse(inp.value);filepaths = JSON.parse(inp.getAttribute('data-src'));} else if (inp.value) {ids.push(inp.value);filepaths.push(inp.getAttribute('data-src'));}header.innerHTML = '';for (var i = 0; i < filepaths.length; i++) {tsc.dom.removeClass(header, 'd-none');tsc.dom.removeClass(uploadWrapper, 'noFileSelected');dg(".uploadAnotherFile", uploadWrapper).style.display = "inline-block";dg(".uploadFile", uploadWrapper).style.display = "none";var filepathParts = filepaths[i].split("/");if (i != 0) header.innerHTML += '<br />';header.innerHTML += '<span class="' + clsPrefix.substring(1) + 'Name"><a href="' + filepaths[i] + '" target="_blank">' + filepathParts.pop() + '</a></span>';if (!inp.disabled) header.innerHTML += '<a href="#" class="' + clsPrefix.substring(1) + 'Button ' + clsPrefix.substring(1) + 'Remove ml-1" style="display:inline-block;" data-id="' + tsc.escapeHtml(ids[i]) + '">' + xms.trl("Remove file", "Datei entfernen") + '</a>';}var removeNodes = tsc.dom.getAll(clsPrefix + 'Remove', uploadWrapper);for (var i = 0; i < removeNodes.length; i++) {tsc.event.onClick(removeNodes[i], function (removeNode, ev) {tsc.event.preventDefault(ev);if (isMulti) {for (var k = 0; k < ids.length; k++) {if (ids[k] == removeNode.getAttribute('data-id')) {ids.splice(k, 1);filepaths.splice(k, 1);inp.value = JSON.stringify(ids);inp.setAttribute('data-src', JSON.stringify(filepaths));break;}}} else {inp.value = '';inp.setAttribute('data-src', '');}if (tsc.dom.getAll(clsPrefix + 'Remove', uploadWrapper).length == 1) {dg(".uploadAnotherFile", uploadWrapper).style.display = "none";dg(".uploadFile", uploadWrapper).style.display = "inline-block";tsc.dom.addClass(uploadWrapper, 'noFileSelected');tsc.dom.addClass(header, 'd-none');}tsc.dom.removeNode(tsc.dom.getPreviousSibling(clsPrefix + 'Name', removeNode));if (tsc.dom.getPreviousSibling('br', removeNode)) {tsc.dom.removeNode(tsc.dom.getPreviousSibling('br', removeNode));} else if (tsc.dom.getNextSibling('br', removeNode)) {tsc.dom.removeNode(tsc.dom.getNextSibling('br', removeNode));}tsc.dom.removeNode(removeNode);}, [removeNodes[i]], this);}},_initMultiSelect: function () {var multiSelects = tsc.dom.getAll('.xmsFormFieldMultiSelect select[data-multiselect-subforms]', this.rootNode);for (var i = 0; i < multiSelects.length; i++) {if (multiSelects[i].xmsMultiSelectInited) continue;tsc.event.onChange(multiSelects[i], this._multiSelectChange, [multiSelects[i]], this);tsc.doLater(1, this._multiSelectChange, [multiSelects[i]], this);multiSelects[i].xmsMultiSelectInited = true;}},_multiSelectChange: function (selectField) {var data = JSON.parse(selectField.getAttribute('data-multiselect-subforms'));var subFormOpen = tsc.dom.getNextSibling(".xmsFormFieldMultiSelectSubFormWrapper", selectField);if (subFormOpen) {this.unInitRteBelow(subFormOpen);tsc.dom.removeNode(subFormOpen);}if (selectField.value && data[selectField.value]) {var newSubForm = tsc.dom.appendChild(selectField.parentNode, { tag: "div", cls: "xmsFormFieldMultiSelectSubFormWrapper", innerHTML: data[selectField.value] });if (newSubForm) {var isInMultiField = tsc.dom.getParentNode('.xmsFormMultiField', newSubForm);if (isInMultiField) {this._replaceMultiFieldBlueprintNames();
226this._replaceIdsAndForsInMultiField(newSubForm);}}}this._init();},_initMultiFields: function () {var addButtons = [];var multiFields = tsc.dom.getAll(".xmsFormFieldMultiFields", this.rootNode);for (var i = 0; i < multiFields.length; i++) {if (multiFields[i].multiFieldsInited) continue;var addButtonEls = tsc.dom.getAll(".xmsFormMultiFieldAdd", multiFields[i]);var addButton = addButtonEls[addButtonEls.length - 1];tsc.event.onClick(addButton, function (addBtn, ev) {if (ev) tsc.event.preventDefault(ev);var insertPosition = 'end';var insertPositionEl = tsc.dom.getPreviousSibling('.xmsFormMultiFieldInsertPosition', addBtn);if (insertPositionEl && insertPositionEl.value == 'begin') insertPosition = 'begin';var addNumEl = tsc.dom.getPreviousSibling('.xmsFormMultiFieldAddAmount', addBtn);if (addNumEl) {for (var i = 0; i < parseInt(addNumEl.value); i++) {this._addMultiField(addBtn, insertPosition);}} else {this._addMultiField(addBtn, insertPosition);}}, [addButton], this);var addFilesButtonEls = tsc.dom.getAll(".xmsFormMultiFieldAddByFiles", multiFields[i]);var addFilesButton = addFilesButtonEls[addFilesButtonEls.length - 1];if (addFilesButton) {tsc.event.onClick(addFilesButton, this._addMultiFieldsByFiles, [addFilesButton], this);}this._replaceMultiFieldBlueprintNames();this._initMultiFieldDragDrop();this._setMultiFieldsMinMaxButtonVisibility(dg('.xmsFormMultiFields', multiFields[i]));addButtons.push(addButton);multiFields[i].multiFieldsInited = true;var defaultFields = parseInt(addButton.getAttribute("data-defaultfields"));var foundFields = this._getMultiFieldsItems(dg('.xmsFormMultiFields', multiFields[i])).length - 1;for (var j = 0; j < defaultFields - foundFields; j++) {this._addMultiField(addButton);}}},_initMultiFieldDragDrop: function () {var removeBtns = tsc.dom.getAll('.xmsFormFieldMultiFields .xmsFormMultiFieldDelete');for (var j = 0; j < removeBtns.length; j++) {if (removeBtns[j].xmsMultiFieldsDeleteInited) continue;tsc.event.onClick(removeBtns[j], function (removeBtn, ev) {tsc.event.preventDefault(ev);var multiFields = tsc.dom.getParentNode('.xmsFormMultiFields', removeBtn);var addButtonEls = tsc.dom.getAll(".xmsFormMultiFieldAdd", multiFields);var addButton = addButtonEls[addButtonEls.length - 1];if (addButton && addButton.hasAttribute('data-minfields')) {var foundFields = this._getMultiFieldsItems(multiFields).length - 1;if (foundFields <= parseInt(addButton.getAttribute('data-minfields'))) return;}this.unInitRteBelow(tsc.dom.getParentNode('.xmsFormMultiField', removeBtn));tsc.doLater(1, function (removeBtn) {tsc.dom.removeNode(tsc.dom.getParentNode('.xmsFormMultiField', removeBtn));tsc.event.fireCustom(multiFields, 'delete', [multiFields]);this._setMultiFieldsMinMaxButtonVisibility(multiFields);}, [removeBtn], this);}, [removeBtns[j]], this);removeBtns[j].xmsMultiFieldsDeleteInited = true;}var labels = tsc.dom.getAll(".xmsFormFieldMultiFields .xmsFormMultiFieldDndWrapper");for (var j = 0; j < labels.length; j++) {var label = tsc.dom.get("a", labels[j]);if (label.madeDraggable) continue;tsc.dom.autoId(label);tsc.dom.draggable(label, {dataValue: "move:" + label.id
227});tsc.event.onDragStart(label, function (label, ev) {var multiFields = tsc.dom.getParentNode('.xmsFormMultiFields', label).childNodes;for (var k = 0; k < multiFields.length; k++) {var dropper = dg(".xmsFormMultiFieldMoveDropper", multiFields[k]);if (dropper) {tsc.dom.addClass(dropper, "xmsFormMultiFieldMoveDropperActive");}tsc.window.addScrollAreas();}}, [label]);tsc.event.onDragEnd(label, function (ev) {var droppers = tsc.dom.getAll(".xmsFormFieldMultiFields .xmsFormMultiFieldMoveDropperActive");for (var k = 0; k < droppers.length; k++) {tsc.dom.removeClass(droppers[k], "xmsFormMultiFieldMoveDropperActive");}tsc.window.removeScrollAreas();});label.madeDraggable = true;}var droppers = tsc.dom.getAll(".xmsFormFieldMultiFields .xmsFormMultiFieldMoveDropper");for (var j = 0; j < droppers.length; j++) {if (droppers[j].multiFieldIsDroppable) continue;tsc.dom.droppable(droppers[j], {callback: function (value, config, ev) {if (!value) return false;if (value.substring(0, 5) == "move:") {var draggedLabel = tsc.dom.get("#" + value.substring(5));var draggedMultiField = tsc.dom.getParentNode(".xmsFormMultiField", draggedLabel);this.unInitRteBelow(draggedMultiField);var droppedMultiField = tsc.dom.getParentNode(".xmsFormMultiField", config.el);tsc.dom.insertBefore(droppedMultiField, draggedMultiField);this._init();}},scope: this
228});droppers[j].multiFieldIsDroppable = true;}},_addMultiField: function (addButton, insertPosition) {var multiFields = tsc.dom.getParentNode('.xmsFormMultiFields', addButton);if (addButton.hasAttribute('data-maxfields')) {var foundFields = this._getMultiFieldsItems(multiFields).length - 1;if (foundFields >= parseInt(addButton.getAttribute('data-maxfields'))) return null;}if (!insertPosition || (insertPosition != 'begin' && insertPosition != 'end')) {var insertPosition = 'end';}tsc.event.fireCustom(this, "beforeAddMultiField");var addHtmlNode = tsc.dom.getPreviousSibling("input.xmsFormMultiFieldAddHtml", addButton);if (insertPosition == 'begin') {var insertBeforeEl = dg('.xmsFormMultiField', tsc.dom.getParentNode(".xmsFormMultiFields", addHtmlNode));} else {var insertBeforeEl = tsc.dom.getParentNode(".xmsFormMultiField", addHtmlNode);}insertBeforeEl.insertAdjacentHTML('beforebegin', JSON.parse(addHtmlNode.value));var newDiv = tsc.dom.getPreviousSibling('.xmsFormMultiField', insertBeforeEl);this._replaceMultiFieldBlueprintNames();
228this._replaceIdsAndForsInMultiField(newDiv);this._initMultiFieldDragDrop();this._init();this._setMultiFieldsMinMaxButtonVisibility(multiFields);tsc.event.fireCustom(this, "addMultiField");return newDiv;},_getMultiFieldsItems: function (multiFields) {var ret = [];for (var i = 0; i < multiFields.children.length; i++) {if (!multiFields.children[i].classList.contains('xmsFormMultiField')) continue;ret.push(multiFields.children[i]);}return ret;},_addMultiFieldsByFiles: function (addButton) {tsc.dom.autoId(addButton);var mask = tsc.dom.appendChild(document.body, {tag: "div", cls: "tscLightboxMask"
229});mask.style.opacity = .7;window.parent.xms.form.fileselectFiles.ids = [];window.parent.xms.form.fileselectFiles.srcs = [];try {sessionStorage.setItem('xmsFormFileselectFiles', JSON.stringify(window.parent.xms.form.fileselectFiles));} catch (err) { }var activeFolder = '';if (addButton.getAttribute('data-start-folder')) {activeFolder = '&folder=' + encodeURIComponent(addButton.getAttribute('data-start-folder'));}let selectAcceptType = addButton.dataset.selectAcceptType || '';if (selectAcceptType !== '') selectAcceptType = '&selectAcceptType=' + encodeURIComponent(selectAcceptType);let selectAcceptMime = addButton.dataset.selectAcceptMime || '';if (selectAcceptMime !== '') selectAcceptMime = '&selectAcceptMime=' + encodeURIComponent(selectAcceptMime);var overlay = tsc.dom.appendChild(document.body, {tag: "div", cls: "fileSelectWindowWrapper", children: [
230{ tag: "iframe", cls: "fileSelectWindow", src: "/admin/filemanager/?fileselect=" + addButton.id + activeFolder + selectAcceptType + selectAcceptMime },{ tag: "a", href: "#", cls: "btn fileSelectWindowCloser", children: [{ tag: "i", cls: "fa-solid fa-xmark" }] }]
231});tsc.event.onClick(tsc.dom.get(".fileSelectWindowCloser", overlay), function (overlay, mask, ev) {tsc.dom.removeNode(overlay);tsc.dom.removeNode(mask);return false;}, [overlay, mask], this);tsc.event.onClick(mask, function (overlay, mask, ev) {var target = ev.target || ev.srcElement;var clickedInContent = tsc.dom.getParentNode(".fileSelectWindowWrapper", target);if (!clickedInContent) {tsc.dom.removeNode(overlay);tsc.dom.removeNode(mask);}}, [overlay, mask], this);return false;},_setMultiFieldsMinMaxButtonVisibility: function (multiFields) {var addButtonEls = tsc.dom.getAll(".xmsFormMultiFieldAdd", multiFields);if (!addButtonEls.length) return;var addButton = addButtonEls[addButtonEls.length - 1];var foundFields = this._getMultiFieldsItems(multiFields).length - 1;tsc.dom.getAll('.xmsButtonDnd', multiFields).forEach(function (btn) {if (tsc.dom.getParentNode('.xmsFormMultiFields', btn) !== multiFields) return;if (foundFields <= 1) {btn.classList.add('d-none');} else {btn.classList.remove('d-none');}});if (addButton.hasAttribute('data-minfields')) {tsc.dom.getAll('.xmsFormMultiFieldDelete', multiFields).forEach(function (btn) {if (tsc.dom.getParentNode('.xmsFormMultiFields', btn) !== multiFields) return;if (foundFields <= parseInt(addButton.getAttribute('data-minfields'))) {btn.classList.add('d-none');} else {btn.classList.remove('d-none');}});}if (!addButton.getAttribute('data-noaddbutton') // if we have no add button whatsoever, do nothing
232&& addButton.hasAttribute('data-maxfields')) {tsc.dom.getAll('.xmsFormMultiFieldAdd, .xmsFormMultiFieldAddByFiles, input.xmsFormMultiFieldAddAmount, .xmsFormMultiFieldInsertPosition', multiFields).forEach(function (btn) {if (tsc.dom.getParentNode('.xmsFormMultiFields', btn) !== multiFields) return;if (foundFields >= parseInt(addButton.getAttribute('data-maxfields'))) {btn.classList.add('d-none');} else {btn.classList.remove('d-none');}});}},_replaceMultiFieldBlueprintNames: function () {var multiFieldsEls = tsc.dom.getAll(".xmsFormFieldMultiFields .xmsFormMultiFields", this.rootNode);for (var i = 0; i < multiFieldsEls.length; i++) {var multiFields = multiFieldsEls[i];var mfFieldName = multiFields.getAttribute('data-mf-fieldname');var mffFieldnameRegExp = new RegExp('^' + tsc.regExpEscape(mfFieldName) + '\\[_[0-9]+\\]$');var multiFieldsFields = tsc.dom.getAll('.xmsFormMultiField[data-mff-fieldname="' + mfFieldName + '[_mf_blueprint]"]', multiFields);for (var k = 0; k < multiFieldsFields.length; k++) {var arrayKey = 0;while (dg('.xmsFormMultiField[data-mff-fieldname="' + mfFieldName + '[_' + arrayKey + ']"]', multiFields)) {arrayKey++;}multiFieldsFields[k].setAttribute('data-mff-fieldname', mfFieldName + '[_' + arrayKey + ']');}var subMfs = tsc.dom.getAll('[data-mf-fieldname^="' + mfFieldName + '[_mf_blueprint]"], [data-mff-fieldname^="' + mfFieldName + '[_mf_blueprint]"]', multiFields);for (var k = 0; k < subMfs.length; k++) {var mff = subMfs[k];do {mff = tsc.dom.getParentNode('.xmsFormMultiField', mff);} while (mff && !mff.getAttribute('data-mff-fieldname').match(mffFieldnameRegExp));if (subMfs[k].hasAttribute('data-mff-fieldname')) {subMfs[k].setAttribute('data-mff-fieldname', subMfs[k].getAttribute('data-mff-fieldname').replace(mfFieldName + '[_mf_blueprint]', mff.getAttribute('data-mff-fieldname')));} else {subMfs[k].setAttribute('data-mf-fieldname', subMfs[k].getAttribute('data-mf-fieldname').replace(mfFieldName + '[_mf_blueprint]', mff.getAttribute('data-mff-fieldname')));}}var blueprintFields = tsc.dom.getAll('[name^="' + mfFieldName + '[_mf_blueprint]"], [data-validators^="' + mfFieldName + '[_mf_blueprint]"]', multiFields);for (var k = 0; k < blueprintFields.length; k++) {var mff = blueprintFields[k];do {mff = tsc.dom.getParentNode('.xmsFormMultiField', mff);} while (mff && !mff.getAttribute('data-mff-fieldname').match(mffFieldnameRegExp));if (blueprintFields[k].name) {blueprintFields[k].name = blueprintFields[k].name.replace(mfFieldName + '[_mf_blueprint]', mff.getAttribute('data-mff-fieldname'));}if (blueprintFields[k].hasAttribute('data-validators')) {blueprintFields[k].setAttribute('data-validators', blueprintFields[k].getAttribute('data-validators').replace(mfFieldName + '[_mf_blueprint]', mff.getAttribute('data-mff-fieldname')));}}}}
232,_replaceIdsAndForsInMultiField: function (belowEl) {var belowEl = dg(belowEl);var labels = tsc.dom.getAll("label", belowEl);for (var i = 0; i < labels.length; i++) {var label = labels[i];if (label.htmlFor && !label.htmlFor.match(/new[0-9]+$/)) {var dat = new Date();var newId = label.htmlFor + "new" + dat.getTime();var input = tsc.dom.get("#" + label.htmlFor, belowEl);if (input) {input.id = newId;if (input.hasAttribute('aria-describedby')) {var errorContainer = dg('#' + input.getAttribute('aria-describedby'));if (errorContainer) errorContainer.id = newId + 'err';input.setAttribute('aria-describedby', newId + 'err');}}var allLabels = tsc.dom.getAll('label[for="' + label.htmlFor + '"]', belowEl);for (var j = 0; j < allLabels.length; j++) {allLabels[j].htmlFor = newId;}}}var rtes = tsc.dom.getAll("textarea.xmsRteInput, input", belowEl);for (var i = 0; i < rtes.length; i++) {var rte = rtes[i];if (rte.id && !rte.id.match(/new[0-9]+$/)) {var dat = new Date();var newId = rte.id + "new" + dat.getTime();rte.id = newId;}}},_initAutocomplete: function () {var autocompletes = tsc.dom.getAll('.xmsFormFieldAutocomplete input[type="text"]', this.rootNode);for (var i = 0; i < autocompletes.length; i++) {if (autocompletes[i].autocompleteInited) continue;var selectedItem = autocompletes[i].getAttribute('data-selecteditem');if (selectedItem) {selectedItem = JSON.parse(selectedItem);this._autocompleteSetItem(autocompletes[i], selectedItem.id, selectedItem.title, null, 'isInitial');}var cfg = {};if (autocompletes[i].getAttribute('data-ac-options')) {cfg.options = JSON.parse(autocompletes[i].getAttribute('data-ac-options'));} else {cfg.url = this.getAction();if (autocompletes[i].getAttribute('data-ac-url')) {cfg.url = autocompletes[i].getAttribute('data-ac-url');}}if (autocompletes[i].closest('.xmsFormFieldPageselect')) {cfg.searchOptionsFn = function (params) {let acItems = [];let showParentsLevel = -1;for (let k = this.options.length - 1; k >= 0; k--) {let item = this.options[k];let hasLevel = item.acValue.match(/data-level="([0-9]+)"/);let itemLevel = false;if (hasLevel) itemLevel = parseInt(hasLevel[1]);if ((item.acIsGroup && acItems[acItems.length - 1] && !acItems[acItems.length - 1].acIsGroup)|| showParentsLevel === itemLevel
233|| item.acValue.toLowerCase().indexOf(params.acSearch.toLowerCase()) !== -1
234) {acItems.push(item);if (hasLevel) showParentsLevel = itemLevel - 1;}};return acItems.reverse();};}var ac = new tsc.ui.autocomplete(autocompletes[i], cfg);autocompletes[i].xmsFormAcInstance = ac;if (autocompletes[i].getAttribute('data-ac-showifempty')) {ac.showIfEmpty = true;}if (autocompletes[i].getAttribute('data-allowadd')) {ac.setAutoMarkFirstEntry(false);tsc.event.onKeyDown(autocompletes[i], function (acadd, ev) {if (ev.keyCode == 13 && !tsc.dom.hasClass(acadd.renderTo, 'hover') && acadd.dom.value) {this._autocompleteSetItem(acadd.dom, '0_' + acadd.dom.value, acadd.dom.value);acadd.dom.value = '';acadd.dom.blur();}}, [ac], this);}ac.setSearchParams({ xmsFormAc: autocompletes[i].name.replace(/_ac_input$/, '') });tsc.event.onCustom(ac, 'valueSelected', function (acData, acInput, ac) {this._autocompleteSetItem(acInput, (acData.acSaveValue || acData.acValue), acData.acValue, acData);ac.dom.value = '';}, [autocompletes[i], ac], this);autocompletes[i].autocompleteInited = true;}},_autocompleteSetItem: function (acInput, inputValue, viewedTitle, acData, isInitial) {var selectedWrapper = dg('.xmsFormFieldAutocompleteSelected', tsc.dom.getParentNode('.xmsFormField', acInput));selectedWrapper.classList.remove('d-none');var hiddenSaveInput = dg('input[name="' + acInput.name.replace(/_ac_input$/, '') + '"]', tsc.dom.getParentNode('.xmsFormField', acInput));hiddenSaveInput.value = inputValue;if (acInput.autocompleteInited) tsc.event.fireNative(hiddenSaveInput, 'change');selectedWrapper.innerHTML = '<div class="xmsFormFieldAutocompleteSelectedItem' + (acInput.disabled ? ' disabled' : '') + '">' +
235'<span>' + viewedTitle + '</span>' +
236'<a class="xmsFormFieldAutocompleteSelectedItemRemove ' + (acInput.disabled ? 'd-none' : 'd-inline-block') + '" href="#"><i class="fa-solid fa-xmark"></i></a>' +
237'</div>';var removeLink = dg('.xmsFormFieldAutocompleteSelectedItemRemove', selectedWrapper);tsc.event.onClick(removeLink, function (ev) {if (ev) tsc.event.preventDefault(ev);selectedWrapper.innerHTML = '';selectedWrapper.classList.add('d-none');hiddenSaveInput.value = '';tsc.event.fireNative(hiddenSaveInput, 'change');
237if (acInput.getAttribute('data-validators')) this._validate(acInput);}, [], this);if (acInput.getAttribute('data-validators') && !isInitial) {this._validate(acInput);}tsc.event.fireCustom(xms.form, "autocompleteItemSet", [this, selectedWrapper, acInput, inputValue, viewedTitle, acData]);},_initMultiAutocomplete: function () {var multiAutocompletes = tsc.dom.getAll(".xmsFormFieldMultiAutocomplete input", this.rootNode);for (var i = 0; i < multiAutocompletes.length; i++) {if (multiAutocompletes[i].multiAutocompleteInited) continue;var selectedItems = multiAutocompletes[i].getAttribute('data-selecteditems');if (selectedItems) {selectedItems = JSON.parse(selectedItems);for (var j = 0; j < selectedItems.length; j++) {this._multiAutocompleteAddItem(multiAutocompletes[i], selectedItems[j].id, selectedItems[j].title, 'isInitial');}}var cfg = {};if (multiAutocompletes[i].getAttribute('data-ac-options')) {cfg.options = JSON.parse(multiAutocompletes[i].getAttribute('data-ac-options'));} else {cfg.url = this.getAction();if (multiAutocompletes[i].getAttribute('data-ac-url')) {cfg.url = multiAutocompletes[i].getAttribute('data-ac-url');}}var ac = new tsc.ui.autocomplete(multiAutocompletes[i], cfg);multiAutocompletes[i].xmsFormAcInstance = ac;if (multiAutocompletes[i].getAttribute('data-allowadd')) {ac.setAutoMarkFirstEntry(false);tsc.event.onKeyDown(multiAutocompletes[i], function (acadd, ev) {if (ev.keyCode == 13 && !tsc.dom.hasClass(acadd.renderTo, 'hover') && acadd.dom.value) {this._multiAutocompleteAddItem(acadd.dom, '0_' + acadd.dom.value, acadd.dom.value);acadd.dom.value = '';acadd.dom.blur();}}, [ac], this);}if (multiAutocompletes[i].getAttribute('data-ac-showifempty')) {ac.showIfEmpty = true;}ac.setSearchParams({ xmsFormAc: multiAutocompletes[i].name.replace('[_ac_input]', '') });tsc.event.onCustom(ac, 'valueSelected', function (acData, acInput, ac) {this._multiAutocompleteAddItem(acInput, (acData.acSaveValue || acData.acValue), acData.acValue);ac.dom.value = '';}, [multiAutocompletes[i], ac], this);multiAutocompletes[i].multiAutocompleteInited = true;}},_multiAutocompleteAddItem: function (acInput, inputValue, viewedTitle, isInitial) {var selectedWrapper = dg('.xmsFormFieldMultiAutocompleteSelected', tsc.dom.getParentNode('.xmsFormField', acInput));selectedWrapper.classList.remove('d-none');if (dg('input[type="hidden"][value="' + inputValue + '"]', selectedWrapper)) return;var nextItemNumber = 0;tsc.dom.getAll('.xmsFormFieldMultiAutocompleteSelectedItem input[type="hidden"]', selectedWrapper).forEach(el => {let matches = el.name.match(/\[(\d+)\]$/);if (matches && parseInt(matches[1]) >= nextItemNumber) {nextItemNumber = parseInt(matches[1]) + 1;}});var newItem = tsc.dom.appendChild(selectedWrapper, {tag: 'div',cls: 'xmsFormFieldMultiAutocompleteSelectedItem',innerHTML: '<input type="hidden" name="' + acInput.name.replace('[_ac_input]', '[' + nextItemNumber + ']') + '" value="' + inputValue + '" /> '
238+ '<span class="xmsFormFieldMultiAutocompleteSelectedItemTitel">' + viewedTitle + '</span>'
239+ '<a class="xmsFormFieldMultiAutocompleteSelectedItemRemove" href="#"><i class="fa-solid fa-xmark"></i></a>'
240});var removeLink = dg('.xmsFormFieldMultiAutocompleteSelectedItemRemove', newItem);tsc.event.onClick(removeLink, function (item, ev) {if (ev) tsc.event.preventDefault(ev);tsc.doLater(1, function () {tsc.dom.removeNode(item);if (tsc.dom.getAll('.xmsFormFieldMultiAutocompleteSelectedItem', selectedWrapper).length == 0) {selectedWrapper.classList.add('d-none');}tsc.event.fireCustom(xms.form, "multiAutocompleteItemRemoved", [this, item]);if (acInput.getAttribute('data-validators')) this._validate(acInput);}, [], this);}, [newItem], this);if (acInput.getAttribute('data-validators') && !isInitial) this._validate(acInput);tsc.event.fireCustom(xms.form, "multiAutocompleteItemAdded", [this, newItem, acInput, inputValue, viewedTitle]);},_initColorhexs: function () {var colorPickers = tsc.dom.getAll('.xmsFormFieldColorhex input[type="color"]', this.rootNode);for (var i = 0; i < colorPickers.length; i++) {if (colorPickers[i].xmColorPickerInited) continue;tsc.event.onChange(colorPickers[i], this._colorhexChange, [colorPickers[i]], this);colorPickers[i].xmColorPickerInited = true;}
240var colorCodes = tsc.dom.getAll('.xmsFormFieldColorhex input[type="text"]', this.rootNode);for (var i = 0; i < colorCodes.length; i++) {if (colorCodes[i].xmColorCodeInited) continue;tsc.event.onKeyUp(colorCodes[i], this._colorhexChange, [colorCodes[i]], this, 100);tsc.event.onPaste(colorCodes[i], this._colorhexChange, [colorCodes[i]], this, 100);colorCodes[i].xmColorCodeInited = true;}},_colorhexChange: function (colorInput) {var colorInputWrapper = tsc.dom.getParentNode('.xmsFormField', colorInput);var newColor = colorInput.value;if (newColor.length >= 1 && newColor.substring(0, 1) != '#') newColor = '#' + newColor;if (/(^#[0-9A-F]{3}$)/i.test(newColor)) {newColor = '#' + newColor.substring(1, 2) + newColor.substring(1, 2) + newColor.substring(2, 3) + newColor.substring(2, 3) + newColor.substring(3, 4) + newColor.substring(3, 4);}if (/^#[0-9A-F]{6}$/i.test(newColor)) {dg('.preview', colorInputWrapper).style.background = newColor;dg('.xmsInputColorPicker', colorInputWrapper).value = newColor;}dg('.xmsInputColorCode', colorInputWrapper).value = newColor;},_initTables: function () {tsc.dom.getAll('.xmsFormFieldTableTable .xmsFormFieldTableInput', this.rootNode).forEach(function (table) {if (table.tableInited) return;table.tableInited = true;table.tableInstance = new xms.form.field.table(table);}, this);},_initValidators: function () {var els = tsc.dom.getAll('[data-validators]', this.rootNode);for (var i = 0; i < els.length; i++) {if (els[i].validatorsInited) continue;if (els[i].getAttribute("data-validators")) {tsc.dom.addClass(tsc.dom.getParentNode(".xmsFormRow", els[i]), "hasValidator");if (els[i].type == "radio") {var radios = tsc.dom.getAll('input[type="radio"][name="' + els[i].name + '"]', this.rootNode);for (var k = 0; k < radios.length; k++) {var label = tsc.dom.getParentNode(".xmsFormLabelRadio", radios[k]);tsc.event.onClick(label, function (inputEl) {tsc.doLater(10, this._validate, [inputEl], this);}, [els[i]], this);var otherField = dg('input.xmsFormFieldRadioOther', tsc.dom.getParentNode('.xmsFormFieldRadioRow', radios[k]));if (otherField) {tsc.event.onInput(otherField, function (inputEl) {tsc.doLater(1000, this._validate, [inputEl], this);}, [els[i]], this);}}} else if (els[i].type == "checkbox") {if (tsc.dom.hasClass(els[i], "xmsFormFieldMultiCheckboxItem")) {var allMultiCheckboxes = tsc.dom.getAll("input.xmsFormFieldMultiCheckboxItem", tsc.dom.getParentNode(".xmsFormField", els[i]));for (var ic = 0; ic < allMultiCheckboxes.length; ic++) {var label = tsc.dom.getParentNode(".xmsFormLabelCheckbox", allMultiCheckboxes[ic]);tsc.event.onClick(label, function (inputEl) {tsc.doLater(10, this._validate, [inputEl], this);}, [els[i]], this);}} else {var label = tsc.dom.getParentNode(".xmsFormLabelCheckbox", els[i]);tsc.event.onClick(label, function (inputEl) {tsc.doLater(10, this._validate, [inputEl], this);}, [els[i]], this);}} else if (els[i].type == 'text' && els[i].classList.contains('xmsInputDate') && els[i].dataset.range) {tsc.event.onCustom(xms.datepicker, 'hide', function (datepicker, inputEl) {this._validate(inputEl);}, [els[i]], this);tsc.event.onCustom(xms.datepicker, 'selected', function (datepicker, inputEl) {if (datepicker.inputDate.length >= 2) {this._validate(inputEl);}}, [els[i]], this);} else if (els[i].type == 'text' && els[i].name && els[i].name.indexOf('_ac_input') != -1
241&& (tsc.dom.getParentNode('.xmsFormFieldAutocomplete', els[i]) || tsc.dom.getParentNode('.xmsFormFieldMultiAutocomplete', els[i]))) {} else {tsc.event.onBlur(els[i], function (inputEl) {tsc.doLater(200, this._validate, [inputEl], this);}, [els[i]], this);}this.hasValidators = true;}els[i].validatorsInited = true;}},_validateAll: function () {var fieldNames = [];var els = tsc.dom.getAll('[data-validators]', this.rootNode);for (var i = 0; i < els.length; i++) {if (fieldNames.indexOf(els[i].getAttribute('data-validators')) != -1) continue;fieldNames.push(els[i].getAttribute('data-validators'));}tsc.ajax.request(this.getAction(), this._getValidateParams(fieldNames), function (responseText, req) {this._validateCallback(responseText);}, { scope: this, method: 'post' });}
241,_validate: function (inputEl) {if (this.isSaving) return;var fieldName = inputEl.getAttribute("data-validators");tsc.ajax.request(this.getAction(), this._getValidateParams([fieldName]), function (responseText, req) {this._validateCallback(responseText);}, { scope: this, method: 'post' });},_getValidateParams: function (fieldNames) {var params = tsc.clone(this._getCurrentFormValues());params.validate = 1;params.validateFieldNames = JSON.stringify(fieldNames);return params;},_validateCallback: function (responseText) {var result = JSON.parse(responseText);if (!result || !result.status || !result.messages) {throw "Error in validation response. Check XHR response.";}for (var fieldName in result.messages) {if (result.messages.hasOwnProperty(fieldName)) {var inputEl = dg('[data-validators="' + fieldName + '"]', this.rootNode);if (inputEl) {var formRow = tsc.dom.getParentNode(".xmsFormRow", inputEl);inputEl.setAttribute('aria-invalid', 'false');var errorMessageEl = dg('#' + (inputEl.getAttribute('aria-describedby') || inputEl.id + 'err'), formRow);errorMessageEl.innerHTML = '';if (result.messages[fieldName].length > 0) {errorMessageEl.innerHTML = result.messages[fieldName].join('<br />');inputEl.setAttribute('aria-invalid', 'true');inputEl.setAttribute('aria-describedby', errorMessageEl.id);}var errorTextEls = tsc.dom.getAll('.validateErrorText', formRow);var seenErrors = [];for (var e = 0; e < errorTextEls.length; e++) {if (tsc.trim(errorTextEls[e].innerHTML) == '' || seenErrors.indexOf(tsc.trim(errorTextEls[e].innerHTML)) != -1) {tsc.dom.addClass(errorTextEls[e], "d-none");} else {tsc.dom.removeClass(errorTextEls[e], "d-none");seenErrors.push(tsc.trim(errorTextEls[e].innerHTML));}}if (dg('*[aria-invalid="true"]', formRow)) {tsc.dom.addClass(formRow, "validateError");tsc.dom.removeClass(formRow, "isValid");} else {tsc.dom.removeClass(formRow, "validateError");tsc.dom.addClass(formRow, "isValid");}}}}tsc.event.fireCustom(xms.form, "afterValidate", [this, responseText]);},_onFileSelectSetValue: function (inp, isInitial) {var src = inp.getAttribute('data-src');if (src) {var filepathParts = src.split("/");var wrapper = tsc.dom.getParentNode(".xmsFormFieldFileSelectWrapper", inp);dg(".xmsFormFieldFileSelectName", wrapper).innerHTML = filepathParts.pop();var preview = dg(".xmsFormFieldFileSelectPreview", wrapper);var fileExtensionParts = src.split(".");if (fileExtensionParts.pop().match(/(jpg|jpeg|png|gif|webp|bmp|svg|pdf)/i)) {var previewSize = 'ic-150x150-bestfit';if (tsc.dom.getParentNode('.xmsFormFieldImagemarkerImagemarker', wrapper)) {previewSize = 'ic-1500x1500-bestfit';}preview.innerHTML = '<span class="centererSpan"></span><img src="' + src.replace("ic-orig", previewSize) + '" alt="" />';} else if (src) {preview.classList.add('notImage');if (src.split(".").pop().match(/(mp4|mov|mpeg|ogg|webm|avi)/i)) {preview.innerHTML = '<i class="fa-solid fa-file-video fa-5x"></i>';} else {preview.innerHTML = '<i class="fa-solid fa-question fa-5x"></i>';}}tsc.dom.removeClass(wrapper, 'noFileSelected');dg(".selectAnotherFile", wrapper).style.display = "inline-block";dg(".selectFile", wrapper).style.display = "none";tsc.dom.prependChild(preview, {tag: "a", href: src, target: "_blank", cls: "xmsFormFieldFileSelectButton xmsFormFieldFileSelectOpen", title: xms.trlb('Open file', 'Datei öffnen'), innerHTML: '<i class="fa-solid fa-arrow-up-right-from-square"></i>'
242});var removeNode = tsc.dom.prependChild(preview, {tag: "a", href: "#", cls: "xmsFormFieldFileSelectButton xmsFormFieldFileSelectRemove", title: xms.trlb('Remove file', 'Datei entfernen'), innerHTML: '<i class="fa-solid fa-trash"></i>'
243});tsc.event.onClick(removeNode, function (wrapper, removeNode, inp) {tsc.dom.addClass(wrapper, 'noFileSelected');var name = dg(".xmsFormFieldFileSelectName", wrapper);var preview = dg(".xmsFormFieldFileSelectPreview", wrapper);dg(".selectAnotherFile", wrapper).style.display = "none";dg(".selectFile", wrapper).style.display = "inline-block";name.innerHTML = "";preview.innerHTML = "";inp.value = "";inp.setAttribute('data-src', '');
243if (inp.getAttribute("data-validators")) this._validate(inp);return false;}, [wrapper, removeNode, inp], this);}if (inp.getAttribute("data-validators") && !isInitial) this._validate(inp);},setAction: function (value) {this.parsedAction = value;},getAction: function () {if (!this.parsedAction) {this.parsedAction = window.atob(this.rootNode.getAttribute('data-fs'));}return this.parsedAction;},destroy: function () {while (this.ckeditors.length) {var ed = this.ckeditors.pop();ed.editor.destroy();ed.editor = null;}},doSave: function () {var params = this._getCurrentFormValues();params._ajaxSave = 1;var connectionErrorNodes = tsc.dom.getAll('span.connectionError', this.rootNode);for (var i = 0; i < connectionErrorNodes.length; i++) {tsc.dom.removeNode(connectionErrorNodes[i]);}this._submitButtonsAjaxLoad();var ajaxTimeoutCallback = function (req) {this._submitButtonsAjaxLoadReset();var buttons = tsc.dom.getAll(".xmsButtonSubmit", this.rootNode);for (var i = 0; i < buttons.length; i++) {var span = document.createElement('span');span.className = 'xmsError connectionError';span.innerHTML = xms.trl('Connection error. Please try again.', 'Verbindungsfehler. Bitte erneut versuchen.');tsc.dom.insertBefore(buttons[i], span);}this.isSaving = false;};this.isSaving = true;if (!this.hasValidators) {var url = this.getAction();tsc.ajax.request(url, params, function (responseText, req) {this._submitButtonsAjaxLoadReset();tsc.event.fireCustom(this, "save", [responseText, req]);tsc.event.fireCustom(xms.form, "save", [responseText, req]);}, { scope: this, method: this.rootNode.method, timeout: 20, timeoutCallback: ajaxTimeoutCallback });} else {tsc.event.onCustom(tsc.ajax, "allRequestsFinished", function (params) {var errors = tsc.dom.get(".validateError", this.rootNode);if (!errors) {var url = this.getAction();tsc.ajax.request(url, params, function (responseText, req) {this._submitButtonsAjaxLoadReset();tsc.event.fireCustom(this, "save", [responseText, req]);tsc.event.fireCustom(xms.form, "save", [responseText, req]);this.isSaving = false;}, { scope: this, method: this.rootNode.method, timeout: 20, timeoutCallback: ajaxTimeoutCallback });} else {this._submitButtonsAjaxLoadReset();if (!tsc.dom.getParentNode('.tscLightbox', this.rootNode)) {tsc.window.scrollToNode(errors, 0, xms.getScrollOffsetY());}this.isSaving = false;}}, [params], this, true);this._validateAll();}},_submitButtonsAjaxLoad: function () {var buttons = tsc.dom.getAll(".xmsButtonSubmit", this.rootNode);for (var i = 0; i < buttons.length; i++) {tsc.dom.replaceWithAjaxLoad(buttons[i], true);}},_submitButtonsAjaxLoadReset: function () {var buttons = tsc.dom.getAll(".xmsButtonSubmit", this.rootNode);for (var i = 0; i < buttons.length; i++) {var ajaxLoader = tsc.dom.getPreviousSibling('.xmsAjaxLoadWrapper', buttons[i]);if (ajaxLoader) tsc.dom.removeNode(ajaxLoader);buttons[i].style.display = 'inline-block';}},_getCurrentFormValues: function () {var ret = {};var fields = tsc.dom.getAll("input", this.rootNode);for (var i = 0; i < fields.length; i++) {if (!fields[i].name) continue;if ((fields[i].type != "checkbox" && fields[i].type != "radio") || fields[i].checked) {ret[fields[i].name] = fields[i].value;}}var fields = tsc.dom.getAll("textarea", this.rootNode);for (var i = 0; i < fields.length; i++) {if (!fields[i].name) continue;ret[fields[i].name] = fields[i].value;}var fields = tsc.dom.getAll("select", this.rootNode);for (var i = 0; i < fields.length; i++) {if (!fields[i].name) continue;ret[fields[i].name] = fields[i].value;}for (var i = 0; i < this.ckeditors.length; i++) {ret[this.ckeditors[i].name] = this.ckeditors[i].editor.getData();}return ret;},_initFormRowWidth: function () {var xmsFormRows = tsc.dom.getAll('.xmsFormRow', this.rootNode);for (var i = 0; i < xmsFormRows.length; i++) {if (tsc.dom.hasClass(xmsFormRows[i], 'xmsFormRowSm')|| tsc.dom.hasClass(xmsFormRows[i], 'xmsFormRowMd')|| tsc.dom.hasClass(xmsFormRows[i], 'xmsFormRowLg')) {continue;}var rowWidth = tsc.dom.getWidth(xmsFormRows[i]);if (rowWidth < 700) {tsc.dom.addClass(xmsFormRows[i], 'xmsFormRowSm');} else if (rowWidth < 850) {tsc.dom.addClass(xmsFormRows[i], 'xmsFormRowMd');} else {tsc.dom.addClass(xmsFormRows[i], 'xmsFormRowLg');}}},_initLatLngMap: function () {var mapNodes = tsc.dom.getAll('.xmsFormFieldLatlng .xmsFormField', this.rootNode);if (mapNodes && mapNodes.length >= 1) {if (!xms.gmapApiKeyBrowser) throw "GoogleMap API key for browser is not set";
243tsc.loadScript('https://maps.googleapis.com/maps/api/js?key=' + xms.gmapApiKeyBrowser, function () {for (var i = 0; i < mapNodes.length; i++) {if (!mapNodes[i].gmapInstance) {mapNodes[i].gmapInstance = new xms.form.gmap(mapNodes[i]);}}}, [], this);}},_initRecaptcha: function () {var els = tsc.dom.getAll('.xmsFormFieldGooglerecaptcha input', this.rootNode);for (var i = 0; i < els.length; i++) {if (els[i].googleRecaptchaInited) continue;var siteKey = els[i].getAttribute('data-googlerecaptcha-sitekey');tsc.loadScript('https://www.google.com/recaptcha/api.js?render=' + siteKey, function (siteKey, input) {grecaptcha.ready(function () {grecaptcha.execute(siteKey, { action: "formsubmit" }).then(function (token) {input.value = token;});});}, [siteKey, els[i]], this);els[i].googleRecaptchaInited = true;}},_initEditOptionsLightbox: function () {tsc.dom.getAll('label a[data-edit-options-lightbox-url]', this.rootNode).forEach(function (editLink) {if (editLink.editOptionsInited) return;tsc.event.onClick(editLink, function (ev) {tsc.event.preventDefault(ev);const lightbox = tsc.modal.lightbox.render('<iframe src="' + editLink.getAttribute('data-edit-options-lightbox-url') + '" style="display: block; width: 90vw; height: 90vh;"></iframe>', 'isBackend', {clickaway: false,close: 'header'
244});lightbox.header.append(Object.assign(document.createElement('span'), {innerHTML: `<i class="fa-solid fa-pencil mr-05"></i><strong>${xms.trlb('Edit', 'Bearbeiten')}</strong>`
245}));lightbox.addEventListener('beforeRemove', () => {var field = this._getEditOptionsLightboxField(editLink);if (field) {var params = tsc.clone(this._getCurrentFormValues());params.getOptions = field.name;if (tsc.dom.getParentNode('.xmsFormFieldMultiCheckboxImplode', field) || tsc.dom.getParentNode('.xmsFormFieldMultiCheckbox', field)) {params.getOptions = params.getOptions.replace(/\[0\]$/, '');} else if (tsc.dom.getParentNode('.xmsFormFieldMultiAutocomplete', field)) {params.getOptions = params.getOptions.replace(/\[_ac_input\]$/, '');}tsc.ajax.request(this.getAction(), params, function (responseText) {var ret = JSON.parse(responseText);if (ret.status) {this._editOptionsLightboxReloadField(editLink.getAttribute('data-edit-options-lightbox-url'), ret.fieldInfo);}}, { scope: this });}});}, [], this);editLink.editOptionsInited = true;}, this);},_getEditOptionsLightboxField: function (editLink) {if (tsc.dom.getParentNode('.xmsFormFieldAutocomplete', editLink)) {var field = dg('input[type="hidden"]', tsc.dom.getParentNode('.xmsFormFieldAutocomplete', editLink));} else if (tsc.dom.getParentNode('.xmsFormFieldMultiCheckboxImplode', editLink) || tsc.dom.getParentNode('.xmsFormFieldMultiCheckbox', editLink)) {var field = dg('#' + tsc.dom.getParentNode('label', editLink).getAttribute('for') + '_0', this.rootNode);} else {var field = dg('#' + tsc.dom.getParentNode('label', editLink).getAttribute('for'), this.rootNode);}return field;},_editOptionsLightboxReloadField: function (url, fieldInfo) {var changedSomething = false;tsc.dom.getAll('label a[data-edit-options-lightbox-url="' + url + '"]', this.rootNode).forEach(function (editLink) {var field = this._getEditOptionsLightboxField(editLink);if (field.tagName.toLowerCase() == 'select') {var oldSelectedValue = field.value;field.options.length = field.getAttribute('data-has-please-choose') ? 1 : 0;var addOption = function (select, val, text) {var opt = document.createElement('option');opt.value = val;opt.text = text;select.appendChild(opt);if (key == oldSelectedValue) {select.value = oldSelectedValue;oldSelectedValue = null;}};if (fieldInfo.isGrouped) {tsc.dom.removeNode('optgroup', field);fieldInfo.options.forEach(function (group) {var optgroup = document.createElement('optgroup');optgroup.label = group.name;for (var key in group.options) {addOption(optgroup, key, group.options[key]);}field.appendChild(optgroup);});} else {for (var key in fieldInfo.options) {addOption(field, key, fieldInfo.options[key]);}}changedSomething = true;} else if (tsc.dom.getParentNode('.xmsFormFieldAutocomplete', field)) {var acInput = dg('input[type="text"]', tsc.dom.getParentNode('.xmsFormFieldAutocomplete', field));if (acInput) acInput.value = '';acInput.xmsFormAcInstance._currentSuggestionsSearch = null;var selectedItemTitle = dg('.xmsFormFieldAutocompleteSelectedItem > span', tsc.dom.getParentNode('.xmsFormFieldAutocomplete', field));if (selectedItemTitle) {if (fieldInfo.currentOption && fieldInfo.currentOption.id) {selectedItemTitle.innerHTML = fieldInfo.currentOption.title;field.value = fieldInfo.currentOption.id;} else {tsc.dom.getParentNode('.xmsFormFieldAutocompleteSelected', selectedItemTitle).innerHTML = '';field.value = '';}}} else if (tsc.dom.getParentNode('.xmsFormFieldMultiAutocomplete', field)) {field.value = '';field.xmsFormAcInstance._currentSuggestionsSearch = null;tsc.dom.getAll('input[type="hidden"][name^="' + field.name.replace('[_ac_input]', '') + '"]', tsc.dom.getParentNode('.xmsFormFieldMultiAutocomplete', field)).forEac
245h(function (activeOptionInput) {var found = false;fieldInfo.currentOptions.forEach(function (currentOption) {if (String(activeOptionInput.value) == String(currentOption.id)) {dg('span.xmsFormFieldMultiAutocompleteSelectedItemTitel', tsc.dom.getParentNode('.xmsFormFieldMultiAutocompleteSelectedItem', activeOptionInput)).innerHTML = currentOption.title;found = true;}}, this);if (!found) {tsc.dom.removeNode(tsc.dom.getParentNode('.xmsFormFieldMultiAutocompleteSelectedItem', activeOptionInput));}}, this);} else if (tsc.dom.getParentNode('.xmsFormFieldMultiCheckbox', field) || tsc.dom.getParentNode('.xmsFormFieldMultiCheckboxImplode', field)) {let mcFormField = tsc.dom.getParentNode('.xmsFormField', field);let optionSets = [];if (tsc.dom.getParentNode('.xmsFormFieldMultiCheckbox', field)) {optionSets = fieldInfo.multiCheckboxOptions;} else if (tsc.dom.getParentNode('.xmsFormFieldMultiCheckboxImplode', field)) {optionSets = fieldInfo.multiCheckboxImplodeOptions;}optionSets.forEach(optionSet => {if (dg('*[name^="' + optionSet.name.replace('_mf_blueprint', '_0') + '"]', mcFormField)) {let activeValuesBefore = [];tsc.dom.getAll('input[type="checkbox"]', mcFormField).forEach(checkboxEl => {if (checkboxEl.checked) activeValuesBefore.push(checkboxEl.value);});var insertHTML = optionSet.options.replace(/XMS-REPLACE-ID/g, field.id.replace(/_[0-9]+$/, ''));tsc.dom.removeNode('br, .xmsOptionGroup, .xmsFormFieldCheckboxRow', mcFormField);mcFormField.insertAdjacentHTML('afterbegin', insertHTML);tsc.dom.getAll('input[type="checkbox"]', mcFormField).forEach(checkboxEl => {if (activeValuesBefore.indexOf(checkboxEl.value) !== -1) {checkboxEl.checked = true;checkboxEl.closest('.xmsFormLabelCheckbox').classList.add('xmsFormLabelCheckboxChecked');}});changedSomething = true;}}
245);}}, this);if (changedSomething) {this._init();this._replaceMultiFieldBlueprintNames();}}};xms.form.gmap = function (mapNode) {this.dom = mapNode;this.mapWrapper = dg('.gmapWrapper', this.dom);this.lat = dg('.lat.js > input', this.dom);this.lng = dg('.lng.js > input', this.dom);this.search = dg('.search', this.dom);this.marker = null;this._latLng = new google.maps.LatLng(this.lat.value, this.lng.value);var gMapConfig = {zoom: 14,center: this._latLng,gestureHandling: 'cooperative',mapTypeId: google.maps.MapTypeId.ROADMAP
246};this.map = new google.maps.Map(this.mapWrapper, gMapConfig);var markerConfig = {position: this._latLng,map: this.map,draggable: true
247};this.addMarker(markerConfig);var scope = this;google.maps.event.addListener(this.marker, "dragend", function (ev) {scope.lat.value = ev.latLng.lat().toFixed(7);scope.lng.value = ev.latLng.lng().toFixed(7);});var keyUpListenerCoord = function (marker) {var newpos = new google.maps.LatLng(this.lat.value, this.lng.value);marker.setPosition(newpos);this.map.panTo(newpos);};tsc.event.onKeyUp(this.lat, keyUpListenerCoord, [this.marker], this, 800);tsc.event.onKeyUp(this.lng, keyUpListenerCoord, [this.marker], this, 800);this.geocoder = new google.maps.Geocoder();var keyUpListenerSearch = function () {if (this.search.value.length > 2) {var search = '';if (this.search.value.length <= 4 && this.search.value.length == parseInt(this.search.value).toString().length) {var search = this.search.value + ', Österreich';} else {search = this.search.value;}this.geocoder.geocode({ 'address': search },tsc.createDelegate(function (results, status) {if (status == google.maps.GeocoderStatus.OK) {if (results[0]) {this.lat.value = results[0].geometry.location.lat().toFixed(7);this.lng.value = results[0].geometry.location.lng().toFixed(7);this.marker.setPosition(results[0].geometry.location);this.map.panTo(results[0].geometry.location);}} else {console.warn("Geocode was not successful: " + status);}}, [], this));}};tsc.event.onKeyUp(this.search, keyUpListenerSearch, [], this, 800);};xms.form.gmap.prototype = {addMarker: function (cfg) {var marker = new google.maps.Marker(cfg);this.marker = marker;return marker;}};if (!xms.form.field) xms.form.field = {};xms.form.field.checkbox = function (checkboxEl) {this.dom = dg(checkboxEl);this.checkboxLabel = tsc.dom.getParentNode(".xmsFormLabelCheckbox", this.dom);if (this.checkboxLabel) {tsc.event.onClick(this.checkboxLabel, this.checkboxChanged, [], this);tsc.event.onMouseEnter(this.checkboxLabel.parentNode, this.checkboxHovering, ['add'], this);tsc.event.onMouseLeave(this.checkboxLabel.parentNode, this.checkboxHovering, ['remove'], this);}tsc.event.onFocus(this.dom, this.checkboxHovering, ['add'], this);tsc.event.onBlur(this.dom, this.checkboxHovering, ['remove'], this);};xms.form.field.checkbox.prototype = {checkboxChanged: function () {if (this.dom.checked) {tsc.dom.addClass(this.checkboxLabel, "xmsFormLabelCheckboxChecked");} else {tsc.dom.removeClass(this.checkboxLabel, "xmsFormLabelCheckboxChecked");}},checkboxHovering: function (state) {if (state == 'add') {this.checkboxLabel.classList.add('xmsFormLabelCheckboxHovering');} else {this.checkboxLabel.classList.remove('xmsFormLabelCheckboxHovering');}}};if (!xms.form.field) xms.form.field = {};xms.form.field.radio = function (radioEl) {this.dom = dg(radioEl);this.dom.xmsFormFieldRadioInstance = this;this.radioLabel = tsc.dom.getParentNode(".xmsFormLabelRadio", this.dom);this.radioRow = tsc.dom.getParentNode('.xmsFormFieldRadioRow', this.dom);this.radioOther = null;if (this.radioRow) {this.radioOther = dg('.xmsFormFieldRadioOther', this.radioRow);}if (this.radioLabel) {tsc.event.onClick(this.radioLabel, this.radioChanged, [], this);tsc.event.onMouseEnter(this.radioRow, this.radioHovering, ['add'], this);tsc.event.onMouseLeave(this.radioRow, this.radioHovering, ['remove'], this);}tsc.event.onFocus(this.dom, this.radioHovering, ['add'], this);tsc.event.onBlur(this.dom, this.radioHovering, ['remove'], this);if (this.radioOther) {tsc.event.onInput(this.radioOther, function () {this.dom.value = this.radioOther.value;}, [], this);}this.render();};xms.form.field.radio.prototype = {radioChanged: function () {var formTag = tsc.dom.getParentNode("form", this.radioLabel);
247if (!formTag) formTag = document.body;tsc.dom.getAll('input[type="radio"][name="' + this.dom.name + '"]', formTag).forEach(function (radio) {radio.xmsFormFieldRadioInstance.render();});},radioHovering: function (state) {if (state == 'add') {this.radioLabel.classList.add('xmsFormLabelRadioHovering');} else {this.radioLabel.classList.remove('xmsFormLabelRadioHovering');}},render: function () {if (this.dom.checked) {tsc.dom.addClass(this.radioLabel, "xmsFormLabelRadioChecked");if (this.radioRow) {tsc.dom.addClass(this.radioRow, "xmsFormFieldRadioRowChecked");}if (this.radioOther) {this.radioOther.disabled = false;this.dom.value = this.radioOther.value;}} else {tsc.dom.removeClass(this.radioLabel, "xmsFormLabelRadioChecked");if (this.radioRow) {tsc.dom.removeClass(this.radioRow, "xmsFormFieldRadioRowChecked");}if (this.radioOther) this.radioOther.disabled = true;}}};if (!xms.form.field) xms.form.field = {};xms.form.field.imagemarker = function (wrapperEl) {this.dom = dg(wrapperEl);this.fileselectHidden = dg('.xmsFormFieldFileselect input.xmsFormFieldFileSelectHidden', this.dom);this.fileselectPreview = dg('.xmsFormFieldFileSelectPreview', this.dom);this.fileselectPreview.style.position = 'relative';this.multiFields = dg('.xmsFormFieldMultiFields', this.dom);this.form = null;this.img = null;this.movingEl = null;this.movingCoords = { mouseDownX: 0, mouseDownY: 0, elInitialX: 0, elInitialY: 0 };tsc.event.onCustom(this.fileselectHidden, 'setValue', this.init, [], this);this.init();};xms.form.field.imagemarker.prototype = {init: function () {this.img = dg('.xmsFormFieldFileSelectPreview img', this.dom);if (!this.img) return;tsc.event.onClick(this.img, this.onImageClick, [], this);tsc.event.onMouseDown(this.fileselectPreview, function (ev) {if (tsc.dom.hasClass(ev.target, 'xmsFormFieldImagemarkerIsMarker')) {this.movingEl = ev.target;this.movingCoords.mouseDownX = ev.clientX;this.movingCoords.mouseDownY = ev.clientY;this.movingCoords.elInitialX = this.movingEl.offsetLeft;this.movingCoords.elInitialY = this.movingEl.offsetTop;}}, [], this);tsc.event.onMouseMove(this.fileselectPreview, function (ev) {if (!this.movingEl) return;var rect = this.fileselectPreview.getBoundingClientRect();var newLeft = (this.movingCoords.elInitialX + (ev.clientX - this.movingCoords.mouseDownX));var newTop = (this.movingCoords.elInitialY + (ev.clientY - this.movingCoords.mouseDownY));if (newLeft < 0) newLeft = 0;else if (newLeft > rect.width) newLeft = rect.width;if (newTop < 0) newTop = 0;else if (newTop > rect.height) newTop = rect.height;this.movingEl.style.left = newLeft + 'px';this.movingEl.style.top = newTop + 'px';}, [], this);tsc.event.onMouseUp(this.fileselectPreview, function () {if (!this.movingEl) return;var rect = this.fileselectPreview.getBoundingClientRect();var leftPercent = Math.round(10000 * this.movingEl.offsetLeft / rect.width) / 100;var topPercent = Math.round(10000 * this.movingEl.offsetTop / rect.height) / 100;this.movingEl.style.left = leftPercent + '%';this.movingEl.style.top = topPercent + '%';dg('input[name="' + this.movingEl.getAttribute('data-source-name') + '[x]"]', this.multiFields).value = leftPercent;dg('input[name="' + this.movingEl.getAttribute('data-source-name') + '[y]"]', this.multiFields).value = topPercent;this.movingEl = null;this.render();}, [], this);this.render();},render: function () {tsc.dom.getAll('.xmsFormFieldImagemarkerIsMarker', this.fileselectPreview).forEach(function (el) {if (!dg('[data-mff-fieldname="' + el.getAttribute('data-source-name') + '"]', this.multiFields)) {tsc.dom.removeNode(el);}}, this);var i = 1;tsc.dom.getAll('.xmsFormMultiField', this.multiFields).forEach(function (multiField) {if (tsc.dom.hasClass(multiField, 'xmsFormMultiFieldFakeWrapper')) return;if (tsc.dom.getParentNode('.xmsFormFieldMultiFields', multiField) != this.multiFields) return;var mffFieldname = multiField.getAttribute('data-mff-fieldname');var markerEl = dg('div[data-source-name="' + mffFieldname + '"]', this.fileselectPreview);if (!markerEl) {var markerHtml = '<div class="xmsFormFieldImagemarkerIsMarker text-center text-white p-05 bg-primary border border-white rounded-circle"'
248+ ' style="position: absolute; cursor: move;"'
249+ ' data-source-name="' + mffFieldname + '"></div>';this.fileselectPreview.insertAdjacentHTML('beforeend', markerHtml);markerEl = this.fileselectPreview.lastChild;}var x = parseFloat(dg('input[name$="[x]"]', multiField).value);var y = parseFloat(dg('input[name$="[y]"]', multiField).value);markerEl.style.left = x + '%';markerEl.style.top = y + '%';markerEl.innerHTML = i;var deleteBtn = dg('.xmsFormMultiFieldDelete', multiField);if (deleteBtn) {tsc.event.onClick(deleteBtn, function () {tsc.doLater(50, this.render, [], this);}, [], this);}dg('.xmsFormFieldImagemarkerTitle .xmsFormField > div', multiField).innerHTML = xms.trl('Marker #?0', 'Marker #?0', [i]);i++;}, this);},onImageClick: function (ev) {if (this.getForm()) {var mfAdds = tsc.dom.getAll('.xmsFormMultiFieldAdd', this.dom);var newDiv = this.getForm()._addMultiField(mfAdds[mfAdds.length - 1]);var rect = this.fileselectPreview.getBoundingClientRect();var x = ev.clientX - rect.left;var y = ev.clientY - rect.top;dg('input[name$="[x]"]', newDiv).value = Math.floor(10000 * x / rect.width) / 100;dg('input[name$="[y]"]', newDiv).value = Math.floor(10000 * y / rect.height) / 100;}this.render();},getForm: function () {if (!this.form) {var form = tsc.dom.getParentNode('form', this.dom);if (form) this.form = form.formInstance;}return this.form;}};tsc.event.onCustom(xms.form, "afterValidate", function (form, responseText) {if (!dg('.xmsFormFieldSpamfilterSpamfilter', form.rootNode)) return;if (dg('.xmsFormFieldSpamfilterSpamfilter .validateError', form.rootNode)) {tsc.dom.removeClass(dg('.xmsFormFieldSpamfilterSpamfilter', form.rootNode), 'd-none');} else {tsc.dom.addClass(dg('.xmsFormFieldSpamfilterSpamfilter', form.rootNode), 'd-none');}});xms.formFieldDate = class {constructor(dateEl) {this.dom = dg(dateEl);this.init();}init() {if ((tsc.os.isMobile && this.dom.dataset.nativeDatepickerMobile)|| (!tsc.os.isMobile && this.dom.dataset.nativeDatepickerDesktop)) {this.mobileDateInput();} else {this.desktopDatePicker();}}mobileDateInput() {if (this.dom.dataset.hideDatepicker) return;if (this.dom.value && this.dom.value.match(/^[0-9]{2}\.[0-9]{2}\.[0-9]{4}/)) {let parts = this.dom.value.split('.');this.dom.value = parts.reverse().join('-');}this.dom.type = 'date';}getDatePickerConfig() {let dateConfig = {dateFormat: this.dom.dataset.dateFormat || "d.m.Y",limitToToday: this.dom.dataset.dateinpast ? true : false,limitFromToday: this.dom.dataset.dateinfuture ? true : false
250};if (this.dom.dataset.dateMin) {dateConfig.minDate = this.dom.dataset.dateMin;}if (this.dom.dataset.dateMax) {dateConfig.maxDate = this.dom.dataset.dateMax;}if (this.dom.dataset.closable === '0') {dateConfig.closable = false;}if (this.dom.dataset.initOpen === '1') {dateConfig.initOpen = true;}if (this.dom.dataset.showCw === '0') {dateConfig.showCw = false;}if (this.dom.dataset.showMonths) {dateConfig.showMonths = this.dom.dataset.showMonths;}if (this.dom.dataset.dateDisabled) {dateConfig.disabledDates = JSON.parse(this.dom.dataset.dateDisabled);}return dateConfig;}desktopDatePicker() {this.datePicker = new xms.datepicker(this.dom, this.getDatePickerConfig());if (this.dom.dataset.hideDatepicker) {tsc.event.onCustom(xms.datepicker, 'render', (datepicker) => {if (datepicker.dom === this.datePicker.dom) {this.datePicker.renderEl.classList.add('d-none');}});}}};xms.formFieldDaterange = class extends xms.formFieldDate {init() {this.desktopDatePicker();this.showOnReadableDivClick();this.initWriteToOutput();}initWriteToOutput() {tsc.event.onCustom(xms.datepicker, 'selected', 
250(dp) => {if (dp !== this.datePicker) return;this.writeToOutput();});this.writeToOutput();}writeToOutput() {let inputDate = this.datePicker.inputDate;dg('.xmsFormFieldDateRangeOutputFrom', this.outputEl).innerHTML = inputDate[0] ? inputDate[0].phpFormat(this.datePicker.config.dateFormat) : '';dg('.xmsFormFieldDateRangeOutputTo', this.outputEl).innerHTML = inputDate[1] ? inputDate[1].phpFormat(this.datePicker.config.dateFormat) : '';}getDatePickerConfig() {let dateConfig = super.getDatePickerConfig();if (this.dom.dataset.range === '1') {dateConfig.range = true;}if (this.dom.dataset.minSelectDays) {dateConfig.minSelectDays = this.dom.dataset.minSelectDays;}if (this.dom.dataset.maxSelectDays) {dateConfig.maxSelectDays = this.dom.dataset.maxSelectDays;}return dateConfig;}showOnReadableDivClick() {this.outputEl.addEventListener('click', ev => {ev.stopPropagation();if (!this.datePicker.dom.disabled) {this.datePicker.show();}});}get outputEl() {return dg('.xmsFormFieldDateRangeOutput', this.dom.closest('.xmsFormFieldDaterangeDaterange'));}};document.addEventListener('DOMContentLoaded', () => {document.querySelectorAll('.xmsFormFieldPasswordPassword:not(.onlycss)').forEach(el => {if (el.xmsFormFieldPasswordInstance) return;el.xmsFormFieldPasswordInstance = new xms.form.field.password(el);});});xms.form.field.password = class {constructor(dom) {const toggleButton = dom.querySelector('.toggleShowPassword');toggleButton?.addEventListener('click', ev => {ev.stopPropagation();const input = toggleButton.parentNode.querySelector('input');if (input.type === 'password') {input.type = 'text';toggleButton.title = xms.trl('Hide password', 'Passwort verstecken');toggleButton.classList.remove('fa-eye');toggleButton.classList.add('fa-eye-slash');} else {input.type = 'password';toggleButton.title = xms.trl('Show password', 'Passwort anzeigen');toggleButton.classList.add('fa-eye');toggleButton.classList.remove('fa-eye-slash');}});}};if (!xms.form.field) xms.form.field = {};xms.form.field.table = function (tableEl) {this.dom = dg(tableEl);this.formEl = tsc.dom.getParentNode('form', this.dom);this.currentRows = 0;this.currentColumns = 0;this.nextRowIndex = 0;this.nextColIndex = 0;this.config = {value: this.dom.getAttribute('data-value') ? JSON.parse(this.dom.getAttribute('data-value')) : null,cellBlueprint: this.dom.getAttribute('data-cell-blueprint'),defaultRows: parseInt(this.dom.getAttribute('data-default-rows')),defaultCols: parseInt(this.dom.getAttribute('data-default-cols'))};this.init();};xms.form.field.table.prototype = {init: function () {dg('tbody', this.dom).insertAdjacentHTML('afterbegin','<tr>'
251+ '<td></td>'
252+ '<td><a class="btn btn-success xmsButtonAdd xmsFormFieldTableAddCol js" href="#" tabindex="-1" style="width:100%!important;height:100%!important;"><i class="fa-solid fa-plus mr-05"></i>Spalte hinzufügen</a></td>'
253+ '</tr>'
254+ '<tr>'
255+ '<td><a class="btn btn-success xmsButtonAdd xmsFormFieldTableAddRow js" href="#" tabindex="-1" style="width:100%!important;height:100%!important;"><i class="fa-solid fa-plus mr-05"></i>Reihe hinzufügen</a></td>'
256+ '<td></td>'
257+ '</tr>'
258);tsc.event.onClick(dg('a.xmsFormFieldTableAddCol.js', this.dom), function (ev) {tsc.event.preventDefault(ev);this.addColumn();}, [], this);tsc.event.onClick(dg('a.xmsFormFieldTableAddRow.js', this.dom), function (ev) {tsc.event.preventDefault(ev);this.addRow();}, [], this);var rowAmount = this.config.defaultRows;var colAmount = this.config.defaultCols;if (this.config.value && this.config.value.data) {rowAmount = this.config.value.data.length;colAmount = this.config.value.data[0].length;}for (var r = 0; r < rowAmount; r++) {this.addRow();}for (var c = 0; c < colAmount; c++) {this.addColumn();}if (this.config.value && this.config.value.data) {this.config.value.data.forEach(function (row, rowIdx) {row.forEach(function (col, colIdx) {var tdSelector = 'tr:nth-child(' + (rowIdx + 2) + ') > td:nth-child(' + (colIdx + 2) + ')';var input = dg(tdSelector + ' input, ' + tdSelector + ' textarea, ' + tdSelector + ' select', this.dom);if (input) input.value = col;}, this);}, this);}},getCellContent: function (rowUnique) {return this.config.cellBlueprint.replace('#row#', rowUnique).replace('#col#', this.nextColIndex++);},addRow: function () {var html = '<tr data-row-idx="' + this.nextRowIndex + '">';html += '<td><a class="btn xmsButtonDnd rowMoveInit js" href="#" tabindex="-1" style="width:100%!important;height:100%!important;"><i class="fa-solid fa-arrows-up-down-left-right mr-05"></i>Reihe verschieben</a></td>';for (var c = 0; c < this.currentColumns; c++) {html += '<td>' + this.getCellContent(this.nextRowIndex) + '</td>';}html += '<td><a class="btn xmsButtonRemove rowRemoveInit js" href="#" tabindex="-1" style="width:100%!important;height:100%!important;">
258<i class="fa-solid fa-trash mr-05"></i>Reihe entfernen</a></td>';html += '</tr>';dg('tbody > tr:last-child', this.dom).insertAdjacentHTML('beforebegin', html);this.currentRows++;this.nextRowIndex++;var delNode = dg('a.rowRemoveInit.js', this.dom);tsc.dom.removeClass(delNode, 'rowRemoveInit');tsc.event.onClick(delNode, function (ev) {tsc.event.preventDefault(ev);var tr = tsc.dom.getParentNode('tr', delNode);if (this.getForm()) this.getForm().unInitRteBelow(tr);tsc.dom.removeNode(tr);this.currentRows--;}, [], this);var dragNode = dg('a.rowMoveInit.js', this.dom);tsc.dom.removeClass(dragNode, 'rowMoveInit');this.initDndRow(dragNode);if (this.getForm()) this.getForm()._init();},initDndRow: function (dragNode) {tsc.dom.draggable(dragNode, {effectAllowed: 'move'
259});tsc.event.onDragStart(dragNode, function (ev) {tsc.window.addScrollAreas();tsc.dom.getAll('tr:nth-child(1n+2)', this.dom).forEach(function (tr, idx) {var dropArea = document.createElement('div');dropArea.style.width = tsc.dom.getWidth(tr) + 'px';dropArea.style.left = tsc.dom.getXY(tr)[0] + 'px';dropArea.style.top = tsc.dom.getXY(tr)[1] + 'px';tsc.dom.addClass(dropArea, 'xmsFormFieldTableDropArea xmsFormFieldTableDropAreaRow');document.body.appendChild(dropArea);tsc.dom.droppable(dropArea, {dropEffect: 'move',callback: function (value, config, ev) {var draggedEl = dg('#' + value, this.dom);var dragTr = tsc.dom.getParentNode('tr', draggedEl);if (this.getForm()) this.getForm().unInitRteBelow(dragTr);tsc.dom.insertAfter(dg('tr:nth-child(' + (idx + 1) + ')', this.dom), dragTr);if (this.getForm()) this.getForm()._init();},scope: this
260});}, this);}, [], this);tsc.event.onDragEnd(dragNode, function (ev) {tsc.dom.removeNode('.xmsFormFieldTableDropArea');tsc.window.removeScrollAreas();}, [], this);},addColumn: function () {tsc.dom.getAll('tr', this.dom).forEach(function (tr, idx, arr) {if (idx == 0) {var html = '<td><a class="btn xmsButtonDnd colMoveInit js" href="#" tabindex="-1" style="width:100%!important;height:100%!important;"><i class="fa-solid fa-arrows-up-down-left-right mr-05"></i>Spalte verschieben</a></td>';} else if (idx == arr.length - 1) {var html = '<td><a class="btn xmsButtonRemove colRemoveInit js" href="#" tabindex="-1" style="width:100%!important;height:100%!important;"><i class="fa-solid fa-trash mr-05"></i>Spalte entfernen</a></td>';} else {var html = '<td>' + this.getCellContent(tr.getAttribute('data-row-idx')) + '</td>';}dg('td:last-child', tr).insertAdjacentHTML('beforebegin', html);}, this);this.currentColumns++;var delNode = dg('a.colRemoveInit.js', this.dom);tsc.dom.removeClass(delNode, 'colRemoveInit');tsc.event.onClick(delNode, function (ev) {tsc.event.preventDefault(ev);var tds = tsc.dom.getAll('td', tsc.dom.getParentNode('tr', delNode));for (var i = 0; i < tds.length; i++) {if (tds[i] === tsc.dom.getParentNode('td', delNode)) break;}if (this.getForm()) {tsc.dom.getAll('tr td:nth-child(' + (i + 1) + ')', this.dom).forEach(function (el) {this.getForm().unInitRteBelow(el);}, this);}tsc.dom.removeNode('tr td:nth-child(' + (i + 1) + ')', this.dom);this.currentColumns--;}, [], this);var dragNode = dg('a.colMoveInit.js', this.dom);tsc.dom.removeClass(dragNode, 'colMoveInit');this.initDndColumn(dragNode);if (this.getForm()) this.getForm()._init();},initDndColumn: function (dragNode) {tsc.dom.draggable(dragNode, {effectAllowed: 'move'
261});tsc.event.onDragStart(dragNode, function (ev) {tsc.dom.getAll('td:nth-child(1n+2)', tsc.dom.getParentNode('tr', dragNode)).forEac
261h(function (td, idx) {var dropArea = document.createElement('div');dropArea.style.height = tsc.dom.getHeight(tsc.dom.getParentNode('table', td)) + 'px';dropArea.style.left = tsc.dom.getXY(td)[0] + 'px';dropArea.style.top = tsc.dom.getXY(td)[1] + 'px';tsc.dom.addClass(dropArea, 'xmsFormFieldTableDropArea xmsFormFieldTableDropAreaCol');document.body.appendChild(dropArea);tsc.dom.droppable(dropArea, {dropEffect: 'move',callback: function (value, config, ev) {var draggedEl = dg('#' + value, this.dom);var tds = tsc.dom.getAll('td', tsc.dom.getParentNode('tr', draggedEl));for (var i = 0; i < tds.length; i++) {if (tds[i] === tsc.dom.getParentNode('td', draggedEl)) var dragIdx = i;}tsc.dom.getAll('tr', this.dom).forEach(function (tr) {var dragTd = dg('td:nth-child(' + (dragIdx + 1) + ')', tr);if (this.getForm()) this.getForm().unInitRteBelow(dragTd);tsc.dom.insertAfter(dg('td:nth-child(' + (idx + 1) + ')', tr), dragTd);}, this);if (this.getForm()) this.getForm()._init();},scope: this
262});}, this);}, [], this);tsc.event.onDragEnd(dragNode, function (ev) {tsc.dom.removeNode('.xmsFormFieldTableDropArea');}, [], this);},getForm: function () {if (this.formEl && this.formEl.formInstance) return this.formEl.formInstance;return null;}};if (!xms) var xms = {};tsc.event.onReady(function () {new xms.cookiewarning();});xms.cookiewarning = function () {if (dg('.cookieWarningText.js')) return;try {if (localStorage.getItem('xmsCookieWarningOk') === '1') {return;}} catch (err) {}const modal = tsc.modal.render(`<section class="cookieWarningText js">
263<div class="row">
264<div class="col-12 col-md-8 text-center text-md-left">
265${xms.trl("This site use cookies to enhance the user experience for those who visit our website. By further using this site you are accepting the usage of cookies.","Diese Webseite verwendet Cookies, um Ihnen die bestmögliche Nutzererfahrung bieten zu können. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu."
266)}</div>
267<div class="col-12 col-md-4 text-center text-md-right">
268<a href="#" class="btn btn-link btn-xs text-white btnInfo js">${xms.trl('More information', 'Weitere Informationen')}</a>
269<a href="#" class="btn btn-primary btn-xs ml-1 btnOk js">OK</a>
270</div>
271</div>
272</section>`,'transparent', {width: '100vw',position: 'bottom-center',close: null
273});modal.body.classList.add('p-1');modal.dom.querySelector('.btnInfo.js').addEventListener('click', (ev) => {if (ev) tsc.event.preventDefault(ev);try {localStorage.setItem('xmsCookieWarningOk', '1');} catch (err) { }window.location.href = '/' + xms.currentLanguage + '/xms-imprint-rd/';});modal.dom.querySelector('.btnOk.js').addEventListener('click', (ev) => {if (ev) tsc.event.preventDefault(ev);try {localStorage.setItem('xmsCookieWarningOk', '1');} catch (err) { }modal.remove();});};if (!xms) var xms = {};tsc.event.onReady(function () {new xms.outdatedBrowserwarning(xms.outdatedBrowserwarning.versions);});xms.outdatedBrowserwarning = function (versions) {if (typeof versions == 'undefined') return;if (dg('.outdatedBrowserWarningText.js')) return;try {let ignore = JSON.parse(localStorage.getItem('xmsOutdatedBrowserWarningIgnore'));if (ignore.status === 'ignore') {return;}} catch (err) { }let outdatedBrowser = false;if (tsc.browser.isChrome && tsc.browser.chromeVersion <= versions.chrome) {outdatedBrowser = "Google Chrome " + tsc.browser.chromeVersion;} else if (tsc.browser.isEdge && tsc.browser.edgeVersion <= versions.edge) {outdatedBrowser = "Edge " + tsc.browser.edgeVersion;} else if (tsc.browser.isFf && tsc.browser.ffVersion <= versions.firefox) {outdatedBrowser = "Firefox " + tsc.browser.ffVersion;} else if (tsc.browser.isIE && tsc.browser.ieVersion <= versions.ie) {outdatedBrowser = "Internet Explorer " + tsc.browser.ieVersion;} else if (tsc.browser.isOpera && tsc.browser.operaVersion <= versions.opera) {outdatedBrowser = "Opera " + tsc.browser.operaVersion;} else if (tsc.browser.isSafari && tsc.browser.safariVersion <= versions.safari) {outdatedBrowser = "Safari " + tsc.browser.safariVersion;}if (tsc.os.isIOS && tsc.browser.isSafari && tsc.browser.safariVersion <= ver
273sions.safari) {if (tsc.browser.safariVersion !== 0) {outdatedBrowser = "Safari " + tsc.browser.safariVersion;} else {outdatedBrowser = false;}}if (outdatedBrowser) this.showWarning(outdatedBrowser);};xms.outdatedBrowserwarning.versions = {chrome: 87,edge: 86,firefox: 85,ie: 11,opera: 73,safari: 13
274};xms.outdatedBrowserwarning.prototype = {showWarning: function (browserInfo) {const lightbox = new tsc.modal.lightbox('prompt', {clickaway: false,close: 'header',});lightbox.header.append(Object.assign(document.createElement('span'), {innerHTML: `<strong>${xms.trlb('Outdated browser', 'Veralterter Browser')}</strong>`
275}));lightbox.body.append(Object.assign(document.createElement('p'), {innerHTML: xms.trl("Your browser (?0) is outdated. This can lead to display errors or other technical errors.","Ihr Browser (?0) ist veraltet. Dadurch kann es zu Darstellungsfehler oder anderwertigen technischen Fehlern kommen."
276, [browserInfo])}), Object.assign(document.createElement('message'), {className: 'danger',innerHTML: xms.trl('Update your browser for more security, speed and comfort on this page.','Aktualisieren Sie Ihren Browser für mehr Sicherheit, Geschwindigkeit und den besten Komfort auf dieser Seite.'
277)}));const ignoreBtn = Object.assign(document.createElement('button'), {className: 'btn btn-light',innerHTML: `<i class="fa-solid fa-ban mr-05"></i>${xms.trl('Ignore', 'Ignorieren')}`
278});ignoreBtn.addEventListener('click', () => {ignoreBtn.disabled = true;lightbox.remove();try {localStorage.setItem('xmsOutdatedBrowserWarningIgnore', JSON.stringify({ status: "ignore" }));} catch (err) { }});const updateBtn = Object.assign(document.createElement('button'), {className: 'btn btn-success',innerHTML: `<i class="fa-solid fa-thumbs-up mr-05"></i>${xms.trl('Update ?0', '?0 updaten', [browserInfo])}`
279});updateBtn.addEventListener('click', () => {updateBtn.disabled = true;const url = 'https://browser-update.org/update-browser.html';const link = document.createElement('a');link.classList.add('d-none');link.href = url;link.target = '_blank';link.rel = 'noopener noreferrer';lightbox.dom.append(link);link.click();lightbox.remove();});lightbox.footer.append(updateBtn, ignoreBtn);lightbox.show();}};if (!tsc) var tsc = {};if (!tsc.ui) tsc.ui = {};if (!tsc.ui.anim) tsc.ui.anim = {};if (!tsc.event) alert("2script Error: tsc.ui needs the event.js to be present");if (!tsc.dom) alert("2script Error: tsc.ui needs the dom.js to be present");if (!tsc.anim) alert("2script Error: tsc.ui needs the anim.js to be present");tsc.event.onReady(function () {tsc.ui.anim.autoInit();});tsc.ui.anim.autoInit = function () {var animWrappers = tsc.dom.getAll(".tscAnimChildren");for (var i = 0; i < animWrappers.length; i++) {if (!animWrappers[i].tscAnimChildren) {tsc.ui.anim.children(animWrappers[i]);}}};tsc.ui.anim.children = function (wrapper, config) {wrapper = tsc.dom.get(wrapper);wrapper.tscAnimChildren = new tsc.ui.anim.childrenObj(wrapper, config);return wrapper.tscAnimChildren;};tsc.ui.anim.childrenObj = function (wrapper, config) {this.dom = tsc.dom.get(wrapper);if (!config) var config = {};this.cfg = {showtime: 5500,animtime: 1500
280};if (config.showtime) {this.cfg.showtime = config.showtime;} else if (this.dom.getAttribute('data-tscshowtime')) {this.cfg.showtime = parseInt(this.dom.getAttribute('data-tscshowtime'));}if (config.animtime) {this.cfg.animtime = config.animtime;} else if (this.dom.getAttribute('data-tscanimtime')) {this.cfg.animtime = parseInt(this.dom.getAttribute('data-tscanimtime'));}this.cfg.hasSwitchArrows = this.dom.getAttribute('data-tsc-anim-children-arrows') || false;this.cfg.switchBulletType = this.dom.getAttribute('data-tsc-anim-children-bullets') || '';if (this.cfg.switchBulletType == '1') this.cfg.switchBulletType = 'bullet';this.cfg.paging = this.dom.getAttribute('data-tsc-anim-children-paging') || false;this.cfg.isAutoplay = !this.dom.hasAttribute('data-tsc-anim-children-autoplay') || this.dom.getAttribute('data-tsc-anim-children-autoplay') == '1';this.cfg.swipeOnDesktop = this.dom.getAttribute('data-tsc-anim-children-swipeondesktop') == '1';this.index = 0;this.children = [];this.switchBulletWrapper = [];this.switchBullets = [];var domStylePosition = window.getComputedStyle(this.dom).position;if (!domStylePosition || !domStylePosition.match(/(relative|absolute)/)) {this.dom.style.position = "relative";}this._timeout = null;for (var i = 0; i < wrapper.childNodes.length; i++) {if (wrapper.childNodes[i].tagName) {this.children.push(wrapper.childNodes[i]);wrapper.childNodes[i].style.position = "absolute";wrapper.childNodes[i].style.top = "0px";
280wrapper.childNodes[i].style.left = "0px";}}if (this.children.length == 0) return false;for (var i = 0; i < this.children.length; i++) {this.children[i].tscLazyLoadImgs = [];var imgs = Array.from(tsc.dom.getAll('img', this.children[i]));if (this.children[i].tagName.toLowerCase() == 'img') imgs.push(this.children[i]);if (imgs.length >= 1) {for (var k = 0; k < imgs.length; k++) {if (imgs[k].getAttribute('data-tsclazyloadsrc')) {this.children[i].tscLazyLoadImgs.push(imgs[k]);}}}}this._lazyLoadInit();this._setVisibilities();this._lazyLoadByIndexIfNeeded(this.index, 'load', this._lazyLoadBoundingImages);this.intersectionPlayer();if (this.children.length > 1) {tsc.event.onTouchMove(this.dom, this.slideTouchMove, [], this, null, this.cfg.swipeOnDesktop);tsc.event.onTouchEnd(this.dom, this.slideTouchEnd, [], this, null, this.cfg.swipeOnDesktop);}if (this.cfg.hasSwitchArrows && this.children.length >= 2) {var prevLink = tsc.dom.appendChild(this.dom, { tag: "a", cls: "tscAnimChildrenPrev", href: "#" });tsc.event.onClick(prevLink, function (ev) {tsc.event.preventDefault(ev);this.stop();this.prev();this.play();}, [], this);var nextLink = tsc.dom.appendChild(this.dom, { tag: "a", cls: "tscAnimChildrenNext", href: "#" });tsc.event.onClick(nextLink, function (ev) {tsc.event.preventDefault(ev);this.stop();this.next();this.play();}, [], this);}if ((this.cfg.switchBulletType == 'bullet' || this.cfg.switchBulletType == 'image') && this.children.length >= 2) {this.switchBulletWrapper = tsc.dom.appendChild(this.dom, { tag: "div", cls: "tscAnimChildrenNodes" });for (var i = 0; i < this.children.length; i++) {if (this.cfg.switchBulletType == 'image') {var imgChild = dg("img", this.children[i]);if (imgChild) {var linkContent = { tag: "img", src: imgChild.src.replace(/\/ic-[0-9]+.*?\//, "/ic-160x90-crop/"), alt: "" };} else {var linkContent = "";}} else {var linkContent = (i + 1).toString();}var node = tsc.dom.appendChild(this.switchBulletWrapper, { tag: "a", cls: "tscAnimChildrenNode", href: "#", children: [linkContent] });if (this.switchBulletEvent == 'hover') {tsc.event.onMouseOver(node, this.onBulletEvent, [node, i], this);tsc.event.onClick(node, function (ev) { if (ev) tsc.event.preventDefault(ev); });} else {tsc.event.onClick(node, this.onBulletEvent, [node, i], this);}if (i == this.index) tsc.dom.addClass(node, "active");this.switchBullets.push(node);}}this.renderPaging();if (!dg('.tscFullSizeBackground', this.dom)) {tsc.dom.addClass(this.dom, 'tscAnimChildrenNoFsbg');}};tsc.ui.anim.childrenObj.prototype = {play: function () {if (this.children.length <= 1 || !this.cfg.isAutoplay) return;if (this._timeout) return;this._timeout = tsc.doLater(this.cfg.showtime + 500, this._player, [], this);},_player: function () {this.next();this._timeout = tsc.doLater(this.cfg.showtime + this.cfg.animtime, this._player, [], this);},stop: function () {if (!this._timeout) return;window.clearTimeout(this._timeout);this._timeout = null;},onBulletEvent: function (node, idx, ev) {if (ev) tsc.event.preventDefault(ev);this.stop();this.activate(idx);this.play();},next: function () {if (this.index < this.children.length - 1) {this.activate(this.index + 1);} else {this.activate(0);}},prev: function () {if (this.index >= 1) {this.activate(this.index - 1);} else {this.activate(this.children.length - 1);}},activate: function (idx) {if (this._lazyLoadByIndexIfNeeded(idx, 'load', this.activate, [idx])) {return;}if (this.cfg.switchBulletType) {var activeSwitchNode = dg(".active", this.switchBulletWrapper);if (activeSwitchNode) tsc.dom.removeClass(activeSwitchNode, "active");tsc.dom.addClass(this.switchBullets[idx], "active");}this._setVisibilities();tsc.anim.run({ el: this.children[this.index], cssProp: "opacity", from: 1, to: 0, duration: this.cfg.animtime * 1.5 });this.index = idx;tsc.anim.run({ el: this.children[this.index], cssProp: "opacity", from: 0, to: 1, duration: this.cfg.animtime });tsc.doLater(20, function () {this.children[this.index].style.zIndex = 3;this.children[this.index].style.display = "block";}, [], this);this.renderPaging();this._lazyLoadBoundingImages();},intersectionPlayer: function (selector) {if (this.children.length <= 1 || !this.cfg.isAutoplay) return;const observer = new IntersectionObserver((els, obs) =>
280 {els.forEach(el => {if (el.isIntersecting) {this.play();} else {this.stop();}})}, {threshold: 0.1
281});observer.observe(this.dom);},_setVisibilities: function () {this.children[this.index].style.zIndex = 2;for (var i = 0; i < this.children.length; i++) {if (i == this.index) continue;this.children[i].style.zIndex = 1;this.children[i].style.display = "none";}},_lazyLoadInit: function () {for (var i = 0; i < this.children.length; i++) {if (this.children[i].tscLazyLoadImgs.length >= 1) {for (var k = 0; k < this.children[i].tscLazyLoadImgs.length; k++) {this.children[i].tscLazyLoadImgs[k].tscLazyLoaded = true;tsc.event.onLoad(this.children[i].tscLazyLoadImgs[k], function (img, galleryChild) {img.tscLazyLoaded = true;var allLoaded = true;for (var m = 0; m < galleryChild.tscLazyLoadImgs.length; m++) {if (!galleryChild.tscLazyLoadImgs[m].tscLazyLoaded) allLoaded = false;}if (allLoaded) {tsc.event.fireCustom(galleryChild, 'lazyLoaded');}}, [this.children[i].tscLazyLoadImgs[k], this.children[i]], this);}}}},_lazyLoadByIndexIfNeeded: function (idx, loadType, callbackFn, callbackArgs) {var loadingNeeded = false;if (!this.children[idx].tscLazyLoadImgs || this.children[idx].tscLazyLoadImgs.length <= 0) {return loadingNeeded;}var imgs = this.children[idx].tscLazyLoadImgs;for (var k = 0; k < imgs.length; k++) {if ((loadType == 'unload' && imgs[k].src.indexOf(this.blankDataImage) == -1) // unload and no blank image in src
282|| (loadType != 'unload' && imgs[k].src.indexOf(imgs[k].getAttribute('data-tsclazyloadsrc')) == -1) // load and no real image in src
283) {if (loadingNeeded == false && callbackFn) {tsc.event.onCustom(this.children[idx], 'lazyLoaded', callbackFn, callbackArgs || [], this, true);}loadingNeeded = true;imgs[k].tscLazyLoaded = false;}}for (var k = 0; k < imgs.length; k++) {if (loadType != 'unload' && imgs[k].src.indexOf(imgs[k].getAttribute('data-tsclazyloadsrc')) == -1) {var preloadImage = new Image();tsc.event.onLoad(preloadImage, function (preloadImage, realImg) {realImg.src = preloadImage.src;}, [preloadImage, imgs[k]], this);preloadImage.src = imgs[k].getAttribute('data-tsclazyloadsrc');}}return loadingNeeded;},_lazyLoadBoundingImages: function () {var preloadOnEachSide = 2;for (var i = 0; i < this.children.length; i++) {if (i == this.index) continue;if (this.index - preloadOnEachSide <= i && this.index + preloadOnEachSide >= i) {this._lazyLoadByIndexIfNeeded(i, 'load');} else {}}},renderPaging: function () {if (this.cfg.paging) {if (!dg('.tscAnimChildrenPaging', this.dom)) {this.dom.insertAdjacentHTML('beforeend', '<div class="tscAnimChildrenPaging"><span class="tscAnimChildrenPageCurrent"></span><span class="tscAnimChildrenPageAmount"></span></div>');}let currentItem = this.index + 1;let maxItem = this.children.length;dg('.tscAnimChildrenPaging .tscAnimChildrenPageCurrent', this.dom).innerHTML = currentItem;dg('.tscAnimChildrenPaging .tscAnimChildrenPageAmount', this.dom).innerHTML = maxItem;}},slideTouchMove: function (ev) {if (tsc.browser.isTouch && this.touchSkipUntilEnd) {this.touchSkipUntilEnd = true;return;}if (Math.abs(ev.tscTouchOffset.offsetPageX) > 10 || Math.abs(ev.tscTouchOffset.offsetPageY) > 10) {if (Math.abs(ev.tscTouchOffset.offsetPageX) > Math.abs(ev.tscTouchOffset.offsetPageY)) {this.stop();tsc.event.preventDefault(ev);} else {this.touchSkipUntilEnd = true;}}},slideTouchEnd: function (ev) {this.startDragLeft = null;if (!this.touchSkipUntilEnd) {let moveAmount = ev.tscTouchOffset.offsetPageX;var domWidth = tsc.dom.getWidth(this.dom);if (moveAmount < domWidth * (-0.15)) {this.next();} else if (moveAmount > domWidth * 0.15) {this.prev();}}if (this.isAutoplay) {this.stop();this.play();}this.touchSkipUntilEnd = false;}};if (!web) var web = {};tsc.event.onReady(function() {if (!web._isInited) {web._isInited = true;web.init();}});web = {_isInited: false,init: function() {tsc.event.onScroll(window, function() {web.stickyHeader();});},stickyHeader: function() {if (dg("#outerHeader") && tsc.window.getScrollY() >= (tsc.window.getInnerHeight() / 4)) {tsc.dom.addClass(document.body, "stickyActive");} else {tsc.dom.removeClass(document.body, "stickyActive");}}};if (!xms) var xms = {};xms.importtranslation = function () {tsc.ajax.request('/' + xms.currentLanguage + '/adminajax/translate/renderImportNotification/', {}, function (responseText) {var ret = JSON.parse(responseText);if (ret.status) {const lightbox = tsc.modal.lightbox.render(ret.notificationHTML, 'isBackend excel prompt', {close: 'header'
284});lightbox.header.append(Object.assign(document.createElement('span'), {innerHTML: `<strong>${xms.trlb('Import translations', 'Übersetzung importieren')}</strong>`
285}));const xmsFormButtonSubmit = lightbox.dom.querySelector('.xmsButtonSubmit');const submitBtn = Object.assign(document.createElement('button'), {className: 'btn btn-excel',innerHTML: xmsFormButtonSubmit.innerHTML
286});submitBtn.addEventListener('click', () => xmsFormButtonSubmit.click());xmsFormButtonSubmit.classList.add('d-none');const cancelBtn = Object.assign(document.createElement('button'), {className: 'btn xms-btn-secondary',innerHTML: `<i class="fa-solid fa-xmark mr-05"></i>${xms.trlb('Cancel', 'Abbrechen')}`
287});cancelBtn.addEventListener('click', () => lightbox.remove());lightbox.footer.append(submitBtn, cancelBtn);}}, { scope: this, callbackArgs: [] });};document.addEventListener('DOMContentLoaded', () => {document.querySelectorAll('.xmseUsersLogin .xmsFormFieldCheckbox input[name="rememberMe"]').forEach(checkbox => {if (!checkbox.rememberMeInstance) checkbox.rememberMeInstance = new xms.form.field.checkbox(checkbox);});});if (!xms) var xms = {};if (!xms.users) xms.users = {};xms.users.passwordStrength = function (passwordEl, writeOutEl) {var passwordEl = dg(passwordEl);var writeOutEl = dg(writeOutEl);tsc.event.onKeyUp(passwordEl, function () {var score = 0;
287var pw = dg(passwordEl).value;score += pw.length - 6;if (pw.match(/[a-z]/)) score += 2;if (pw.match(/[A-Z]/)) score += 2;if (pw.match(/[0-9]/)) score += 2;if (pw.match(/[^0-9a-zA-Z]/)) score += 3;if (score >= 10) {writeOutEl.innerHTML = xms.trl('Strong password', 'Starkes Passwort');tsc.dom.removeClass(writeOutEl, 'text-danger');tsc.dom.removeClass(writeOutEl, 'text-warning');tsc.dom.addClass(writeOutEl, 'text-success');} else if (score >= 5) {writeOutEl.innerHTML = xms.trl('Average password', 'Normales Passwort');tsc.dom.removeClass(writeOutEl, 'text-danger');tsc.dom.removeClass(writeOutEl, 'text-success');tsc.dom.addClass(writeOutEl, 'text-warning');} else {writeOutEl.innerHTML = xms.trl('Weak password', 'Schwaches Passwort');tsc.dom.removeClass(writeOutEl, 'text-success');tsc.dom.removeClass(writeOutEl, 'text-warning');tsc.dom.addClass(writeOutEl, 'text-danger');}});};tsc.event.onReady(function () {if (dg('#setpw1') && dg('#passwordStrength')) {xms.users.passwordStrength('#setpw1', '#passwordStrength');}});tsc.event.onReady(function () {tsc.doLater(1, function () {var els = tsc.dom.getAll("div.xmseUsersRegister");for (var i = 0; i < els.length; i++) {var form = dg("form.xmsForm", els[i]);if (!form || !form.formInstance) continue;tsc.event.onCustom(form.formInstance, "save", function (responseText, req) {if (responseText == "ok") {var formSaveField = dg('input[name="doFormSave"]', this);var href = location.href.replace(/success=form[0-9]+/, '') + (location.search ? "&" : "?") + "success=" + formSaveField.value;if (href.indexOf('?&') != -1) href = href.replace('?&', '?');location.href = href;} else {this.innerHTML = responseText;}}, [], form);}});});if (!xms) var xms = {};xms.menu = class {constructor(dom) {this.dom = dom;this.isSubmenuHover = this.dom.classList.contains('submenuHover');this.touchBehaviorOnDesktop = this.dom.getAttribute('data-xms-menu-touchbehaviorondesktop');this.submenuIconOpen = this.dom.dataset.xmsMenuSubmenuiconopen;this.submenuIconClose = this.dom.dataset.xmsMenuSubmenuiconclose;this.mobileNavBtn = dg('#toggleNav,a[onclick*="toggleNav"],a[onclick*="avActive"]');this.currentNavType = 'desktop';this.lastWasTouch = false;this.keyboardHandling();this.initScrollToAnchorOnSameSite();if (this.mobileNavBtn && this.mobileNavBtn.hasAttribute('data-xms-menu-togglenav') && this.mobileNavBtn.getAttribute('data-xms-menu-togglenav') !== 'inited') {this.mobileNavBtn.setAttribute('data-xms-menu-togglenav', 'inited');tsc.event.onClick(this.mobileNavBtn, this.onNavToggle, [], this);}this.initTouchSpecifics();}get isTouchBehaviorOnDesktop() {if (!this.touchBehaviorOnDesktop || this.touchBehaviorOnDesktop === '0') return false;return this.touchBehaviorOnDesktop === '1' || dg(this.touchBehaviorOnDesktop);}get isMobileNav() {return this.mobileNavBtn && window.getComputedStyle(this.mobileNavBtn).display !== "none";}onNavToggle(ev) {tsc.event.preventDefault(ev);tsc.dom.toggleClass(document.body, 'navActive');if (document.body.classList.contains('navActive')) {this.mobileNavBtn.setAttribute('aria-expanded', 'true');this.mobileNavBtn.setAttribute('aria-label', xms.trl('Close navigation', 'Navigation schließen'));this.mobileNavBtn.setAttribute('title', xms.trl('Close navigation', 'Navigation schließen'));document.body.classList.add('overflow-hidden');tsc.dom.getAll('[href], input, select, textarea, button, iframe, object, embed, [tabindex]:not([tabindex="-1"])', document.body).forEach(el => {if (tsc.dom.getParentNode('nav', el) || el === this.mobileNavBtn) return;el.setAttribute('tabindex', '-1');el.setAttribute('data-temporaryModifiedTabindex', true);});} else {this.mobileNavBtn.setAttribute('aria-expanded', 'false');this.mobileNavBtn.setAttribute('aria-label', xms.trl('Open navigation', 'Navigation öffnen'));this.mobileNavBtn.setAttribute('title', xms.trl('Open navigation', 'Navigation öffnen'));document.body.classList.remove('overflow-hidden');tsc.dom.getAll('[data-temporaryModifiedTabindex]', document.body).forEach(el => {el.removeAttribute('tabindex');el.removeAttribute('data-temporaryModifiedTabindex');});}}initTouchSpecifics() {tsc.dom.getAll('li a', this.dom).forEach(el => {tsc.event.onTouchEnd(el, function (ev) {this.lastWasTouch = true;this.onTouch(el, ev);}, [], this);tsc.event.onClick(el, function (ev) {if (!this.lastWasTouch) this.onClick(el, ev);this.lastWasTouch = false;}, [], this);}, this);tsc.event.onClick(document.body, function (ev) {let target = ev.target;let targetLi = target.closest('li.hovering');tsc.dom.getAll('li.hovering', this.dom).forEach(li => {if (!dg('ul', li)) return;if (li === targetLi || li.contains(targetLi)) return;if (!dg('.active', li) || !this.isMobileNav) {li.classList.remove('hovering');}}, this);}, [], this, 1);tsc.event.onResize(window, this.checkActiveMenuType, [], this, 250);this.checkActiveMenuType();if (this.mobileNavBtn) {tsc.event.onClick(this.mobileNavBtn, function () {tsc.dom.getAll('.menuActive-jsDisabled', this.dom).forEach(function () {this._initialHoverAndCloser();}, this);}, [], this);}}onTouch(linkEl, ev) {this.linkTouched(linkEl, ev);}onClick(linkEl, ev) {if (!this.isSubmenuHover) return;if (!this.isMobileNav && !this.isTouchBehaviorOnDesktop) return;this.linkTouched(linkEl, ev);}linkTouched(linkEl, ev) {let li = tsc.dom.getParentNode('li', linkEl);if (!dg('ul', li) || tsc.dom.isOverlapping(document.body, dg('ul', li))) {if (linkEl.pathname == window.location.pathname && linkEl.hash && linkEl.hash.length >= 2) {this.onNavToggle();}return;}if (li.classList.contains('hovering')) return;tsc.event.preventDefault(ev);tsc.event.stopPropagation(ev);tsc.dom.getAll('.hovering', this.dom).forEach(hov => {if (hov.contains(li)) return;this._toggleSubmenuIcon(hov);hov.classList.remove('hovering');});this._toggleSubmenuIcon(li);li.classList.add('hovering');this._touchAddSubmenuTogglerIf(li);if (!this.mobileNavBtn || this.isMobileNav) {let scrollingParent = tsc.dom.getScrollingParent(li);let scrollingParentOffset = tsc.window.getScrollY();if (scrollingParent !== window) {scrollingParentOffset = scrollingParent.scrollTop;scrollingParentOffset += tsc.dom.getXY(scrollingParent)[1];scrollingParentOffset += 16;}let scrollByY = (tsc.dom.getXY(li)[1] + xms.getScrollOffsetY()) - scrollingParentOffset;tsc.window.scrollBy(0, scrollByY, scrollingParent);}}checkActiveMenuType() {if (this.isMobileNav && this.currentNavType === 'desktop') {this.switchMenuTypeToMobile();} else if (!this.isMobileNav && this.currentNavType === 'mobile') {this.switchMenuTypeToDesktop();}}switchMenuTypeToMobile() {this.currentNavType = 'mobile';tsc.dom.getAll('ul.menuActive', this.dom).forEach(ulSubmenu => {ulSubmenu.classList.add('menuActive-jsDisabled');ulSubmenu.classList.remove('menuActive');});this._initialHoverAndCloser();}switchMenuTypeToDesktop() {this.currentNavType = 'desktop';if (document.body.classList.contains('navActive')) {this.onNavToggle();}tsc.dom.getAll('ul.menuActive-jsDisabled', this.dom).forEach(ulSubmenu => {ulSubmenu.classList.add('menuActive');ulSubmenu.classList.remove('menuActive-jsDisabled');});tsc.dom.removeNode('.submenuToggle', this.dom);tsc.dom.getAll('.hovering', this.dom).forEach(hov => {hov.classList.remove('hovering');});}_initialHoverAndCloser() {tsc.dom.getAll('.hasChildPages', this.dom).forEach(function (hasChildPageLi) {if (dg('.active', hasChildPageLi)) {hasChildPageLi.classList.add('hovering');}this._touchAddSubmenuTogglerIf(hasChildPageLi);}, this);}_touchAddSubmenuTogglerIf(li) {if (this.isMobileNav && !dg('.submenuToggle', li)) {let link = dg('a', li);link.insertAdjacentHTML('beforeend', '<i class="submenuToggle ' + (li.classList.contains('hovering') ? this.submenuIconClose : this.submenuIconOpen) + '" title="' + xms.trl('Close', 'Schließen') + '"></i>');tsc.event.onClick(dg('.submenuToggle', li), function (ev) {let icon = dg('a>.submenuToggle', li);if (li.classList.contains('hovering')) {tsc.event.preventDefault(ev);tsc.event.stopPropagation(ev);this._toggleSubmenuIcon(li);li.classList.remove('hovering');}}, [], this);}}_toggleSubmenuIcon(li) {let icon = dg('a>.submenuToggle', li);if (!icon) return;if (li.classList.contains('hovering')) {if (this.submenuIconClose) icon.classList.remove(...this.submenuIconClose.split(' '));if (this.submenuIconOpen) icon.classList.add(...this.submenuIconOpen.split(' '));icon.setAttribute('title', xms.trl('Open', 'Öffnen'));} else {if (this.submenuIconOpen) icon.classList.remove(...this.submenuIconOpen.split(' '));if (this.submenuIconClose) icon.classList.add(...this.submenuIconClose.split(' '));icon.setAttribute('title', xms.trl('Close', 'Schließen'));}}initScrollToAnchorOnSameSite() {tsc.dom.getAll('.menuActive a', this.dom).forEach(function (menuActiveA) {if (menuActiveA.hasAttribute("href") && menuActiveA.getAttribute("href").indexOf("#") !== -1) {let currentHref = window.location.href.split('#');let linkHref = menuActiveA.href.split('#');if (currentHref[0] === linkHref[0]) {if (currentHref[1] === linkHref[1]) {menuActiveA.classList.add('active');}tsc.event.onClick(menuActiveA, function (href) {if (dg("#" + href)) tsc.window.scrollToNode("#" + href);if (dg(".active", tsc.dom.getParentNode(".menuActive", menuActiveA))) {dg(".active", tsc.dom.getParentNode(".menuActive", menuActiveA)).classList.remove('active');}menuActiveA.classList.add('active');if (tsc.browser.isTouch) {document.body.classList.remove('navActive');document.body.classList.remove('mobileNavActive');}}, [linkHref[1]], this);}}}, this);}keyboardHandling() {tsc.event.onKeyUp(document.body, function (ev) {if (ev.keyCode !== 9) return;if (!ev.target.closest('.xmseBasicMenu')) {tsc.dom.getAll('.hovering', this.dom).forEach(function (hov) {hov.classList.remove('hovering');});}}, [], this);tsc.dom.getAll('li', this.dom).forEach(function (li) {if (!dg('a', li)
287) return;tsc.event.onKeyDown(dg('a', li), function (ev) {if (ev.keyCode === 27) {tsc.dom.getAll('.hovering', this.dom).forEach(function (hov) {hov.classList.remove('hovering');});}});tsc.event.onKeyUp(dg('a', li), function (li, ev) {if ((ev.keyCode !== 9 && ev.keyCode !== 13) || li.classList.contains('hovering')) return;if (ev.keyCode !== 9) tsc.event.preventDefault(ev);tsc.dom.getAll('.hovering', this.dom).forEach(function (hov) {hov.classList.remove('hovering');});li.classList.add('hovering');tsc.dom.getAllParentNodes('li', li).forEach(function (parentLi) {parentLi.classList.add('hovering');});}, [li], this);});}};tsc.event.onReady(function () {tsc.dom.getAll('.xmseBasicMenu').forEach(menuEl => {if (menuEl.xmsMenuInstance) return;menuEl.xmsMenuInstance = new xms.menu(menuEl);});});tsc.event.onReady(() => {document.querySelectorAll('.xmseRte:not(.onlycss)').forEach(el => {if (el.rteInstance) return;el.rteInstance = new xms.rte(el);});});xms.rte = class {constructor(dom) {this.dom = dom;this.dom.querySelectorAll('.rteEnlargeImages img').forEach(img => {if (img.lightbox) return;img.setAttribute('role', 'img');img.addEventListener('click', () => {img.lightbox = tsc.modal.lightbox.render(this.getLightboxImageHtml(img), 'rteEnlargeImageLightbox', { opacity: 0.7, close: 'wrapper' });img.lightbox.addEventListener('beforeShow', () => img.lightbox.close.focus());window.addEventListener('resize', () => img.lightbox.body.innerHTML = this.getLightboxImageHtml(img));});});}getLightboxImageHtml(img) {const pixelRatio = (window.devicePixelRatio > 2 ? 2 : window.devicePixelRatio);return '<img src="' + img.src.replace(/\/ic-(.*?)\//, '/ic-' + Math.floor(document.body.clientWidth * 0.9 * pixelRatio) + 'x' + Math.floor(document.body.clientHeight * 0.9 * pixelRatio) + '-bestfit/') + '" alt="" />';}};if (!xms) var xms = {};if (!xms.embedded) xms.embedded = {};tsc.event.onReady(function () {var videoWrappers = tsc.dom.getAll(".xmseEmbeddedVideo");for (var i = 0; i < videoWrappers.length; i++) {if (videoWrappers[i].embeddedVideoInstance) continue;videoWrappers[i].embeddedVideoInstance = new xms.embedded.video(videoWrappers[i]);}});xms.embedded.video = function (wrapper) {this.dom = wrapper;this.wrapper = dg('.wrapper', this.dom);this.thumbnail = dg('.thumbnail', this.wrapper);this.youTubePlayer = null;this.skipYouTubeInit = 0;this.vimeoPlayer = null;this.init();};xms.embedded.video.prototype = {init: function () {if (this.thumbnail && this.thumbnail.hasAttribute('data-youtube-videoid')) {tsc.event.onClick(this.thumbnail, this.initYouTubeVideo, [], this);}if (this.thumbnail && this.thumbnail.hasAttribute('data-vimeo-videoid')) {tsc.event.onClick(this.thumbnail, this.initVimeoVideo, [], this);}},initYouTubeVideo: function () {tsc.loadScript('https://www.youtube.com/iframe_api', function () {var initPlayer = function () {if (!YT || !YT.Player) {if (this.skipYouTubeInit < 10) {tsc.doLater(500, initPlayer, [], this);this.skipYouTubeInit++;console.log('skip:', this.skipYouTubeInit);} else {console.error("failed to init YouTube video 5 seconds after api load");}} else {var playerDiv = tsc.dom.appendChild(this.wrapper, { tagName: 'div' });this.youTubePlayer = new YT.Player(tsc.dom.autoId(playerDiv).id, {height: '360',width: '640',videoId: this.thumbnail.getAttribute('data-youtube-videoid'),events: {'onReady': function (ev) {ev.target.playVideo();},'onStateChange': function (ev) { }}});tsc.dom.removeNode(this.thumbnail);this.thumbnail = null;}};tsc.doLater(500, initPlayer, [], this);}, [], this);},initVimeoVideo: function () {tsc.loadScript('https://player.vimeo.com/api/player.js', function () {var playerDiv = tsc.dom.appendChild(this.wrapper, { tagName: 'div' });this.vimeoPlayer = new Vimeo.Player(tsc.dom.autoId(playerDiv).id, {id: this.thumbnail.getAttribute('data-vimeo-videoid'),width: tsc.dom.getWidth(this.wrapper)});this.vimeoPlayer.play();}, [], this);}};tsc.event.onReady(function () {tsc.doLater(1, function () {var formEls = tsc.dom.getAll(".xmseFormgeneratorView");for (var i = 0; i < formEls.length; i++) {if (tsc.getGet('success') && dg('#' + tsc.getGet('success'))) {var offsetY = xms.getScrollOffsetY();if (dg('#' + tsc.getGet('success')).getAttribute('data-scroll-offset-y')) {offsetY = dg('#' + tsc.getGet('success')).getAttribute('data-scroll-offset-y');}tsc.window.scrollToNode('#' + tsc.getGet('success'), 0, (offsetY * 1));}var form = dg("form.xmsForm", formEls[i]);if (!form || !form.formInstance) continue;tsc.dom.getAll("a.xmsFormFieldLightboxCheckbox", form).forEach(function (lightboxCheckboxLink) {tsc.event.onClick(lightboxCheckboxLink, function (lightboxCheckbox, ev) {if (ev) tsc.event.preventDefault(ev);tsc.modal.lightbox.render('<div class="xmsePagetypeParagraphs"><div class="xmsParagraph"><div class="container"><div class="rteContent">' + JSON.parse(lightboxCheckbox.getAttribute('data-lightbox-content')) + '</div></div></div></div>');tsc.doLater(1, xms.decodeMails);}, [lightboxCheckboxLink], this);});tsc.event.onCustom(form.formInstance, "save", function (responseText) {if (responseText === "ok") {let url = new URL(location.href);
287url.searchParams.append('success', dg('input[name="doFormSave"]', this).value);location.href = url;} else {this.innerHTML = responseText;}}, [], form);}});});tsc.event.onReady(function () {tsc.doLater(1, function () {var els = tsc.dom.getAll(".xmsFeForm");for (var i = 0; i < els.length; i++) {var form = dg("form.xmsForm", els[i]);if (!form || !form.formInstance || !dg("a.xmsFormFieldDsgvoLink", form)) continue;var dsgvoLinks = tsc.dom.getAll("a.xmsFormFieldDsgvoLink", form);for (var l = 0; l < dsgvoLinks.length; l++) {if (dsgvoLinks[l]) {if (dsgvoLinks[l].privacypolicyInited) continue;dsgvoLinks[l].privacypolicyInited = true;tsc.event.onClick(dsgvoLinks[l], function (dsgvoLink, ev) {if (ev) tsc.event.preventDefault(ev);var renderRequestUrl = '/adminajax/web/privacypolicy/renderLightboxContent/';if (dsgvoLink.getAttribute('data-render-request-url')) {renderRequestUrl = dsgvoLink.getAttribute('data-render-request-url');}tsc.ajax.request('/' + xms.currentLanguage + renderRequestUrl, null, function (responseText) {const lightbox = tsc.modal.lightbox.render(responseText, [], {position: 'center',close: 'header'
288});lightbox.header.append(Object.assign(document.createElement('span'), {innerHTML: `<strong>${xms.trl('Information on data privacy', 'Informationen zum Datenschutz')}</strong>`
289}));lightbox.addEventListener('beforeShow', (e) => {e.detail.close.focus();xms.decodeMails();if (xms.cookieconsent) xms.cookieconsent.instance.initEvents();});});}, [dsgvoLinks[l]], this);}}}});});tsc.event.onReady(() => {if (!xms.iconsInstance) {xms.iconsInstance = new xms.icons();}});xms.icons = class {constructor() {this.needsRun = false;this.addSvgs();this.observer = new MutationObserver(this.observerCb.bind(this));this.observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['class'] });}addSvgs() {if (this.needsRun) return;this.needsRun = true;requestAnimationFrame(this._addSvgsInternal.bind(this));}_addSvgsInternal() {this.needsRun = false;Object.entries(xms.icons.list).forEach((icon) => {tsc.dom.getAll(icon[0]).forEach((el) => {if (!dg('svg', el)) {el.insertAdjacentHTML('beforeend', icon[1]);}});});}observerCb(mutations) {mutations.forEach(mutation => {if (mutation.type === 'attributes' && mutation.attributeName === 'class' && mutation.target.tagName.toLowerCase() === 'i') {tsc.dom.removeNode('svg', mutation.target);this.addSvgs();} else if (mutation.type === 'childList') {if (mutation.addedNodes.length <= 0) return;mutation.addedNodes.forEach(addedNode => {if (addedNode.tagName && addedNode.tagName.toLowerCase() === 'svg') return;this.addSvgs();});}});}};xms.icons.list = {".fa-solid.fa-copy":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M272 0H396.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128H192v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z'\/><\/svg>",".fa-solid.fa-xmark":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 384 512'><path d='M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z'\/><\/svg>",".fa-solid.fa-file-arrow-up":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 384 512'><path d='M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z'\/><\/svg>",".fa-solid.fa-crop-simple":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z'\/><\/svg>",".fa-solid.fa-image":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z'\/><\/svg>",".fa-solid.fa-magnifying-glass":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z'\/><\/svg>",".fa-solid.fa-arrows-up-down-left-right":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z'\/><\/svg>",".fa-solid.fa-cubes":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z'\/><\/svg>",".fa-solid.fa-stamp":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z'\/><\/svg>",".fa-solid.fa-up-right-from-square":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z'\/><\/svg>",".fa-solid.fa-floppy-disk":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'>
289<path d='M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z'\/><\/svg>",".fa-solid.fa-globe":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z'\/><\/svg>",".fa-solid.fa-check":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z'\/><\/svg>",".fa-solid.fa-thumbs-up":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z'\/><\/svg>",".fa-solid.fa-arrows-up-down":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 320 512'><path d='M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z'\/><\/svg>",".fa-solid.fa-triangle-exclamation":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z'\/><\/svg>",".fa-solid.fa-arrow-up-1-9":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M450.7 38c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V108.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z'\/><\/svg>",".fa-solid.fa-bomb":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 3
28904S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z'\/><\/svg>",".fa-solid.fa-circle-info":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z'\/><\/svg>",".fa-solid.fa-pen":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z'\/><\/svg>",".fa-solid.fa-database":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z'\/><\/svg>",".fa-solid.fa-arrow-right-arrow-left":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z'\/><\/svg>",".fa-solid.fa-wrench":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z'\/><\/svg>",".fa-solid.fa-chevron-up":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z'\/><\/svg>",".fa-solid.fa-angle-left":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 320 512'><path d='M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z'\/><\/svg>",".fa-solid.fa-lock":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z'\/><\/svg>",".fa-solid.fa-arrow-right-to-bracket":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z'\/><\/svg>",".fa-solid.fa-link-slash":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 640 512'><path d='M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z'\/><\/svg>",".fa-solid.fa-folder":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'>
289<path d='M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z'\/><\/svg>",".fa-solid.fa-backward":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z'\/><\/svg>",".fa-solid.fa-download":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-6
2895.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z'\/><\/svg>",".fa-solid.fa-angles-right":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z'\/><\/svg>",".fa-solid.fa-rotate-left":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z'\/><\/svg>",".fa-solid.fa-circle-half-stroke":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z'\/><\/svg>",".fa-solid.fa-arrow-down-wide-short":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z'\/><\/svg>",".fa-solid.fa-circle-exclamation":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z'\/><\/svg>",".fa-solid.fa-square-chevron-right":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM313 273L209 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L313 239c9.4 9.4 9.4 24.6 0 33.9z'\/><\/svg>",".fa-solid.fa-eye-slash":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 640 512'><path d='M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z'\/><\/svg>",".fa-solid.fa-table-columns":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z'\/><\/svg>",".fa-solid.fa-square-chevron-down":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM207 345L103 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L241 345c-9.4 9.4-24.6 9.4-33.9 0z'\/><\/svg>",".fa-solid.fa-paste":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H320 272zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z'\/><\/svg>",".fa-solid.fa-hat-wizard":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2
289-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z'\/><\/svg>",".fa-solid.fa-arrow-rotate-right":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z'\/><\/svg>",".fa-solid.fa-images":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z'\/><\/svg>",".fa-solid.fa-chevrons-left":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 278.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192zm384-192l-192 192c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 470.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z'\/><\/svg>",".fa-solid.fa-arrow-up-a-z":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z'\/><\/svg>",".fa-solid.fa-question":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 320 512'><path d='M80 160c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64v3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74V320c0 17.7 14.3 32 32 32s32-14.3 32-32v-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7V160c0-
28970.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z'\/><\/svg>",".fa-solid.fa-server":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z'\/><\/svg>",".fa-solid.fa-at":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z'\/><\/svg>",".fa-solid.fa-cube":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z'\/><\/svg>",".fa-solid.fa-user-secret":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z'\/><\/svg>",".fa-solid.fa-gavel":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z'\/><\/svg>",".fa-solid.fa-arrow-down-a-z":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z'\/><\/svg>",".fa-solid.fa-play":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 384 512'><path d='M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z'\/><\/svg>",".fa-solid.fa-hard-drive":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z'\/><\/svg>",".fa-solid.fa-file":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 384 512'><path d='M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z'\/><\/svg>",".fa-solid.fa-ban":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z'\/><\/svg>",".fa-solid.fa-paragraph":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z'\/><\/svg>",".fa-solid.fa-location-pin":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 384 512'><path d='M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z'\/><\/svg>",".fa-solid.fa-file-video":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 384 512'><path d='M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 
2890-4.8-.7-6.8-2.1z'\/><\/svg>",".fa-solid.fa-folder-tree":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z'\/><\/svg>",".fa-solid.fa-link":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 640 512'><path d='M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z'\/><\/svg>",".fa-solid.fa-list":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z'\/><\/svg>",".fa-solid.fa-arrow-down-1-9":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z'\/><\/svg>",".fa-solid.fa-diamond-turn-right":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z'\/><\/svg>",".fa-solid.fa-folder-open":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z'\/><\/svg>",".fa-solid.fa-chevron-right":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 320 512'><path d='M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z'\/><\/svg>",".fa-solid.fa-paper-plane":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z'\/><\/svg>",".fa-solid.fa-circle-notch":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z'\/><\/svg>",".fa-solid.fa-user":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'>
289<path d='M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z'\/><\/svg>",".fa-solid.fa-compress":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z'\/><\/svg>",".fa-solid.fa-power-off":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z'\/><\/svg>",".fa-solid.fa-chevron-down":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z'\/><\/svg>",".fa-solid.fa-square-check":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z'\/><\/svg>",".fa-solid.fa-angle-right":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 320 512'><path d='M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z'\/><\/svg>",".fa-solid.fa-anchor":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z'\/><\/svg>",".fa-solid.fa-browser":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm384 0c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24s10.7 24 24 24H424c13.3 0 24-10.7 24-24z'\/><\/svg>",".fa-solid.fa-message-lines":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm152 80c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H152z'\/><\/svg>",".fa-solid.fa-robot":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 640 512'><path d='M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z'\/><\/svg>",".fa-solid.fa-chart-line":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z'\/><\/svg>",".fa-solid.fa-table-cells-large":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V4
28916c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z'\/><\/svg>",".fa-solid.fa-file-excel":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 384 512'><path d='M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z'\/><\/svg>",".fa-solid.fa-object-ungroup":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 640 512'><path d='M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z'\/><\/svg>",".fa-solid.fa-clone":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M288 448H64V224h64V160H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64zm-64-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z'\/><\/svg>",".fa-solid.fa-code":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 640 512'><path d='M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z'\/><\/svg>",".fa-solid.fa-expand":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z'\/><\/svg>",".fa-solid.fa-pencil":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s1
2895.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z'\/><\/svg>",".fa-solid.fa-trash":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z'\/><\/svg>",".fa-solid.fa-users":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 640 512'><path d='M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z'\/><\/svg>",".fa-solid.fa-scissors":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z'\/><\/svg>",".fa-solid.fa-envelope-open":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z'\/><\/svg>",".fa-solid.fa-cart-shopping":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z'\/><\/svg>",".fa-solid.fa-angles-left":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z'\/><\/svg>",".fa-solid.fa-object-group":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z'\/><\/svg>",".fa-solid.fa-plus":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z'\/><\/svg>",".fa-solid.fa-house":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z'\/><\/svg>",".fa-solid.fa-arrow-up-right-from-square":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z'\/><\/svg>",".fa-solid.fa-eye":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z'\/><\/svg>",".fa-regular.fa-copy":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M448 384H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64H396.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V320c0 35.3-28.7 64-64 64zM64 128h96v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H256c8.8 0 16-7.2 16-16V416h48v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64z'\/><\/svg>",".fa-regular.fa-clock":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'>
289<path d='M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z'\/><\/svg>",".fa-regular.fa-backward":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M288 94c0-16.6-13.5-30-30-30c-6.3 0-12.5 2-17.6 5.7L9.9 236.6C3.7 241.1 0 248.3 0 256s3.7 14.9 9.9 19.4L240.3 442.3c5.1 3.7 11.3 5.7 17.6 5.7c16.6 0 30-13.4 30-30V318.9L464.7 442.6c5.1 3.5 11.1 5.4 17.3 5.4c16.6 0 30.1-13.5 30.1-30.1V94.1C512 77.5 498.5 64 481.9 64c-6.2 0-12.2 1.9-17.3 5.4L288 193.1V94zm0 157.7L464 128.5v255L288 260.3v-8.6zM64.9 256L240 129.2V382.8L64.9 256z'\/><\/svg>",".fa-regular.fa-rectangle-wide":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 640 512'><path d='M576 112c8.8 0 16 7.2 16 16V384c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V128c0-8.8 7.2-16 16-16H576zM64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64z'\/><\/svg>",".fa-regular.fa-rectangle-vertical":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 384 512'>
289<path d='M336 448c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l256 0c8.8 0 16 7.2 16 16l0 384zM384 64c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384z'\/><\/svg>",".fa-regular.fa-scissors":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M506.4 439.4c-8.5 10.2-23.7 11.5-33.8 3L312.4 308.2l37.4-31.3L503.4 405.6c10.2 8.5 11.5 23.7 3 33.8zM112 48a64 64 0 1 0 0 128 64 64 0 1 0 0-128zm0-48c61.9 0 112 50.1 112 112c0 17.9-4.2 34.8-11.6 49.8l75.1 62.9L472.6 69.6c10.2-8.5 25.3-7.2 33.8 3s7.2 25.3-3 33.8l-291 243.8c7.4 15 11.6 31.9 11.6 49.8c0 61.9-50.1 112-112 112S0 461.9 0 400s50.1-112 112-112c26.6 0 51.1 9.3 70.3 24.8L250.1 256l-67.8-56.8C163.1 214.7 138.6 224 112 224C50.1 224 0 173.9 0 112S50.1 0 112 0zm64 400A64 64 0 1 0 48 400a64 64 0 1 0 128 0z'\/><\/svg>",".fa-regular.fa-envelope-open":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5v13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1V200.5c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2V456c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V276.2zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5V456c0 30.9 25.1 56 56 56H456c30.9 0 56-25.1 56-56V200.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z'\/><\/svg>",".fa-brands.fa-windows":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z'\/><\/svg>",".fa-brands.fa-apple":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 384 512'><path d='M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z'\/><\/svg>",".fa-brands.fa-youtube":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 576 512'><path d='M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z'\/><\/svg>",".fa-sharp.fa-solid.fa-circle-info":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 512 512'><path d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216 192V224h24 48 24v24 88h8 24v48H296 216 192V336h24zm72-144H224V128h64v64z'\/><\/svg>",".fa-sharp.fa-solid.fa-info":"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 192 512'><path d='M128 32v80H48V32h80zM0 192H32 96h32v32V448h32 32v64H160 128 64 32 0V448H32 64V256H32 0V192z'\/><\/svg>"};xms.icons.list['.fa-solid.fa-file-audio'] = "<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 384 512'><path d='M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z'\/><\/svg>";

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.