"use strict";
/*******************************************************************************
 * Gram Framework Main - Localization Component - default German translations
 * @copyright ABLE Management Services
 * @package Gram
 * @since v2.0.0
 ******************************************************************************/!function(e){e.defaultTranslationsDE={http:{status:{118:{status:"118 Zeitüberschreitung der Verbindung",message:"Der Server hat nicht in der erwarteten Zeit geantwortet."},204:{status:"204 Kein Inhalt",message:"Die Anfrage wurde erfolgreich durchgeführt, die Antwort enhält jedoch keine Daten."},400:{status:"400 Ungültige Anforderung",message:"Die Anfrage-Nachricht war fehlerhaft aufgebaut."},401:{status:"401 Nicht autorisiert",message:"Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden."},403:{status:"403 Verboten",message:"Sie haben nicht die erforderliche Berechtigung diese Seite aufzurufen, oder es wurden nicht alle erwarteten Header mitgesendet."},404:{status:"404 Nicht gefunden",message:"Die angeforderte Ressource wurde nicht gefunden."},405:{status:"405 Methode nicht erlaubt",message:"Die Anfrage darf nur mit bestimmten, anderen, HTTP-Methoden gestellt werden."},499:{status:"499 Blockiert durch den Browser",message:"Die Anfrage wurde vom Browser blockiert."},500:{status:"500 interner Serverfehler",message:"Es ist ein unerwarteter Fehler aufgetreten."},503:{status:"503 Dienst nicht verfügbar",message:"Der Server steht temporär nicht zur Verfügung, zum Beispiel wegen Überlastung oder Wartungsarbeiten."}}}}}(Gram||(Gram={})),function(e){e.defaultTranslationsEN={http:{status:{118:{status:"118 Connection timed out",message:"The server did not respond in the expected time."},204:{status:"204 No content",message:"The request was successful, but the response does not contain any data."},400:{status:"400 Bad Request",message:"The request message was incorrectly structured."},401:{status:"401 Not authorised",message:"The request cannot be made without valid authentication."},403:{status:"403 Forbidden",message:"You do not have the required authorization to view this page, or not all of the expected headers were sent."},404:{status:"404 Not found",message:"The requested resource was not found."},405:{status:"405 Method not allowed",message:"The request may only be made using specific, different, HTTP methods."},499:{status:"499 Blocked by the browser",message:"The request was blocked by the browser."},500:{status:"500 Internal server error",message:"An unexpected error has occurred."},503:{status:"503 Service not available",message:"The server is temporarily unavailable, for example due to overload or maintenance work."}}}}}(Gram||(Gram={})),function(e){e.defaultTranslationsFR={http:{status:{118:{status:"118 Délai de connexion dépassé",message:"Le serveur n'a pas répondu dans le délai attendu."},204:{status:"204 Pas de contenu",message:"La requête a réussi, mais la réponse ne contient aucune donnée."},400:{status:"400 Requête incorrecte",message:"Le message de la requête était mal structuré."},401:{status:"401 Non autorisé",message:"La requête ne peut pas être effectuée sans authentification valide."},403:{status:"403 Interdit",message:"Vous n'avez pas l'autorisation requise pour voir cette page, ou tous les en-têtes attendus n'ont pas été envoyés."},404:{status:"404 Non trouvé",message:"La ressource demandée n'a pas été trouvée."},405:{status:"405 Méthode non autorisée",message:"La requête ne peut être effectuée qu'en utilisant des méthodes HTTP spécifiques et différentes."},499:{status:"499 Bloqué par le navigateur",message:"La requête a été bloquée par le navigateur."},500:{status:"500 Erreur interne du serveur",message:"Une erreur inattendue s'est produite."},503:{status:"503 Service non disponible",message:"Le serveur est temporairement indisponible, par exemple en raison d'une surcharge ou de travaux de maintenance."}}}}}(Gram||(Gram={})),function(e){e.defaultTranslationsES={http:{status:{118:{status:"118 Conexión agotada por tiempo de espera",message:"El servidor no respondió en el tiempo esperado."},204:{status:"204 Sin contenido",message:"La solicitud fue exitosa, pero la respuesta no contiene ningún dato."},400:{status:"400 Solicitud incorrecta ",message:"El mensaje de solicitud estaba estructurado incorrectamente."},401:{status:"401 No autorizado",message:"La solicitud no puede realizarse sin autenticación válida."},403:{status:"403 Prohibido",message:"No tienes la autorización requerida para ver esta página, o no se enviaron todos los encabezados esperados."},404:{status:"404 No encontrado",message:"El recurso solicitado no fue encontrado."},405:{status:"405 Método no permitido",message:"La solicitud solo puede hacerse utilizando métodos HTTP específicos y diferentes."},499:{status:"499 Bloqueado por el navegador ",message:"La solicitud fue bloqueada por el navegador."},500:{status:"500 Error interno del servidor",message:"Ha ocurrido un error inesperado."},503:{status:"503 Servicio no disponible",message:"El servidor está temporalmente no disponible, por ejemplo, debido a sobrecarga o trabajos de mantenimiento."}}}}}(Gram||(Gram={}));
/*******************************************************************************
* Gram Framework Main - Element
* @copyright 2019 ABLE Management Services
* @package Gram
* @since v2.0.0
*******************************************************************************/
let ableLogLevel="full";!function(e){let t="Production";document.location.host.indexOf("live.able-plattform.de")>0&&(t="Preview"),document.location.host.indexOf("test.able-plattform.de")>0&&(t="Testing"),document.location.host.indexOf(".able.dev")>0&&(t="Development"),e.applicationContext=t;let i=function(e){"object"==typeof console&&"Production"!=t&&e&&"function"==typeof console.group&&"off"!==ableLogLevel&&console.group(e)};e.debugStart=i;let n=function(...e){"object"==typeof console&&"Production"!=t&&"function"==typeof console.debug&&"off"!==ableLogLevel&&("full"==ableLogLevel&&console.debug.apply(console.debug,e),"medium"==ableLogLevel&&console.debug(e.shift()))};e.debug=n,e.debugEnd=function(e){"object"==typeof console&&"Production"!=t&&"off"!==ableLogLevel&&(n("stopping debugging for "+e),console.groupEnd())},i("Application"),n("creating Gram"),n("setting window application context")}(Gram||(Gram={})),Gram.debugStart("HTMLElement"),Gram.debug("extending HTMLElement"),void 0===HTMLElement.prototype.addClass&&(Gram.debug("declaring addClass function"),HTMLElement.prototype.addClass=function(...e){for(let t=0,i=e.length;t<i;t++)this.hasClass(e[t])||this.classList.add(e[t])}),void 0===HTMLElement.prototype.hasClass&&(Gram.debug("declaring hasClass function"),HTMLElement.prototype.hasClass=function(e){return this.classList.contains(e)}),void 0===HTMLElement.prototype.removeClass&&(Gram.debug("declaring removeClass function"),HTMLElement.prototype.removeClass=function(...e){for(let t=0,i=e.length;t<i;t++)this.hasClass(e[t])&&this.classList.remove(e[t])}),void 0===HTMLElement.prototype.parentUntil&&(Gram.debug("declaring parentUntil function"),HTMLElement.prototype.parentUntil=function(e){let t=null,i=this;for(;!t;){if(i=i.parentNode,"BODY"==i.nodeName){t=document.body;break}let n;"function"==typeof Element.prototype.matches?n=i.matches(e):"function"==typeof Element.prototype.webkitMatchesSelector&&(n=i.webkitMatchesSelector(e)),n&&(t=i)}return t}),void 0===HTMLElement.prototype.remove&&(Gram.debug("declaring remove function"),HTMLElement.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),void 0===HTMLElement.prototype.childrenOfType&&(Gram.debug("declaring childrenOfType function"),HTMLElement.prototype.childrenOfType=function(e){if(void 0===document.querySelectorAll)return void Gram.exception("querySelectorAll is not a function");let t=this.querySelectorAll(e);if(0==t.length){t=document.createDocumentFragment().childNodes}return t}),void 0===HTMLElement.prototype.childOfType&&(Gram.debug("declaring childOfType function"),HTMLElement.prototype.childOfType=function(e){if(void 0===document.querySelectorAll)return void Gram.exception("querySelectorAll is not a function");return this.querySelectorAll(e)[0]||null}),Element.prototype.closest||(Element.prototype.closest=function(e){var t=this;do{if(Element.prototype.matches.call(t,e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}),Gram.debugEnd("HTMLElement"),function(e){let t;!function(e){e.sealed=function(e){Object.seal(e),Object.seal(e.prototype)},e.freezed=function(e){Object.freeze(e),Object.freeze(e.prototype)}}(t=e.Decorator||(e.Decorator={}))}(Gram||(Gram={})),function(e){let t;!function(e){let t,i,n,s,a,o;!function(e){e.JSON="application/json",e.XML="application/xml",e.HTML="text/html"}(t=e.AcceptType||(e.AcceptType={})),function(e){e.URLENCODED="application/x-www-form-urlencoded",e.FORMDATA="application/form-data"}(i=e.ContentType||(e.ContentType={})),function(e){e.ALL="ALL",e.ESSENTIALS="ESSENTIALS",e.SALESFORCE_SALES_CLOUD="SALESFORCE_SALES_CLOUD",e.ABLE_CDN="ABLE_CDN",e.ABLE_API="ABLE_API",e.GOOGLE_FONTS="GOOGLE_FONTS",e.FUNCTIONAL="FUNCTIONAL",e.MAPBOX="MAPBOX",e.PINGDOM="PINGDOM",e.YOUTUBE="YOUTUBE",e.PODIGEE="PODIGEE",e.GOOGLE_ANALYTICS="GOOGLE_ANALYTICS",e.GOOGLE_SIGNALS="GOOGLE_SIGNALS",e.MARKETING="MARKETING",e.GOOGLE_ADWORDS="GOOGLE_ADWORDS",e.SALESFORCE_MARKETING_CLOUD_ACCOUNT_ENGAGEMENT="SALESFORCE_MARKETING_CLOUD_ACCOUNT_ENGAGEMENT"}(n=e.CookieItemType||(e.CookieItemType={})),function(e){e.DE="de",e.EN="en",e.FR="fr",e.ES="es"}(s=e.LanguageType||(e.LanguageType={})),function(e){e.INFO="info",e.SUCCESS="success",e.WARNING="warning",e.ERROR="error"}(a=e.NotifyMessageType||(e.NotifyMessageType={})),function(e){e.JOBSEARCH="jobsuche",e.NEWSLETTER="newsletter",e.JOBAGENT="jobagent",e.JOBOFFER="jobangebot",e.WEBSITESEARCH="websitesearch"}(o=e.TrackingType||(e.TrackingType={}))}(t=e.Type||(e.Type={}))}(Gram||(Gram={})),function(e){let t;!function(t){e.debug("declaring HelperUtility"),t.HelperUtility={ucfirst:function(t){return e.Utility.StringUtility.ucFirst(t)},classInstances:{},makeInstance:function(t,...i){e.debug("function HelperUtility.makeInstance called",t,i),e.Utility.HelperUtility.classInstances.hasOwnProperty(t)||(e.Utility.HelperUtility.classInstances[t]=null);try{if("string"==typeof t&&!e.Utility.HelperUtility.classInstances[t]){let i=t.split("."),n=i.pop(),s=i.reduce(((e,t)=>e[t]),window);e.Utility.HelperUtility.classInstances[t]=s[n]}return i.unshift(e.Utility.HelperUtility.classInstances[t]),new(Function.prototype.bind.apply(e.Utility.HelperUtility.classInstances[t],i))}catch(i){e.log("Class "+t+" not found","error",i)}},namespaceCallAvailable:function(e){let t=e.split("."),i=t.pop();return void 0!==t.reduce(((e,t)=>e[t]),window)[i]},stringToCallable:function(e){let t=e.split("."),i=t.pop();return t.reduce(((e,t)=>e[t]),window)[i]},objectOrArray:function(t){if(e.debug("function HelperUtility.objectOrArray called",arguments),"object"==typeof t){if(t instanceof Object){let e="object";return t instanceof Array&&(e="array"),e}return!1}return!1},preventDefault:function(t){e.debug("function HelperUtility.preventDefault called",arguments),t.preventDefault?t.preventDefault():t.returnValue=!1},debounce:function(t,i,n,s=null){let a;return e.debug("function HelperUtility.debounce called",arguments),function(...e){a&&clearTimeout(a),a=setTimeout((()=>{t(...e),a=null}),i)}},isMobile:function(){return!(!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&!navigator.userAgent.match(/Mobi/))},getEventTarget:function(e){return e.target||e.srcElement},round:function(e,t=2){var i=Math.pow(10,t);return Math.round(e*i)/i},getTopLevelDomain:()=>{let e=new RegExp("[^./]+.[^./]+$").exec(location.hostname);return e?e[0]:location.hostname},onAppendMutation:(e,t)=>{new MutationObserver((e=>{e.forEach((e=>{e.addedNodes.length&&t()}))})).observe(e,{childList:!0})},bem:(e,t,i)=>{let n=e;return t&&""!=t&&(n+="__"+t),i&&i.length>0&&(i=i.map((e=>n+"--"+e)),n+=" "+i.join(" ")),n}}}(t=e.Utility||(e.Utility={}))}(Gram||(Gram={})),function(e){let t;!function(t){e.debug("declaring ObjectUtility"),t.ObjectUtility={copy:function(t){e.debug("function ObjectUtility.copy called",t);var i={};for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);return i},extend:function(t,i,n=!1){for(var s in e.debug("function ObjectUtility.extend called",t,i,n),t=e.Utility.ObjectUtility.copy(t),i)i.hasOwnProperty(s)&&("object"!=typeof i[s]||i[s]instanceof Array?(!n||n&&!t.hasOwnProperty(s))&&(t[s]=i[s]):(t.hasOwnProperty(s)||(t[s]={}),t[s]=e.Utility.ObjectUtility.extend(t[s],i[s],n)));return t},walk:function(t,i){if(e.debug("function ObjectUtility.walk called",t,i),"object"!=e.Utility.HelperUtility.objectOrArray(t))return void e.exception("ObjectUtility.walk: Given variable is not an object");if("function"!=typeof i)return void e.exception("ObjectUtility.walk: No callback function defined");let n,s=0;for(var a in t)if(t.hasOwnProperty(a)){if(n=i(t[a],a,s),void 0!==n){if(!1===n)break;t[a]=n}s++}}}}(t=e.Utility||(e.Utility={}))}(Gram||(Gram={})),function(e){let t;!function(t){e.debug("declaring StringUtility"),t.StringUtility={hash:function(e){let t="h";if(0!==e.length)for(let i=0,n=e.length;i<n;i++)t+=e.charCodeAt(i).toString(16);return t},ucFirst:function(t){return e.debug("function StringUtility.ucFirst called",t),t.charAt(0).toUpperCase()+t.slice(1)},ucWords:function(t,i=" \t\r\n\f\v"){e.debug("function StringUtility.ucWords called",t);let n=new RegExp("["+i+"]([a-z])","g");return e.Utility.StringUtility.ucFirst(t.replace(n,(e=>e[1].toUpperCase())))},toNiceUrl:function(e,t="-"){return e.toLowerCase().replace(/[^a-z0-9_|\/ -]/,"").replace(/[\/_|+ -]+/,"-")}}}(t=e.Utility||(e.Utility={}))}(Gram||(Gram={})),function(e){let t;!function(t){e.debug("declaring ArrayUtility"),t.ArrayUtility={sum:function(e){return e.reduce(((e,t)=>e+t))}}}(t=e.Utility||(e.Utility={}))}(Gram||(Gram={})),function(e){let t;!function(e){e.TranslationService=class{constructor(){this.translationMap=new Map}addTranslation(e,t){this.translationMap.set(e,t)}addTranslations(e){for(const t of Object.keys(e))this.translationMap.set(t.toString(),e[t].toString())}clearTranslations(){this.translationMap.clear()}getValue(e,t){if(!this.translationMap.has(e))return"";let i=this.translationMap.get(e);return t&&t.forEach(((e,t)=>{i=i.replace("{{"+t+"}}",e.toString())})),i}}}(t=e.Service||(e.Service={}))}(Gram||(Gram={})),function(e){let t;!function(t){let i;!function(t){e.debug("declaring Messaging EventModule");t.MessagingEventModule=class{constructor(){this.customListeners={}}register(t,i,n,s=!1,a){e.debug("function MessagingModule.Event.register called",arguments);let o={wait:125,imediate:!1};void 0!==o&&(o=e.Utility.ObjectUtility.extend(o,a)),"load"==i&&"[object Window]"==t.toString()&&e.documentComplete||(!1===s&&(this.customListeners[n]=e=>{this.publish(e,n)}),!0===s&&(this.customListeners[n]=e.Utility.HelperUtility.debounce((e=>{this.publish(e,n)}),o.wait,o.imediate,this)),t.addEventListener(i,this.customListeners[n]))}unregister(t,i,n=null){e.debug("function MessagingModule.Event.unregister called",arguments),t.removeEventListener(i,this.customListeners[n])}publish(t,i){e.debug("function MessagingModule.Event.publish called",arguments),e.Messaging.publish(i,t)}}}(i=t.Modules||(t.Modules={}))}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={})),function(e){let t;!function(t){let i;!function(t){e.debug("declaring Messaging SwipeModule");t.MessagingSwipeModule=class{constructor(){this.customListeners={},this.touchStartPosX=null,this.touchStartPosY=null,this.touchMovePosY=null,this.touchMovePosX=null}register(t,i){e.debug("function MessagingModule.Swipe.register called",arguments),this.customListeners[i+"Start"]=e=>{this.touchStart(e)},this.customListeners[i+"Move"]=e=>{this.touchMove(e)},this.customListeners[i+"End"]=e=>{this.publish(e,i)},t.addEventListener("touchstart",this.customListeners[i+"Start"],!1),t.addEventListener("touchmove",this.customListeners[i+"Move"],!1),t.addEventListener("touchend",this.customListeners[i+"End"],!1)}unregister(t,i=null){e.debug("function MessagingModule.Swipe.unregister called",arguments),t.removeEventListener("touchstart",this.customListeners[i+"Start"]),t.removeEventListener("touchmove",this.customListeners[i+"Move"]),t.removeEventListener("touchend",this.customListeners[i+"End"])}publish(t,i=null){let n;e.debug("function MessagingModule.Swipe.publish called",arguments);let s=this.touchStartPosX-this.touchMovePosX,a=this.touchStartPosY-this.touchMovePosY;Math.abs(s)>Math.abs(a)&&(n=s>0?"left":"right"),Math.abs(a)>Math.abs(s)&&(n=a>0?"up":"down"),this.touchStartPosX=null,this.touchStartPosY=null,(Math.abs(s)>30&&Math.abs(a)<30||Math.abs(s)<30&&Math.abs(a)>30)&&e.Messaging.publish(i,{direction:n,event:t})}touchStart(t){e.debug("function MessagingModule.Swipe.touchStart called",arguments),this.touchStartPosX=t.touches[0].clientX,this.touchStartPosY=t.touches[0].clientY}touchMove(e){this.touchMovePosX=e.touches[0].clientX,this.touchMovePosY=e.touches[0].clientY}}}(i=t.Modules||(t.Modules={}))}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={})),function(e){let t;!function(t){e.debug("declaring MessagingController");t.MessagingController=class{constructor(){this.messages={},this.delayedMessages={},this.Event=new e.Controller.Modules.MessagingEventModule,this.Swipe=new e.Controller.Modules.MessagingSwipeModule}subscribe(t,i,n=!1,s=!1){if(e.debug("function MessagingController.subscribe called",arguments),"EventLoad"==t&&e.documentComplete)return void i(e.documentComplete);let a;return this.messages.hasOwnProperty(t)||(this.messages[t]=[]),1!=s||this.delayedMessages.hasOwnProperty(t)||(this.delayedMessages[t]=[]),a=1==s?this.delayedMessages[t].push({callback:i,remove:n})-1:this.messages[t].push({callback:i,remove:n})-1,n?a:{remove:function(){1==s?delete this.delayedMessages[t][a]:delete this.messages[t][a]}}}clear(t){e.debug("function MessagingController.clear called",arguments),this.messages.hasOwnProperty(t)&&(this.messages[t]=[])}publish(t,i=null){e.debug("function MessagingController.publish called",arguments),this.messages.hasOwnProperty(t)&&(this.messages[t].forEach(((e,n)=>{let s=e.callback(i||{});(e.remove||!1===s)&&delete this.messages[t][n]})),this.delayedMessages.hasOwnProperty(t)&&(this.delayedMessages[t].forEach((e=>{this.messages[t].push(e)})),delete this.delayedMessages[t]))}getSubscriptions(e){if(!this.messages.hasOwnProperty(e))return[];return this.messages[e]}hasSubscription(e){return!!this.messages[e]}}}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={})),function(e){let t=null;e.debug("adding window load event listener"),window.addEventListener("load",(function(i){e.debug("setting document complete variable"),e.debugEnd("Application"),e.Messaging.publish("GramReady"),t=i})),e.documentComplete=t,e.Messaging=new e.Controller.MessagingController,e.debug("created Controller\\MessagingController"),e.Translation=new e.Service.TranslationService,e.debug("created Service\\TranslationService"),e.debug("declaring log function"),e.log=function(t,i,n){e.debug("function log called",t,i),"object"==typeof console&&("info"==i&&"function"==typeof console.info?console.info(t):"warning"==i&&"function"==typeof console.warn?console.warn(t):"error"==i&&"function"==typeof console.error?(console.error(t),"Development"==e.applicationContext&&console.error(n)):console.log(t))},e.debug("declaring ready function"),e.ready=function(i){e.debug("function ready called",i),t&&"function"==typeof i?(e.debug("GramReady: document already loaded, firing callback"),i()):void 0!==document.addEventListener?"interactive"!==document.readyState&&"complete"!==document.readyState?(e.debug("GramReady: add callback to DOMContentLoaded"),document.addEventListener("DOMContentLoaded",(function(){"function"==typeof i&&(e.debug("GramReady: DOMContentLoaded, firing callback"),i())}),!1)):"function"==typeof i&&(e.debug("GramReady: document interactive or complete, firing callback"),i()):"function"==typeof i&&(e.debug("GramReady: eventlistener not available, firing callback"),i())},e.debug("declaring exception function"),e.exception=function(t){e.debug("function exception called",t),e.log(t,"error")}}(Gram||(Gram={})),function(e){let t;!function(e){e.FifoQueue=class{constructor(){this.store=[]}push(e){this.store.push(e)}pop(){return this.store.shift()}isEmpty(){return 0===this.store.length}}}(t=e.Queue||(e.Queue={}))}(Gram||(Gram={})),
/*******************************************************************************
 * Gram Framework Main - Config Component
 * @copyright ABLE Management Services
 * @package Gram
 * @since v2.0.0
 ******************************************************************************/
Gram.debug("declaring config class");class GramConfig{constructor(){this.config={}}add(e,t){Gram.debug("function Gram.Config.add called",e,t),this.config.hasOwnProperty(e)||(this.config[e]={}),this.config[e]=Gram.Utility.ObjectUtility.extend(this.config[e],t,!0)}set(e,t){Gram.debug("function Gram.Config.set called",e,t),this.config.hasOwnProperty(e)||(this.config[e]={}),this.config[e]=Gram.Utility.ObjectUtility.extend(this.config[e],t)}has(e,...t){Gram.debug("function Gram.Config.has called",e,t);let i=!1;if(t.length>0&&this.config.hasOwnProperty(e)){let n=this.config[e];for(let e=0,i=t.length;e<i&&(n=n.hasOwnProperty(t[e])?n[t[e]]:null);e++);null!==n&&(i=!0)}else 0==t.length&&this.config.hasOwnProperty(e)&&(i=!0);return i}get(e,...t){if(Gram.debug("function Gram.Config.get called",e,t),!(t.length>0&&this.config.hasOwnProperty(e)))return 1==t.length&&this.config.hasOwnProperty(t[0])?this.config[t[0]]:(Gram.log("Config not found: "+e+"."+t.join("."),"error"),"");{let i=this.config[e];for(let e=0,n=t.length;e<n&&(i=i.hasOwnProperty(t[e])?i[t[e]]:null);e++);if(null!==i)return i;Gram.log("Config not found: "+e+"."+t.join("."),"error")}}getAllConfig(e){return this.config.hasOwnProperty(e)?this.config[e]:{}}debug(){Gram.debug("Config for current Application",this.config)}}!function(e){e.Config=new GramConfig,e.debug("created Gram.Config")}(Gram||(Gram={})),
/*******************************************************************************
 * Gram Framework Main - Localization Component
 * @copyright ABLE Management Services
 * @package Gram
 * @since v2.0.0
 ******************************************************************************/
Gram.debug("declaring localization class");class GramLocalization{constructor(){this.translations={},this.language=""}addSupportedLanguages(e){Gram.debug("function Gram.Localization.addSupportedLanguage called",e),e.forEach((e=>{this.translations.hasOwnProperty(e)?Gram.exception('Language "'+e+'" already defined. You cannot redefine it'):this.translations[e]={}}))}setWebsiteLanguage(e){this.language=e}add(e,t){Gram.debug("function Gram.Localization.add called",e,t),this.translations.hasOwnProperty(e)?this.translations[e]=Gram.Utility.ObjectUtility.extend(this.translations[e],t,!0):Gram.exception('Language "'+e+'" not found, nothing added')}set(e,t){Gram.debug("function Gram.Localization.set called",e,t),this.translations.hasOwnProperty(e)?this.translations[e]=Gram.Utility.ObjectUtility.extend(this.translations[e],t):Gram.exception('Language "'+e+'" not found, nothing added')}has(...e){Gram.debug("function Gram.Localization.has called",e);let t=!1;if(this.translations.hasOwnProperty(this.language))if(0==e.length)Gram.exception("No translations to search for");else if(1==e.length)this.translations[this.language].hasOwnProperty(e[0])&&(t=!0);else{let i=this.translations[this.language][e[0]];for(let t=1,n=e.length;t<n&&(i=i.hasOwnProperty(e[t])?i[e[t]]:null);t++);null!==i&&(t=!0)}else Gram.exception('Language "'+this.language+'" not found');return t}translate(e){Gram.debug("function Gram.Localization.translate called",e);let t=e.split(".");if(this.translations.hasOwnProperty(this.language))if(0==t.length)Gram.exception("No translations to search for");else if(1==t.length){if(this.translations[this.language].hasOwnProperty(t[0]))return this.translations[this.language][t[0]];Gram.log("Translation not found: "+this.language+"."+e,"error")}else if(this.translations[this.language].hasOwnProperty(t[0])){let e=this.translations[this.language][t[0]];for(let i=1,n=t.length;i<n&&(e=e.hasOwnProperty(t[i])?e[t[i]]:null);i++);if(null!==e)return e;Gram.log("Translation not found: "+this.language+"."+t.join("."),"error")}else Gram.log("Translation not found: "+this.language+"."+e,"error");else Gram.exception('Language "'+this.language+'" not found')}debug(){Gram.debug("Translations for current Application",this.translations)}}!function(e){e.Localization=new GramLocalization,e.debug("created Gram.Localization")}(Gram||(Gram={})),function(e){let t;!function(e){e.CookieUtility={read:e=>{let t=("; "+document.cookie).split("; "+e+"=");if(2==t.length)return t.pop().split(";").shift()},has:e=>("; "+document.cookie).indexOf("; "+e+"=")>-1,write:(e,t,i=365,n="")=>{let s="",a=new Date;a.setTime(a.getTime()+24*i*60*60*1e3),s="; expires="+a.toUTCString();let o=""===n?n:"domain="+n;document.cookie=e+"="+(t||"")+s+"; path=/;"+o},remove:(e,t="")=>{const i=new Date;i.setTime(i.getTime()+-864e5);let n=""===t?t:"domain="+t;document.cookie=e+"=; expires="+i.toUTCString()+"; path=/;"+n}}}(t=e.Utility||(e.Utility={}))}(Gram||(Gram={})),function(e){let t;!function(e){class t{constructor(){this.observer=new PerformanceObserver((e=>{e.getEntries().forEach((e=>{!console||e.name.indexOf("https")>-1||console.log("Name: "+e.name+", Type: "+e.entryType+", Start: "+e.startTime+", Duration: "+e.duration+"\n")}))})),this.observer.observe({entryTypes:["measure"]}),performance.mark("registered-observer")}static getInstance(){return this.instance||(this.instance=new t),this.instance}}e.PerformanceController=t}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={}));var __decorate=this&&this.__decorate||function(e,t,i,n){var s,a=arguments.length,o=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var r=e.length-1;r>=0;r--)(s=e[r])&&(o=(a<3?s(o):a>3?s(t,i,o):s(t,i))||o);return a>3&&o&&Object.defineProperty(t,i,o),o},__metadata=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};!function(e){let t;!function(t){let i;!function(t){let i;e.debug("declaring GoogleAnalyticsTracking"),function(e){e.FERCHAU_TOUCH="ferchau_touch",e.FERCHAU_FREELANCE="ferchau_freelance",e.INTRANET="intranet",e.TALENT_PORTAL="talent_portal"}(i=t.userPropertyAbleApplication||(t.userPropertyAbleApplication={}));const n=()=>(e,t,i)=>{const n=i.value;return i.value=function(...e){this.cookieGoogleAnalytics?n.apply(this,e):this.queue.push({method:t,arguments:e})},i};class s{constructor(t,i=null,n=!0,a=!0,o=!0,r=null,l=!1){let c,d;this.pageViewSend=!1,this.tagId=t,this.userId=i,this.queue=new e.Queue.FifoQueue,l?(this.cookieGoogleAnalytics=!0,c=!0,d=!0):(this.cookieGoogleAnalytics=e.Controller.AsyncCookieController.checkCookieItem(e.Type.CookieItemType.GOOGLE_ANALYTICS),this.cookieGoogleAnalytics&&(c=e.Controller.AsyncCookieController.checkCookieItem(e.Type.CookieItemType.GOOGLE_SIGNALS),d=e.Controller.AsyncCookieController.checkCookieItem(e.Type.CookieItemType.GOOGLE_ADWORDS)),e.Messaging.subscribe("cookie-accept",(t=>{if(this.cookieGoogleAnalytics=e.Controller.AsyncCookieController.checkCookieItem(e.Type.CookieItemType.GOOGLE_ANALYTICS),this.cookieGoogleAnalytics){for(;!this.queue.isEmpty();){const e=this.queue.pop();this[e.method].apply(this,e.arguments)}this.setAllowGoogleSignals(e.Controller.AsyncCookieController.checkCookieItem(e.Type.CookieItemType.GOOGLE_SIGNALS)),this.setAllowAdPersonalizationSignals(e.Controller.AsyncCookieController.checkCookieItem(e.Type.CookieItemType.GOOGLE_ADWORDS))}}))),this.init(),this.setAllowGoogleSignals(c),this.setAllowAdPersonalizationSignals(d),r&&this.setUserProperties(r.able_application,r.able_user,r.able_role,r.able_organization,r.able_department,r.able_street,r.able_zipcode,r.able_city,r.able_country,r.able_section,r.able_category),n&&this.pageView(),a&&this.click(),o&&this.scroll(),s.instance=this}static getInstance(){return this.instance}init(){const e=document.createElement("script");e.src="https://www.googletagmanager.com/gtag/js?id="+this.tagId,document.head.appendChild(e),window.dataLayer=window.dataLayer||[],window.gtag=function(e,t,i){window.dataLayer.push(arguments)},gtag("js",new Date);let t={send_page_view:!1};this.userId&&(t.user_id=this.sliceValue(this.userId,"user_id")),gtag("config",this.tagId,t)}pageView(e){this.setPageViewObj(e),this.sendEvent("page_view",this.getPageViewObj())}scroll(e){let t={},i=[25,50,75,100];document.addEventListener("scroll",(()=>{let n,s;e?(n=e.scrollHeight-e.clientHeight,s=e.scrollTop):(n=document.documentElement.scrollHeight-document.documentElement.clientHeight,s=window.scrollY);let a=Math.round(s/n*100);i.forEach((e=>{a>=e&&!t[e.toString()]&&(t[e.toString()]=!0,this.sendEvent("scroll",Object.assign({able_scroll_position:e},this.getPageViewObj())))}))}))}click(){document.querySelectorAll("a").forEach((e=>{let t=e.getAttribute("href");t&&e.addEventListener("click",(i=>{if(t.startsWith("mailto:"))this.mailto(e.getAttribute("class"),e.getAttribute("id"),t);else{-1==t.indexOf("://")&&(t=origin+"/"+t);try{let i=new URL(t),n=i.hostname.split("."),s=n[n.length-2]+"."+n[n.length-1],a=window.location.hostname.split("."),o=a[a.length-2]+"."+a[a.length-1],r=!1;s!=o&&(r=!0);let l=["pdf","doc","docx","xls","xlsx","txt","ppt","pptx","zip"],c=t.split(".").reverse()[0];l.indexOf(c)>=0?this.download(c,i.pathname,e.getAttribute("class"),s,e.getAttribute("id"),e.textContent.trim().replace(/\s\s+/g," "),t):this.defaultClick(e.getAttribute("class"),s,e.getAttribute("id"),t,r)}catch(i){}}}))}))}mailto(e,t,i){this.sendEvent("click",Object.assign({link_classes:e,link_domain:"",link_id:t,link_url:this.filterPersonalDataEmail(i),outbound:!0},this.getPageViewObj()))}download(e,t,i,n,s,a,o){this.sendEvent("file_download",Object.assign({file_extension:e,file_name:t,link_classes:i,link_domain:n,link_id:s,link_text:a,link_url:o},this.getPageViewObj()))}defaultClick(e,t,i,n,s){this.sendEvent("click",Object.assign({link_classes:e,link_domain:t,link_id:i,link_url:n,outbound:s},this.getPageViewObj()))}formSubmit(e,t,i,n){this.sendEvent("form_submit",Object.assign({form_id:e,form_name:t,form_destination:i,form_submit_text:n},this.getPageViewObj()))}websiteSearch(e){this.sendEvent("view_search_results",Object.assign({search_term:e},this.getPageViewObj()))}offerSearch(e,t,i,n,s,a=[],o,r,l,c,d,u,h,g,p){const m=Object.assign({item_list_id:e,item_list_name:t,able_filter_page_number:i,able_showed:n,able_total:s,items:a},this.getPageViewObj());null!=o&&(m.able_search_term=o),null!=r&&(m.able_filter_city=r),null!=l&&(m.able_filter_city_radius=l),null!=c&&(m.able_filter_ranges_of_applications=c),null!=d&&(m.able_filter_experience_levels=d),null!=u&&(m.able_filter_type=u),null!=h&&(m.able_filter_staff_responsibility=h),null!=g&&(m.able_filter_workplacetype=g),null!=p&&(m.able_filter_jobtype=p),this.sendEvent("view_item_list",m)}offerView(e,t,i){this.sendEvent("view_item",Object.assign({currency:e,value:t,items:i},this.getPageViewObj()))}offerButtonApply(e,t,i,n){const s=Object.assign({currency:e,value:t,items:i},this.getPageViewObj());null!=n&&(s.event_callback=n),this.sendEvent("add_to_cart",s)}offerCart(e,t,i){this.sendEvent("view_cart",Object.assign({currency:e,value:t,items:i},this.getPageViewObj()))}beginCheckout(e,t,i){this.sendEvent("begin_checkout",Object.assign({currency:e,value:t,items:i},this.getPageViewObj()))}offerPurchase(e,t,i,n){this.sendEvent("purchase",Object.assign({currency:e,transactionId:t,value:i,items:n},this.getPageViewObj()))}systemInformation(e,t,i,n){const s=Object.assign({able_type:e,able_source:t},this.getPageViewObj());null!=i&&(s.able_code=i),null!=n&&(s.able_message=n),this.sendEvent("able_system_interaction",s)}userLoggedIn(e,t){const i=Object.assign({method:e},this.getPageViewObj());t&&(i.event_callback=t),this.sendEvent("login",i)}userSignUp(e){this.sendEvent("sign_up",Object.assign({method:e},this.getPageViewObj()))}userCvDownload(){this.sendEvent("able_user_cv_download",Object.assign({},this.getPageViewObj()))}userCvUpload(){this.sendEvent("able_user_cv_upload",Object.assign({},this.getPageViewObj()))}userDeleteAccount(){this.sendEvent("able_user_account_delete",Object.assign({},this.getPageViewObj()))}userUpdateProfile(){this.sendEvent("able_user_update_profile",Object.assign({},this.getPageViewObj()))}userActivatedAccount(){this.sendEvent("able_user_account_activated",Object.assign({},this.getPageViewObj()))}userSearchAbo(e,t){const i=Object.assign({able_search_term:e},this.getPageViewObj());null!=t&&(i.able_filter_city=t),this.sendEvent("able_user_abo",i)}userQuickSearchOpen(){this.sendEvent("able_user_quick_search_open",Object.assign({},this.getPageViewObj()))}userQuickSearchClose(){this.sendEvent("able_user_quick_search_close",Object.assign({},this.getPageViewObj()))}userQuickSearchResultClicked(e,t){this.sendEvent("able_user_quick_search_result_clicked",Object.assign({able_value:e,event_callback:t},this.getPageViewObj()))}userQuickSearchHelp(){this.sendEvent("able_user_quick_search_help",Object.assign({},this.getPageViewObj()))}userQuickSearchExtendedSearch(){this.sendEvent("able_user_quick_search_extended_search",Object.assign({},this.getPageViewObj()))}userQuickSearchRecentView(e,t){this.sendEvent("able_user_quick_search_recent_view",Object.assign({able_value:e,event_callback:t},this.getPageViewObj()))}userQuickSearchRecentSpace(e,t){this.sendEvent("able_user_quick_search_recent_space",Object.assign({able_value:e,event_callback:t},this.getPageViewObj()))}userQuickSearchFilterOpen(e){this.sendEvent("able_user_quick_search_filter_open",Object.assign({able_category:e},this.getPageViewObj()))}userQuickSearchFilterClose(e){this.sendEvent("able_user_quick_search_filter_close",Object.assign({able_category:e},this.getPageViewObj()))}userQuickSearchFilterSearch(e,t){this.sendEvent("able_user_quick_search_filter_search",Object.assign({able_category:e,able_value:t},this.getPageViewObj()))}userQuickSearchFilterAdded(e,t){this.sendEvent("able_user_quick_search_filter_added",Object.assign({able_category:e,able_value:t},this.getPageViewObj()))}userQuickSearchFilterRemoved(e,t){this.sendEvent("able_user_quick_search_filer_removed",Object.assign({able_category:e,able_value:t},this.getPageViewObj()))}userSidebarOpen(e){this.sendEvent("able_user_sidebar_open",Object.assign({able_category:e},this.getPageViewObj()))}userSidebarClose(){this.sendEvent("able_user_sidebar_close",Object.assign({},this.getPageViewObj()))}userSidebarModuleChange(e){this.sendEvent("able_user_sidebar_module_change",Object.assign({able_category:e},this.getPageViewObj()))}userSidebarLabelClicked(e,t,i){this.sendEvent("able_user_sidebar_label_clicked",Object.assign({able_category:e,able_value:t,event_callback:i},this.getPageViewObj()))}userSidebarLabelLoadMore(e){this.sendEvent("able_user_sidebar_label_load_more",Object.assign({able_category:e},this.getPageViewObj()))}userSidebarAppClicked(e){this.sendEvent("able_user_sidebar_app_clicked",Object.assign({able_value:e},this.getPageViewObj()))}userSidebarTaskFinished(){this.sendEvent("able_user_sidebar_task_finished",Object.assign({},this.getPageViewObj()))}userPdfExport(e){this.sendEvent("able_user_pdf_export",Object.assign({able_value:e},this.getPageViewObj()))}setUserProperties(e,t,i,n,s,a,o,r,l,c,d){let u={able_application:this.sliceValue(e,"user_properties"),able_user:this.sliceValue(t,"user_properties"),able_role:this.sliceValue(i,"user_properties")};n&&Object.assign(u,{able_organization:this.sliceValue(n,"user_properties")}),s&&Object.assign(u,{able_department:this.sliceValue(s,"user_properties")}),a&&Object.assign(u,{able_street:this.sliceValue(a,"user_properties")}),o&&Object.assign(u,{able_zipcode:this.sliceValue(o,"user_properties")}),r&&Object.assign(u,{able_city:this.sliceValue(r,"user_properties")}),l&&Object.assign(u,{able_country:this.sliceValue(l,"user_properties")}),c&&Object.assign(u,{able_section:this.sliceValue(c,"user_properties")}),d&&Object.assign(u,{able_category:this.sliceValue(d,"user_properties")}),gtag("set","user_properties",u)}isTrackingAllowed(){return this.cookieGoogleAnalytics}setAllowGoogleSignals(e){e!=this.cookieGoogleSignals&&(this.cookieGoogleSignals=e,gtag("set","allow_google_signals",e))}setAllowAdPersonalizationSignals(e){e!=this.cookieGoogleAdwords&&(this.cookieGoogleAdwords=e,gtag("set","allow_ad_personalization_signals",e))}sendEvent(e,t){"page_view"==e?this.pageViewSend=!0:this.pageViewSend||this.sendEvent("page_view",this.getPageViewObj());for(const e in t)switch(e){case"page_title":t[e]=this.sliceValue(t[e],"page_title");break;case"page_location":t[e]=this.sliceValue(t[e],"page_location");break;case"page_referrer":t[e]=this.sliceValue(t[e],"page_referrer");break;case"items":t[e].forEach((e=>{for(const t in e)e[t]=this.sliceValue(e[t],"item_parameter")}));break;case"event_callback":break;default:t[e]=this.sliceValue(t[e],"event_parameter")}gtag("event",e,t)}setPageViewObj(e){let t={page_location:e=e||document.location.toString(),page_title:document.title};document.referrer&&(t.page_referrer=document.referrer),t.page_location=this.filterPersonalData(t.page_location),t.page_title=this.filterPersonalData(t.page_title),t.page_referrer&&(t.page_referrer=this.filterPersonalData(t.page_referrer)),this.pageViewObj=t}getPageViewObj(){return this.pageViewObj||this.setPageViewObj(),this.pageViewObj}filterPersonalData(e){return e=this.filterPersonalDataEmail(e)}filterPersonalDataEmail(e){var t;return(null!==(t=e.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi))&&void 0!==t?t:[]).forEach((t=>{e=e.replace(t,"***@"+t.split("@").pop())})),e}sliceValue(e,t){let i={event_parameter:100,user_properties:36,item_parameter:100,user_id:256,page_title:300,page_location:420,page_referrer:420};switch(typeof e){case"string":return e.slice(0,i[t]);case"number":return parseInt(e.toString().slice(0,i[t]));default:return e}}}__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"init",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],s.prototype,"pageView",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[HTMLElement]),__metadata("design:returntype",void 0)],s.prototype,"scroll",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"click",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String,String]),__metadata("design:returntype",void 0)],s.prototype,"mailto",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String,String,String,String,String,String]),__metadata("design:returntype",void 0)],s.prototype,"download",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String,String,String,Boolean]),__metadata("design:returntype",void 0)],s.prototype,"defaultClick",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String,String,String]),__metadata("design:returntype",void 0)],s.prototype,"formSubmit",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],s.prototype,"websiteSearch",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String,Number,Number,Number,Array,String,String,Number,String,String,Number,Number,Number,Number]),__metadata("design:returntype",void 0)],s.prototype,"offerSearch",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,Number,Array]),__metadata("design:returntype",void 0)],s.prototype,"offerView",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,Number,Array,Function]),__metadata("design:returntype",void 0)],s.prototype,"offerButtonApply",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,Number,Array]),__metadata("design:returntype",void 0)],s.prototype,"offerCart",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,Number,Array]),__metadata("design:returntype",void 0)],s.prototype,"beginCheckout",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String,Number,Array]),__metadata("design:returntype",void 0)],s.prototype,"offerPurchase",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String,Number,String]),__metadata("design:returntype",void 0)],s.prototype,"systemInformation",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,Function]),__metadata("design:returntype",void 0)],s.prototype,"userLoggedIn",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],s.prototype,"userSignUp",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userCvDownload",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userCvUpload",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userDeleteAccount",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userUpdateProfile",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userActivatedAccount",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String]),__metadata("design:returntype",void 0)],s.prototype,"userSearchAbo",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchOpen",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchClose",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,Function]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchResultClicked",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchHelp",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchExtendedSearch",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,Function]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchRecentView",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,Function]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchRecentSpace",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchFilterOpen",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchFilterClose",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchFilterSearch",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchFilterAdded",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String]),__metadata("design:returntype",void 0)],s.prototype,"userQuickSearchFilterRemoved",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],s.prototype,"userSidebarOpen",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userSidebarClose",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],s.prototype,"userSidebarModuleChange",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String,Function]),__metadata("design:returntype",void 0)],s.prototype,"userSidebarLabelClicked",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],s.prototype,"userSidebarLabelLoadMore",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],s.prototype,"userSidebarAppClicked",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",void 0)],s.prototype,"userSidebarTaskFinished",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String]),__metadata("design:returntype",void 0)],s.prototype,"userPdfExport",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[String,String,String,String,String,String,Number,String,String,String,String]),__metadata("design:returntype",void 0)],s.prototype,"setUserProperties",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[Boolean]),__metadata("design:returntype",void 0)],s.prototype,"setAllowGoogleSignals",null),__decorate([n(),__metadata("design:type",Function),__metadata("design:paramtypes",[Boolean]),__metadata("design:returntype",void 0)],s.prototype,"setAllowAdPersonalizationSignals",null),t.GoogleAnalyticsTracking=s}(i=t.Tracking||(t.Tracking={}))}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={})),function(e){let t;!function(t){e.debug("declaring DocumentUtility"),t.DocumentUtility={foundElements:{},get:function(t,i,n){e.debug("function  DocumentUtility.get called",t,i,n);let s=e.Utility.StringUtility.hash(t);if(e.Utility.DocumentUtility.foundElements.hasOwnProperty(s))return e.Utility.DocumentUtility.foundElements[s];if(void 0!==document.querySelectorAll){let a;return a=i?i.querySelectorAll(t):document.querySelectorAll(t),0===a.length?document.createDocumentFragment().childNodes:(!0===n&&(e.Utility.DocumentUtility.foundElements[s]=a),a)}return document.createDocumentFragment().childNodes},getAllChildren:function(t){return e.debug("function  DocumentUtility.get called",t),e.Utility.DocumentUtility.get("*",t)},add:function(t,i=document.body,n=null,s=""){if(e.debug("function  DocumentUtility.add called",t,i,n,s),"object"!=typeof t&&(t=document.createElement(t)),n&&("string"==typeof n&&""!==n?t.addClass(n):e.Utility.ObjectUtility.walk(n,(function(e,i){t.setAttribute(i,e)}))),""!==s){let e;switch(s){case"before":e=i.parentNode,e.insertBefore(t,i);break;case"after":e=i.parentNode,e.insertBefore(t,i.nextSibling);break;case"prepend":i.appendChild(t),i.insertBefore(t,i.firstChild)}}else i.appendChild(t);return t},addClasses:function(t,i){e.debug("function  DocumentUtility.addClasses called",t,i),0==t.length&&e.exception("DocumentUtility.addClasses: no elements found"),""==i&&e.exception("DocumentUtility.addClasses: no classes found");for(let e=0,n=t.length;e<n;e++)t[e].addClass(i)},bemModifier:function(t,i=[],n=[],s){e.debug("function  DocumentUtility.addBemModifier called",t,i,n),0==t.length&&e.exception("DocumentUtility.addBemModifier: no elements found"),0==i.length&&0==n.length&&e.exception("DocumentUtility.addBemModifier: no modifier found"),t.forEach((e=>{let t=s||e.classList.item(0);if(i.length>0){let n=i.map((e=>t+"--"+e));e.addClass.apply(e,n)}if(n.length>0){let i=n.map((e=>t+"--"+e));e.removeClass.apply(e,i)}}))},hasBemModifier:function(t,i=""){e.debug("function  DocumentUtility.hasBemModifier called",t,i);let n=t.classList.item(0);return t.classList.contains(n+"--"+i)},styles:{},addStyle:function(t,i){e.debug("function  DocumentUtility.addStyle called"),e.Utility.DocumentUtility.styles.hasOwnProperty(t)||(e.Utility.DocumentUtility.styles[t]=i)},setStyle:function(t=""){e.debug("function  DocumentUtility.setStyle called");let i=[];if(e.Utility.ObjectUtility.walk(e.Utility.DocumentUtility.styles,((e,t)=>{i.push("."+t+" {"+e+"}")})),i.length>0){let n;(n=document.getElementById(t))||(n=e.Utility.DocumentUtility.add("style",document.head),n.id=t),n.innerHTML=i.join(" "),e.Utility.DocumentUtility.styles={},e.debug("function  DocumentUtility.setStyle: added "+i.length+" styles")}else e.debug("function  DocumentUtility.setStyle: nothing added")},childrenClick:(t,i,n,s=[],a=null)=>{t instanceof MouseEvent||e.exception("Gram.Utility.DocumentUtility.childrenClick: MouseEvent not provided"),n instanceof Function||e.exception("Gram.Utility.DocumentUtility.childrenClick: callback function not provided");let o=t.target||t.srcElement;if(o.blur(),o.nodeName==i.toUpperCase()){if(s.length>0){let e=[];for(let t=0,i=s.length;t<i;t++)void 0!==o.dataset[s[t]]&&e.push(o.dataset[s[t]]);return n.apply(a||n,e)}return n(t)}},getScrollPosition:function(){let e=0;return void 0!==window.scrollY?e=window.scrollY:void 0!==window.pageYOffset?e=window.pageYOffset:void 0!==document.compatMode&&"BackCompat"!=document.compatMode?e=document.documentElement.scrollTop:void 0!==document.body&&(e=document.body.scrollTop),e},loadingResources:[],loadedResources:[],addExternalCssResource:function(t,i){if(-1==e.Utility.DocumentUtility.loadingResources.indexOf(t)){let n=document.createElement("link");n.rel="stylesheet",n.setAttribute("property","stylesheet"),n.setAttribute("type","text/css"),n.setAttribute("media","screen"),n.href=t,document.body.insertBefore(n,document.body.getElementsByTagName("link")[0]),n.onload=function(){e.Utility.DocumentUtility.loadedResources.push(t),e.Messaging.publish(i,t)},e.Utility.DocumentUtility.loadingResources.push(t)}else-1==e.Utility.DocumentUtility.loadedResources.indexOf(t)?window.setTimeout((()=>{e.Utility.DocumentUtility.addExternalCssResource(t,i)}),75):e.Messaging.publish(i,t)},addExternalJsResource:function(t,i){if(-1==e.Utility.DocumentUtility.loadingResources.indexOf(t)){let n=document.createElement("script");n.setAttribute("async","async"),n.setAttribute("src",t),document.body.insertBefore(n,document.body.getElementsByTagName("link")[0]),n.onload=function(){e.Utility.DocumentUtility.loadedResources.push(t),e.Messaging.publish(i,t)},e.Utility.DocumentUtility.loadingResources.push(t)}else-1==e.Utility.DocumentUtility.loadedResources.indexOf(t)?window.setTimeout((()=>{e.Utility.DocumentUtility.addExternalJsResource(t,i)}),75):e.Messaging.publish(i,t)},getAllCssCustomProperties:function(){let e=[...document.styleSheets].filter((e=>!e.href||0===e.href.indexOf(window.location.origin))).reduce(((e,t)=>e.concat([...t.cssRules].filter((e=>1===e.type)).reduce(((e,t)=>[...e,...[...t.style].map((e=>[e.trim(),t.style.getPropertyValue(e).trim()])).filter((([e])=>0===e.indexOf("--")))]),[]))),[]),t={};return e.forEach((e=>{let i=e[0].replace("--","").replace(/-([a-z])/g,(e=>e[1].toUpperCase()));t[i]=e[1]})),t}}}(t=e.Utility||(e.Utility={}))}(Gram||(Gram={})),
/*******************************************************************************
* Gram Framework Main - Layer controller v2
* @copyright 2020 ABLE Management Services
* @package Gram
* @subpackage Controller
* @since v2.0.0
*******************************************************************************/
Gram.Config.add("GramLayerV2",{layerAnimation:"left",layerParentElementSelector:"body",layerParentElementClassModifier:[],closeButtonParentElementSelector:"body",layerElementClass:"layerv2",layerElementClassModifier:[],layerUsage:"",showCloseButton:!0,moveNavButtonsToEdgeOnSmallscreens:!0,stickyNavButtons:!0,switchToStickyAfter:0,switchToStickyOffset:0,changeH1:!1}),function(e){let t;!function(t){e.debug("declaring LayerControllerV2");t.LayerControllerV2=class{constructor(t){this.defaults=e.Config.getAllConfig("GramLayerV2"),this.options={},this.options=Object.assign(Object.assign({},this.defaults),t),this.prepareHtmlElements(),this.options.moveNavButtonsToEdgeOnSmallscreens&&(e.Messaging.Event.register(this.wrapperElement,"scroll","layer-scroll-event-"+this.options.layerUsage,!1),e.Messaging.subscribe("layer-scroll-event-"+this.options.layerUsage,(e=>{this.scrollAction(e)}))),e.Messaging.Event.register(document.body,"keyup","layer-keyup-event-"+this.options.layerUsage,!0),e.Messaging.subscribe("layer-keyup-event-"+this.options.layerUsage,(e=>{this.keyupAction(e)})),e.Messaging.Event.register(this.backgroundElement,"click","layer-close-click-event-"+this.options.layerUsage,!1),e.Messaging.Event.register(this.closeButtonElement,"click","layer-close-click-event-"+this.options.layerUsage,!1),e.Messaging.subscribe("layer-close-click-event-"+this.options.layerUsage,(e=>{this.close(e)})),e.Messaging.Event.register(this.prevButtonElement,"click","layer-entry-click-event-"+this.options.layerUsage,!1),e.Messaging.Event.register(this.nextButtonElement,"click","layer-entry-click-event-"+this.options.layerUsage,!1),e.Messaging.Event.register(this.layerElement,"animationend","layer-animation-end-event-"+this.options.layerUsage,!1),e.Messaging.subscribe("layer-animation-end-event-"+this.options.layerUsage,(e=>{this.animationEndEvent(e,"end")})),1==e.Utility.HelperUtility.isMobile()&&(e.Messaging.Swipe.register(this.layerElement,"layer-swipe-event-"+this.options.layerUsage),e.Messaging.subscribe("layer-swipe-event-"+this.options.layerUsage,(e=>{this.swipeAction(e)}))),e.Messaging.Event.register(window,"resize","layer-resize-event-"+this.options.layerUsage,!0),e.Messaging.hasSubscription("close-layer")||e.Messaging.subscribe("close-layer",(e=>{let t=document.getElementsByClassName("layerv2__close-button");for(let i of t)i.dataset.layerUsage!=e&&("popstateAction"==e&&i.setAttribute("data-layer-popstate","true"),i.click())})),this.open()}open(){if(e.Messaging.publish("layer-open-before-hook",{layerUsage:this.options.layerUsage}),this.options.changeH1){document.querySelectorAll("main h1").forEach((e=>{e.outerHTML='<h2 data-change-h1="true" class="'+e.classList.value+'">'+e.innerHTML+"</h2>"}))}e.Utility.DocumentUtility.bemModifier([this.layerParentElement],this.options.layerParentElementClassModifier),this.loadingElement.removeClass("hidden"),this.options.showCloseButton&&this.closeButtonElement.removeClass("hidden"),this.options.layerElementClassModifier.length>0&&e.Utility.DocumentUtility.bemModifier([document.body],[this.options.layerElementClass+"-"+this.options.layerElementClassModifier[0]]),e.Utility.DocumentUtility.bemModifier([this.layerElement],[this.options.layerAnimation]),this.animationendCallback=()=>{e.Utility.DocumentUtility.bemModifier([document.body],[this.options.layerElementClass+"-modal"])},e.Messaging.publish("layer-open-after-hook",{layerUsage:this.options.layerUsage})}close(t){if(e.Messaging.publish("layer-close-before-hook",{layerUsage:this.options.layerUsage,event:t}),this.options.changeH1){document.querySelectorAll("h2[data-change-h1]").forEach((e=>{e.outerHTML='<h1 class="'+e.classList.value+'">'+e.innerHTML+"</h1>"}))}e.Utility.DocumentUtility.bemModifier([document.body],[],[this.options.layerElementClass+"-modal"]),e.Utility.DocumentUtility.bemModifier([this.layerParentElement],[],this.options.layerParentElementClassModifier),this.animationendCallback=()=>{this.destroy(t)},e.Utility.DocumentUtility.bemModifier([this.layerElement],["out"]),this.closeButtonElement.addClass("hidden"),this.options.layerElementClassModifier.length>0&&e.Utility.DocumentUtility.bemModifier([document.body],[],[this.options.layerElementClass+"-"+this.options.layerElementClassModifier[0]]),e.Messaging.publish("layer-close-after-hook",{layerUsage:this.options.layerUsage})}destroy(t){e.Messaging.publish("layer-destroy-before-hook",{layerUsage:this.options.layerUsage}),e.Messaging.clear("layer-animation-end-event-"+this.options.layerUsage),e.Messaging.clear("layer-close-click-event-"+this.options.layerUsage),e.Messaging.clear("layer-scroll-event-"+this.options.layerUsage),e.Messaging.clear("layer-keyup-event-"+this.options.layerUsage),e.Messaging.clear("layer-swipe-event-"+this.options.layerUsage),e.Messaging.clear("layer-resize-event-"+this.options.layerUsage),e.Messaging.clear("layer-entry-click-event-"+this.options.layerUsage),e.Messaging.Event.unregister(window,"resize","layer-resize-event-"+this.options.layerUsage),e.Messaging.Event.unregister(this.wrapperElement,"scroll","layer-scroll-event-"+this.options.layerUsage),e.Messaging.Event.unregister(document.body,"keyup","layer-keyup-event-"+this.options.layerUsage),e.Messaging.Event.unregister(this.backgroundElement,"click","layer-close-click-event-"+this.options.layerUsage),e.Messaging.Event.unregister(this.closeButtonElement,"click","layer-close-click-event-"+this.options.layerUsage),e.Messaging.Event.unregister(this.prevButtonElement,"click","layer-entry-click-event-"+this.options.layerUsage),e.Messaging.Event.unregister(this.nextButtonElement,"click","layer-entry-click-event-"+this.options.layerUsage),e.Messaging.Event.unregister(this.layerElement,"animationend","layer-animation-end-event-"+this.options.layerUsage),e.Messaging.Swipe.unregister(this.layerElement,"layer-swipe-event-"+this.options.layerUsage),this.layerElement&&this.layerElement.remove(),this.closeButtonElement&&this.closeButtonElement.remove(),0==document.getElementsByClassName(this.options.layerElementClass).length&&(e.Utility.DocumentUtility.bemModifier([document.body],[],[this.options.layerElementClass+"-modal"]),e.Utility.DocumentUtility.bemModifier([this.layerParentElement],[],this.options.layerParentElementClassModifier)),e.Messaging.publish("layer-destroy-after-hook",{layerUsage:this.options.layerUsage})}addContent(t){e.Messaging.publish("layer-content-added-before-hook",{layerUsage:this.options.layerUsage}),this.loadingElement.addClass("hidden"),"string"==typeof t?this.contentElement.innerHTML=t:"HTMLDivElement"==t.constructor.name&&this.contentElement.appendChild(t),e.Messaging.publish("layer-content-added-after-hook",{layerUsage:this.options.layerUsage})}removeContent(){e.Messaging.publish("layer-content-removed-before-hook",{layerUsage:this.options.layerUsage}),this.contentElement.innerHTML="",this.wrapperElement.scrollTo(0,0),this.contentElement.appendChild(this.prevButtonWrapperElement),this.contentElement.appendChild(this.nextButtonWrapperElement),this.prevButtonWrapperElement.addClass("hidden"),this.nextButtonWrapperElement.addClass("hidden"),this.contentElement.appendChild(this.loadingElement),this.loadingElement.removeClass("hidden"),e.Messaging.publish("layer-content-removed-after-hook",{layerUsage:this.options.layerUsage})}keyupAction(e){switch(e.key){case"Escape":this.closeButtonElement.click();break;case"ArrowLeft":this.prevButtonElement.setAttribute("data-input-type","keyboard"),this.prevButtonElement.click();break;case"ArrowRight":this.nextButtonElement.setAttribute("data-input-type","keyboard"),this.nextButtonElement.click()}}scrollAction(t){let i=t.target.scrollTop;i>200?e.Utility.DocumentUtility.bemModifier([this.layerElement],["scrolling"]):i<=200&&e.Utility.DocumentUtility.bemModifier([this.layerElement],[],["scrolling"]),this.options.switchToStickyAfter&&(i>this.options.switchToStickyAfter-this.options.switchToStickyOffset?e.Utility.DocumentUtility.hasBemModifier(this.layerElement,"sticky-nav")||(e.Utility.DocumentUtility.bemModifier([this.nextButtonWrapperElement],["sticky"]),e.Utility.DocumentUtility.bemModifier([this.prevButtonWrapperElement],["sticky"]),e.Utility.DocumentUtility.bemModifier([this.layerElement],["sticky-nav"])):e.Utility.DocumentUtility.hasBemModifier(this.layerElement,"sticky-nav")&&(e.Utility.DocumentUtility.bemModifier([this.nextButtonWrapperElement],[],["sticky"]),e.Utility.DocumentUtility.bemModifier([this.prevButtonWrapperElement],[],["sticky"]),e.Utility.DocumentUtility.bemModifier([this.layerElement],[],["sticky-nav"])))}swipeAction(e){e.event.target.closest(".swiper")||("left"==e.direction?(this.nextButtonElement.setAttribute("data-input-type","mouse"),this.nextButtonElement.click()):"right"==e.direction&&(this.prevButtonElement.setAttribute("data-input-type","mouse"),this.prevButtonElement.click()))}prepareHtmlElements(){this.layerParentElement=e.Utility.DocumentUtility.get(this.options.layerParentElementSelector)[0],this.layerElement=document.createElement("div"),this.wrapperElement=document.createElement("div"),this.contentElement=document.createElement("div"),this.backgroundElement=document.createElement("div"),this.loadingElement=document.createElement("div"),this.closeButtonElement=document.createElement("div"),this.prevButtonWrapperElement=document.createElement("div"),this.nextButtonWrapperElement=document.createElement("div"),this.prevButtonElement=document.createElement("a"),this.nextButtonElement=document.createElement("a"),this.layerElement.setAttribute("class",this.options.layerElementClass),this.layerElement.setAttribute("data-layer-usage",this.options.layerUsage),e.Utility.DocumentUtility.bemModifier([this.layerElement],this.options.layerElementClassModifier),this.wrapperElement.setAttribute("class",this.options.layerElementClass+"__wrapper"),this.contentElement.setAttribute("class",this.options.layerElementClass+"__content"),this.backgroundElement.setAttribute("class",this.options.layerElementClass+"__background"),this.loadingElement.setAttribute("class",this.options.layerElementClass+"__loading"),this.loadingElement.innerHTML='<div class="loading-circle"></div>',this.closeButtonElement.setAttribute("class",this.options.layerElementClass+"__close-button"),this.closeButtonElement.addClass("hidden"),this.closeButtonElement.setAttribute("data-layer-usage",this.options.layerUsage),this.prevButtonWrapperElement.setAttribute("class",this.options.layerElementClass+"__nav-button"),e.Utility.DocumentUtility.bemModifier([this.prevButtonWrapperElement],["prev"]),this.prevButtonWrapperElement.addClass("hidden"),this.nextButtonWrapperElement.setAttribute("class",this.options.layerElementClass+"__nav-button"),e.Utility.DocumentUtility.bemModifier([this.nextButtonWrapperElement],["next"]),this.nextButtonWrapperElement.addClass("hidden"),this.options.stickyNavButtons&&(e.Utility.DocumentUtility.bemModifier([this.nextButtonWrapperElement],["sticky"]),e.Utility.DocumentUtility.bemModifier([this.prevButtonWrapperElement],["sticky"])),this.prevButtonWrapperElement.appendChild(this.prevButtonElement),this.nextButtonWrapperElement.appendChild(this.nextButtonElement),this.contentElement.appendChild(this.prevButtonWrapperElement),this.contentElement.appendChild(this.nextButtonWrapperElement),this.contentElement.appendChild(this.loadingElement),this.wrapperElement.appendChild(this.backgroundElement),this.wrapperElement.appendChild(this.contentElement),this.layerElement.appendChild(this.wrapperElement),this.layerParentElement.prepend(this.layerElement),this.closeButtonParentElement=e.Utility.DocumentUtility.get(this.options.closeButtonParentElementSelector)[0],this.closeButtonParentElement?this.closeButtonParentElement.appendChild(this.closeButtonElement):this.layerElement.appendChild(this.closeButtonElement)}setPrevButton(e){null!=e?(this.prevButtonWrapperElement.removeClass("hidden"),this.prevButtonElement.setAttribute("data-id",""+e.id),this.prevButtonElement.setAttribute("data-url",""+e.url),this.prevButtonElement.setAttribute("data-direction","previous"),this.prevButtonElement.setAttribute("data-input-type",""),this.prevButtonElement.setAttribute("href",""+e.url),this.prevButtonElement.setAttribute("title",""+e.titleshort)):this.prevButtonWrapperElement.addClass("hidden")}setNextButton(e){null!=e?(this.nextButtonWrapperElement.removeClass("hidden"),this.nextButtonElement.setAttribute("data-id",""+e.id),this.nextButtonElement.setAttribute("data-url",""+e.url),this.nextButtonElement.setAttribute("data-direction","next"),this.nextButtonElement.setAttribute("data-input-type",""),this.nextButtonElement.setAttribute("href",""+e.url),this.nextButtonElement.setAttribute("title",""+e.titleshort)):this.nextButtonWrapperElement.addClass("hidden")}animationEndEvent(e,t){!this.animationendCallback||"layerBackgroundFadeOut"!=e.animationName&&"layerBackgroundFadeIn"!=e.animationName||(this.animationendCallback(),this.animationendCallback=void 0)}setSwitchToStickyAfter(e,t=0){this.options.switchToStickyAfter=e,this.options.switchToStickyOffset=t}addOwner(e){this.layerElement.dataset.owner=e}getOwner(){return this.layerElement.dataset.owner}}}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={})),
/*******************************************************************************
* Gram Framework Main - Swiper controller
* @copyright 2020 ABLE Management Services
* @package Gram
* @subpackage Controller
* @since v2.0.0
*******************************************************************************/
Gram.Config.add("GramSwiper",{identifier:"",index:0,scrollSlidesAtOnce:1,visibleSlidesAtOnce:1,slideSpeed:300,spoolSpeed:600,snapBackSpeed:200,transitionTimingFunction:"ease",spool:!1,endless:!1,swipeWithMouse:!1,adjustHeight:!1,autoplaySpeed:!1,fixedWidth:!1,classNameSwiper:"swiper",classNameContainer:"swiper__container",classNameWrapper:"swiper__wrapper",classNameSlide:"swiper__slide",classNameSlideActive:"swiper__slide--active",classNamePrev:"swiper__prev",classNamePrevDisabled:"swiper__prev--disabled",classNameNext:"swiper__next",classNameNextDisabled:"swiper__next--disabled",classNameIndicator:"swiper__indicator",classNameIndicatorItem:"swiper__indicator-item",classNameIndicatorItemActive:"swiper__indicator-item--active",classNamePaginationCurrent:"swiper__pagination-current"}),function(e){let t;!function(t){e.debug("declaring SwiperController");const i=Array.prototype.slice;t.SwiperController=class{constructor(t,n){if(this.index=0,this.arrowOnClickSlidePrev=e=>{clearInterval(this.autoplayInterval),this.slidePrev(e)},this.arrowOnClickSlideNext=e=>{clearInterval(this.autoplayInterval),this.slideNext(e)},this.arrowOnTouchstart=e=>{clearInterval(this.autoplayInterval),this.onTouchstart(e)},this.arrowOnClick=e=>{this.onClick(e)},this.arrowOnResize=e=>{this.onResize(e)},this.arrowOnTransitionend=e=>{this.onTransitionend(e)},this.arrowOnTouchmove=e=>{this.onTouchmove(e)},this.arrowOnTouchend=e=>{this.onTouchend(e)},this.arrowOnClickSlideTo=e=>{clearInterval(this.autoplayInterval);let t=this.config.endless?1:0;this.slideTo(Array.prototype.indexOf.call(this.indicatorElement,e.target)+t)},this.swiperElement=t,this.config=Object.assign(Object.assign({},e.Config.getAllConfig("GramSwiper")),n),this.index=this.config.index,this.containerElement=this.swiperElement.getElementsByClassName(this.config.classNameContainer)[0],this.wrapperElement=this.containerElement.getElementsByClassName(this.config.classNameWrapper)[0],this.indicatorElement=i.call(this.swiperElement.getElementsByClassName(this.config.classNameIndicatorItem)),this.prevElement=this.swiperElement.getElementsByClassName(this.config.classNamePrev)[0],this.nextElement=this.swiperElement.getElementsByClassName(this.config.classNameNext)[0],this.paginationCurrent=this.swiperElement.getElementsByClassName(this.config.classNamePaginationCurrent)[0],this.position={x:this.wrapperElement.offsetLeft,y:this.wrapperElement.offsetTop},this.config.endless?this.slides=this.prepareForEndlessScrolling(i.call(this.wrapperElement.children)):(this.slides=i.call(this.wrapperElement.children),this.prevElement&&!this.config.spool&&this.prevElement.classList.add(this.config.classNamePrevDisabled),this.nextElement&&1===this.slides.length&&!this.config.spool&&this.nextElement.classList.add(this.config.classNameNextDisabled)),this.reset(),this.prevElement&&this.nextElement&&(this.prevElement.addEventListener("click",this.arrowOnClickSlidePrev),this.nextElement.addEventListener("click",this.arrowOnClickSlideNext)),this.indicatorElement.length&&this.indicatorElement.forEach(((e,t)=>{e.addEventListener("click",this.arrowOnClickSlideTo)})),this.containerElement.addEventListener("touchstart",this.arrowOnTouchstart),this.config.swipeWithMouse&&(this.containerElement.addEventListener("mousedown",this.arrowOnTouchstart),this.containerElement.addEventListener("click",this.arrowOnClick)),window.addEventListener("resize",this.arrowOnResize),this.config.adjustHeight){const e=new ResizeObserver((e=>{e.forEach((e=>{this.containerElement.style.height=this.getElementHeight(this.slides[this.index])+"px"}))}));this.slides.forEach((t=>{e.observe(t)}))}this.config.autoplaySpeed&&this.setAutoplay()}setAutoplay(){this.autoplayInterval=setInterval((()=>{!this.config.endless&&this.index+1>this.slides.length-1?clearInterval(this.autoplayInterval):this.slideNext(null)}),this.config.autoplaySpeed)}pauseAutoplay(){clearInterval(this.autoplayInterval)}continueAutoplay(){clearInterval(this.autoplayInterval),this.setAutoplay()}setActiveElement(t,i){if(e.Messaging.publish("swiper-set-active-before-hook-"+this.config.identifier,{currentIndex:i}),this.config.adjustHeight&&(this.containerElement.style.height=this.getElementHeight(t[i])+"px"),this.indicatorElement.length){const e=this.config.endless?i-this.config.visibleSlidesAtOnce:i;this.indicatorElement.forEach((e=>{e.removeClass(this.config.classNameIndicatorItemActive)})),this.indicatorElement[e].addClass(this.config.classNameIndicatorItemActive)}if(this.paginationCurrent){const e=this.config.endless?i-this.config.visibleSlidesAtOnce+1:i+1,t=e<10?"0":"";this.paginationCurrent.textContent=t+""+e}t.forEach((e=>{e.removeClass(this.config.classNameSlideActive)})),t[i].addClass(this.config.classNameSlideActive)}prepareForEndlessScrolling(e){const t=e.slice(0,this.config.visibleSlidesAtOnce),n=e.slice(e.length-this.config.visibleSlidesAtOnce,e.length);return t.forEach((e=>{const t=e.cloneNode(!0);this.wrapperElement.appendChild(t)})),n.reverse().forEach((e=>{const t=e.cloneNode(!0);this.wrapperElement.insertBefore(t,this.wrapperElement.firstChild)})),this.wrapperElement.addEventListener("transitionend",this.arrowOnTransitionend),i.call(this.wrapperElement.children)}translate(e,t,i){const n=this.wrapperElement.style;n.transitionTimingFunction=i,n.transitionDuration=t+"ms",n.transform="translateX("+e+"px)"}getElementWidth(e){return this.config.fixedWidth?Number(this.config.fixedWidth):e.getBoundingClientRect().width||e.offsetWidth}getElementHeight(e){return e.getBoundingClientRect().height||e.offsetHeight}slide(e,t){let n=this.config.slideSpeed;const s=(this.slides.length%this.config.visibleSlidesAtOnce?this.config.visibleSlidesAtOnce-this.slides.length%this.config.visibleSlidesAtOnce:0)*this.getElementWidth(this.slides[0]),a=Math.ceil(this.slidesWidth-this.containerElementWidth+s);this.prevElement&&this.prevElement.classList.remove(this.config.classNamePrevDisabled),this.nextElement&&this.nextElement.classList.remove(this.config.classNameNextDisabled),"number"!=typeof e&&(e=t?this.config.endless&&this.index+2*this.config.visibleSlidesAtOnce!==this.slides.length?this.index+(this.config.visibleSlidesAtOnce-this.index%this.config.visibleSlidesAtOnce):this.index+this.config.scrollSlidesAtOnce:this.config.endless&&this.index%this.config.visibleSlidesAtOnce!=0?this.index-this.index%this.config.visibleSlidesAtOnce:this.index-this.config.scrollSlidesAtOnce),e=Math.min(Math.max(e,0),this.slides.length-1),this.config.endless&&void 0===t&&(e+=this.config.visibleSlidesAtOnce),this.config.spool&&0===Math.abs(this.position.x)&&!1===t&&(e=this.slides.length-1,n=this.config.spoolSpeed);let o=Math.min(Math.max(-1*this.slides[e].offsetLeft,-1*a),0);this.config.spool&&Math.abs(this.position.x)===a&&t&&(o=0,e=0,n=this.config.spoolSpeed),this.translate(o,n,this.config.transitionTimingFunction),this.position.x=o,this.slides[e].offsetLeft<=a&&(this.index=e),!this.config.endless||e!==this.slides.length-this.config.visibleSlidesAtOnce&&e!==this.slides.length-this.slides.length%this.config.visibleSlidesAtOnce&&0!==e||(t&&(this.index=this.config.visibleSlidesAtOnce),t||(this.index=this.slides.length-2*this.config.visibleSlidesAtOnce),this.position.x=-1*this.slides[this.index].offsetLeft,this.transitionendCallback=function(){this.translate(-1*this.slides[this.index].offsetLeft,0,void 0)}),this.setActiveElement(i.call(this.slides),this.index),!this.prevElement||this.config.endless||this.config.spool||0!==e||this.prevElement.classList.add(this.config.classNamePrevDisabled),this.nextElement&&!this.config.endless&&!this.config.spool&&e+this.config.visibleSlidesAtOnce>=this.slides.length&&this.nextElement.classList.add(this.config.classNameNextDisabled)}reset(){this.slidesWidth=this.getElementWidth(this.wrapperElement),this.containerElementWidth=this.getElementWidth(this.containerElement),this.containerElementWidth===this.slidesWidth&&(this.slidesWidth=this.slides.reduce(((e,t)=>e+this.getElementWidth(t)),0)),this.config.endless?(this.index===this.config.index&&(this.index=this.config.index+this.config.visibleSlidesAtOnce),this.translate(-1*this.slides[this.index].offsetLeft,0,null),this.position.x=-1*this.slides[this.index].offsetLeft):(this.index===this.config.index&&(this.index=this.config.index),this.translate(-1*this.slides[this.index].offsetLeft,this.config.spoolSpeed,this.config.transitionTimingFunction),this.position.x=-1*this.slides[this.index].offsetLeft),this.setActiveElement(i.call(this.slides),this.index)}slideTo(e){this.slide(e,!1)}slidePrev(e){this.slide(!1,!1)}slideNext(e){this.slide(!1,!0)}setScrollSlidesAtOnce(e){this.config.scrollSlidesAtOnce=e}setVisibleSlidesAtOnce(e){this.config.visibleSlidesAtOnce=e}onTransitionend(e){this.transitionendCallback&&(this.transitionendCallback(),this.transitionendCallback=void 0)}onTouchstart(e){const t=e.touches?e.touches[0]:e;this.config.swipeWithMouse&&(this.containerElement.addEventListener("mousemove",this.arrowOnTouchmove),this.containerElement.addEventListener("mouseup",this.arrowOnTouchend),this.containerElement.addEventListener("mouseleave",this.arrowOnTouchend)),this.containerElement.addEventListener("touchmove",this.arrowOnTouchmove),this.containerElement.addEventListener("touchend",this.arrowOnTouchend);const{pageX:i,pageY:n}=t;this.touchOffset={x:i,y:n,time:Date.now()},this.isScrolling=void 0,this.delta={}}onTouchmove(e){const t=e.touches?e.touches[0]:e,{pageX:i,pageY:n}=t;this.delta={x:i-this.touchOffset.x,y:n-this.touchOffset.y},void 0===this.isScrolling&&(this.isScrolling=!!(this.isScrolling||Math.abs(this.delta.x)<Math.abs(this.delta.y))),!this.isScrolling&&this.touchOffset&&this.translate(this.position.x+this.delta.x,0,null)}onTouchend(e){const t=this.touchOffset?Date.now()-this.touchOffset.time:void 0,i=Number(t)<300&&Math.abs(this.delta.x)>25||Math.abs(this.delta.x)>this.containerElementWidth/3,n=!this.index&&this.delta.x>0||this.index+this.config.visibleSlidesAtOnce>=this.slides.length&&this.delta.x<0,s=this.delta.x<0;this.isScrolling||(i&&!n?this.slide(!1,s):this.translate(this.position.x,this.config.snapBackSpeed,void 0)),this.touchOffset=void 0,this.containerElement.removeEventListener("touchmove",this.arrowOnTouchmove),this.containerElement.removeEventListener("touchend",this.arrowOnTouchend),this.containerElement.removeEventListener("mousemove",this.arrowOnTouchmove),this.containerElement.removeEventListener("mouseup",this.arrowOnTouchend),this.containerElement.removeEventListener("mouseleave",this.arrowOnTouchend)}onClick(e){this.delta.x&&e.preventDefault()}onResize(e){this.containerElementWidth!==this.getElementWidth(this.containerElement)&&this.reset()}}}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={})),function(e){let t;!function(t){class i{static message(t,n,s,a=5e3,o=3){let r;switch(t){case e.Type.NotifyMessageType.INFO:r="&#xf05a;";break;case e.Type.NotifyMessageType.SUCCESS:r="&#xf058;";break;case e.Type.NotifyMessageType.WARNING:r="&#xf071;";break;case e.Type.NotifyMessageType.ERROR:r="&#xf057;"}let l=document.getElementById("notify-container");null!=l&&void 0!==l||(l=document.createElement("div"),l.id="notify-container",l.classList.add("notify"));let c=document.createElement("div");c.classList.add("notify__message"),c.addEventListener("click",(()=>{c.remove(),i.removeMainContainer(l)}));let d=document.createElement("span");d.classList.add("message__icon","message__icon--"+t),d.innerHTML=r;let u=document.createElement("div");u.classList.add("message__body");let h=document.createElement("span");h.classList.add("body__headline"),h.innerHTML=n;let g=document.createElement("span");g.classList.add("body__text"),g.innerHTML=s;let p=document.createElement("span");for(p.classList.add("body__host"),p.innerHTML=document.location.host,u.appendChild(h),u.appendChild(g),u.appendChild(p),c.appendChild(d),c.appendChild(u),l.appendChild(c),setTimeout((()=>{c.remove(),i.removeMainContainer(l)}),a);l.childElementCount>o;)l.firstChild.remove();document.body.appendChild(l)}static removeMainContainer(e){0===e.childElementCount&&e.remove()}}t.NotifyController=i}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={})),function(e){let t;!function(t){e.debug("declaring PingdomController");class i{constructor(){this.setTrackingId=e=>this.trackingId=e,this.setCookie=e=>this.cookie=e,e.Messaging.subscribe("cookie-accept",(t=>{this.cookie=e.Controller.AsyncCookieController.checkCookieItem(e.Type.CookieItemType.PINGDOM),this.cookie&&this.load()}))}load(){if(""==this.trackingId)return!1;let e=document.getElementById(this.trackingId);if(!this.cookie||!this.trackingId||e)return!1;let t=document.createElement("script");t.setAttribute("async","async"),t.id=this.trackingId,t.src="//rum-static.pingdom.net/pa-"+this.trackingId+".js",document.body.appendChild(t)}static getInstance(){return this.instance||(this.instance=new i),this.instance}}t.PingdomController=i}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={}));
/*******************************************************************************
* Gram Framework Main - Request controller
* @copyright 2021 ABLE Management Services
* @package Gram
* @subpackage Controller
* @since v2.0.0

*******************************************************************************/
var Gram,__awaiter=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(s,a){function o(e){try{l(n.next(e))}catch(e){a(e)}}function r(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,r)}l((n=n.apply(e,t||[])).next())}))};!function(e){let t;!function(t){let i;!function(e){e.GET="GET",e.POST="POST",e.PUT="PUT",e.DELETE="DELETE"}(i||(i={}));t.RequestController=class{constructor(t=""){this.setUrl=e=>this.url=e,this.setParameter=(e,t)=>this.parameters.set(e,t),this.removeParameter=e=>this.parameters.delete(e),this.setParameters=e=>this.parameters=new Map([...this.parameters,...e]),this.setHeader=(e,t)=>this.headers.set(e,t),this.removeHeader=e=>this.headers.delete(e),this.setHeaders=e=>this.headers=new Map([...this.headers,...e]),this.clearRequestParams=()=>this.parameters.clear(),this.setContentType=e=>this.contentType=e,this.setAcceptType=e=>this.acceptType=e,this.setCors=e=>this.cors=e,this.setDefaultErrorNotification=e=>this.defaultErrorNotification=e,this.setTimeout=e=>this.timeout=e,this.url=t,this.parameters=new Map,this.headers=new Map,this.contentType=e.Type.ContentType.URLENCODED,this.acceptType=e.Type.AcceptType.JSON,this.cors=!0,this.defaultErrorNotification=!0,this.timeout=6e4}get(){return __awaiter(this,void 0,void 0,(function*(){return yield this.makeRequest(i.GET)}))}post(){return __awaiter(this,void 0,void 0,(function*(){return yield this.makeRequest(i.POST)}))}put(){return __awaiter(this,void 0,void 0,(function*(){return yield this.makeRequest(i.PUT)}))}delete(){return __awaiter(this,void 0,void 0,(function*(){return yield this.makeRequest(i.DELETE)}))}makeRequest(t){return __awaiter(this,void 0,void 0,(function*(){let n={headers:{}};switch(n.method=t,n.headers.accept=this.acceptType,this.cors||(n.mode="no-cors"),this.headers.forEach(((e,t)=>{n.headers[t]=e})),t){case i.POST:case i.PUT:this.parameters.size>0&&(n.body=this.buildParameterString(),n.headers["content-type"]=this.contentType);break;case i.GET:case i.DELETE:this.parameters.size>0&&(this.url+=this.url.indexOf("?")>=0?"&":"?",this.url+=this.buildParameterString())}return Promise.race([new Promise(((t,i)=>{setTimeout((()=>{i(new Error(e.Localization.translate("http.status.118.message")))}),this.timeout)})),this.fetchResult(n)])}))}fetchResult(i){return __awaiter(this,void 0,void 0,(function*(){const n=yield fetch(this.url,i);return n.ok?this.acceptType===e.Type.AcceptType.JSON?n.json():n.text():(this.defaultErrorNotification&&t.NotifyController.message(e.Type.NotifyMessageType.ERROR,e.Localization.translate("http.status."+n.status+".status"),e.Localization.translate("http.status."+n.status+".message"),7e3,3),Promise.reject(n))}))}buildParameterString(){let e="";return this.parameters.forEach(((t,i)=>{e+=encodeURIComponent(i)+"="+encodeURIComponent(t)+"&"})),e.slice(0,-1)}}}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={})),function(e){let t;!function(e){e.GlobalSettings={page:{devices:{phone:1,tablet:768,desktop:1100,largedesktop:1920,bigdesktop:2500},observer:{rootMargin:"50px 0px",threshold:.01},bemclasses:{imagereloadBemClass:"ce-image__image--responsive"}}}}(t=e.TYPO3||(e.TYPO3={}))}(Gram||(Gram={})),function(e){let t;!function(t){let i;!function(t){e.debug("declaring TYPO3 ImageUtility"),t.ImageUtility={observer:null,imageCount:0,initialized:!1,initResponsive:function(){e.debug("function ImageUtility.initResponsive called"),e.Utility.DocumentUtility.get('img[data-reload="1"]:not([data-init-responsive="1"])').forEach((t=>{if(t.setAttribute("data-init-responsive","1"),t.parentNode.setAttribute("data-init-responsive","1"),"typo3"==t.dataset.process){let i=t.parentNode;"A"==i.tagName&&(i=i.parentNode);const n=Math.round(i.clientWidth);let s=Math.round(n/+t.dataset.ratio);if(e.Messaging.getSubscriptions("Hook:ImageUtility.initResponsive").forEach((e=>{s=e.callback({image:t,imageHeight:s})})),e.Config.has("page","devices","phone")&&e.Config.has("page","devices","tablet")){const i=screen.width;let a=1100;e.Config.has("page","devices","desktop")&&(a=+e.Config.get("page","devices","desktop")),i>=+e.Config.get("page","devices","phone")&&i<+e.Config.get("page","devices","tablet")&&"ratioPhone"in t.dataset&&(s=Math.round(n/+t.dataset.ratioPhone)),i>=+e.Config.get("page","devices","tablet")&&i<a&&"ratioTablet"in t.dataset&&(s=Math.round(n/+t.dataset.ratioTablet)),i>a&&"ratioDesktop"in t.dataset&&(s=Math.round(n/+t.dataset.ratioDesktop))}t.style.width="100%",t.style.height=s+"px",t.setAttribute("width",""+n),t.setAttribute("height",""+s)}else{let e=+t.dataset.width,i=+t.dataset.height;const n=e/i,s=Math.round(t.parentUntil("div").clientWidth);e>s&&s>1&&(e=s,i=Math.round(e/n)),t.setAttribute("width",""+e),e>t.clientWidth&&0!=t.clientWidth&&(e=t.clientWidth,i=Math.round(e/n),t.setAttribute("width",""+e)),t.setAttribute("height",""+i),t.style.height=i+"px"}})),t.ImageUtility.initialized=!0},scrollReload:function(){0==t.ImageUtility.initialized&&t.ImageUtility.initResponsive(),e.debug("function ImageUtility.scrollReload called");const i=e.Utility.DocumentUtility.get('img[data-reload="1"]:not([data-scroll-reload="1"]'),n=i.length;t.ImageUtility.imageCount+=i.length,n>0&&("IntersectionObserver"in window?(t.ImageUtility.observer||(t.ImageUtility.observer=new IntersectionObserver(t.ImageUtility.onIntersection,e.Config.get("page","observer"))),i.forEach((e=>{e.setAttribute("data-scroll-reload","1"),t.ImageUtility.observer.observe(e)}))):t.ImageUtility.loadFallback(i))},loadFallback:function(i){e.debug("function ImageUtility.loadFallback called"),i.forEach((e=>{e.setAttribute("data-scroll-reload","1"),t.ImageUtility.preload(e)}))},preload:function(i){e.debug("function ImageUtility.preload called");let n=i.dataset[e.TYPO3.device]||i.dataset.src;const s=document.location.origin+n.replace(document.location.origin,"");if(!s)return e.exception("no image source defined for device: "+e.TYPO3.device),void t.ImageUtility.imageCount--;t.ImageUtility.fetchImage(s).then((()=>{t.ImageUtility.injectImage(i,s)}))},fetchImage:function(t){return e.debug("function ImageUtility.fetchImage called"),new Promise(((e,i)=>{const n=new Image;n.src=t,n.onload=e,n.onerror=i}))},injectImage:function(t,i){e.debug("function ImageUtility.injectImage called"),t.src=i,delete t.dataset.reload,delete t.dataset.ratio,delete t.dataset.width,delete t.dataset.process,t.style.width="",t.style.height="",t.parentNode.removeAttribute("data-init-responsive"),e.Utility.DocumentUtility.bemModifier([t],["fadein"])},onIntersection:function(i){e.debug("function ImageUtility.onIntersection called"),t.ImageUtility.imageCount<=0?t.ImageUtility.observer&&t.ImageUtility.observer.disconnect():i.forEach((e=>{e.intersectionRatio>0&&(t.ImageUtility.observer.unobserve(e.target),t.ImageUtility.preload(e.target))}))},deviceChange:function(i){e.Utility.DocumentUtility.get("img."+e.Config.get("page","bemclasses","imagereloadBemClass")).forEach((e=>{t.ImageUtility.preload(e)}))}}}(i=t.Utility||(t.Utility={}))}(t=e.TYPO3||(e.TYPO3={}))}(Gram||(Gram={})),function(e){let t;!function(t){class i{constructor(t){this.changeCheckedState=t=>{let i=t.target;if(i.hasAttribute("data-parent")){if(i.value===e.Type.CookieItemType.GOOGLE_ANALYTICS&&!i.checked){const e=document.getElementById("cookie-GOOGLE_SIGNALS");e&&e.checked&&(e.checked=!1)}if(i.value===e.Type.CookieItemType.GOOGLE_SIGNALS&&i.checked){const e=document.getElementById("cookie-GOOGLE_ANALYTICS");e&&!e.checked&&(e.checked=!0)}const t=document.querySelector("input[data-value="+i.getAttribute("data-parent")+"]"),n=t.parentNode,s=[];document.querySelectorAll("input[data-parent="+i.getAttribute("data-parent")+"]").forEach((e=>{s.push(e.checked)})),t.checked=!s.some((e=>!1===e)),s.length>1&&(s.every((e=>!1===e))||s.every((e=>!0===e))?n.classList.contains("form__item--input-checkbox-slider-halfchecked")&&n.classList.remove("form__item--input-checkbox-slider-halfchecked"):n.classList.contains("form__item--input-checkbox-slider-halfchecked")||n.classList.add("form__item--input-checkbox-slider-halfchecked"))}else{const e=i.parentNode;e.classList.contains("form__item--input-checkbox-slider-halfchecked")&&e.classList.remove("form__item--input-checkbox-slider-halfchecked"),document.querySelectorAll("input[data-parent="+i.getAttribute("data-value")+"]").forEach((e=>{e.checked=i.checked}))}let n=!0,s=document.getElementById("cookie-ALL");for(let t in e.Type.CookieItemType)if(-1===["ALL","ESST"].indexOf(t)){let e=document.getElementById("cookie-"+t);e&&!e.checked&&(n=!1)}n?s.checked=!0:s.checked&&(s.checked=!1)},this.setLanguage=e=>this.config.language=e,this.setDataProtectionLink=e=>this.config.dataProtectionLink=e,this.setCompanyUrl=e=>this.config.companyUrl=e,this.setTextElement=(e,t)=>this.textElements[e]=t,this.config=t,this.config.items.includes(e.Type.CookieItemType.ESSENTIALS)||this.config.items.push(e.Type.CookieItemType.ESSENTIALS),this.possibleEssentialCookieItems=[e.Type.CookieItemType.ESSENTIALS,e.Type.CookieItemType.SALESFORCE_SALES_CLOUD,e.Type.CookieItemType.ABLE_CDN,e.Type.CookieItemType.ABLE_API,e.Type.CookieItemType.GOOGLE_FONTS],this.possibleFunctionalCookieItems=[e.Type.CookieItemType.MAPBOX,e.Type.CookieItemType.PINGDOM,e.Type.CookieItemType.YOUTUBE,e.Type.CookieItemType.PODIGEE,e.Type.CookieItemType.GOOGLE_ANALYTICS,e.Type.CookieItemType.GOOGLE_SIGNALS],this.possibleMarketingCookieItems=[e.Type.CookieItemType.GOOGLE_ADWORDS,e.Type.CookieItemType.SALESFORCE_MARKETING_CLOUD_ACCOUNT_ENGAGEMENT];const i=[];this.possibleEssentialCookieItems.forEach((e=>{this.config.items.includes(e)&&i.push(e)})),this.cookieItems=e.Controller.AsyncCookieController.getCookie(),this.initText();const n=Object.keys(this.cookieItems);if(!n.length||!n.every((e=>this.config.items.includes(e)))||!this.config.items.every((e=>void 0!==this.cookieItems[e]))||!i.every((e=>this.cookieItems[e]))||n&&n.includes(e.Type.CookieItemType.GOOGLE_ANALYTICS)&&n.includes(e.Type.CookieItemType.GOOGLE_SIGNALS)&&!1===this.cookieItems[e.Type.CookieItemType.GOOGLE_ANALYTICS]&&!0===this.cookieItems[e.Type.CookieItemType.GOOGLE_SIGNALS]){e.Utility.CookieUtility.remove("able_cookie_consent");var s=new URL(this.config.dataProtectionLink),a=new URL(this.config.legalNotice);s.pathname!=window.location.pathname&&a.pathname!=window.location.pathname&&(this.config.items.forEach((e=>{this.cookieItems[e]=!0})),this.showDialog())}}static getInstance(e){return i.instance||(i.instance=new i(e)),i.instance}showDialog(){this.modalDialog&&this.modalDialog.remove(),this.buildHeader();let t=document.createElement("p");t.innerHTML=this.textElements.get("basicText")[this.config.language];let i=document.createElement("div");i.classList.add("cookie__buttons","form__item-wrapper","form__item-wrapper--100");let n=document.createElement("button");n.innerHTML=this.textElements.get("configure")[this.config.language],n.className=this.config.buttonSecondary,n.classList.add("cookie__button","cookie__button--default","cookie__button--config"),n.addEventListener("click",(()=>{this.showConfigureDialog()}));let s=document.createElement("button");s.innerHTML=this.textElements.get("acceptCookies")[this.config.language],s.type="submit",s.className=this.config.buttonPrimary,s.classList.add("cookie__button","cookie__button--primary","cookie__button--all"),this.form.onsubmit=t=>{t.preventDefault(),this.cookieItems={},this.config.items.forEach((e=>{this.cookieItems[e]=!0})),this.setCookie(),e.Messaging.publish("cookie-accept"),this.modalDialog&&this.modalDialog.remove()};let a=document.createElement("button");a.innerHTML=this.textElements.get("essentialCookies")[this.config.language],a.className=this.config.buttonSecondary,a.classList.add("cookie__button","cookie__button--default","cookie__button--essential"),a.addEventListener("click",(t=>{t.preventDefault(),this.cookieItems={},this.config.items.forEach((e=>{this.cookieItems[e]=this.possibleEssentialCookieItems.includes(e)})),this.setCookie(),e.Messaging.publish("cookie-accept"),this.modalDialog&&this.modalDialog.remove()})),this.cookieText.appendChild(t),this.formGroup.appendChild(this.cookieText),i.appendChild(s),i.appendChild(a),i.appendChild(n),this.formGroup.appendChild(i),this.form.appendChild(this.formGroup),this.modalContent.appendChild(this.form),this.modalHolder.appendChild(this.modalContent),this.modalDialog.appendChild(this.modalHolder),document.body.appendChild(this.modalDialog)}showConfigureDialog(){this.modalDialog.remove(),this.buildHeader();let t=document.createElement("h3");t.className=this.config.headline,t.innerHTML=this.textElements.get("configurationHeadline")[this.config.language],this.cookieText.appendChild(t);let i=document.createElement("p");if(i.innerHTML=this.textElements.get("configurationText")[this.config.language],this.cookieText.appendChild(i),this.formGroup.appendChild(this.cookieText),this.buildCheckbox(e.Type.CookieItemType.ALL,this.textElements.get("selectAll")[this.config.language],null,!1,this.config.items.every((e=>this.cookieItems[e]))),this.buildCheckbox(e.Type.CookieItemType.ESSENTIALS,this.textElements.get("essential")[this.config.language],null,!0,!0,this.textElements.get(e.Type.CookieItemType.ESSENTIALS)[this.config.language]),this.buildSubItem(e.Type.CookieItemType.ESSENTIALS),this.config.items.some((e=>this.possibleFunctionalCookieItems.includes(e)))){let t=this.config.items.every((e=>!(this.possibleFunctionalCookieItems.includes(e)&&!this.cookieItems[e])));this.buildCheckbox(e.Type.CookieItemType.FUNCTIONAL,this.textElements.get("functional")[this.config.language],null,!1,t,this.textElements.get(e.Type.CookieItemType.FUNCTIONAL)[this.config.language]),this.buildSubItem(e.Type.CookieItemType.FUNCTIONAL)}if(this.config.items.some((e=>this.possibleMarketingCookieItems.includes(e)))){let t=this.config.items.every((e=>!(this.possibleMarketingCookieItems.includes(e)&&!this.cookieItems[e])));this.buildCheckbox(e.Type.CookieItemType.MARKETING,this.textElements.get("marketing")[this.config.language],null,!1,t,this.textElements.get(e.Type.CookieItemType.MARKETING)[this.config.language]),this.buildSubItem(e.Type.CookieItemType.MARKETING)}let n=document.createElement("div");n.classList.add("cookie__buttons","cookie__buttons--inline","form__item-wrapper","form__item-wrapper--100");let s=document.createElement("button");s.className=this.config.buttonSecondary,s.classList.add("cookie__button","cookie__button--default","cookie__button--back","cookie__button--inline"),s.textContent=this.textElements.get("back")[this.config.language],s.addEventListener("click",(()=>{this.showDialog()}));let a=document.createElement("button");a.className=this.config.buttonPrimary,a.classList.add("cookie__button","cookie__button--primary","cookie__button--save","cookie__button--inline"),a.textContent=this.textElements.get("saveSettings")[this.config.language],a.type="submit",this.form.onsubmit=t=>{t.preventDefault();const i={},n=this.form.querySelectorAll("input");n&&n.forEach((e=>{i[e.value]=e.checked})),this.cookieItems={},this.config.items.forEach((e=>{this.cookieItems[e]=this.possibleEssentialCookieItems.includes(e)||i[e]})),this.setCookie(),e.Messaging.publish("cookie-accept"),this.setCookie(),e.Messaging.publish("cookie-accept"),this.modalDialog&&this.modalDialog.remove()},n.appendChild(s),n.appendChild(a),this.formGroup.appendChild(n),this.form.appendChild(this.formGroup),this.modalContent.appendChild(this.form),this.modalHolder.appendChild(this.modalContent),this.modalDialog.appendChild(this.modalHolder),document.body.appendChild(this.modalDialog)}buildHeader(){this.modalDialog=document.createElement("div"),this.modalDialog.classList.add("modal"),this.modalHolder=document.createElement("div"),this.modalHolder.classList.add("modal__holder"),this.modalContent=document.createElement("div"),this.modalContent.classList.add("modal__content","cookie");let e=document.createElement("div"),t=document.createElement("a"),i=document.createElement("img");i.src=this.config.logo,i.alt=this.config.companyName,t.appendChild(i),t.classList.add("cookie__logo"),t.href=this.config.companyUrl,t.title=this.config.companyName,e.appendChild(t),e.classList.add("cookie__header"),this.modalContent.appendChild(e),this.form=document.createElement("form"),this.form.classList.add("form"),this.formGroup=document.createElement("div"),this.formGroup.classList.add("form__group"),this.cookieText=document.createElement("div"),this.cookieText.classList.add("cookie__text","form__item-wrapper","form__item-wrapper--100")}buildSubItem(t){this.config.items.forEach((i=>{switch(i){case e.Type.CookieItemType.SALESFORCE_SALES_CLOUD:t===e.Type.CookieItemType.ESSENTIALS&&this.buildCheckbox(i,"Salesforce Sales Cloud",t,!0,!0);break;case e.Type.CookieItemType.ABLE_CDN:t===e.Type.CookieItemType.ESSENTIALS&&this.buildCheckbox(i,"Content Delivery Network (CDN)",t,!0,!0);break;case e.Type.CookieItemType.ABLE_API:t===e.Type.CookieItemType.ESSENTIALS&&this.buildCheckbox(i,"Application Programming Interface (API)",t,!0,!0);break;case e.Type.CookieItemType.GOOGLE_FONTS:t===e.Type.CookieItemType.ESSENTIALS&&this.buildCheckbox(i,"Google Fonts",t,!0,!0);break;case e.Type.CookieItemType.MAPBOX:t===e.Type.CookieItemType.FUNCTIONAL&&this.buildCheckbox(i,"Mapbox",t,!1,this.cookieItems[i]);break;case e.Type.CookieItemType.PINGDOM:t===e.Type.CookieItemType.FUNCTIONAL&&this.buildCheckbox(i,"Pingdom",t,!1,this.cookieItems[i]);break;case e.Type.CookieItemType.YOUTUBE:t===e.Type.CookieItemType.FUNCTIONAL&&this.buildCheckbox(i,"YouTube",t,!1,this.cookieItems[i]);break;case e.Type.CookieItemType.PODIGEE:t===e.Type.CookieItemType.FUNCTIONAL&&this.buildCheckbox(i,"Podigee",t,!1,this.cookieItems[i]);break;case e.Type.CookieItemType.GOOGLE_ANALYTICS:t===e.Type.CookieItemType.FUNCTIONAL&&this.buildCheckbox(i,"Google Analytics",t,!1,this.cookieItems[i]);break;case e.Type.CookieItemType.GOOGLE_SIGNALS:t===e.Type.CookieItemType.FUNCTIONAL&&this.buildCheckbox(i,"Google Signals",t,!1,this.cookieItems[i]);break;case e.Type.CookieItemType.GOOGLE_ADWORDS:t===e.Type.CookieItemType.MARKETING&&this.buildCheckbox(i,"Google AdWords",t,!1,this.cookieItems[i]);break;case e.Type.CookieItemType.SALESFORCE_MARKETING_CLOUD_ACCOUNT_ENGAGEMENT:t===e.Type.CookieItemType.MARKETING&&this.buildCheckbox(i,"Salesforce Marketing Cloud Account Engagement",t,!1,this.cookieItems[i])}}))}buildCheckbox(t,i,n,s=!1,a=!1,o=""){let r=document.createElement("div");r.classList.add("form__item-wrapper");let l=document.createElement("div"),c=document.createElement("input");c.id="cookie-"+t,c.type="checkbox",c.classList.add("form__field"),c.setAttribute("data-value",t),c.value=t,c.disabled=s,c.checked=a;let d=document.createElement("label");switch(d.innerHTML=i,d.setAttribute("for","cookie-"+t),d.classList.add("form__label"),l.classList.add("form__item","form__item--field","form__item--input","form__item--input-checkbox","form__item--input-checkbox-slider"),l.appendChild(c),l.appendChild(d),r.appendChild(l),t){case e.Type.CookieItemType.ESSENTIALS:case e.Type.CookieItemType.SALESFORCE_SALES_CLOUD:case e.Type.CookieItemType.ABLE_CDN:case e.Type.CookieItemType.ABLE_API:case e.Type.CookieItemType.GOOGLE_FONTS:l.classList.add("form__item--input-checkbox-slider-readonly");break;case e.Type.CookieItemType.ALL:r.classList.add("form__item-wrapper--100"),this.config.items.every((e=>this.possibleEssentialCookieItems.includes(e)))?(l.classList.add("form__item--input-checkbox-slider-readonly"),c.disabled=!0):(l.classList.add("form__item--input-checkbox-slider-halfchecked"),c.addEventListener("change",(t=>{for(let t in e.Type.CookieItemType)if(-1===["ALL",...this.possibleEssentialCookieItems].indexOf(t)){var i=document.getElementById("cookie-"+t);if(i){const e=i.parentNode;e.classList.contains("form__item--input-checkbox-slider-halfchecked")&&e.classList.remove("form__item--input-checkbox-slider-halfchecked"),i.checked=!!c.checked}}})));break;default:if(!n&&[e.Type.CookieItemType.FUNCTIONAL,e.Type.CookieItemType.MARKETING].includes(t)){const i=[];let n=[];switch(t){case e.Type.CookieItemType.FUNCTIONAL:n=this.possibleFunctionalCookieItems;break;case e.Type.CookieItemType.MARKETING:n=this.possibleMarketingCookieItems}n.forEach((e=>{void 0!==this.cookieItems[e]&&i.push(this.cookieItems[e])})),i.length>1&&!i.every((e=>!1===e))&&l.classList.add("form__item--input-checkbox-slider-halfchecked")}c.addEventListener("change",this.changeCheckedState)}if(n){r.classList.add("form__item-wrapper--100"),c.setAttribute("data-parent",n),l.classList.add("form__item--input-checkbox-child");let e=document.createElement("a");e.href=this.config.infoUrls[t]?this.config.infoUrls[t]:this.config.dataProtectionLink,e.target="blank",e.classList.add("cookie__infolink"),l.appendChild(e)}else if(r.classList.add("form__item-wrapper--100"),l.classList.add("form__item--input-checkbox-parent"),o){let e=document.createElement("div");e.innerHTML="<p>"+this.textElements.get(t)[this.config.language]+"</p>",e.classList.add("form__item","form__description","form__description--input-checkbox-slider"),r.appendChild(e)}this.formGroup.appendChild(r)}setCookie(){e.Utility.CookieUtility.write("able_cookie_consent",JSON.stringify(this.cookieItems),365)}static getCookie(){if(e.Utility.CookieUtility.has("able_cookie_consent"))try{const t=JSON.parse(e.Utility.CookieUtility.read("able_cookie_consent")),i=Object.keys(t),n={};return i.forEach((i=>{!(i in e.Type.CookieItemType)||n[i]||!0!==t[i]&&!1!==t[i]||(n[i]=t[i])})),n}catch(e){}return{}}static checkCookieItem(t){const i=e.Controller.AsyncCookieController.getCookie();return void 0!==i[t]&&i[t]}initText(){this.textElements=new Map([["functional",{de:"Funktionell",en:"Functional",fr:"Cookies fonctionnels",es:"Funcionales"}],["marketing",{de:"Marketing",en:"Marketing",fr:"Cookies Marketing",es:"Marketing"}],["essential",{de:"Wesentlich",en:"Essentials",fr:"Cookies strictement nécessaires",es:"Estrictamente necesarias"}],["selectAll",{de:"Alle auswählen",en:"Accept all",fr:"Accepter tous",es:"Aceptar todas"}],["back",{de:"Zurück",en:"Back",fr:"Revenir en arrière",es:"Volver"}],["configure",{de:"Cookie-Einstellungen konfigurieren",en:"Configure cookie settings",fr:"Configurer les paramètres des cookies",es:"Configurar cookies"}],["saveSettings",{de:"Einstellungen speichern",en:"Save settings",fr:"Enregistrer les paramètres",es:"Guardar configuración"}],["acceptCookies",{de:"Cookies akzeptieren",en:"Accept cookies",fr:"Accepter les cookies",es:"Aceptar cookies"}],["essentialCookies",{de:"Essentielle Cookies akzeptieren",en:"Accept essential cookies",fr:"Accepter les cookies strictement nécessaires",es:"Aceptar cookies esenciales"}],["configurationHeadline",{de:"Privatsphären Einstellungen",en:"Privacy settings",fr:"Paramètres de confidentialité",es:"Configuración de privacidad"}],["configurationText",{de:"Dieses Tool ermöglicht es Ihnen, verschiedene Cookie-Kategorien oder Cookies einzelner Anbieter zu aktivieren. Sie können die Einstellungen jederzeit ändern.",en:"This tool allows you to activate various cookie categories or cookies of individual providers. You may change these settings at any time.",fr:"Grâce à cet outil, vous pouvez choisir d’activer certains cookies et types de cookies pour chaque navigateur. À tout moment, vous pouvez modifier ces paramètres",es:"La presente herramienta permite activar cookies de distintas categorías y de proveedores individuales. Esta configuración puede modificarse en todo momento."}],["basicText",{de:`Um unsere Webseiten für Sie optimal zu gestalten und fortlaufend zu verbessern sowie zur interessengerechten Ausspielung von Inhalten, verwenden <strong><a class="cookie__link" href="${this.config.legalNotice}">wir</a></strong> Cookies. Durch Bestätigen des Buttons "Cookies akzeptieren" stimmen Sie der Verwendung zu. Über den Button "Konfigurieren" können Sie auswählen, welche Cookies Sie zulassen wollen. Weitere Informationen erhalten Sie in unserer <strong><a class="cookie__link" href="${this.config.dataProtectionLink}">Datenschutzerklärung</a></strong>.`,en:`<strong><a class="cookie__link" href="${this.config.legalNotice}">We</a></strong> use Cookies to design our web pages optimally for you and to improve them continuously, as well as to display content that matches your interests. By clicking on the button “Accept cookies” you consent to the use of cookies. The button “Configure” allows you to select, which cookies you want to accept. Please refer to our data <strong><a class="cookie__link" href="${this.config.dataProtectionLink}">privacy statement</a></strong> for additional information.`,fr:`<strong><a class="cookie__link" href="${this.config.legalNotice}">Nous</a></strong> utilisons des cookies afin d’optimiser la conception de nos pages web et de les améliorer en permanence, ainsi que pour diffuser des contenus adaptés à vos besoins. En cliquant sur le bouton « Accepter les cookies », vous consentez à leur utilisation. En cliquant sur le bouton « Configurer », vous pouvez choisir les cookies que vous souhaitez autoriser. Vous trouverez de plus amples informations dans notre <strong><a class="cookie__link" href="${this.config.dataProtectionLink}">déclaration de protection des données</a></strong>.`,es:`<strong><a class="cookie__link" href="${this.config.legalNotice}">Utilizamos</a></strong> cookies para diseñar nuestras páginas web de forma óptima para el usuario y mejorarlas continuamente, así como para mostrar contenidos que se ajusten a sus intereses. Al hacer clic en el botón «Aceptar cookies», aceptas el uso de cookies. El botón «Configurar» te permite seleccionar las cookies que quieres aceptar. Si deseas más información, consulta nuestra política <strong><a class="cookie__link" href="${this.config.dataProtectionLink}">política de privacidad</a></strong>.`}],[e.Type.CookieItemType.ESSENTIALS,{de:"Cookies dieser Kategorie sind für die Funktionen der Webseite erforderlich. Sie dienen der sicheren und bestimmungsgemäßen Nutzung sowie zur Speicherung Ihrer Cookie-Einstellungen und sind daher nicht deaktivierbar.",en:"Cookies of this category are necessary for the functions of the web page. They provide for the secure and intended use, as well as the storage of your cookie settings and, for this reason, cannot be deactivated.",fr:"Les cookies de cette catégorie sont nécessaires aux fonctions de la page web. Ils permettent l’utilisation sécurisée et conforme ainsi que le stockage de vos paramètres de cookies. C’est pourquoi ils ne peuvent pas être désactivés.",es:"Las cookies de esta categoría son necesarias para el funcionamiento de nuestro sitio web. Dado que permiten utilizar la página con seguridad conforme a lo previsto y almacenar la configuración de las cookies, no pueden desactivarse."}],[e.Type.CookieItemType.MARKETING,{de:"Marketing-Cookies werden von Partnern gesetzt, die ihren Sitz auch in Nicht-EU-Ländern haben können. Diese Cookies erfassen Informationen, mithilfe derer, die Anzeige personalisierter Werbung oder anderer interessenbasierter Inhalte ermöglicht wird. Diese Partner führen die Informationen unter Umständen mit weiteren Daten zusammen.",en:"Marketing Cookies are set by partners, which may also have their registered offices in Non-EU countries. These cookies collect information based on which presentation of personalized advertising or other Internet-based content is possible. These partners may match this information with other, additional data.",fr:"Les cookies de marketing sont mis en place par des partenaires, qui peuvent également avoir leur siège social dans des pays non membres de l’UE. Ces cookies collectent des informations afin de permettre la présentation de publicités personnalisées ou d’autres contenus basés sur Internet. Ces partenaires peuvent associer ces informations à d’autres données supplémentaires.",es:"Las cookies de marketing son generadas por sitios asociados, cuya sede puede encontrarse en países no pertenecientes a la UE. Estas cookies recopilan información que permite ofrecer publicidad personalizada u otro contenido de Internet. Los socios pueden comparar la información con otros datos adicionales."}],[e.Type.CookieItemType.FUNCTIONAL,{de:"Cookies dieser Kategorie ermöglichen es uns, nützliche Funktionen bereitzustellen (u. a. Einstellung der Sprache, nach Anmeldung während des Besuchs der Website angemeldet zu bleiben), die Nutzung der Website anonym zu analysieren und die Leistung zu messen. Das Deaktivieren dieser Cookies kann zu einem langsameren Seitenaufbau führen.",en:"Cookies of this category allow us to make useful functions available (a. o. setting of language, staying logged in after registration during your visit), to analyse use of the website in an anonymous manner and to measure performance. Deactivation of these cookies may result in a slower web page response times.",fr:"Les cookies de cette catégorie nous permettent de mettre à disposition des fonctions utiles (entre autres, le réglage de la langue, le maintien de la connexion après l’enregistrement pendant votre visite), d’analyser l’utilisation du site Web de manière anonyme et de mesurer les performances. La désactivation de ces cookies peut entraîner un ralentissement des temps de réponse des pages Web.",es:"Las cookies de esta categoría nos permiten proporcionar funciones útiles (como configurar el idioma o permanecer en la sesión durante la visita tras registrarse), analizar el uso del sitio web de forma anónima o medir el rendimiento. La desactivación de estas cookies puede dar lugar a unos tiempos de respuesta de la página web más lentos."}]])}}t.AsyncCookieController=i}(t=e.Controller||(e.Controller={}))}(Gram||(Gram={})),function(e){let t;!function(t){e.debugStart("Tracking Config");let i,n,s=e.Controller.PingdomController.getInstance();"undefined"!=typeof pingdomId&&s.setTrackingId(pingdomId),s.setCookie(e.Controller.AsyncCookieController.checkCookieItem(e.Type.CookieItemType.PINGDOM)),typo3JsSettings.page.isLayer?e.TYPO3.GaTracking=new e.Controller.Tracking.GoogleAnalyticsTracking(trackingId,"",!1,!0,!0):e.TYPO3.GaTracking=new e.Controller.Tracking.GoogleAnalyticsTracking(trackingId),s.load(),e.debugEnd("Tracking Config"),e.debugStart("Translate"),e.Translation.addTranslations(window.TYPO3.lang),e.debugEnd("Translate"),e.debug("defining global vars"),e.Messaging.Event.register(window,"resize","WebsiteResize",!0),e.Config.add("page",e.TYPO3.GlobalSettings.page),"undefined"!=typeof typo3JsSettings&&typo3JsSettings.hasOwnProperty("page")&&(e.Config.set("page",typo3JsSettings.page),delete typo3JsSettings.page),e.Localization.addSupportedLanguages(availableLanguages),availableLanguages.indexOf(pageLanguage)>=0&&void 0!==e["defaultTranslations"+pageLanguage.toUpperCase()]&&e.Localization.add(pageLanguage,e["defaultTranslations"+pageLanguage.toUpperCase()]),e.Localization.setWebsiteLanguage(pageLanguage),e.Messaging.subscribe("cssloaded",(function(){0==e.TYPO3.Utility.ImageUtility.initialized&&e.TYPO3.Utility.ImageUtility.initResponsive()}),!0),e.Messaging.subscribe("layer-content-render-images",(t=>{e.TYPO3.Utility.ImageUtility.initResponsive(),e.TYPO3.Utility.ImageUtility.scrollReload()})),e.Messaging.subscribe("initialize",(function(){if(e.debugStart("Running TYPO3"),void 0!==e.TYPO3.OverrideGlobalSettings)for(let t in e.TYPO3.OverrideGlobalSettings)e.Config.set(t,e.TYPO3.OverrideGlobalSettings[t]);"undefined"!=typeof typo3JsSettings&&(e.debugStart("Config"),e.debug("adding typo3 flexform settings to gram config"),e.Utility.ObjectUtility.walk(typo3JsSettings,((t,i)=>{e.Utility.ObjectUtility.walk(t,((t,n)=>{e.debug("adding config for extension "+i+" for content element "+n+" with key "+i+"#"+n,t),e.Config.add(i+"#"+n,t)}))})),e.debugEnd("Config")),e.debug("checking for classes to call"),"undefined"!=typeof classCalls&&classCalls.map((t=>{let i=t.classArguments;i.unshift(t.className),e.Utility.HelperUtility.makeInstance.apply(e.Utility.HelperUtility.makeInstance,i)})),e.debug("checking js menu calls"),e.TYPO3.createJsPageLinks(e.Utility.DocumentUtility.get('a[data-target="jscall"]'));let t="desktop";!0===e.Utility.HelperUtility.isMobile()&&(t="mobile"),document.body.addClass("page--"+t),e.TYPO3.setDevice(),e.Messaging.subscribe("WebsiteResize",e.TYPO3.setDevice),e.TYPO3.setScrollbarWidth(),e.Messaging.subscribe("WebsiteResize",e.TYPO3.setScrollbarWidth),e.Messaging.subscribe("devicechange",e.TYPO3.Utility.ImageUtility.deviceChange),window.addEventListener("load",(()=>{e.TYPO3.Utility.ImageUtility.scrollReload(),void 0===window.cssloaded&&e.Messaging.publish("cssloaded")})),e.debugEnd("Running TYPO3"),e.Messaging.publish("TYPO3Ready")})),t.setDevice=function(){let t,i=screen.width,n=screen.width>screen.height?"landscape":"portrait",s=e.Config.get("page","devices");for(let e in s)s[e]>0&&i>=s[e]&&(t=e);e.TYPO3.device||e.Messaging.publish("deviceinit",t),e.TYPO3.device&&e.TYPO3.device!=t&&(e.TYPO3.device=t,e.Messaging.publish("devicechange",t)),e.TYPO3.orientation&&e.TYPO3.orientation!=n&&(e.TYPO3.orientation=n,e.Messaging.publish("orientationchange",n)),e.TYPO3.device=t,e.TYPO3.orientation=n},t.setScrollbarWidth=function(){const e=document.createElement("div");e.style.visibility="hidden",e.style.overflow="scroll",document.body.appendChild(e);const t=document.createElement("div");e.appendChild(t);const i=e.offsetWidth-t.offsetWidth;e.parentNode.removeChild(e),document.documentElement.style.setProperty("--scrollbar-width",i+"px")},t.link=function(t,i){let n=e.Utility.HelperUtility.getEventTarget(t).nodeName;"A"!=n&&"BUTTON"!=n&&i.hasAttribute("data-link")&&(i.hasAttribute("data-target")&&"_blank"==i.getAttribute("data-target")?window.open(i.getAttribute("data-link"),"_blank"):location.href=i.getAttribute("data-link"))},e.Messaging.subscribe("layer-close-before-hook",(e=>{n&&(n.dataset.status=""),n=null,i=null}));let a=!1;t.showContent=function(t){let s=e.Utility.HelperUtility.getEventTarget(t);"A"!=s.nodeName&&(s=s.closest("a.page-navi__link"));let o=s.parentNode.parentNode;if(!o.hasClass("disabled"))if(o.addClass("disabled"),setTimeout((()=>{o.removeClass("disabled")}),600),n&&n!=s&&(n.dataset.status=""),void 0===s.dataset.status||""==s.dataset.status){i?i.removeContent():(e.Messaging.publish("close-recruiting-searchbox"),e.Messaging.publish("close-layer","side-navigation"),i=new e.Controller.LayerControllerV2({layerElementClassModifier:["html-content"],layerUsage:"side-navigation",showCloseButton:!1})),s.dataset.status="active";let t="undefined"!=typeof wsPreview&&""!=wsPreview?"&ADMCMD_prev="+wsPreview:"",o=s.dataset.url+"?type=24818"+t;if(i.addOwner(o),a)a=!1,i&&i.getOwner()===o&&i.addContent(document.getElementById("languagemenu").innerHTML);else{new e.Controller.RequestController(o).get().then((t=>{""==t.content&&(t.content=e.TYPO3.getStatusMessage(204)),e.Messaging.getSubscriptions("Hook:CoreLayerContent").forEach((e=>{let i={content:t.content,caller:s};t.content=e.callback(i)})),i&&i.getOwner()===o&&i.addContent(t.content)})).catch((()=>{i&&i.addContent(e.TYPO3.getStatusMessage(404))}))}n=s}else"active"==s.dataset.status&&(a=!1,n=s,e.TYPO3.closeLayer())},t.showMenuLanguage=function(t){a=!0,e.TYPO3.showContent(t)},t.closeLayer=function(){i&&n&&(n.dataset.status="",e.Messaging.publish("close-layer",""),n=null,i=null)},t.getStatusMessage=function(t,i="info"){let n='<div class="ce ce--default-width ce-message ce-message--default-width">';return n+='<div class="html_message html_message--'+i+' html_message--nolink">',n+='<span class="html_message__headline html_message__headline--'+i+' html_message__headline--nolink">'+e.Localization.translate("http.status."+t+".status")+"</span>",n+='<span class="html_message__message html_message__message--'+i+' html_message__message--nolink"><p>'+e.Localization.translate("http.status."+t+".message")+"</p></span>",n+="</div>",n+="</div>",n},t.createJsPageLinks=function(t){t.forEach((t=>{let i=!0;""==t.dataset.func&&(i=!1,e.log("no function call defined for jscall alias: "+t.dataset.alias,"warning")),0==e.Utility.HelperUtility.namespaceCallAvailable(t.dataset.func)&&(i=!1,e.log('function "'+t.dataset.func+'" for alias "'+t.dataset.alias+'" not available',"warning")),1==i&&(t.onclick=i=>{e.Utility.HelperUtility.preventDefault(i),e.Utility.HelperUtility.stringToCallable(t.dataset.func)(i)})}))},t.scrollToContentElement=function(t){e.Utility.HelperUtility.preventDefault(t);let i=e.Utility.HelperUtility.getEventTarget(t);if(i){let t=i.getAttribute("href").split("#")[1],n=e.Utility.DocumentUtility.get("#"+t)[0],s=n?Math.floor(n.getBoundingClientRect().top):0,a=n?n.closest("main"):null;a&&(s-=a.getBoundingClientRect().top),window.scroll({top:s,behavior:"smooth"})}},t.template=(t,i={})=>{try{return Object.keys(i).forEach((e=>{t=t.replace("{{"+e+"}}",i[e])})),t}catch(t){return e.exception("Template error: "+t),""}}}(t=e.TYPO3||(e.TYPO3={}))}(Gram||(Gram={}));"use strict";!function(e){let t;!function(e){e.ComponentAbstract=class{constructor(e,t,i){this.searchService=e,this.baseUrl=t,this.mainContainerId=i}render(e,t="",i="",a=""){let n=document.createElement("div");t&&(n.innerHTML=t),i&&n.classList.add(i),a&&(n.id=a),e.appendChild(n)}}}(t=e.Abstract||(e.Abstract={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(e){e.EntryAbstract=class{constructor(e){this.ga4TrackingAffiliation="offer_search",this.id=0,this.description="",this.url="",this.detailData=null,this.settings=e,this.resultList=[]}getHtmlErrorContent(){return Gram.Translation.getValue("recruiting.entry.notavailable")}getMail(){return this.detailData.sanspemail?this.detailData.sanspemail:this.detailData.semail}getHash(){return(+new Date).toString(36)}setDetailData(e){this.detailData=e}getResultList(){return this.resultList}setResultList(e){this.resultList=e}addResult(e){this.resultList.push(e)}ga4TrackingOfferView(){let e=[],t=3==this.detailData.typeId?75:100,i={item_id:this.detailData.njobid,item_name:this.detailData.numberPure+" "+this.detailData.sjobbez,affiliation:this.ga4TrackingAffiliation,item_brand:this.detailData.nniederlassungid,item_category:this.detailData.neinsatzfachbereichset,item_category2:this.detailData.nzielgruppeset,item_variant:this.detailData.inhouseRecruiting?"job_ihr":3==this.detailData.typeId?"job":"project",price:t,quantity:1};this.detailData.staffResponsibilityId&&Object.assign(i,{item_category3:this.detailData.staffResponsibilityId}),this.detailData.workplacetypeId&&Object.assign(i,{item_category4:this.detailData.workplacetypeId}),this.detailData.jobtypeId&&Object.assign(i,{item_category6:this.detailData.jobtypeId}),this.detailData.annualSalaryMinimum&&(Object.assign(i,{salary_period:this.detailData.annualSalaryPeriod}),Object.assign(i,{salary_currency:this.detailData.annualSalaryCurrency}),Object.assign(i,{salary_minimum:this.detailData.annualSalaryMinimum}),Object.assign(i,{salary_maximum:this.detailData.annualSalaryMaximum}));for(let e=0;e<this.getResultList().length;e++)if(this.getResultList()[e].id===this.detailData.njobid){let t=e+1;if(Object.assign(i,{index:t}),this.settings.paginationDirection){let e="next"==this.settings.paginationDirection?t-1:t+1;Object.assign(i,{item_category5:"from="+e+";to="+t+";of="+this.getResultList().length+";type="+this.settings.pointerType+";direction="+this.settings.paginationDirection+";"})}break}e.push(i),Gram.Controller.Tracking.GoogleAnalyticsTracking.getInstance().offerView("EUR",t,e)}ga4TrackingOfferButtonApply(e){let t=[],i=3==this.detailData.typeId?75:100,a={item_id:this.detailData.njobid,item_name:this.detailData.numberPure+" "+this.detailData.sjobbez,affiliation:this.ga4TrackingAffiliation,item_brand:this.detailData.nniederlassungid,item_category:this.detailData.neinsatzfachbereichset,item_category2:this.detailData.nzielgruppeset,item_variant:this.detailData.inhouseRecruiting?"job_ihr":3==this.detailData.typeId?"job":"project",price:i,quantity:1};this.detailData.staffResponsibilityId&&Object.assign(a,{item_category3:this.detailData.staffResponsibilityId}),this.detailData.workplacetypeId&&Object.assign(a,{item_category4:this.detailData.workplacetypeId}),this.detailData.jobtypeId&&Object.assign(a,{item_category6:this.detailData.jobtypeId}),this.detailData.annualSalaryMinimum&&(Object.assign(a,{salary_period:this.detailData.annualSalaryPeriod}),Object.assign(a,{salary_currency:this.detailData.annualSalaryCurrency}),Object.assign(a,{salary_minimum:this.detailData.annualSalaryMinimum}),Object.assign(a,{salary_maximum:this.detailData.annualSalaryMaximum}));for(let e=0;e<this.getResultList().length;e++)if(this.getResultList()[e].id===this.detailData.njobid){Object.assign(a,{index:e+1});break}t.push(a),Gram.Controller.Tracking.GoogleAnalyticsTracking.getInstance().offerButtonApply("EUR",i,t,e)}setGa4TrackingAffiliation(e){this.ga4TrackingAffiliation=e}getUTMParameters(){const e=new URLSearchParams(window.location.search),t=[];for(const[i,a]of e)switch(i){case"utm_source":t.push("utm_source="+a);break;case"utm_medium":t.push("utm_medium="+a);break;case"utm_campaign":t.push("utm_campaign="+a);break;case"utm_term":t.push("utm_term="+a);break;case"utm_content":t.push("utm_content="+a)}return t.join("&")}}}(t=e.Abstract||(e.Abstract={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(t){class i extends e.Abstract.ComponentAbstract{constructor(e,t,i,a){super(e,t,a),this.registerEvents(),this.settings=i}registerEvents(){Gram.Messaging.subscribe("recruiting-action-rendering-complete-"+this.mainContainerId,(()=>{let e=document.getElementById("allfreelance-button-"+this.mainContainerId);e.href=this.settings.freelanceUrls.main;let t="";if(!this.settings.location||"0"!==this.settings.location){let i=new Gram.Controller.RequestController(this.baseUrl+"/data/branches/1/"+this.settings.location);i.setParameter("type","1,2,3,4"),i.setParameter("extended","true"),i.get().then((i=>{i&&i[0]&&(t=Gram.Translation.getValue("recruiting.allfreelance.city",new Map([["city",i[0].city]])),e.innerHTML=t,e.title=Gram.Translation.getValue("recruiting.allfreelance.city.title"),e.href=this.settings.freelanceUrls.main+"?city="+encodeURI(i[0].city)+";"+i[0].latitude+";"+i[0].longitude)}))}}),!0)}}t.AllFreelanceComponent=i}(t=e.Components||(e.Components={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(t){class i extends e.Abstract.ComponentAbstract{constructor(e,t,i,a){super(e,t,a),this.parameters=["range","targetgroup","types","radius","staffResponsibilities","jobtypes","workplacetypes"],this.switchFilterRadius=e=>{let t=e.checked?parseInt(e.getAttribute("data-id")):0,i=document.querySelectorAll("#"+this.mainContainerId+" #recruiting-filter-radius input");return document.getElementById("search-recruiting-radius-"+this.mainContainerId).value=e.checked?e.value:this.settings.query.defaultRadius,i.forEach((t=>{e!==t&&t.checked&&(t.checked=!1)})),this.updateCounter(),t},this.switchFilter=e=>{var t=new Map;return document.querySelectorAll("#"+this.mainContainerId+" #recruiting-filter-"+e+" input").forEach((e=>{let i=e.getAttribute("data-id"),a=e.getAttribute("data-name");e.checked&&i&&a&&t.set(i,a)})),this.updateCounter(),t},this.registerEvents(),this.settings=i}registerEvents(){Gram.Messaging.subscribe("recruiting-filter-rendering-complete-"+this.mainContainerId,(()=>{if(this.parameters.forEach((e=>{let t="",i="";switch(e){case"range":t=this.baseUrl+"/recruiting/ranges?faculties=true",i=this.settings.query.faculty?this.settings.query.faculty:"";break;case"targetgroup":t=this.baseUrl+"/recruiting/targetgroups",i=this.settings.query.target?this.settings.query.target:"";break;case"types":t=this.baseUrl+"/recruiting/types",i=this.settings.query.type?this.settings.query.type:"";break;case"radius":i=this.settings.query.radius?this.settings.query.radius:"";break;case"staffResponsibilities":t=this.baseUrl+"/recruiting/staffresponsibilities",i=this.settings.query.staffResponsibility?this.settings.query.staffResponsibility:"";break;case"jobtypes":t=this.baseUrl+"/recruiting/jobtypes",i=this.settings.query.jobtype?this.settings.query.jobtype:"";break;case"workplacetypes":t=this.baseUrl+"/recruiting/workplacetypes",i=this.settings.query.workplacetype?this.settings.query.workplacetype:""}if(this.settings.targetgroupsFilter&&this.settings.facultiesFilter.length>0&&"targetgroup"===e)this.buildFilter("targetgroup",this.settings.targetgroupsFilter,i);else if(this.settings.facultiesFilter&&this.settings.facultiesFilter.length>0&&"range"===e)this.buildFilter("range",this.settings.facultiesFilter,i);else if(this.settings.typesFilter&&this.settings.typesFilter.length>0&&"types"===e)this.buildFilter("types",this.settings.typesFilter,i);else if(this.settings.radiiFilter&&this.settings.radiiFilter.length>0&&"radius"===e)this.buildFilter("radius",this.settings.radiiFilter,i);else if(this.settings.staffResponsibilitiesFilter&&this.settings.staffResponsibilitiesFilter.length>0&&"staffResponsibilities"===e)this.buildFilter("staffResponsibilities",this.settings.staffResponsibilitiesFilter,i);else if(this.settings.jobtypesFilter&&this.settings.jobtypesFilter.length>0&&"jobtypes"===e)this.buildFilter("jobtypes",this.settings.jobtypesFilter,i);else if(this.settings.workplacetypesFilter&&this.settings.workplacetypesFilter.length>0&&"workplacetypes"===e)this.buildFilter("workplacetypes",this.settings.workplacetypesFilter,i);else{new Gram.Controller.RequestController(t).get().then((t=>{this.buildFilter(e,t,i)}))}})),Gram.Messaging.subscribe("recruiting-new-counts-"+this.mainContainerId,(e=>{const t=document.querySelector("#"+this.mainContainerId+" .recruiting__tabelement--radius");t&&(e.radius?t.style.display="block":t.style.display="none"),this.parameters.forEach((t=>{var i,a,n,s,r,l;for(let c in e[t]){const o=document.querySelector("#"+this.mainContainerId+" #"+this.mainContainerId+t+c);o&&(o.setAttribute("data-value",null!==(i=e[t][c])&&void 0!==i?i:"0"),o.disabled="0"===o.getAttribute("data-value")&&!o.checked,o.disabled?null===(a=o.parentElement)||void 0===a||a.addClass("form__item--input-checkbox-disabled"):null===(n=o.parentElement)||void 0===n||n.removeClass("form__item--input-checkbox-disabled"),o.checked?null===(s=o.parentElement)||void 0===s||s.addClass("form__item--input-checkbox-checked"):null===(r=o.parentElement)||void 0===r||r.removeClass("form__item--input-checkbox-checked"));const u=document.querySelector("#"+this.mainContainerId+" #counter"+t+c);u&&(u.innerHTML=null!==(l=e[t][c])&&void 0!==l?l:"0")}}))}),!1),""==this.settings.filterPosition||"bottom-sticky"==this.settings.filterPosition){window.addEventListener("scroll",(()=>{this.filterDown(),this.correctPositionForFilter()})),new ResizeObserver((()=>{this.correctPositionForFilter()})).observe(document.documentElement),Gram.Messaging.subscribe("recruiting-update-reload-"+this.mainContainerId,(()=>{this.correctPositionForFilter()}),!1),Gram.Messaging.subscribe("recruiting-popstate-event-"+this.mainContainerId,(()=>{this.correctPositionForFilter()}),!1);let e=document.querySelector("#"+this.mainContainerId+" #recruiting-filter-tab");e&&e.addEventListener("click",(()=>{this.filterToggle()})),Gram.Messaging.subscribe("open-recruiting-filter-"+this.mainContainerId,(()=>{this.filterToggle()}))}}),!0)}buildFilter(e,t,i){let a=document.querySelector("#"+this.mainContainerId+" #recruiting-filter-list-"+e);if(a){switch(e){case"targetgroup":t.forEach((t=>{let n=!!(i&&i.length>0)&&i.split(",").indexOf(t.nzielgruppeid.toString())>-1,s=this.createLiElement(t.szielgruppebez,t.nzielgruppeid,n,e);a.appendChild(s)}));break;case"range":t.forEach((t=>{if(t.faculties.length>0&&"TECHNIK"===t.seinsatzbereichnr)t.faculties.forEach((n=>{const s=this.generateFilterValue(t.neinsatzbereichid,n.nfachbereichid);let r=i.length>0&&i.split(",").indexOf(s.toString())>-1,l=this.createLiElement(n.sfachbereichbez,s,r,e);a.appendChild(l)}));else{const n=this.generateFilterValue(t.neinsatzbereichid,0);let s=i.length>0&&i.split(",").indexOf(n.toString())>-1,r=this.createLiElement(t.seinsatzbereichbez,n,s,e);a.appendChild(r)}}));break;case"types":t.forEach((t=>{let n=!!(i&&i.length>0)&&i.split(",").indexOf(t.id.toString())>-1,s=t.name;switch(s){case"Job":s="Jobs";break;case"Projekt":s="Projekte";break;case"Project":s="Projects"}let r=this.createLiElement(s,t.id,n,e);a.appendChild(r)}));break;case"radius":t.forEach((t=>{let n=!!(i&&i.length>0)&&i==t.toString(),s=this.createLiElement(t.toString()+"km",t,n,e);a.appendChild(s)}));break;case"staffResponsibilities":t.forEach((t=>{let n=!!(i&&i.length>0)&&i.split(",").indexOf(t.id.toString())>-1,s=this.createLiElement(t.name,t.id,n,e);a.appendChild(s)}));break;case"jobtypes":t.forEach((t=>{let n=!!(i&&i.length>0)&&i.split(",").indexOf(t.id.toString())>-1,s=this.createLiElement(t.name,t.id,n,e);a.appendChild(s)}));break;case"workplacetypes":t.forEach((t=>{let n=!!(i&&i.length>0)&&i.split(",").indexOf(t.id.toString())>-1,s=this.createLiElement(t.name,t.id,n,e);a.appendChild(s)}))}this.updateCounter()}}correctPositionForFilter(){let e=document.querySelector("#"+this.mainContainerId+" #filter-container"),t=document.querySelector("#"+this.mainContainerId+" #filter-tab-container"),i=document.querySelector("#"+this.mainContainerId+" #recruiting-filter-tab"),a=document.getElementById(this.mainContainerId),n=document.querySelector("#ferchauHeader"),s=document.querySelector("#"+this.mainContainerId+" #recruiting"),r=e.classList.contains("recruiting__filter--bottom")?e.getBoundingClientRect().height:0,l=0;window.innerWidth<767&&n&&(l=n.offsetHeight),document.body.offsetHeight+window.scrollY+r>a.getBoundingClientRect().height+a.offsetTop+l?(e.classList.add("recruiting__filter--bottom"),e.style.marginRight="-"+window.getComputedStyle(a).paddingLeft,e.style.marginLeft="-"+window.getComputedStyle(a).paddingLeft,t.classList.remove("recruiting__tab-container--hide"),t.classList.add("recruiting__tab-container--hide-animation"),e.style.bottom=i.getBoundingClientRect().height+4+"px",s.style.marginBottom=-(i.getBoundingClientRect().height+4)+"px"):(e.style.bottom=l+"px",s.style.marginBottom="0px",e.classList.contains("recruiting__filter--bottom")&&(e.classList.remove("recruiting__filter--bottom"),t.classList.add("recruiting__tab-container--hide"),t.classList.add("recruiting__tab-container--hide-animation"),e.style.marginRight="",e.style.marginLeft=""))}filterToggle(){let e=document.querySelector("#"+this.mainContainerId+" #filter-container"),t=document.querySelector("#"+this.mainContainerId+" #filter-tab-container");t.classList.remove("recruiting__tab-container--hide-animation"),e.classList.contains("recruiting__filter--bottom")?e.scrollIntoView({block:"end",behavior:"smooth"}):t.classList.toggle("recruiting__tab-container--hide")}filterDown(){let e=document.querySelector("#"+this.mainContainerId+" #filter-tab-container");e.classList.remove("recruiting__tab-container--hide-animation"),e.classList.add("recruiting__tab-container--hide")}createLiElement(e,t,i,a){let n=document.createElement("div");n.classList.add("form__item-wrapper");let s=document.createElement("div");s.classList.add("form__item","form__item--field","form__item--input","form__item--input-checkbox","form__item--input-checkbox-button-outline","form__item--input-checkbox-button-outline-value","form__item--input-checkbox-value");let r=document.createElement("input");r.classList.add("form__field"),r.type="checkbox",r.value=t.toString(),r.checked=i,r.setAttribute("data-name",e),r.setAttribute("data-id",t.toString()),r.setAttribute("data-value","0"),r.id=this.mainContainerId+a+t;let l=document.createElement("label");l.classList.add("form__label"),l.setAttribute("for",this.mainContainerId+a+t);let c=document.createElement("span");c.classList.add("form__label-text-wrapper");let o=document.createElement("span");o.classList.add("form__label-text"),o.innerText=e;let u=document.createElement("span");return u.classList.add("form__label-counter"),u.id="counter"+a+t,u.innerHTML="0",c.appendChild(o),l.appendChild(c),"Planting"==this.settings.company&&"V3"==this.settings.version?l.appendChild(u):s.appendChild(u),s.appendChild(r),s.appendChild(l),n.appendChild(s),r.onchange=()=>{let e=new Map,t=0;switch("radius"==a?t=this.switchFilterRadius(r):e=this.switchFilter(a),a){case"targetgroup":this.searchService.setTargetgroup(e);break;case"range":this.searchService.setRange(e);break;case"types":this.searchService.setType(e);break;case"radius":this.searchService.setRadius(t);break;case"staffResponsibilities":this.searchService.setStaffresponsibility(e);break;case"jobtypes":this.searchService.setJobtype(e);break;case"workplacetypes":this.searchService.setWorkplacetype(e)}this.searchService.search(!0)},n}updateCounter(){let e=document.querySelectorAll("#"+this.mainContainerId+" .recruiting__tab-containerwrap input[type=checkbox]:checked"),t=document.querySelector("#"+this.mainContainerId+" #recruiting-filter-counter");t&&(t.setAttribute("data-value",e.length.toString()),t.innerHTML=e.length.toString())}generateFilterValue(e,t){return 1e3*e+t}}t.FilterComponent=i}(t=e.Components||(e.Components={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(t){class i extends e.Abstract.ComponentAbstract{constructor(e,t,i){super(e,t,i),this.registerEvents()}registerEvents(){Gram.Messaging.subscribe("recruiting-action-rendering-complete-"+this.mainContainerId,(()=>{let e=document.querySelector("#"+this.mainContainerId+" #recruiting-initiative-link");e.href=this.baseUrl,1==Gram.Controller.Tracking.GoogleAnalyticsTracking.getInstance().isTrackingAllowed()&&e.addEventListener("click",(t=>{t.preventDefault();let i=!1,a=()=>{!i&&e.href&&(i=!0,window.open(e.href,"_blank"==e.target?"_blank":"_self"))};this.ga4TrackingOfferButtonApply(a),setTimeout(a,3e3)}))}),!0)}ga4TrackingOfferButtonApply(e){let t=[],i=this.searchService.settings.company;switch(i){case"Planting":i="planting";break;case"Ablegroup":i="ams";break;case"Ferchau":i="ferchau","at"==this.searchService.settings.prioTargetmarket?i="initiative_ferchau_austria":"fr"==this.searchService.settings.prioTargetmarket?i="initiative_ferchau_france":"es"==this.searchService.settings.prioTargetmarket?i="initiative_ferchau_spain":"pl"==this.searchService.settings.prioTargetmarket&&(i="initiative_ferchau_poland")}let a=this.searchService.settings.location,n="offer_search";"0"!=a&&(n="branch_"+a);let s={item_id:"initiative_"+i,item_name:"initiative_"+i,affiliation:n,item_brand:a,price:50,quantity:1};t.push(s),Gram.Controller.Tracking.GoogleAnalyticsTracking.getInstance().offerButtonApply("EUR",50,t,e)}}t.InitiativeComponent=i}(t=e.Components||(e.Components={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(t){class i extends e.Abstract.ComponentAbstract{constructor(t,i,a,n){switch(super(t,i,n),this.firstJobDetailCall=!0,this.ga4TrackingAffiliation="offer_search",this.layerUsage="recruiting-"+n.substring(1),this.layerController=null,this.listContainer=null,history.state||history.replaceState({layerUsage:this.layerUsage},"",window.location.href),this.registerEvents(),this.settings=a,a.company){case"Ferchau":this.entry=new e.FerchauEntry(a);break;case"Planting":this.entry=new e.PlantingEntryV3(a);break;default:this.entry=new e.AbleEntry(a)}this.settings.entryId>0&&this.settings.metadata?this.createLayerController(this.settings.entryId,""):this.settings.entryId>0&&!this.settings.metadata&&Gram.Controller.NotifyController.message(Gram.Type.NotifyMessageType.INFO,Gram.Translation.getValue("recruiting.no"+("4"===this.settings.type?"projects":"jobs")+".title"),Gram.Translation.getValue("recruiting.nojobs.text"),1e4,1)}registerEvents(){Gram.Messaging.Event.register(window,"popstate","recruiting-popstate-event-"+this.mainContainerId,!1),Gram.Messaging.subscribe("recruiting-popstate-event-"+this.mainContainerId,(e=>{this.popstateAction(e)})),Gram.Messaging.subscribe("recruiting-list-rendering-complete-"+this.mainContainerId,(()=>{this.listContainer=document.querySelector("#"+this.mainContainerId+" #list-container"),Gram.Messaging.subscribe("recruiting-update-list-"+this.mainContainerId,(e=>{this.listItems(e.response,e.clear),this.ga4Tracking(e.response)}),!1),this.settings.entryId>0&&!this.settings.metadata&&Gram.Controller.NotifyController.message(Gram.Type.NotifyMessageType.INFO,Gram.Translation.getValue("recruiting.sitenotavailable.title"),Gram.Translation.getValue("recruiting.sitenotavailable.text"),1e4,1)}),!0),Gram.Messaging.subscribe("layer-close-before-hook",(e=>{if(this.layerController=null,!e.event.target.attributes["data-layer-popstate"]&&e.layerUsage==this.layerUsage){let e=this.settings.messemodus?"?messemodus="+this.settings.messemodus+"&"+this.settings.utm:"";history.pushState({layerUsage:this.layerUsage},"",this.settings.pluginUri+e)}}))}listItems(e,t){if(t&&this.entry.setResultList([]),e.matches&&e.matches.length>0)"4"===this.settings.type&&"Ferchau"==this.settings.company&&this.listContainer.appendChild(this.createListHeaderProject()),e.matches.forEach((e=>{let t=4===e.typeId&&"Ferchau"==this.settings.company?this.createListItemProject(e):this.createListItemJob(e);this.listContainer.appendChild(t);let i=this.settings.messemodus?"?messemodus="+this.settings.messemodus+"&"+this.settings.utm:"";this.entry.addResult({id:e.njobid,url:this.settings.maincareer+"/"+e.njobid+"/"+e.urlpart+i,titleshort:e.sjobbez})}));else{let e=document.createElement("span");e.className="recruitinglist__empty";let t='<div class="ce ce--default-width ce-message ce-message--default-width">';t+='<div class="html_message html_message--info html_message--nolink"><span class="html_message__headline html_message__headline--info html_message__headline--nolink">'+Gram.Translation.getValue("recruiting.no"+("4"===this.settings.type?"projects":"jobs")+".title")+'</span><span class="html_message__message html_message__message--info html_message__message--nolink">',-1!==this.settings.listComponents.split(",").indexOf("search")&&(t+="<p>"+Gram.Translation.getValue("recruiting.nojobs.text")+"</p>"),t+="</span></div></div>",e.innerHTML=t,this.listContainer.parentNode&&this.listContainer.parentNode.insertBefore(e,this.listContainer.nextSibling)}Gram.Messaging.publish("recruiting-list-items-add-end")}popstateAction(e){if(e.state&&e.state.layerUsage==this.layerUsage){let e=window.location.pathname.split("/"),t=null;e&&e.length-2>=0&&(t=parseInt(e[e.length-2])),t?this.createLayerController(t,""):Gram.Messaging.publish("close-layer","popstateAction")}}createLayerController(e,t){if(this.layerController?(Gram.Messaging.publish("recruiting-layer-content-before-remove"),this.layerController.removeContent()):(Gram.Messaging.publish("close-layer","recruiting"),this.layerController=new Gram.Controller.LayerControllerV2({layerElementClassModifier:["recruiting"],layerUsage:this.layerUsage}),Gram.Messaging.subscribe("layer-entry-click-event-"+this.layerUsage,(e=>{this.itemNavigationClickAction(e)}))),this.settings.recruitingDetailData&&this.firstJobDetailCall){if(this.firstJobDetailCall=!1,this.entry.setGa4TrackingAffiliation(this.ga4TrackingAffiliation),this.entry.directCall(this.settings.recruitingDetailData),this.layerController){if(this.layerController.removeContent(),this.layerController.addContent(this.entry.getHtmlContent()),this.entry.getResultList().length>0){let t=null,i=null;for(let a=0;a<this.entry.getResultList().length;a++){if(this.entry.getResultList()[a].id===e){a!==this.entry.getResultList().length&&(i=this.entry.getResultList()[a+1]);break}t=this.entry.getResultList()[a]}this.layerController.setPrevButton(t),this.layerController.setNextButton(i)}Gram.Messaging.publish("recruiting-layer-content-loaded",e)}}else this.entry.setGa4TrackingAffiliation(this.ga4TrackingAffiliation),this.entry.fetch(e).then((t=>{if(this.layerController){if(this.layerController.removeContent(),this.layerController.addContent(this.entry.getHtmlContent()),this.entry.getResultList().length>0){let e=null,i=null;for(let a=0;a<this.entry.getResultList().length;a++){if(this.entry.getResultList()[a].id===t.njobid){a!==this.entry.getResultList().length&&(i=this.entry.getResultList()[a+1]);break}e=this.entry.getResultList()[a]}this.layerController.setPrevButton(e),this.layerController.setNextButton(i)}Gram.Messaging.publish("recruiting-layer-content-loaded",e)}}));t&&history.pushState({layerUsage:this.layerUsage},"",t)}itemNavigationClickAction(e){var t;e.preventDefault&&e.preventDefault();let i=e.target;i.dataset.id&&i.dataset.url&&(this.settings.pointerType=i.dataset.inputType?i.dataset.inputType:e.pointerType,this.settings.paginationDirection=null!==(t=i.dataset.direction)&&void 0!==t?t:"",this.createLayerController(Number(i.dataset.id),i.dataset.url))}createListHeaderProject(){let e=document.createElement("div");return e.addClass("recruiting-project__infoheader"),e.innerHTML='<div class="recruiting-project__infoheader--duration-title">'+Gram.Translation.getValue("common.duration")+'</div><div class="recruiting-project__infoheader--start-title">'+Gram.Translation.getValue("common.start")+'</div><div class="recruiting-project__infoheader--location-title">'+Gram.Translation.getValue("common.location")+"</div>",e}createListItemProject(e){var t;let i=document.createElement("a"),a=this.settings.freelanceUrls.project+"/"+e.njobid+"/"+e.urlpart;i.href=a,i.addClass("recruiting-project__entry","recruiting-project__entry--"+this.settings.view),i.dataset.type="project",i.dataset.branch=e.sniederlassungbez;let n=document.createElement("div");n.addClass("recruiting-project__header","recruiting-project__header--"+this.settings.view),n.innerHTML='<div class="recruiting-project__header--branch">'+this.modifyFachbereich(e.neinsatzfachbereichset)+'</div><div class="recruiting-project__header--title">'+e.sjobbez+"</div>";let s=document.createElement("div");return s.addClass("recruiting-project__info","recruiting-project__info--"+this.settings.view),s.innerHTML='<div class="recruiting-project__info--duration"><div class="recruiting-project__info--duration-title">'+Gram.Translation.getValue("common.duration")+'</div><div class="recruiting-project__info--duration-content">'+this.modifyProjectDuration(null!==(t=e.nwochen)&&void 0!==t?t:0)+'</div></div><div class="recruiting-project__info--start"><div class="recruiting-project__info--start-title">'+Gram.Translation.getValue("common.start")+'</div><div class="recruiting-project__info--start-content">'+this.modifyProjectStart(e.seintritt)+'</div></div><div class="recruiting-project__info--location"><div class="recruiting-project__info--location-title">'+Gram.Translation.getValue("common.location")+'</div><div class="recruiting-project__info--location-content">'+e.uselocation_city+", "+e.uselocation_country+"</div></div>",i.appendChild(n),i.appendChild(s),i}createListItemJob(e){let t=document.createElement("a"),i=this.settings.messemodus?"?messemodus="+this.settings.messemodus+"&"+this.settings.utm:"",a=this.settings.maincareer+"/"+e.njobid+"/"+e.urlpart+i;t.href=a,t.addClass("recruiting__entry","recruiting__entry--"+this.settings.view),t.dataset.type=3==e.typeId?"job":"project",t.onclick=t=>{t.preventDefault(),this.createLayerController(e.njobid,a)};let n=document.createElement("div");n.addClass("recruiting__title","recruiting__title--"+this.settings.view),n.innerHTML=e.sjobbez;let s=document.createElement("div");s.addClass("recruiting__branch","recruiting__branch--"+this.settings.view),s.innerHTML=e.sniederlassungbez;let r=document.createElement("div");if(r.addClass("recruiting__location","recruiting__location--"+this.settings.view),r.innerHTML=e.uselocation_city+", "+e.uselocation_country,t.appendChild(s),t.appendChild(n),t.appendChild(r),this.settings.additionalFields&&""!=this.settings.additionalFields){let i=this.settings.additionalFields.split(","),a=document.createElement("div");a.addClass("recruiting__additionalfields","recruiting__additionalfields--"+this.settings.view),t.appendChild(a),i.forEach((t=>{let i=document.createElement("div");if(i.addClass("recruiting__"+t,"recruiting__"+t+"--"+this.settings.view),"range"===t)i.textContent=e.seinsatzbereichbez;a.appendChild(i)}))}if(this.settings.additionalListFields&&""!=this.settings.additionalListFields){let i=this.settings.additionalListFields.split(","),a=document.createElement("div");a.addClass("recruiting__additionallistfields","recruiting__additionallistfields--"+this.settings.view),t.appendChild(a),i.forEach((t=>{let i=document.createElement("div");switch(i.addClass("recruiting__"+t,"recruiting__"+t+"--"+this.settings.view),t){case"range":null!==e.neinsatzfachbereichset&&(i.textContent=this.modifyFachbereich(e.neinsatzfachbereichset));break;case"targetgroup":null!==e.nzielgruppeset&&(i.textContent=this.modifyZielgruppe(e.nzielgruppeset));break;case"type":null!==e.typeId&&(i.textContent=this.modifyType(e.typeId))}""!=i.textContent&&a.appendChild(i)}))}if(e.nentfernung>0){let i=document.createElement("div");i.addClass("recruiting__distance","recruiting__distance--"+this.settings.view),i.innerHTML=e.nentfernung.toString()+" km",r.setAttribute("data-distance",e.nentfernung.toString()+" km"),t.appendChild(i),i.parentElement&&i.parentElement.addClass("recruiting__entry--"+this.settings.view+"-location")}return t}modifyProjectStart(e){if(e){let t=e.split(".");if(3===t.length){let i=new Date(+t[2],t[1]-1,+t[0]);if(i<new Date)e=Gram.Translation.getValue("common.now");else{const t={year:"numeric",month:"2-digit",day:"2-digit"},a=document.documentElement.lang;e=i.toLocaleString(a,t)}}}return null!=e?e:"-"}modifyProjectDuration(e){let t="";if(e<=0)t="-";else if(1===e)t=e+" "+Gram.Translation.getValue("common.week");else if(e<4)t=e+" "+Gram.Translation.getValue("common.weeks");else{let i=Math.ceil(e/4);t=1===i?i+" "+Gram.Translation.getValue("common.month"):i+" "+Gram.Translation.getValue("common.months")}return t}modifyFachbereich(e){const t=this.prepareFaculties(e),i=Object.keys(t);i.sort();let a=[];return i.forEach((e=>{a.push(t[e])})),a.join(", ")}prepareFaculties(e){let t=e.split(","),i={};return t.forEach((e=>{const t=parseInt(e);if(12e3!==t){const e=Math.floor(t/1e3),a=t-1e3*e;this.getFaculty(i,e,a)}})),i}getFaculty(e,t,i){for(let a=0;a<this.settings.facultiesFilter.length;a++){const n=this.settings.facultiesFilter[a];if(0===i&&t===n.neinsatzbereichid){e[a]=n.seinsatzbereichbez;break}for(let t=0;t<n.faculties.length;t++){const s=n.faculties[t];if(i===s.nfachbereichid){e[a.toString()+t.toString()]=s.sfachbereichbez;break}}}}modifyZielgruppe(e){let t="";return e.split(",").forEach((e=>{for(let i=0;i<this.settings.targetgroupsFilter.length;i++){const a=this.settings.targetgroupsFilter[i];if(parseInt(e)===a.nzielgruppeid){t+=a.szielgruppebez+"/";break}}})),t&&(t=t.slice(0,-1)),t}modifyType(e){let t="";for(let i=0;i<this.settings.typesFilter.length;i++){const a=this.settings.typesFilter[i];if(e===a.id){t=a.name;break}}return t}ga4Tracking(e){let t="offer_search",i="offer search";"0"!=this.settings.location?(t="branch",i="branch-name ("+this.settings.location+")",this.ga4TrackingAffiliation="branch_"+this.settings.location):this.settings.linkKeyword?(t="campaign",i="campaign",this.ga4TrackingAffiliation="campaign ("+this.settings.linkKeyword+")"):this.settings.range&&(t="other",i="other",this.ga4TrackingAffiliation="other");let a=this.searchService.data.faculty?[...this.searchService.data.faculty.keys()].join():"",n=this.searchService.data.target?[...this.searchService.data.target.keys()].join():"",s=this.searchService.data.type?Number(this.searchService.data.type.keys().next().value):void 0,r=this.searchService.data.staffResponsibility?Number(this.searchService.data.staffResponsibility.keys().next().value):void 0,l=this.searchService.data.workplacetype?Number(this.searchService.data.workplacetype.keys().next().value):void 0,c=this.searchService.data.jobtype?Number(this.searchService.data.jobtype.keys().next().value):void 0,o=e.total_found?e.total_found:this.searchService.getTotalFound(),u=e.total?this.searchService.getStartWith()/e.total+1:1,d=[];e.matches&&e.matches.length>0&&e.matches.forEach(((e,t)=>{let i={item_id:e.njobid,item_name:e.numberPure+" "+e.sjobbez,affiliation:this.ga4TrackingAffiliation,index:t+1,item_brand:e.nniederlassungid,item_category:e.neinsatzfachbereichset,item_category2:e.nzielgruppeset,item_variant:e.inhouseRecruiting?"job_ihr":3==e.typeId?"job":"project",price:3==e.typeId?75:100,quantity:1};e.staffResponsibilityId&&Object.assign(i,{item_category3:e.staffResponsibilityId}),e.workplacetypeId&&Object.assign(i,{item_category4:e.workplacetypeId}),e.jobtypeId&&Object.assign(i,{item_category6:e.jobtypeId}),e.annualSalaryMinimum&&(Object.assign(i,{salary_period:e.annualSalaryPeriod}),Object.assign(i,{salary_currency:e.annualSalaryCurrency}),Object.assign(i,{salary_minimum:e.annualSalaryMinimum}),Object.assign(i,{salary_maximum:e.annualSalaryMaximum})),d.push(i)})),Gram.Controller.Tracking.GoogleAnalyticsTracking.getInstance().offerSearch(t,i,u,e.total,o,d,this.searchService.data.search?this.searchService.data.search:void 0,this.searchService.data.city?this.searchService.data.city:void 0,this.searchService.data.city&&this.searchService.data.radius?this.searchService.data.radius:void 0,a||void 0,n||void 0,s||void 0,r||void 0,l||void 0,c||void 0)}}t.ListComponent=i}(t=e.Components||(e.Components={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(t){class i extends e.Abstract.ComponentAbstract{constructor(e,t,i){super(e,t,i),this.listMetaInformation=null,this.registerEvents()}registerEvents(){Gram.Messaging.subscribe("recruiting-action-rendering-complete-"+this.mainContainerId,(()=>{this.listMetaInformation=document.querySelector("#"+this.mainContainerId+" .recruiting__metainfo"),Gram.Messaging.subscribe("recruiting-update-reload-"+this.mainContainerId,(e=>{if(this.listMetaInformation)if(e&&e.count&&e.count>1){let t=new Map;t.set("from",1),t.set("to",Math.min(e.start-1,e.count));let i=new Map;i.set("total",e.count),this.listMetaInformation.innerHTML='<span class="recruiting__metainfo-part1">'+Gram.Translation.getValue("recruiting.list.metainfo.part1",t)+'</span> <span class="recruiting__metainfo-part2">'+Gram.Translation.getValue("recruiting.list.metainfo.part2",i)+"</span>"}else this.listMetaInformation.innerHTML=""}),!1)}),!0)}}t.MetaInfoComponent=i}(t=e.Components||(e.Components={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(t){class i extends e.Abstract.ComponentAbstract{constructor(e,t,i,a){super(e,t,a),this.registerEvents(),this.settings=i}registerEvents(){Gram.Messaging.subscribe("recruiting-action-rendering-complete-"+this.mainContainerId,(()=>{document.getElementById("registerfreelance-button-"+this.mainContainerId).href=this.settings.freelanceUrls.register}),!0)}}t.RegisterFreelanceComponent=i}(t=e.Components||(e.Components={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(t){class i extends e.Abstract.ComponentAbstract{constructor(e,t,i,a){super(e,t,a),this.button=null,this.ini=null,this.registerEvents(),this.settings=i,this.city="",this.zip=""}registerEvents(){Gram.Messaging.subscribe("recruiting-action-rendering-complete-"+this.mainContainerId,(()=>{document.querySelector("#"+this.mainContainerId+" #recruiting-reload-button").onclick=()=>{this.settings.location&&"0"!==this.settings.location?"Planting"==this.settings.company&&"V3"==this.settings.version?window.open(this.settings.maincareer,"_self"):window.open(this.settings.maincareer+"?radius=25&city="+this.city+","+this.zip,"_self"):this.searchService.search(!1)},Gram.Messaging.subscribe("recruiting-update-reload-"+this.mainContainerId,(e=>{let t=document.querySelector("#"+this.mainContainerId+" #action-container");if(null===this.button&&(this.button=document.querySelector("#"+this.mainContainerId+" #recruiting-reload-button")),null===this.ini&&(this.ini=document.querySelector("#"+this.mainContainerId+" #recruiting-initiative-link")),e)if(this.settings.location&&"0"===this.settings.location){this.button.setAttribute("data-reload",e.hasMore.toString()),this.button.parentElement&&this.button.parentElement.setAttribute("data-reload",e.hasMore.toString()),t.setAttribute("data-reload",e.hasMore.toString());let i=new Map;i.set("from",e.start),i.set("to",e.end),i.set("total",e.count),"Planting"==this.settings.company&&"V3"==this.settings.version?this.button.innerHTML=Gram.Translation.getValue("recruiting.reload.page.planting.v3",i):this.button.innerHTML=Gram.Translation.getValue("recruiting.reload.page",i);let a=document.querySelectorAll("#"+this.mainContainerId+" .recruiting__entry");0!==e.startElement&&a.length>0&&a[e.startElement-1]&&a[e.startElement-1].scrollIntoView({block:"start",behavior:"smooth"})}else if("Planting"!=this.settings.company||"V3"!=this.settings.version){this.button.innerHTML=Gram.Translation.getValue("recruiting.search.all",new Map([["total",e.count.toString()]]));let t=new Gram.Controller.RequestController(this.baseUrl+"/data/branches/"+this.settings.companyId+"/"+e.branch);t.setParameter("type","1,2,3,4"),t.setParameter("extended","true"),t.get().then((e=>{e&&e[0]&&(this.button&&(this.button.innerHTML=Gram.Translation.getValue("recruiting.search.city",new Map([["city",e[0].city]]))),this.city=e[0].city,this.zip=e[0].zip)}))}else this.button.innerHTML=Gram.Translation.getValue("recruiting.search.all.planting.v3",new Map([["total",e.count.toString()]]))}),!1)}),!0)}}t.ReloadComponent=i}(t=e.Components||(e.Components={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(t){class i extends e.Abstract.ComponentAbstract{constructor(e,t,i,a){super(e,t,a),this.registerEvents(),this.settings=i}registerEvents(){Gram.Messaging.subscribe("recruiting-component-rendering-complete-"+this.mainContainerId,(()=>{let t=document.getElementById("search-recruiting-keyword-"+this.mainContainerId),i=document.getElementById("search-recruiting-city-"+this.mainContainerId),a=document.getElementById("search-recruiting-hidden-city-"+this.mainContainerId),n=document.getElementById("search-recruiting-radius-"+this.mainContainerId),s=document.getElementById("searchButton-"+this.mainContainerId),r=document.getElementById("searchFilterButton-"+this.mainContainerId),l=document.getElementById("branchButton-"+this.mainContainerId),c=document.getElementById("branchinfo-"+this.mainContainerId),o=document.getElementById("search-recruiting-overlay-"+this.mainContainerId),u=document.getElementById("header-search-button-popup-"+this.mainContainerId),d=document.getElementById("closeButton-"+this.mainContainerId),h=document.getElementById("search-recruiting-popup-"+this.mainContainerId);if(h&&document.body.append(h),o&&(o.addEventListener("click",(e=>{e.preventDefault(),Gram.Messaging.publish("close-recruiting-searchbox")})),document.addEventListener("keydown",(e=>{"Escape"==e.code&&Gram.Messaging.publish("close-recruiting-searchbox")}))),d&&d.addEventListener("click",(e=>{e.preventDefault(),Gram.Messaging.publish("close-recruiting-searchbox")})),u&&u.addEventListener("click",(e=>{e.preventDefault(),Gram.Messaging.publish("close-menu"),Gram.Messaging.publish("open-recruiting-searchbox")})),r&&(this.settings.listComponents.split(",").indexOf("list")>-1&&this.settings.listComponents.split(",").indexOf("filter")>-1&&s.parentElement?(s.parentElement.addClass("recruiting__searchinput--filter"),r.addEventListener("click",(e=>{e.preventDefault(),Gram.Messaging.publish("open-recruiting-filter-"+this.mainContainerId)}))):r.style.display="none"),"header"!=this.settings.mode&&("search"===this.settings.listComponents||"4"===this.settings.type)&&n&&n.parentElement&&n.parentElement.parentElement&&(n.parentElement.parentElement.style.display="none"),("search"===this.settings.listComponents||"4"===this.settings.type)&&s&&s.parentElement&&s.parentElement.classList.add("recruiting__searchinput--home"),this.settings.query.search&&t.parentElement&&(t.value=this.settings.query.search,t.parentElement.classList.add("form__item--input-text-outline-value","form__item--input-text-value")),this.settings.query.city&&i.parentElement&&(i.value=this.settings.query.city,i.parentElement.classList.add("form__item--input-text-outline-value","form__item--input-text-value")),this.settings.query.radius&&this.settings.query.city&&n.parentElement&&(n.value=this.settings.query.radius,n.parentElement.classList.add("form__item--input-text-outline-value","form__item--input-text-value")),this.settings.query.branch&&this.settings.query.branch>0){let e=document.querySelector("#"+this.mainContainerId+" .recruiting__searchcity");e&&e.classList.add("recruiting__searchcity--none");let t=document.querySelector("#"+this.mainContainerId+" .recruiting__searchradius");t&&t.classList.add("recruiting__searchradius--none");let i=new Gram.Controller.RequestController(this.baseUrl+"/data/branches/1/"+this.settings.query.branch);i.setParameter("type","1,2,3,4"),i.get().then((e=>{if(e){let t=e&&e[0].name?e[0].name:"";document.querySelector("#branchinfo-"+this.mainContainerId+" .html_message__headline").innerHTML=Gram.Translation.getValue("recruiting.branch.selected",new Map([["branch",t.replace("Niederlassung ","")]])),c.classList.remove("recruiting__branchinfo--none")}}))}l&&l.addEventListener("click",(()=>{c.classList.add("recruiting__branchinfo--none");let e=document.querySelector("#"+this.mainContainerId+" .recruiting__searchcity");e&&e.classList.remove("recruiting__searchcity--none");let t=document.querySelector("#"+this.mainContainerId+" .recruiting__searchradius");t&&t.classList.remove("recruiting__searchradius--none"),this.searchService.setBranch(0),this.searchService.search(!0);let i=new URL(location.href);i.searchParams.delete("branch"),history.replaceState("object",document.title,i.href)})),i.addEventListener("change",(()=>{""===n.value&&n.parentElement&&""!=this.settings.query.defaultRadius&&(n.value=this.settings.query.defaultRadius,n.parentElement.classList.add("form__item--input-text-outline-value","form__item--input-text-value"))})),s.onsubmit=e=>(e.preventDefault(),!1);let g=document.getElementById("search_form-"+this.mainContainerId);g.onsubmit=e=>{var s;if(e.preventDefault(),document.querySelectorAll("#"+this.mainContainerId+" .recruitinglist__nodetail").forEach((e=>e.remove())),"4"===this.settings.type){let e=[],n=this.settings.freelanceUrls.main;if(this.settings.messemodus&&e.push("messemodus="+this.settings.messemodus+"&"+this.settings.utm),t.value&&e.push("searchword="+encodeURI(t.value)),i.value){let t=i.value&&a.value?+a.value.split(",")[0]:null,n=i.value&&a.value?+a.value.split(",")[1]:null;e.push("city="+encodeURI(i.value)+";"+n+";"+t)}e.length>0&&(n+="?"+e.join("&")),location.href=n}else if(this.settings.listComponents.indexOf("list")<0){let e=[],a=this.settings.maincareer;if(this.settings.messemodus&&e.push("messemodus="+this.settings.messemodus+"&"+this.settings.utm),t.value&&e.push("search="+t.value),i.value&&e.push("city="+i.value),n.value&&n.value!=this.settings.query.defaultRadius&&e.push("radius="+n.value),e.length>0&&(a+="?"+e.join("&")),"header"==this.settings.mode){let e=g.querySelector('button[type="submit"]');Gram.Controller.Tracking.GoogleAnalyticsTracking.getInstance().formSubmit(g.id,g.classList.toString(),a,null!==(s=null==e?void 0:e.textContent)&&void 0!==s?s:"")}window.open(a,"_self")}else{this.searchService.setKeyword(t.value),this.searchService.setCity(i.value),this.searchService.setLon(i.value&&a.value?+a.value.split(",")[0]:null),this.searchService.setLat(i.value&&a.value?+a.value.split(",")[1]:null),this.searchService.setRadius(i.value?+n.value:null),this.searchService.search(!0);let e=[];this.settings.messemodus&&e.push("messemodus="+this.settings.messemodus+"&"+this.settings.utm),t.value&&e.push("search="+t.value),i.value&&e.push("city="+i.value),n.value&&n.value!=this.settings.query.defaultRadius&&e.push("radius="+n.value),e.length>0?history.replaceState({},"","?"+e.join("&")):history.replaceState({},"",window.location.href.split("?")[0])}return!1},e.Utils.AutoComplete.addAutocompleteListenerApi(i,a,"https://api.mapbox.com/geocoding/v5/mapbox.places/",".json?access_token=pk.eyJ1IjoiYWJsZWdyb3VwIiwiYSI6ImNrMHFicnlzdDA2OWQzbnBtZ2J1N3Y0dDUifQ.Ms0jqR-uh-AUC61aHeCAlQ&cachebuster=1611665850515&autocomplete=true&proximity=ip&types=place%2Cpostcode%2Cregion&limit=5&language="+pageLanguage),e.Utils.Select.addSelectListener(n,["-","25","50","100","200"]),this.focusBehavior(t),this.focusBehavior(i),this.focusBehavior(n)}),!0),Gram.Messaging.subscribe("close-recruiting-searchbox",(()=>{var e,t;let i=document.getElementById("search-recruiting-popup-"+this.mainContainerId);if(i&&i.dataset.open){i.dataset.open="";let a=document.getElementById("search-recruiting-keyword-"+this.mainContainerId);a.value="",null==a||a.blur(),null===(e=a.parentElement)||void 0===e||e.classList.remove("form__item--input-text-outline-value","form__item--input-text-value");let n=document.getElementById("search-recruiting-city-"+this.mainContainerId);n.value="",null==n||n.blur(),null===(t=n.parentElement)||void 0===t||t.classList.remove("form__item--input-text-outline-value","form__item--input-text-value"),Gram.Utility.DocumentUtility.bemModifier([document.body],[],["searchbox-animate-in"]),Gram.Utility.DocumentUtility.bemModifier([document.body],["searchbox-animate-out"]),setTimeout((()=>{Gram.Utility.DocumentUtility.bemModifier([document.body],[],["searchbox-animate-out"])}),250)}})),Gram.Messaging.subscribe("open-recruiting-searchbox",(()=>{let e=document.getElementById("search-recruiting-popup-"+this.mainContainerId);if(e&&!e.dataset.open){e.dataset.open="1";let t=document.getElementById("search-recruiting-keyword-"+this.mainContainerId);t.value="",document.getElementById("search-recruiting-city-"+this.mainContainerId).value="",Gram.Utility.DocumentUtility.bemModifier([document.body],[],["searchbox-animate-out"]),Gram.Utility.DocumentUtility.bemModifier([document.body],["searchbox-animate-in"]),t.focus()}}))}focusBehavior(e){e.addEventListener("focus",(()=>{e.parentElement.classList.add("form__item--input-text-outline-value","form__item--input-text-value")})),e.addEventListener("focusout",(()=>{""===e.value&&"radius"!=e.name&&(e.blur(),e.parentElement.classList.remove("form__item--input-text-outline-value","form__item--input-text-value"))}))}}t.SearchComponent=i}(t=e.Components||(e.Components={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(t){class i{constructor(){Gram.Messaging.publish("recruiting-start"),this.baseUrl="";let e=document.getElementsByClassName("ce-recruiting");for(let t of e){let e=Gram.Config.config["RecruitingPlugin#"+t.id];e.query.defaultRadius="Planting"==e.company&&"V3"==e.version?"0":"",e.mode;try{this.getQueryParams("search")?e.query.search=this.getQueryParams("search")?decodeURIComponent(this.getQueryParams("search")):"":e.linkKeyword&&(e.query.search=e.linkKeyword)}catch(t){e.query.search=""}try{e.query.city=this.getQueryParams("city")?decodeURIComponent(this.getQueryParams("city")):""}catch(t){e.query.city=""}e.query.radius=this.getQueryParams("radius")&&this.getQueryParams("radius").length<=3&&!isNaN(+this.getQueryParams("radius"))&&["-","25","50","100","200"].includes(this.getQueryParams("radius"))?this.getQueryParams("radius"):"",this.getQueryParams("faculty")&&0===this.getQueryParams("faculty").split(",").filter((e=>isNaN(+e))).length?e.query.faculty=this.getQueryParams("faculty"):e.range&&(e.query.faculty=e.range),this.getQueryParams("target")&&0===this.getQueryParams("target").split(",").filter((e=>isNaN(+e))).length?e.query.target=this.getQueryParams("target"):e.targetgroup&&(e.query.target=e.targetgroup);let i=this.getQueryParams("branch");if(i&&(i.indexOf(",")>=0?e.query.branch=i.split(",").filter((e=>!isNaN(parseFloat(e))&&isFinite(+e))).join(","):isNaN(+this.getQueryParams("branch"))?e.query.branch="0":e.query.branch=i),"link"===e.mode)this.initLinkMode(t,e);else this.initListMode(t,e)}Gram.Messaging.publish("recruiting-end")}initListMode(t,i){this.baseUrl="https://"+i.api+"/v4";let a=new e.Service.SearchService(i,t.id);if(i.query.search&&a.setKeyword(i.query.search),i.query.radius?a.setRadius(+i.query.radius):(i.query.radius=i.query.defaultRadius,a.setRadius(+i.query.defaultRadius)),i.query.branch&&a.setBranch(i.query.branch),i.query.target&&"string"==typeof i.query.target){let e=new Map;i.query.target.split(",").forEach((t=>{e.set(t,"")})),a.setTargetgroup(e)}if(i.query.faculty&&"string"==typeof i.query.faculty){let e=new Map;i.query.faculty.split(",").forEach((t=>{e.set(t,"")})),a.setRange(e)}if(this.renderList(t,i,a),i.listComponents.indexOf("list")>-1)if(i.query.city){a.setCity(i.query.city),new Gram.Controller.RequestController("https://api.mapbox.com/geocoding/v5/mapbox.places/"+encodeURIComponent(i.query.city.replace(";",""))+".json?access_token=pk.eyJ1IjoiYWJsZWdyb3VwIiwiYSI6ImNrMHFicnlzdDA2OWQzbnBtZ2J1N3Y0dDUifQ.Ms0jqR-uh-AUC61aHeCAlQ&cachebuster=1611665850515&autocomplete=true&proximity=ip&types=place%2Cpostcode%2Cregion&limit=5&language=de").get().then((e=>{if(e&&e.features&&e.features.length>0){a.setCity(e.features[0].place_name),a.setLon(e.features[0].geometry.coordinates[0]),a.setLat(e.features[0].geometry.coordinates[1]),document.getElementById("search-recruiting-hidden-city-"+t.id).value=e.features[0].geometry.coordinates,document.getElementById("search-recruiting-city-"+t.id).value=e.features[0].place_name}this.firstSearch(a)}))}else this.firstSearch(a)}firstSearch(e){setTimeout((()=>{e.search(!0)}),100)}initLinkMode(e,t){this.onAppend(e,(()=>{let i=document.getElementById("recruitingLink-"+e.id);i.innerHTML=t.linkText;let a=[],n=t.maincareer;t.messemodus&&a.push("messemodus="+t.messemodus+"&"+t.utm),t.range&&a.push("faculty="+t.range),t.targetgroup&&a.push("target="+t.targetgroup),t.linkKeyword&&a.push("search="+t.linkKeyword),t.linkLocation&&a.push("city="+t.linkLocation),t.linkRadius&&t.linkRadius!==+t.query.defaultRadius&&a.push("radius="+t.linkRadius),a.length>0&&(n+="?"+a.join("&")),i.href=n,i.target="_self"})),e.innerHTML=`<a class="ce-ablelink__link button button--primary" id="recruitingLink-${e.id}">${Gram.Translation.getValue("recruiting.link")}</a>`}static getInstance(){return i.instance||(i.instance=new i),i.instance}renderList(t,i,a){let n=document.createElement("div"),s=document.createElement("div"),r=document.createElement("div"),l=document.createElement("div"),c=document.createElement("div");n.id="recruiting";let o,u=document.createElement("div");if(u.id="component-container",u.className="recruiting__components",this.onAppend(u,(function(){Gram.Messaging.publish("recruiting-component-rendering-complete-"+t.id)})),i.listComponents.indexOf("list")>-1&&(s.id="list-container","4"===i.type?s.addClass("recruiting-project__list","recruiting-project__list--"+i.view):s.addClass("recruiting__list","recruiting__list--"+i.view),this.onAppend(s,(function(){Gram.Messaging.publish("recruiting-list-rendering-complete-"+t.id)})),r.id="action-container",r.className="recruiting__action",i.listComponents.indexOf("registerfreelance")>-1||i.listComponents.indexOf("allfreelance")>-1?r.className="freelance__action":i.listComponents.indexOf("initiativeapplication")<0&&r.setAttribute("data-ini","false"),this.onAppend(r,(function(){Gram.Messaging.publish("recruiting-action-rendering-complete-"+t.id)}))),i.listComponents.indexOf("list")>-1&&i.listComponents.indexOf("filter")>-1){l.id="filter-container",l.classList.add("recruiting__filter"),l.style.visibility="hidden",this.onAppend(l,(function(){Gram.Messaging.publish("recruiting-filter-rendering-complete-"+t.id)})),new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting?l.style.visibility="inherit":l.style.visibility="hidden"}))}),{rootMargin:"0px",threshold:0}).observe(t)}switch(i.company){case"Ferchau":o=e.FerchauTemplates;break;case"Planting":o="V3"===i.version?e.PlantingTemplatesV3:e.PlantingTemplates;break;default:o=e.AbleTemplates}i.listComponents&&i.listComponents.split(",").forEach((n=>{switch(n){case"search":let n=new e.Components.SearchComponent(a,this.baseUrl,i,t.id),c="";c="header"==i.mode?o.searchHeaderTemplate.replace(/###/g,t.id):"4"==i.type?o.searchFreelanceTemplate.replace(/###/g,t.id):o.searchTemplate.replace(/###/g,t.id),n.render(u,c,"recruiting__search");break;case"filter":if(i.listComponents.indexOf("list")>-1){new e.Components.FilterComponent(a,this.baseUrl,i,t.id).render(l,o.filterTemplate,"")}break;case"reload":if(i.listComponents.indexOf("list")>-1){new e.Components.ReloadComponent(a,this.baseUrl,i,t.id).render(r,o.reloadTemplate,"recruiting__reload")}break;case"initiativeapplication":if(i.listComponents.indexOf("list")>-1&&!i.messemodus){new e.Components.InitiativeComponent(a,i.initiativeUrl,t.id).render(r,o.initiativeTemplate,"recruiting__initiative")}break;case"registerfreelance":new e.Components.RegisterFreelanceComponent(a,this.baseUrl,i,t.id).render(r,o.registerFreelanceTemplate.replace(/###/g,t.id),"recruiting__register-freelance");break;case"allfreelance":new e.Components.AllFreelanceComponent(a,this.baseUrl,i,t.id).render(r,o.allFreelanceTemplate.replace(/###/g,t.id),"recruiting__all-freelance");break;case"list":new e.Components.ListComponent(a,this.baseUrl,i,t.id).render(s);break;case"metainfo":i.listComponents.indexOf("list")>-1&&new e.Components.MetaInfoComponent(a,this.baseUrl,t.id)}})),0===r.childElementCount&&r.classList.add("recruiting__action--empty"),n.appendChild(u),i.listComponents.indexOf("list")>-1&&(n.appendChild(s),n.appendChild(r),i.listComponents.indexOf("metainfo")>-1&&(c.id="metainfo-container",c.className="recruiting__metainfo",n.appendChild(c))),i.listComponents.indexOf("list")>-1&&i.listComponents.indexOf("filter")>-1&&n.appendChild(l),t.appendChild(n),Gram.Messaging.publish("recruiting-list-rendered",t.id)}onAppend(e,t){new MutationObserver((e=>{e.forEach((e=>{e.addedNodes.length&&t()}))})).observe(e,{childList:!0})}getQueryParams(e){let t=new RegExp("[?&]"+e+"=([^&#]*)","i").exec(location.href);return t?t[1]:null}}t.CoreController=i}(t=e.Controller||(e.Controller={}))}(AbleRecruiting||(AbleRecruiting={}));var AbleRecruiting,Gram,__awaiter=this&&this.__awaiter||function(e,t,i,a){return new(i||(i=Promise))((function(n,s){function r(e){try{c(a.next(e))}catch(e){s(e)}}function l(e){try{c(a.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,l)}c((a=a.apply(e,t||[])).next())}))};!function(e){class t extends e.Abstract.EntryAbstract{constructor(e){super(e)}fetch(e){return __awaiter(this,void 0,void 0,(function*(){let t=new Gram.Controller.RequestController("https://"+this.settings.api+"/v4/recruiting/details/"+e+"?prepare=active&hyphen=active");return t.setHeader("x-able-api",""),yield t.get().then((e=>(this.setDetailData(e),this.ga4TrackingOfferView(),e))).catch((()=>!1))}))}directCall(e){this.setDetailData(e),this.ga4TrackingOfferView()}getHtmlContent(){let t=document.createElement("div");if(0===Object.keys(this.detailData).length)return t.innerHTML=`\n                    <div class="recruiting__layer">\n                        <div class="recruiting__layer-header">\n                            <div class="recruiting__layer-headerwrapper">\n                                <header class=""></header>\n                            </div>\n                        </div>\n                        <div class="recruiting__layer-main">\n                            <div class="recruiting__layer-block">\n                                <p><strong>${Gram.Translation.getValue("recruiting.sitenotavailable.title")}</strong></p>\n                                <p>${Gram.Translation.getValue("recruiting.sitenotavailable.text")}</p>\n                            </div>\n                        </div>\n\n                    </div>\n                `,t;t.setAttribute("class",`entry-item entry-item-${this.detailData.njobid}`),t.setAttribute("data-id",""+this.detailData.njobid);let i="";this.detailData.saufgabe_headline&&(i+=`<h2 class="ce-recruiting__headline">${this.detailData.saufgabe_headline}</h2>`),i+=`<div class="ce-recruiting__text">${this.detailData.saufgabe_html}</div>`,this.detailData.sbenefits_headline&&(i+=`<h2 class="ce-recruiting__headline"> ${this.detailData.sbenefits_headline}</h2>`),this.detailData.sbenefits_html&&(i+=`<div class="ce-recruiting__text"> ${this.detailData.sbenefits_html}</div>`),this.detailData.svoraussetzung_headline&&(i+=`<h2 class="ce-recruiting__headline"> ${this.detailData.svoraussetzung_headline}</h2>`),i+=`<div class="ce-recruiting__text"> ${this.detailData.svoraussetzung_html}</div>`;let a=this.detailData.workplacetypeName&&"object"!=typeof this.detailData.workplacetypeName?`<span class="recruiting-meta__workplacetype">${this.detailData.workplacetypeName}</span>`:"",n=this.detailData.jobtypeName&&"object"!=typeof this.detailData.jobtypeName?`<span class="recruiting-meta__jobtype">${this.detailData.jobtypeName}</span>`:"",s="";if(this.detailData.annualSalaryMinimum&&this.detailData.annualSalaryMaximum&&"object"!=typeof this.detailData.annualSalaryMinimum&&"object"!=typeof this.detailData.annualSalaryMaximum){s=`<span class="recruiting-meta__salary">${e.Utils.Number.numberWithSeperator(this.detailData.annualSalaryMinimum,this.detailData.ssprachenr)} - ${e.Utils.Number.numberWithSeperator(this.detailData.annualSalaryMaximum,this.detailData.ssprachenr)} ${this.detailData.annualSalaryCurrencySymbol}</span>`}let r=this.getUTMParameters();if(r=r?"?"+r:"",t.innerHTML=`\n\n                <div class="ce ce--layout-blue ce-recruiting__header">\n                    <header class="header">\n                        <h1 class="header__headline header__headline--alignment-center header__headline--site">${this.detailData.sjobbez_hyphen}</h1>\n                        <div class="header__subline header__subline--alignment-center header__subline--site recruiting-meta">\n                            ${a}\n                            ${n}\n                            ${s}\n                            <span class="recruiting-meta__city">${this.detailData.uselocation_city}, ${this.detailData.uselocation_country}</span>\n                        </div>\n                    </header>\n                </div>\n\n                <div class="ce ce--layout-default ce--network-type3-right-top ce-recruiting__content">\n                    <div class="ce-recruiting__text ce-recruiting__text--intro">${this.detailData.seinleitung_html}</div>\n                    <header class="header ce-recruiting__text ce-recruiting__text--header">\n                        <h3 class="header__headline header__headline--sub-3">${this.detailData.sjobbez_hyphen}</h3>\n                    </header>\n\n                    ${i}\n\n                    <div class="ce-recruiting__text ce-recruiting__text--outro">${this.detailData.sabbinder_html}</div>\n                </div>\n\n                <div class="ce ce--layout-blue ce-recruiting__footer">\n                    <div class="ce-recruiting__text ce-recruiting__text--footer-contact">\n                        <h3 class="header">Kontakt</h3>\n                        <div class="content">\n                            <p>${this.detailData.sanspvorname} ${this.detailData.sanspnachname}<br>${this.detailData.sanspfunktion}<br>Fon ${this.detailData.sanspfon}<br><a href="mailto:${this.getMail()}">${this.getMail()}</a></p>\n                        </div>\n                    </div>\n                    <div class="ce-recruiting__text ce-recruiting__text--footer-location">\n                        <h3 class="header">Einsatzort</h3>\n                        <div class="content">\n                            <p>${this.detailData.uselocation_city}, ${this.detailData.uselocation_country}</p>\n                        </div>\n                    </div>\n                    <div class="ce-recruiting__text ce-recruiting__text--footer-number">\n                        <h3 class="header">${Gram.Translation.getValue("recruiting.codenumber")}</h3>\n                        <div class="content">\n                            <p>${this.detailData.sjobnr}</p>\n                        </div>\n                    </div>\n                </div>\n\n                <img src="https://${this.settings.ads}/${this.detailData.njobid}/${this.settings.tracking}/trackingpixel.gif?chash=${this.getHash()}" class="trackingpixel">\n\n                <div class="ce-recruiting__action">\n                    <a id="recruiting-layer-apply" class="button button--primary button--layout-blue button--primary-layout-blue" href="${this.settings.recruitingUrl}${this.detailData.urlpart}-${this.detailData.njobid}${r}" target="_self">${Gram.Translation.getValue("recruiting.apply.online")}</a>\n                    <a class="button button--secondary-outline button--layout-blue button--secondary-outline-layout-blue" href="https://${this.settings.api}/v2/pdf/export/de/de/${this.detailData.urlpart}-${this.detailData.njobid}/compressed/" target="_blank">${Gram.Translation.getValue("recruiting.pdf.download")}</a>\n                </div>\n\n            `,1==Gram.Controller.Tracking.GoogleAnalyticsTracking.getInstance().isTrackingAllowed()){let e=t.querySelector("#recruiting-layer-apply");e.addEventListener("click",(t=>{t.preventDefault();let i=!1,a=()=>{!i&&e.href&&(i=!0,window.open(e.href,"_blank"==e.target?"_blank":"_self"))};this.ga4TrackingOfferButtonApply(a),setTimeout(a,3e3)}))}return t}}e.AbleEntry=t}(AbleRecruiting||(AbleRecruiting={})),function(e){class t extends e.Abstract.EntryAbstract{constructor(e){super(e)}fetch(e){return __awaiter(this,void 0,void 0,(function*(){let t=this.settings.utm?"?"+this.settings.utm:"",i=this.settings.messemodus&&this.settings.qrCodeUrl?"&qrCodeUrl="+encodeURIComponent(this.settings.maincareer+"/"+e+t):"",a=new Gram.Controller.RequestController("https://"+this.settings.api+"/v4/recruiting/details/"+e+"?prepare=active&hyphen=active"+i);return a.setHeader("x-able-api",""),yield a.get().then((e=>(this.setDetailData(e),this.ga4TrackingOfferView(),e))).catch((()=>!1))}))}directCall(e){this.setDetailData(e),this.ga4TrackingOfferView()}getHtmlContent(){let t=document.createElement("div");if(0===Object.keys(this.detailData).length)return t.innerHTML=`\n                    <div class="recruiting__layer">\n                        <div class="recruiting__layer-header">\n                            <div class="recruiting__layer-headerwrapper">\n                                <header class=""></header>\n                            </div>\n                        </div>\n                        <div class="recruiting__layer-main">\n                            <div class="recruiting__layer-block">\n                                <p><strong>${Gram.Translation.getValue("recruiting.sitenotavailable.title")}</strong></p>\n                                <p>${Gram.Translation.getValue("recruiting.sitenotavailable.text")}</p>\n                            </div>\n                        </div>\n\n                    </div>\n                `,t;t.setAttribute("class",`entry-item entry-item-${this.detailData.njobid}`),t.setAttribute("data-id",""+this.detailData.njobid);let i="";this.detailData.saufgabe_headline&&(i+=`<h2 class="recruiting__layer-block recruiting__layer-block--red recruiting__layer-block--headline">${this.detailData.saufgabe_headline}</h2>`),i+=`<div class="recruiting__layer-block">${this.detailData.saufgabe_html}</div>`,this.detailData.sbenefits_headline&&(i+=`<h2 class="recruiting__layer-block recruiting__layer-block--red  recruiting__layer-block--headline">${this.detailData.sbenefits_headline}</h2>`),this.detailData.sbenefits_html&&(i+=`<div class="recruiting__layer-block">${this.detailData.sbenefits_html}</div>`),this.detailData.svoraussetzung_headline&&(i+=`<h2 class="recruiting__layer-block recruiting__layer-block--red  recruiting__layer-block--headline">${this.detailData.svoraussetzung_headline}</h2>`),i+=`<div class="recruiting__layer-block">${this.detailData.svoraussetzung_html}</div>`;let a=this.detailData.workplacetypeName&&"object"!=typeof this.detailData.workplacetypeName?`<span class="recruiting-meta__workplacetype">${this.detailData.workplacetypeName}</span>`:"",n=this.detailData.jobtypeName&&"object"!=typeof this.detailData.jobtypeName?`<span class="recruiting-meta__jobtype">${this.detailData.jobtypeName}</span>`:"",s="";if(this.detailData.annualSalaryMinimum&&this.detailData.annualSalaryMaximum&&"object"!=typeof this.detailData.annualSalaryMinimum&&"object"!=typeof this.detailData.annualSalaryMaximum){s=`<span class="recruiting-meta__salary">${e.Utils.Number.numberWithSeperator(this.detailData.annualSalaryMinimum,this.detailData.ssprachenr)} - ${e.Utils.Number.numberWithSeperator(this.detailData.annualSalaryMaximum,this.detailData.ssprachenr)} ${this.detailData.annualSalaryCurrencySymbol}</span>`}let r=this.settings.messemodus?`<span class="recruiting__layer-contact-address">${this.getMail()}</span>`:`<a href="mailto:${this.getMail()}" class="recruiting__layer-contact-mail">${this.getMail()}</a>`,l=this.settings.messemodus?`<div class="qrcode__text"><h3 class="header__headline header__headline--layout-blue header__headline--sub-3a header__headline--color-default header__headline--sub-3a-layout-blue qrcode__headline">${Gram.Translation.getValue("recruiting.qrcode.headline")}</h3><p class="paragraph paragraph--layout-blue qrcode__paragraph">${Gram.Translation.getValue("recruiting.qrcode.text")}</p></div><p class="qrcode__img-paragraph paragraph paragraph--text-center paragraph--layout-blue"><img class="qrcode__img" src="${this.detailData.qrcode}" /></p>`:"",c=this.getUTMParameters();if(c=c?"?"+c:"",t.innerHTML=`\n                <div class="recruiting__layer">\n                    <div class="recruiting__layer-header">\n                        <div class="recruiting__layer-headerwrapper">\n                            <header class="">\n                                <h1 class="header__headline header__headline--alignment-center header__headline--layout-red header__headline--site header__headline--site-layout-red">${this.detailData.sjobbez_hyphen}</h1>\n                                <h2 class="header__subline header__subline--alignment-center header__subline--layout-red recruiting-meta">\n                                    ${a}\n                                    ${n}\n                                    ${s}\n                                    <span class="recruiting-meta__city">${this.detailData.uselocation_city}, ${this.detailData.uselocation_country}</span>\n                                </h2>\n                            </header>\n                        </div>\n                    </div>\n                    <div class="recruiting__layer-main">\n                        <div class="recruiting__layer-block">${this.detailData.seinleitung_html}</div>\n\n                        ${i}\n\n                        <div class="recruiting__layer-block">${this.detailData.sabbinder_html}</div>\n                    </div>\n                    <div class="recruiting__layer-footer">\n                        <h3 class="recruiting__layer-footerheadline">${Gram.Translation.getValue("recruiting.contactanddetails")}</h3>\n                        <div class="recruiting__layer-footercontainer">\n                            <div class="recruiting__layer-number">\n                                <p class="recruiting__layer-numberhead">${Gram.Translation.getValue("recruiting.codenumber")}</p>\n                                <h3 class="recruiting__layer-numbertext">${this.detailData.sjobnr}</h3>\n                            </div>\n                            <div class="recruiting__layer-salary"></div>\n                            <div class="recruiting__layer-profile">\n                                <img src="https://cdn.able-group.de/ferchau/images/contact/5.0.0/contactperson.png" height="64" width="64"></img>\n                            </div>\n                            <div class="recruiting__layer-contact">\n                                <span class="recruiting__layer-contact-name">${this.detailData.sanspvorname} ${this.detailData.sanspnachname}</span><br>\n                                <span class="recruiting__layer-contact-position">${this.detailData.sanspfunktion}</span><br>\n                                <br>\n                                <span class="recruiting__layer-contact-address">${this.detailData.sorganisationbez}</span><br>\n                                <span class="recruiting__layer-contact-address">${this.detailData.sniederlassungbez}</span><br>\n                                <span class="recruiting__layer-contact-address">${this.detailData.sstrasse}</span><br>\n                                <span class="recruiting__layer-contact-address">${this.detailData.splz} ${this.detailData.sort}</span><br>\n                                <span class="recruiting__layer-contact-address">${this.detailData.slandbez}</span><br>\n                                <br>\n                                <span class="recruiting__layer-contact-address">Fon ${this.detailData.sanspfon}</span><br>\n                                ${r}\n                            </div>\n                        </div>\n                    </div>\n                    <img src="https://${this.settings.ads}/${this.detailData.njobid}/${this.settings.tracking}/trackingpixel.gif?chash=${this.getHash()}" class="trackingpixel">\n                    <div class="recruiting__layer-kununu">\n                        <div class="recruiting__layer-kununuwrapper">\n                            <a class="kununu__image" href=${this.settings.kununuURL[this.detailData.norganisationtypid]}>\n                                <img src="https://assets.kununu.com/releases/e5544de/img/logo-full-dark.png">\n                            </a>\n                            <a class="kununu__score" href=${this.settings.kununuURL[this.detailData.norganisationtypid]}>\n                                ${this.buildKununuScore()}\n                                <span class="kununu__subline">kununu score</span>\n                            </a>\n                        </div>\n                    </div>\n                    <div class="recruiting__layer-action">\n                        ${l}\n                        <a id="recruiting-layer-apply" class="ce-ablelink__link ce-ablelink__link--layout-blue button button--primary button--layout-blue button--primary-layout-blue" href="${this.settings.recruitingUrl}${this.detailData.urlpart}-${this.detailData.njobid}${c}" target="_self">${Gram.Translation.getValue("recruiting.apply.online")}</a>\n                        <a class="ce-ablelink__link ce-ablelink__link--layout-blue button button--primary button--layout-blue button--secondary-layout-blue" href="https://${this.settings.api}/v2/pdf/export/${this.settings.prioTargetmarket}/${this.settings.prioLanguage}/${this.detailData.urlpart}-${this.detailData.njobid}/compressed/" target="_blank">${Gram.Translation.getValue("recruiting.pdf.download")}</a>\n                    </div>\n\n                </div>\n            `,1==Gram.Controller.Tracking.GoogleAnalyticsTracking.getInstance().isTrackingAllowed()){let e=t.querySelector("#recruiting-layer-apply");e.addEventListener("click",(t=>{t.preventDefault();let i=!1,a=()=>{!i&&e.href&&(i=!0,window.open(e.href,"_blank"==e.target?"_blank":"_self"))};this.ga4TrackingOfferButtonApply(a),setTimeout(a,3e3)}))}return t}buildKununuScore(){var e;let t=document.createElement("div");t.className="kununu__stars";let i=null!==(e=this.settings.kununuScore[this.detailData.norganisationtypid])&&void 0!==e?e:4.1;for(let e=1;e<=5;e++){let a=document.createElement("div");a.classList.add("kununu__star-wrap");let n=document.createElement("div");if(n.classList.add("kununu__star"),e<=Math.ceil(i)){let t=document.createElement("div"),a=i%1;a>.25&&a<.75&&e===Math.ceil(i)?(t.classList.add("kununu__star-full"),t.classList.add("kununu__star-full--half")):(a>.75||e<Math.ceil(i))&&t.classList.add("kununu__star-full"),n.appendChild(t)}a.appendChild(n),t.appendChild(a)}let a=document.createElement("span");return a.className="kununu__number",a.innerHTML=i.toString(),t.appendChild(a),t.outerHTML}}e.FerchauEntry=t}(AbleRecruiting||(AbleRecruiting={})),function(e){class t extends e.Abstract.EntryAbstract{constructor(e){super(e)}fetch(e){return __awaiter(this,void 0,void 0,(function*(){let t=new Gram.Controller.RequestController("https://"+this.settings.api+"/v4/recruiting/details/"+e+"?prepare=active&hyphen=active");return t.setHeader("x-able-api",""),yield t.get().then((e=>(this.setDetailData(e),this.ga4TrackingOfferView(),e))).catch((()=>!1))}))}directCall(e){this.setDetailData(e),this.ga4TrackingOfferView()}getHtmlContent(){let e=document.createElement("div");if(0===Object.keys(this.detailData).length)return e.setAttribute("class","entry-item"),e.innerHTML=`\n                    <div class="ce ce--type-header ce--layout-yellow ce--text-color-default ce--text-size-default ce--before-space-medium ce--after-space-small ce-textmedia">\n                        <div class="ce-textmedia__header ce-textmedia__header--layout-yellow">\n                            <header class="header header--alignment-default header--textmedia header--layout-yellow header--site-a header--color-default">\n                                <h1 class="header__headline header__headline--alignment-default header__headline--textmedia header__headline--layout-yellow header__headline--site-a header__headline--color-default header__headline--site-a header__headline--site-a-layout-yellow">${Gram.Translation.getValue("recruiting.sitenotavailable.title")}</h1>\n                            </header>\n                        </div>\n                    </div>\n                    <div class="ce ce--type-text ce--layout-white ce--text-color-default ce--text-size-default ce--before-space-small ce--after-space-medium ce-textmedia">\n                        <div class="ce-textmedia__text ce-textmedia__text--layout-white">\n                            <p class="paragraph paragraph--columns-1 paragraph--layout-white ce-textmedia__paragraph ce-textmedia__paragraph--layout-white">${Gram.Translation.getValue("recruiting.sitenotavailable.text")}</p>\n                        </div>\n                    </div>\n\n                `,e;e.setAttribute("class",`entry-item entry-item-${this.detailData.njobid}`),e.setAttribute("data-id",""+this.detailData.njobid);let t="";this.detailData.saufgabe_headline&&(t+=`<h2 class="ce-recruiting-headline ce-recruiting-headline--tasks">${this.detailData.saufgabe_headline}</h2>`),t+=`<div class="ce-recruiting-text ce-recruiting-text--tasks">${this.detailData.saufgabe_html}</div>`,this.detailData.sbenefits_headline&&(t+=`<h2 class="ce-recruiting-headline ce-recruiting-headline--benefits">${this.detailData.sbenefits_headline}</h2>`),this.detailData.sbenefits_html&&(t+=`<div class="ce-recruiting-text ce-recruiting-text--benefits">${this.detailData.sbenefits_html}</div>`),this.detailData.svoraussetzung_headline&&(t+=`<h2 class="ce-recruiting-headline ce-recruiting-headline--reqs">${this.detailData.svoraussetzung_headline}</h2>`),t+=`<div class="ce-recruiting-text ce-recruiting-text--reqs"> ${this.detailData.svoraussetzung_html}</div>`;let i=this.detailData.workplacetypeName&&"object"!=typeof this.detailData.workplacetypeName?`<span class="recruiting-meta__workplacetype">${this.detailData.workplacetypeName}</span>`:"",a=this.detailData.jobtypeName&&"object"!=typeof this.detailData.jobtypeName?`<span class="recruiting-meta__jobtype">${this.detailData.jobtypeName}</span>`:"",n=this.getUTMParameters();n=n?"?"+n:"";let s=`\n                ${this.getHeaderMetaInfo()}\n                <div class="ce ce--type-header ce--layout-yellow ce--text-color-default ce--text-size-default ce--before-space-medium ce--after-space-small ce-textmedia">\n                    <div class="ce-textmedia__header ce-textmedia__header--layout-yellow">\n                        <header class="header header--alignment-default header--site-a-overline header--textmedia header--layout-yellow header--site-a header--color-default">\n                            <h1 class="header__headline header__headline--alignment-default header__headline--site-a-overline header__headline--textmedia header__headline--layout-yellow header__headline--site-a header__headline--color-default header__headline--site-a header__headline--site-a-layout-yellow">${this.detailData.sjobbez_hyphen}</h1>\n                            <div class="header__subline header__subline--alignment-default header__subline--site-a-overline header__subline--textmedia header__subline--layout-yellow header__subline--site-a header__subline--color-default recruiting-meta">\n                                ${i}\n                                ${a}\n                                <span class="recruiting-meta__city">${this.detailData.uselocation_city}, ${this.detailData.uselocation_country}</span>\n                            </div>\n                        </header>\n                    </div>\n                </div>\n\n                <div class="ce ce--type-text ce--layout-white ce--text-color-default ce--text-size-default ce--before-space-small ce--after-space-small ce-textmedia">\n                    <div class="ce-textmedia__text ce-textmedia__text--layout-white">\n                        <div class="ce-recruiting-text ce-recruiting-text--intro">${this.detailData.seinleitung_html}</div>\n\n                        ${t}\n\n                        <div class="ce-recruiting-text ce-recruiting-text--outro">${this.detailData.sabbinder_html}</div>\n                    </div>\n                </div>\n\n                <div class="ce ce--type-header-text-media ce--layout-default ce--text-color-default ce--text-size-default ce--before-space-small ce--after-space-extra-small ce-textmedia ce-textmedia--image-left-besidetext ce-recruiting-contactperson">\n                    <div class="ce-textmedia__header ce-textmedia__header--media-left-besidetext ce-textmedia__header--layout-default">\n                        <header class="header header--alignment-default header--sub-2-subline header--textmedia header--layout-default header--sub-2 header--color-yellow">\n                            <h2 class="header__headline header__headline--alignment-default header__headline--sub-2-subline header__headline--textmedia header__headline--layout-default header__headline--sub-2 header__headline--color-yellow header__headline--sub-2 header__headline--sub-2-layout-default header__headline--sub-2-column-modifier-50">${this.detailData.sanspvorname} ${this.detailData.sanspnachname}</h2>\n                            <span class="header__subline header__subline--alignment-default header__subline--sub-2-subline header__subline--textmedia header__subline--layout-default header__subline--sub-2 header__subline--color-white">${this.detailData.sanspfunktion}</span>\n                        </header>\n                    </div>\n                    <div class="ce-textmedia__media ce-textmedia__media--media-left-besidetext ce-textmedia__media--layout-default">\n                        <figure class="ce-image__imageborder ce-image__imageborder--responsive ce-image__imageborder--left-besidetext">\n                            <span class="iconfont-before iconfont-before--fontawesome iconfont-before--icon-align-left iconfont-before--icon-size-default" data-icon="&#xf007;"></span>\n                        </figure>\n                    </div>\n                    <div class="ce-textmedia__text ce-textmedia__text--media-left-besidetext ce-textmedia__text--layout-default">\n                        <address class="ce-recruiting-contactperson__border"  data-latlong="${this.detailData.uselocation_longitude},${this.detailData.uselocation_latitude}">\n                            <span class="ce-recruiting-contactperson__street ce-recruiting-contactperson__street--align-right">${this.detailData.sstrasse}</span>\n                            <span class="ce-recruiting-contactperson__city ce-recruiting-contactperson__city--align-right">${this.detailData.splz} ${this.detailData.sort}, ${this.detailData.slandbez}</span>\n                            <span class="ce-recruiting-contactperson__phone ce-recruiting-contactperson__phone--align-right">\n                                <a href="tel:${this.detailData.sanspfon}" data-type="phonenumber">${this.detailData.sanspfon}</a>\n                            </span>\n                            <a class="ce-recruiting-contactperson__email ce-recruiting-contactperson__email--align-right" href="mailto:${this.getMail()}">${this.getMail()}</a>\n                        </address>\n                    </div>\n                </div>\n\n                <img src="https://${this.settings.ads}/${this.detailData.njobid}/${this.settings.tracking}/trackingpixel.gif?chash=${this.getHash()}" class="trackingpixel">\n\n                <div class="ce ce--type-text ce--layout-default ce--text-color-default ce--text-size-default ce--before-space-extra-small ce--after-space-extra-small ce-textmedia ce-recruiting-buttons">\n                    <div class="ce-textmedia__text ce-textmedia__text--layout-default">\n                        <p class="paragraph paragraph--columns-1 paragraph--layout-default ce-textmedia__paragraph ce-textmedia__paragraph--layout-default paragraph--text-center paragraph--button">\n                            <a id="recruiting-layer-apply" href="${this.settings.recruitingUrl}${this.detailData.urlpart}-${this.detailData.njobid}"  target="_self" class="button button--primary button--columns-1 button--layout-default button--text-center button--primary-columns-1 button--primary-layout-default button--primary-text-center">${Gram.Translation.getValue("recruiting.apply.online")}</a>\n                            <a href="https://${this.settings.api}/v2/pdf/export/de/de/${this.detailData.urlpart}-${this.detailData.njobid}/compressed/" target="_blank" class="button button--secondary button--columns-1 button--layout-default button--text-center button--secondary-columns-1 button--secondary-layout-default button--secondary-text-center">${Gram.Translation.getValue("recruiting.pdf.download")}</a>\n                        </p>\n                    </div>\n                </div>\n\n                <div class="ce ce--layout-default ce--text-color-default ce--text-size-default ce--frame-fullwidth ce--before-space-extra-small ce-maps">\n                    <div id="map-recruiting-detail-map" class="recruiting-layer__map recruiting-layer__map--init">\n                        <div class="loading-circle"></div>\n                    </div>\n                </div>\n            `;if(s=s.replace(/<p>/g,'<p class="paragraph">'),s=s.replace(/<ul>/g,'<ul class="ce-list">'),s=s.replace(/<li>/g,'<li class="ce-list__li ce-list__li--unordered">'),e.innerHTML=s,1==Gram.Controller.Tracking.GoogleAnalyticsTracking.getInstance().isTrackingAllowed()){let t=e.querySelector("#recruiting-layer-apply");t.addEventListener("click",(e=>{e.preventDefault();let i=!1,a=()=>{!i&&t.href&&(i=!0,window.open(t.href,"_blank"==t.target?"_blank":"_self"))};this.ga4TrackingOfferButtonApply(a),setTimeout(a,3e3)}))}return e}getHeaderMetaInfo(){let e="",t=document.querySelector(".recruiting__metainfo-part2");if(t){let i=0;for(let e=0;e<this.getResultList().length;e++)if(this.getResultList()[e].id===this.detailData.njobid){i=e+1;break}i&&(e='<div class="entry-item__metainfo"><span class="entry-item__metainfo-part1">Angebot '+i+' </span><span class="entry-item__metainfo-part2">'+t.textContent+"</span></div>")}return e}}e.PlantingEntryV3=t}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(e){e.SearchService=class{constructor(e,t){if(this.firstJobListCall=!0,this.setKeyword=e=>this.data.search=e,this.setLat=e=>this.data.lat=e,this.setLon=e=>this.data.lon=e,this.setCity=e=>this.data.city=e,this.setRadius=e=>this.data.radius=e,this.setTargetgroup=e=>this.data.target=e,this.getTargetgroup=()=>this.data.target,this.setType=e=>this.data.type=e,this.getType=()=>this.data.type,this.setStaffresponsibility=e=>this.data.staffResponsibility=e,this.getStaffresponsibility=()=>this.data.staffResponsibility,this.setJobtype=e=>this.data.jobtype=e,this.getJobtype=()=>this.data.jobtype,this.setWorkplacetype=e=>this.data.workplacetype=e,this.getWorkplacetype=()=>this.data.workplacetype,this.setRange=e=>this.data.faculty=e,this.getRange=()=>this.data.faculty,this.getStartWith=()=>this.startWith,this.setBranch=e=>this.data.branch=e,this.getTotalFound=()=>this.totalFound,this.settings=e,this.api="https://"+e.api+"/v4/recruiting/search",this.startWith=0,this.totalFound=0,this.mainContainerId=t,this.showRanges=!1,this.showFilters=!1,this.data={search:null,lat:null,lon:null,city:null,radius:null,target:null,faculty:null,branch:null,type:null,staffResponsibility:null,jobtype:null,workplacetype:null},e.listComponents.indexOf("filter")>=0&&(this.showFilters=!0),e.additionalFields&&""!=e.additionalFields){e.additionalFields.split(",").forEach((e=>{if("range"===e)this.showRanges=!0}))}}search(e){if(this.addLoading(e),e&&(this.startWith=0,this.totalFound=0),window.location.search&&this.firstJobListCall&&(this.firstJobListCall=!1),this.settings.recruitingListData&&this.firstJobListCall){this.firstJobListCall=!1,Gram.Messaging.publish("recruiting-update-list-"+this.mainContainerId,{response:this.settings.recruitingListData,clear:e}),Gram.Messaging.publish("recruiting-new-counts-"+this.mainContainerId,this.settings.recruitingListData.counts);let t=!1;void 0!==this.settings.recruitingListData.has_more&&(t=Boolean(this.settings.recruitingListData.has_more));let i=this.startWith;this.startWith=this.settings.count+this.startWith;let a="number"==typeof this.settings.recruitingListData.total_found?this.settings.recruitingListData.total_found:0;this.totalFound=a>0?a:this.totalFound;let n={hasMore:t,start:this.startWith+1,end:this.settings.count+this.startWith>this.totalFound?this.totalFound:this.settings.count+this.startWith,count:this.totalFound,startElement:i,branch:this.settings.location};Gram.Messaging.publish("recruiting-update-reload-"+this.mainContainerId,n),this.removeLoading()}else{let t=new Gram.Controller.RequestController(this.api);t.setParameters(this.buildSearchUrl(this.showFilters)),t.setHeader("x-able-api",""),t.get().then((t=>{Gram.Messaging.publish("recruiting-update-list-"+this.mainContainerId,{response:t,clear:e}),Gram.Messaging.publish("recruiting-new-counts-"+this.mainContainerId,t.counts);let i=!1;void 0!==t.has_more&&(i=Boolean(t.has_more));let a=this.startWith;this.startWith=this.settings.count+this.startWith,this.totalFound=t.total_found>0?t.total_found:this.totalFound;let n={hasMore:i,start:this.startWith+1,end:this.settings.count+this.startWith>this.totalFound?this.totalFound:this.settings.count+this.startWith,count:this.totalFound,startElement:a,branch:this.settings.location};Gram.Messaging.publish("recruiting-update-reload-"+this.mainContainerId,n),this.removeLoading()})).catch((()=>{Gram.Controller.NotifyController.message(Gram.Type.NotifyMessageType.ERROR,Gram.Translation.getValue("recruiting.search.title"),Gram.Translation.getValue("recruiting.search.error"),7e3,1);Gram.Messaging.publish("recruiting-update-list-"+this.mainContainerId,{response:{initial:!1,status:0,success:!1,total:0,total_found:0,counts:null,matches:[]},clear:!0}),this.removeLoading()}))}}buildSearchUrl(e=!1,t=!1){let i=new Map;switch(i.set("hyphen","override"),this.settings.prioLanguage){case"de":break;case"en":case"pl":i.set("prioLanguage","2");break;case"fr":i.set("prioLanguage","3");break;case"es":i.set("prioLanguage","5")}switch(this.settings.prioTargetmarket){case"de":break;case"at":i.set("prioTargetmarket","12");break;case"es":i.set("prioTargetmarket","23");break;case"fr":i.set("prioTargetmarket","26");break;case"pl":i.set("prioTargetmarket","28")}if(this.settings.location&&"0"!==this.settings.location&&!isNaN(Number(this.settings.location))&&i.set("branch",this.settings.location),this.settings.language&&this.settings.language.toString()&&""!=this.settings.language.toString()&&i.set("lang",this.settings.language.toString()),e&&i.set("count",this.settings.company.toLowerCase()),t||(i.set("limit",this.settings.count.toString()),i.set("offset",this.startWith.toString()),this.startWith>0&&i.set("total","false")),this.settings.type&&i.set("type",this.settings.type.toString()),!0===this.showRanges&&i.set("showRanges",this.showRanges.toString()),this.data&&(this.data.search&&i.set("query",this.data.search),this.data.lat&&i.set("lat",this.data.lat.toString()),this.data.lon&&i.set("lon",this.data.lon.toString()),this.data.radius&&i.set("radius",this.data.radius.toString()),this.data.target&&this.data.target.size>0&&i.set("target",Array.from(this.data.target.keys()).join(",")),this.data.type&&this.data.type.size>0&&i.set("type",Array.from(this.data.type.keys()).join(",")),this.data.faculty&&this.data.faculty.size>0&&i.set("faculty",Array.from(this.data.faculty.keys()).join(",")),this.data.branch&&0!==this.data.branch&&i.set("branch",this.data.branch.toString()),this.data.staffResponsibility&&this.data.staffResponsibility.size>0&&i.set("staffresponsibility",Array.from(this.data.staffResponsibility.keys()).join(",")),this.data.jobtype&&this.data.jobtype.size>0&&i.set("jobtype",Array.from(this.data.jobtype.keys()).join(",")),this.data.workplacetype&&this.data.workplacetype.size>0&&i.set("workplacetype",Array.from(this.data.workplacetype.keys()).join(","))),t){let e="";return i.forEach(((t,i)=>{e+=encodeURIComponent(i)+"="+encodeURIComponent(t)+"&"})),e.slice(0,-1)}return i}getAgentString(){return this.buildSearchUrl(!1,!0)}getSiteSearchUrl(){let e=[],t=this.data&&this.data.search?this.data.search:"";e.push("search="+t);let i=this.data&&this.data.city?this.data.city:"";e.push("city="+i);let a=this.data&&this.data.radius&&this.data.city?this.data.radius:"";e.push("radius="+a);let n=this.data&&this.data.target&&this.data.target.size>0?Array.from(this.data.target.keys()).join(","):"";e.push("target="+n);let s=this.data&&this.data.type&&this.data.type.size>0?Array.from(this.data.type.keys()).join(","):"";e.push("type="+s);let r=this.data&&this.data.faculty&&this.data.faculty.size>0?Array.from(this.data.faculty.keys()).join(","):"";e.push("faculty="+r);let l=this.data&&this.data.staffResponsibility&&this.data.staffResponsibility.size>0?Array.from(this.data.staffResponsibility.keys()).join(","):"";e.push("staffresponsibility="+l);let c=this.data&&this.data.jobtype&&this.data.jobtype.size>0?Array.from(this.data.jobtype.keys()).join(","):"";e.push("jobtype="+c);let o=this.data&&this.data.workplacetype&&this.data.workplacetype.size>0?Array.from(this.data.workplacetype.keys()).join(","):"";e.push("workplacetype="+o);let u=location.pathname;return e.length>0&&(u+="?"+e.join("&")),u}addLoading(e){if(document.querySelectorAll("#"+this.mainContainerId+" .recruitinglist__empty").forEach((e=>e.remove())),e){let e=document.querySelector("#"+this.mainContainerId+" #list-container");for(;e.firstChild;)e.removeChild(e.firstChild)}let t=document.createElement("div");t.addClass("recruiting__loading"),t.innerHTML='<div class="loading-circle"></div>';let i=document.querySelector("#"+this.mainContainerId+" .recruiting__list");null==i||i.after(t)}removeLoading(){let e=document.querySelector("#"+this.mainContainerId+" .recruiting__loading");null==e||e.remove()}}}(t=e.Service||(e.Service={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){e.AbleTemplates={searchTemplate:"",searchFreelanceTemplate:"",searchHeaderTemplate:"",reloadTemplate:"",filterTemplate:"",initiativeTemplate:`\n            <p class="paragraph paragraph--recruiting-initiative-intro">${Gram.Translation.getValue("recruiting.initiative.intro")}</p>\n            <p class="paragraph paragraph--text-center"><a id="recruiting-initiative-link" rel="noopener" class="initiative__link ce-ablelink__link button button--secondary" target="_blank">\n                ${Gram.Translation.getValue("recruiting.initiative")}\n            </a><p>\n        `,registerFreelanceTemplate:"",allFreelanceTemplate:""}}(AbleRecruiting||(AbleRecruiting={})),function(e){e.FerchauTemplates={searchTemplate:`<form id="search_form-###" class="recruiting__searchbox form" autocomplete="off">\n                <div class="recruiting__searchkeyword form__item-wrapper">\n                    <div class="form__item form__item--field form__item--input form__item--input-text form__item--input-text-outline">\n                        <input id="search-recruiting-keyword-###" class="form__field" type="text" name="search" autocomplete="off" maxlength="100">\n                        <label class="form__label" for="search-recruiting-keyword-###">\n                            <span class="form__label-text-wrapper">\n                                <span class="form__label-text form__label-text-search">\n                                ${Gram.Translation.getValue("recruiting.keyword")}\n                                </span>\n                            </span>\n                        </label>\n                    </div>\n                </div>\n                <div class="recruiting__searchcity form__item-wrapper">\n                    <div class="form__item form__item--field form__item--input form__item--input-text form__item--input-text-outline">\n                        <input id="search-recruiting-city-###" class="form__field form__field--city-fullname" type="text" name="city" autocomplete="off" list="cities" maxlength="50">\n                        <input id="search-recruiting-hidden-city-###" style='display:none'>\n                        <label class="form__label" for="search-recruiting-city-###">\n                            <span class="form__label-text-wrapper">\n                                <span class="form__label-text form__label-text-city">\n                                ${Gram.Translation.getValue("recruiting.city")}\n                                </span>\n                            </span>\n                        </label>\n                    </div>\n                </div>\n                <div class="recruiting__searchradius form__item-wrapper">\n                    <div class="form__item form__item--field form__item--input form__item--input-text form__item--input-text-outline">\n                        <input id="search-recruiting-radius-###" class="form__field" type="button" name="radius">\n                        <label class="form__label" for="search-recruiting-radius-###">\n                            <span class="form__label-text-wrapper">\n                                <span class="form__label-text form__label-text-radius">\n                                ${Gram.Translation.getValue("recruiting.radius")}\n                                </span>\n                            </span>\n                        </label>\n                    </div>\n                </div>\n\n                <div class="recruiting__searchinput">\n                    <button type="submit" class="recruiting__searchsubmit ce-ablelink__link button button--primary" id="searchButton-###">\n                    ${Gram.Translation.getValue("recruiting.search")}\n                    </button>\n                </div>\n                <div class="recruiting__filterinput">\n                    <a class="recruiting__searchfilter ce-ablelink__link button button--secondary" id="searchFilterButton-###">\n                    ${Gram.Translation.getValue("recruiting.search.adjust")}\n                    </a>\n                </div>\n            </form>\n            <div id="branchinfo-###" class="recruiting__branchinfo recruiting__branchinfo--none">\n                <div class="ce ce--default-width ce-message ce-message--default-width">\n                    <div class="html_message html_message--oneliner html_message--info html_message--nolink">\n                        <span class="html_message__headline html_message__headline--info html_message__headline--link">${Gram.Translation.getValue("recruiting.branch.selected")}</span>\n                        <span class="html_message__linkborder html_message__linkborder--info html_message__linkborder--link">\n                            <button type="submit" class="recruiting__searchsubmit ce-ablelink__link button button--layout-red button--secondary button--secondary-layout-red" id="branchButton-###">\n                                ${Gram.Translation.getValue("recruiting.branch.all")}\n                            </button>\n                        </span>\n                    </div>\n                </div>\n            </div>`,searchFreelanceTemplate:`<form id="search_form-###" class="recruiting__searchbox form" autocomplete="off">\n                <div class="recruiting__searchkeyword form__item-wrapper">\n                    <div class="form__item form__item--field form__item--input form__item--input-text form__item--input-text-outline">\n                        <input id="search-recruiting-keyword-###" class="form__field" type="text" name="search" autocomplete="off" maxlength="100">\n                        <label class="form__label" for="search-recruiting-keyword-###">\n                            <span class="form__label-text-wrapper">\n                                <span class="form__label-text form__label-text-search">\n                                ${Gram.Translation.getValue("recruiting.keyword")}\n                                </span>\n                            </span>\n                        </label>\n                    </div>\n                </div>\n                <div class="recruiting__searchcity form__item-wrapper">\n                    <div class="form__item form__item--field form__item--input form__item--input-text form__item--input-text-outline">\n                        <input id="search-recruiting-city-###" class="form__field form__field--city-fullname" type="text" name="city" autocomplete="off" list="cities" maxlength="50">\n                        <input id="search-recruiting-hidden-city-###" style='display:none'>\n                        <label class="form__label" for="search-recruiting-city-###">\n                            <span class="form__label-text-wrapper">\n                                <span class="form__label-text form__label-text-city">\n                                ${Gram.Translation.getValue("recruiting.city")}\n                                </span>\n                            </span>\n                        </label>\n                    </div>\n                </div>\n                <div class="recruiting__searchradius form__item-wrapper">\n                    <div class="form__item form__item--field form__item--input form__item--input-text form__item--input-text-outline">\n                        <input id="search-recruiting-radius-###" class="form__field" type="text" name="radius" autocomplete="off" list="radius" maxlength="4">\n                        <label class="form__label" for="search-recruiting-radius-###">\n                            <span class="form__label-text-wrapper">\n                                <span class="form__label-text form__label-text-radius">\n                                ${Gram.Translation.getValue("recruiting.radius")}\n                                </span>\n                            </span>\n                        </label>\n                    </div>\n                </div>\n\n                <div class="recruiting__searchinput">\n                    <button type="submit" class="recruiting__searchsubmit ce-ablelink__link button button--primary" id="searchButton-###">\n                    ${Gram.Translation.getValue("recruiting.search")}\n                    </button>\n                </div>\n                <div class="recruiting__filterinput">\n                    <a class="recruiting__searchfilter ce-ablelink__link button button--secondary" id="searchFilterButton-###">\n                    ${Gram.Translation.getValue("recruiting.search.adjust")}\n                    </a>\n                </div>\n            </form>\n            <div id="branchinfo-###" class="recruiting__branchinfo recruiting__branchinfo--none">\n                <div class="ce ce--default-width ce-message ce-message--default-width">\n                    <div class="html_message html_message--oneliner html_message--info html_message--nolink">\n                        <span class="html_message__headline html_message__headline--info html_message__headline--link">${Gram.Translation.getValue("recruiting.branch.selected")}</span>\n                        <span class="html_message__linkborder html_message__linkborder--info html_message__linkborder--link">\n                            <button type="submit" class="recruiting__searchsubmit ce-ablelink__link button button--layout-red button--secondary button--secondary-layout-red" id="branchButton-###">\n                                ${Gram.Translation.getValue("recruiting.branch.all")}\n                            </button>\n                        </span>\n                    </div>\n                </div>\n            </div>`,searchHeaderTemplate:`<div id="header-search-box-###" class="headersearchbox">\n\n                <div id="header-search-button-popup-###" class='form__item-container'>\n                    <div class='headersearchbox__group headersearchbox__group--keyword'>\n                        <span class="form__label form__label--keyword"><span class="form__label-normal">${Gram.Translation.getValue("recruiting.keyword.header")}</span><span class="form__label-short">${Gram.Translation.getValue("recruiting.keyword.header.short")}</span></span>\n                    </div>\n                    <button type="submit" class="recruiting__searchsubmit ce-ablelink__link button button--primary"><span>${Gram.Translation.getValue("recruiting.search.header")}</span></button>\n                </div>\n\n                <div id="search-recruiting-popup-###" class="headersearchbox__popup">\n                    <div id="search-recruiting-overlay-###" class="headersearchbox__overlay"></div>\n                    <form id="search_form-###" class="recruiting__headersearchbox" autocomplete="off">\n                        <div class='headersearchbox__group headersearchbox__group--keyword'>\n                            <input id="search-recruiting-keyword-###" class="form__field form__field--keyword" type="text" name="search" autocomplete="off" maxlength="100">\n                            <label class="form__label form__label--keyword" for="search-recruiting-keyword-###">${Gram.Translation.getValue("recruiting.keyword.header")}</label>\n                        </div>\n                        <div class='headersearchbox__group headersearchbox__group--city'>\n                            <input id="search-recruiting-city-###" class="form__field form__field--city form__field--city-fullname" type="text" name="city" autocomplete="off" list="cities" maxlength="50">\n                            <label class="form__label form__label--city" for="search-recruiting-city-###">${Gram.Translation.getValue("recruiting.city")}</label>\n                        </div>\n                        <div><input id="search-recruiting-hidden-city-###" style='display:none'></div>\n                        <div><input id="search-recruiting-radius-###" class="form__field" type="text" name="radius" autocomplete="off" list="radius" maxlength="4" style='display:none'></div>\n                        <div><button type="submit" class="recruiting__searchsubmit ce-ablelink__link button button--primary button--search" id="searchButton-###"><span>${Gram.Translation.getValue("recruiting.search.header")}</span></button><button type="button" class="ce-ablelink__link button button--close" id="closeButton-###"><span class="button__icon"></span></button></div>\n                    </form>\n                </div>\n\n            </div>`,reloadTemplate:`<button id="recruiting-reload-button" type="button" class="recruiting__reloadsubmit ce-ablelink__link button button--primary">${Gram.Translation.getValue("recruiting.reload")}</button>`,filterTemplate:`<div class="recruiting__tabs">\n                <div class="recruiting__tab-wrap">\n                    <span class="recruiting__filtercounter" data-value="0" id="recruiting-filter-counter">0</span>\n                    <button id="recruiting-filter-tab" class="recruiting__tab recruiting__tab--active">${Gram.Translation.getValue("recruiting.filter")}</button>\n                </div>\n                </div>\n                <div class="recruiting__tab-containerwrap" id="filter-containertab-wrapper-id">\n                <div id="filter-tab-container" class="recruiting__tab-container recruiting__tab-container--hide">\n                    <div class="recruiting__tabelement recruiting__tabelement" id="recruiting-filter-range">\n                        <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.expertise")}</span>\n                        <div class="recruiting__filterbox">\n                            <div id="recruiting-filter-list-range" class="recruiting__filterlist form__group">\n                            </div>\n                        </div>\n                    </div>\n                    <div class="recruiting__tabelement recruiting__tabelement" id="recruiting-filter-targetgroup">\n                        <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.level")}</span>\n                        <div class="recruiting__filterbox">\n                            <div id="recruiting-filter-list-targetgroup" class="recruiting__filterlist form__group">\n                            </div>\n                        </div>\n                    </div>\n                    <div id="recruiting-filter-rest">\n                        <div class="recruiting__tabelement recruiting__tabelement" id="recruiting-filter-staffResponsibilities">\n                            <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.staffresponsibility")}</span>\n                            <div class="recruiting__filterbox">\n                                <div id="recruiting-filter-list-staffResponsibilities" class="recruiting__filterlist form__group">\n                                </div>\n                            </div>\n                        </div>\n                        <div class="recruiting__tabelement recruiting__tabelement" id="recruiting-filter-jobtypes">\n                            <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.jobtype")}</span>\n                            <div class="recruiting__filterbox">\n                                <div id="recruiting-filter-list-jobtypes" class="recruiting__filterlist form__group">\n                                </div>\n                            </div>\n                        </div>\n                        <div class="recruiting__tabelement recruiting__tabelement" id="recruiting-filter-workplacetypes">\n                            <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.workplacetype")}</span>\n                            <div class="recruiting__filterbox">\n                                <div id="recruiting-filter-list-workplacetypes" class="recruiting__filterlist form__group">\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>`,initiativeTemplate:`<a id="recruiting-initiative-link" rel="noopener" class="initiative__link ce-ablelink__link button button--secondary" target="_blank">\n        ${Gram.Translation.getValue("recruiting.initiative")}\n            </a>\n        `,registerFreelanceTemplate:`<a rel="noopener" id="registerfreelance-button-###" class="registerfreelance__link ce-ablelink__link button button--secondary" title="${Gram.Translation.getValue("recruiting.registerfreelance.title")}">\n                ${Gram.Translation.getValue("recruiting.registerfreelance")}\n            </a>`,allFreelanceTemplate:`<a rel="noopener" id="allfreelance-button-###" class="allfreelance__link ce-ablelink__link button button--primary" title="${Gram.Translation.getValue("recruiting.allfreelance.title")}">\n                ${Gram.Translation.getValue("recruiting.allfreelance")}\n            </a>`}}(AbleRecruiting||(AbleRecruiting={})),function(e){e.PlantingTemplates={searchTemplate:"",searchFreelanceTemplate:"",searchHeaderTemplate:"",reloadTemplate:"",filterTemplate:"",initiativeTemplate:"",registerFreelanceTemplate:"",allFreelanceTemplate:""}}(AbleRecruiting||(AbleRecruiting={})),function(e){e.PlantingTemplatesV3={searchTemplate:`<form id="search_form-###" class="recruiting__searchbox form" autocomplete="off">\n                <div class="recruiting__searchkeyword">\n                    <div class="form__item form__item--field form__item--input form__item--input-text form__item--input-text-outline">\n                        <input id="search-recruiting-keyword-###" class="form__field" type="text" name="search" autocomplete="off" maxlength="100">\n                        <label class="form__label" for="search-recruiting-keyword-###">\n                            <span class="form__label-text-wrapper">\n                                <span class="form__label-text form__label-text-search">\n                                ${Gram.Translation.getValue("recruiting.keyword")}\n                                </span>\n                            </span>\n                        </label>\n                    </div>\n                </div>\n                <div class="recruiting__searchcity">\n                    <div class="form__item form__item--field form__item--input form__item--input-text form__item--input-text-outline">\n                        <input id="search-recruiting-city-###" class="form__field form__field--city-fullname" type="text" name="city" autocomplete="off" list="cities" maxlength="50">\n                        <input id="search-recruiting-hidden-city-###" style='display:none'>\n                        <label class="form__label" for="search-recruiting-city-###">\n                            <span class="form__label-text-wrapper">\n                                <span class="form__label-text form__label-text-city">\n                                ${Gram.Translation.getValue("recruiting.city")}\n                                </span>\n                            </span>\n                        </label>\n                    </div>\n                </div>\n                <div class="recruiting__searchradius">\n                    <div class="form__item form__item--field form__item--input form__item--input-text form__item--input-text-outline">\n                        <input id="search-recruiting-radius-###" class="form__field" type="text" name="radius" autocomplete="off" list="radius" maxlength="4">\n                        <label class="form__label" for="search-recruiting-radius-###">\n                            <span class="form__label-text-wrapper">\n                                <span class="form__label-text form__label-text-radius">\n                                ${Gram.Translation.getValue("recruiting.radius")}\n                                </span>\n                            </span>\n                        </label>\n                    </div>\n                </div>\n                <div class="recruiting__searchinput">\n                    <button type="submit" class="recruiting__searchsubmit ce-ablelink__link button button--primary" id="searchButton-###">\n                    ${Gram.Translation.getValue("recruiting.search")}\n                    </button>\n                </div>\n                <div class="recruiting__filterinput">\n                    <span class="recruiting__searchfilter ce-ablelink__link button button--secondary" id="searchFilterButton-###">\n                    ${Gram.Translation.getValue("recruiting.search.adjust")}\n                    </span>\n                </div>\n            </form>\n            <div id="branchinfo-###" class="recruiting__branchinfo recruiting__branchinfo--none">\n                <div class="ce ce--default-width ce-message ce-message--default-width">\n                    <div class="html_message html_message--oneliner html_message--info html_message--nolink">\n                        <span class="html_message__headline html_message__headline--info html_message__headline--link">${Gram.Translation.getValue("recruiting.branch.selected")}</span>\n                        <span class="html_message__linkborder html_message__linkborder--info html_message__linkborder--link">\n                            <button type="submit" class="recruiting__searchsubmit ce-ablelink__link button button--layout-red button--secondary button--secondary-layout-red" id="branchButton-###">\n                                ${Gram.Translation.getValue("recruiting.branch.all")}\n                            </button>\n                        </span>\n                    </div>\n                </div>\n            </div>`,searchFreelanceTemplate:"",searchHeaderTemplate:"",reloadTemplate:`<button id="recruiting-reload-button" type="button" class="recruiting__reloadsubmit ce-ablelink__link button button--primary">${Gram.Translation.getValue("recruiting.reload")}</button>`,filterTemplate:`<div class="recruiting__tabs">\n                <div class="recruiting__tab-wrap">\n                    <span class="recruiting__filtercounter" data-value="0" id="recruiting-filter-counter">0</span>\n                    <button id="recruiting-filter-tab" class="recruiting__tab recruiting__tab--active">${Gram.Translation.getValue("recruiting.filter")}</button>\n                </div>\n                </div>\n                <div class="recruiting__tab-containerwrap" id="filter-containertab-wrapper-id">\n                <div id="filter-tab-container" class="recruiting__tab-container">\n                    <div class="recruiting__tabelement recruiting__tabelement--radius" id="recruiting-filter-radius">\n                        <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.radius")}</span>\n                        <div class="recruiting__filterbox">\n                            <div id="recruiting-filter-list-radius" class="recruiting__filterlist form__group">\n                            </div>\n                        </div>\n                    </div>\n                    <div class="recruiting__tabelement recruiting__tabelement--types" id="recruiting-filter-types">\n                        <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.type")}</span>\n                        <div class="recruiting__filterbox">\n                            <div id="recruiting-filter-list-types" class="recruiting__filterlist form__group">\n                            </div>\n                        </div>\n                    </div>\n                    <div class="recruiting__tabelement recruiting__tabelement--range" id="recruiting-filter-range">\n                        <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.expertise")}</span>\n                        <div class="recruiting__filterbox">\n                            <div id="recruiting-filter-list-range" class="recruiting__filterlist form__group">\n                            </div>\n                        </div>\n                    </div>\n                    <div class="recruiting__tabelement recruiting__tabelement--targetgroup" id="recruiting-filter-targetgroup">\n                        <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.level")}</span>\n                        <div class="recruiting__filterbox">\n                            <div id="recruiting-filter-list-targetgroup" class="recruiting__filterlist form__group">\n                            </div>\n                        </div>\n                    </div>\n\n                    <div class="recruiting__tabelement recruiting__tabelement--staffResponsibilities" id="recruiting-filter-staffResponsibilities">\n                        <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.staffresponsibility")}</span>\n                        <div class="recruiting__filterbox">\n                            <div id="recruiting-filter-list-staffResponsibilities" class="recruiting__filterlist form__group">\n                            </div>\n                        </div>\n                    </div>\n\n\n                    <div class="recruiting__tabelement recruiting__tabelement--jobtypes" id="recruiting-filter-jobtypes">\n                        <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.jobtype")}</span>\n                        <div class="recruiting__filterbox">\n                            <div id="recruiting-filter-list-jobtypes" class="recruiting__filterlist form__group">\n                            </div>\n                        </div>\n                    </div>\n\n                    <div class="recruiting__tabelement recruiting__tabelement--workplacetypes" id="recruiting-filter-workplacetypes">\n                        <span class="recruiting__filteroverline">${Gram.Translation.getValue("recruiting.workplacetype")}</span>\n                        <div class="recruiting__filterbox">\n                            <div id="recruiting-filter-list-workplacetypes" class="recruiting__filterlist form__group">\n                            </div>\n                        </div>\n                    </div>\n\n                </div>\n            </div>`,initiativeTemplate:`<a id="recruiting-initiative-link" rel="noopener" class="initiative__link ce-ablelink__link button button--secondary" target="_blank">\n        ${Gram.Translation.getValue("recruiting.initiative")}\n            </a>\n        `,registerFreelanceTemplate:"",allFreelanceTemplate:""}}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(e){class t{static addAutocompleteListenerApi(e,t,i,a){e.addEventListener("input",(()=>{this.firstMapboxItem=[],t.value="",this.autocompleteActionApi(e,t,i,a)})),e.addEventListener("focusout",(()=>{3===this.firstMapboxItem.length&&this.firstMapboxItem[0]&&this.firstMapboxItem[1]&&this.firstMapboxItem[2]&&(e.value=e.hasClass("form__field--city-fullname")?this.firstMapboxItem[2]:this.firstMapboxItem[0],t.value=this.firstMapboxItem[1]),setTimeout((()=>{this.closeAllLists()}),250)})),e.addEventListener("keydown",(t=>{this.autocompleteKeydown(e,t)}))}static autocompleteActionApi(e,t,i,a){if(e.value&&null!=e.value.trim()&&e.value.length>2){new Gram.Controller.RequestController(i+encodeURIComponent(e.value.replace(";",""))+a).get().then((i=>{this.buildMapboxList(i,e,t)})).catch((()=>{}))}else this.closeAllLists()}static buildMapboxList(e,t,i){var a,n;if(t.value){if(e&&e.features&&e.features.length>0){let s,r;this.closeAllLists();let l=0,c=null!==(n=(null!==(a=t.parentNode)&&void 0!==a?a:document.createElement("div")).parentNode)&&void 0!==n?n:document.createElement("div");for(this.currentFocus=-1,s=document.createElement("div"),s.setAttribute("id",t.id+"autocomplete-list"),s.setAttribute("class","autocomplete__items"),c.appendChild(s),l=0;l<e.features.length;l++)if(e.features[l]["place_name_"+pageLanguage]){0==l&&(this.firstMapboxItem=[e.features[l]["text_"+pageLanguage],e.features[l].geometry.coordinates,e.features[l]["place_name_"+pageLanguage]]),r=document.createElement("div"),r.setAttribute("class","autocomplete__item");let a=0;e.features[l]["place_name_"+pageLanguage].substr(0,t.value.length).toUpperCase()==t.value.toUpperCase()&&(a=t.value.length),r.innerHTML="<strong>"+e.features[l]["place_name_"+pageLanguage].substr(0,a)+"</strong>",r.innerHTML+=e.features[l]["place_name_"+pageLanguage].substr(a),r.innerHTML+="<input type='hidden' value='"+e.features[l]["text_"+pageLanguage]+"'>",r.innerHTML+="<input type='hidden' value='"+e.features[l].geometry.coordinates+"'>",r.innerHTML+="<input type='hidden' value='"+e.features[l]["place_name_"+pageLanguage]+"'>",r.addEventListener("click",(e=>{let a=e.target;"STRONG"===a.tagName&&(a=a.parentElement);let n=null==a?void 0:a.getElementsByTagName("input");n&&n[0]&&n[1]&&n[2]&&(t.value=t.hasClass("form__field--city-fullname")?n[2].value:n[0].value,i.value=n[1].value),this.closeAllLists()})),s.appendChild(r)}}}else this.closeAllLists()}static addAutocompleteListenerStatic(e,t){e.addEventListener("focusin",(()=>{this.autocompleteActionStatic(e,t)})),e.addEventListener("focusout",(()=>{setTimeout((()=>{this.closeAllLists()}),250)})),e.addEventListener("keydown",(t=>{this.autocompleteKeydown(e,t)}))}static autocompleteActionStatic(e,t){var i,a;let n,s,r=0,l=null!==(a=(null!==(i=e.parentNode)&&void 0!==i?i:document.createElement("div")).parentNode)&&void 0!==a?a:document.createElement("div");if(this.closeAllLists(),t&&t.length>0)for(this.currentFocus=-1,n=document.createElement("div"),n.setAttribute("id",e.id+"autocomplete-list"),n.setAttribute("class","autocomplete__items"),l.appendChild(n),r=0;r<t.length;r++)t[r]&&t[r].substr(0,e.value.length).toUpperCase()==e.value.toUpperCase()&&(s=document.createElement("div"),s.setAttribute("class","autocomplete__item"),s.innerHTML="<strong>"+t[r].substr(0,e.value.length)+"</strong>",s.innerHTML+=t[r].substr(e.value.length),s.innerHTML+="<input type='hidden' value='"+t[r]+"'>",s.addEventListener("click",(t=>{let i=t.target;"STRONG"===i.tagName&&(i=i.parentElement);let a=null==i?void 0:i.getElementsByTagName("input");a&&a[0]&&(e.value=a[0].value),this.closeAllLists()})),n.appendChild(s))}static autocompleteKeydown(e,t){let i=document.getElementById(e.id+"autocomplete-list"),a=null;i&&(a=i.getElementsByTagName("div"),40==t.keyCode?(this.currentFocus++,this.addActive(a)):38==t.keyCode?(this.currentFocus--,this.addActive(a)):13==t.keyCode?(t.preventDefault(),a&&this.currentFocus>-1&&a[this.currentFocus].click()):9==t.keyCode&&a&&void 0!==a[0]&&a[0].click())}static closeAllLists(){document.querySelectorAll(".autocomplete__items").forEach((e=>e.remove()))}static addActive(e){e&&(this.removeActive(e),this.currentFocus>=e.length&&(this.currentFocus=0),this.currentFocus<0&&(this.currentFocus=e.length-1),e[this.currentFocus].classList.add("autocomplete__active"))}static removeActive(e){for(var t=0;t<e.length;t++)e[t].classList.remove("autocomplete__active")}}t.currentFocus=0,t.firstMapboxItem=[],e.AutoComplete=t}(t=e.Utils||(e.Utils={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(e){e.Number=class{static numberWithSeperator(e,t="de"){let i=".";if("en"===t.toLowerCase())i=",";else i=".";return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,i)}}}(t=e.Utils||(e.Utils={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;!function(e){class t{static addSelectListener(e,t){e.addEventListener("focusin",(()=>{this.selectActionStatic(e,t)})),e.addEventListener("click",(()=>{this.selectActionStatic(e,t)})),e.addEventListener("focusout",(()=>{setTimeout((()=>{this.closeAllLists()}),250)})),e.addEventListener("keydown",(t=>{this.selectKeydown(e,t)}))}static selectActionStatic(e,t){var i,a;if("closed"==this.status){let n,s,r=0,l=null!==(a=(null!==(i=e.parentNode)&&void 0!==i?i:document.createElement("div")).parentNode)&&void 0!==a?a:document.createElement("div");if(this.closeAllLists(),t&&t.length>0)for(this.currentFocus=-1,n=document.createElement("div"),n.setAttribute("id",e.id+"select-list"),n.setAttribute("class","select__items"),l.appendChild(n),this.status="opend",r=0;r<t.length;r++)s=document.createElement("div"),t[r]==e.value||0==r&&("0"==e.value||"-"==e.value||""==e.value)?(s.setAttribute("class","select__item select__active"),this.currentFocus=r):s.setAttribute("class","select__item"),s.innerHTML+=t[r],s.innerHTML+="<input type='hidden' value='"+t[r]+"'>",s.addEventListener("click",(t=>{let i=t.target;"STRONG"===i.tagName&&(i=i.parentElement);let a=null==i?void 0:i.getElementsByTagName("input");a&&a[0]&&("0"==a[0].value||"-"==a[0].value||""==a[0].value?(e.value="",e.blur(),e.parentElement.classList.remove("form__item--input-text-outline-value","form__item--input-text-value")):e.value=a[0].value),this.closeAllLists()})),n.appendChild(s)}}static selectKeydown(e,t){let i=document.getElementById(e.id+"select-list"),a=null;i&&(a=i.getElementsByTagName("div"),40==t.keyCode?(t.preventDefault(),this.currentFocus++,this.addActive(a)):38==t.keyCode?(t.preventDefault(),this.currentFocus--,this.addActive(a)):13==t.keyCode?(t.preventDefault(),a&&this.currentFocus>-1&&a[this.currentFocus].click()):9==t.keyCode&&a&&void 0!==a[0]&&a[0].click())}static closeAllLists(){document.querySelectorAll(".select__items").forEach((e=>e.remove())),this.status="closed"}static addActive(e){e&&(this.removeActive(e),this.currentFocus>=e.length&&(this.currentFocus=0),this.currentFocus<0&&(this.currentFocus=e.length-1),e[this.currentFocus].classList.add("select__active"))}static removeActive(e){for(var t=0;t<e.length;t++)e[t].classList.remove("select__active")}}t.currentFocus=0,t.status="closed",e.Select=t}(t=e.Utils||(e.Utils={}))}(AbleRecruiting||(AbleRecruiting={})),function(e){let t;t=e.TYPO3||(e.TYPO3={}),e.debugStart("ABLE-Recruiting"),e.Messaging.subscribe("initialize",(()=>{AbleRecruiting.Controller.CoreController.getInstance()}),!0),e.debugEnd("ABLE-Recruiting")}(Gram||(Gram={}));"use strict";var Gram;!function(e){let t;!function(t){t.Searchlink=class{constructor(t){let a=document.getElementById("search-form-"+t),r=document.getElementById("search-input-"+t),n=document.getElementById("search-url-"+t);this.focusBehavior(r),setTimeout((()=>{r.focus()}),500),a.addEventListener("submit",(t=>{var o;t.preventDefault();let i=n.innerText.trim().replace(/\n/g," ");r.value&&(i+="?keyword="+encodeURIComponent(r.value));let l=new e.Controller.RequestController(location.origin+"/api/tracking");return l.setParameter("site",null!==(o=a.getAttribute("data-id").toString())&&void 0!==o?o:"0"),l.setParameter("language",pageLanguage),l.setParameter("action","searchSideNavigation"),l.setParameter("data",r.value),l.setParameter("additional",""),l.setParameter("page",location.pathname+location.search),l.setDefaultErrorNotification(!1),l.put(),location.href=i,!1}))}focusBehavior(t){t.addEventListener("focus",(()=>{t.parentElement.classList.add("form__item--input-text-outline-value","form__item--input-text-value"),"Planting"==company&&"V3"==version?t.setAttribute("placeholder",e.Translation.getValue("search.keyword.placeholder.planting.v3")):t.setAttribute("placeholder",e.Translation.getValue("search.keyword.placeholder"))})),t.addEventListener("focusout",(()=>{""===t.value&&(t.parentElement.classList.remove("form__item--input-text-outline-value","form__item--input-text-value"),t.removeAttribute("placeholder"))}))}}}(t=e.TYPO3||(e.TYPO3={}))}(Gram||(Gram={}));"use strict";var Gram;!function(e){let t;!function(t){t.Newsletter=class{constructor(t){let r="newsletter-form-"+t,n=document.getElementById(r),s=document.getElementById("newsletter-input-"+t),o=document.getElementById("newsletter-result-"+t);n.addEventListener("submit",(l=>{l.preventDefault();let a="https://api.ferchau.com/v2/newsletter/add",i=new e.Controller.RequestController(a);return i.setParameter("origin","https://www.ferchau.com"),i.setParameter("newsletter","ferchau_corporate_newsletter"),i.setParameter("originNewsletter","corporate_website"),i.setParameter("mail",s.value),i.setParameter("X-ABLE-API",location.protocol+"//"+location.host),i.post().then((s=>{if(!1===s.status&&e.Controller.NotifyController.message(e.Type.NotifyMessageType.ERROR,s.headline,s.message,5e3,1),!0===s.status){e.Controller.NotifyController.message(e.Type.NotifyMessageType.SUCCESS,s.headline,s.message,15e3,1),n.style.display="none",o.innerHTML=s.headline;let l=document.getElementById("newsletter-subscribe-"+t);e.Controller.Tracking.GoogleAnalyticsTracking.getInstance().formSubmit(r,"newsletter",a,l.textContent)}})),!1}))}focusBehavior(e){e.addEventListener("focus",(()=>{e.parentElement.classList.add("form__item--input-text-outline-value","form__item--input-text-value")})),e.addEventListener("focusout",(()=>{""===e.value&&e.parentElement.classList.remove("form__item--input-text-outline-value","form__item--input-text-value")}))}}}(t=e.TYPO3||(e.TYPO3={}))}(Gram||(Gram={}));"use strict";
/*******************************************************************************
* Gram Framework TYPO3 - FERCHAU - Config
* @copyright ABLE Management Services
* @package Gram
* @subpackage FERCHAU
*******************************************************************************/var FE;!function(e){!function(t){t.FerchauConfig={Menu:{borderElementId:"ferchauBorder",headerElementId:"ferchauHeader",menuStatusIndicatorId:"menuStatusIndicator",headerBemClass:"ferchau__header",mobilePosition:"bottom",menuSwitchElementId:"menuSwitch",sitebarId:"sitebar",mainmenuElementId:"mainmenu",mainmenuBemClass:"ferchau_menu",submenuIdentClass:"page-navi__link--main-layer-children",menuIdentClass:"page-navi__border",menuLiIdentClass:"page-navi__item",navigationLinkIdentClass:"page-navi__link",levelZeroLinkBemClass:"page-navi__link--level-one",levelOneNavigationLinkBemClass:"page-navi__link--level-one",levelTwoNavigationLinkBemClass:"page-navi__link--level-two",levelThreeNavigationLinkBemClass:"page-navi__link--level-three",levelTwoNavigationBemClass:"page-navi__navigation--level-two",levelThreeNavigationBemClass:"page-navi__navigation--level-three",clipWidthCalculateFactorDesktop:7,clipWidthCalculateFactorMobile:14,submenuImplyTime:1e3,menuAniTime:500},decorativeImageMaxHeight:600},t.FerchauCookieConfig={logo:"https://cdn.able-group.de/ferchau/images/logo/5.0.0/logoPositive.svg",companyName:"FERCHAU GmbH",companyUrl:"https://www.ferchau.com",legalNotice:"en"===pageLanguage?"https://www.ferchau.com/de/en/legal-notices":"https://www.ferchau.com/de/de/impressum",infoUrls:{},dataProtectionLink:"en"===pageLanguage?"https://www.ferchau.com/de/en/data-protection":"https://www.ferchau.com/de/de/datenschutz",items:[e.Type.CookieItemType.GOOGLE_ADWORDS,e.Type.CookieItemType.GOOGLE_ANALYTICS,e.Type.CookieItemType.GOOGLE_SIGNALS,e.Type.CookieItemType.PINGDOM,e.Type.CookieItemType.YOUTUBE,e.Type.CookieItemType.PODIGEE],language:pageLanguage,headline:"header__headline header__headline--alignment-default header__headline--layout-default header__headline--sub-6 header__headline--sub-6-layout-default",buttonPrimary:"button button--primary",buttonSecondary:"button button--secondary"}}(e.TYPO3||(e.TYPO3={}))}(Gram||(Gram={})),Gram.TYPO3.OverrideGlobalSettings={page:{devices:{largedesktop:0,bigdesktop:0}}},Gram.Config.set("AbleBlog",{detailNavButtonsSetting:"stickyAndBelowHeaderImage"}),function(e){let t;!function(e){Gram.debug("declaring menu class");e.Menu=class{constructor(e){if(this.menuStatus="init",this.hand="right",this.openedSubmenus=[],this.headerMenuPosition="default",this.isPhone=!1,!0===e&&window.screen.width<+Gram.Config.get("page","devices","tablet")&&(this.isPhone=!0),this.ferchauBorder=Gram.Utility.DocumentUtility.get("#"+Gram.Config.get("FERCHAU","Menu","borderElementId"),null,!1)[0],this.header=Gram.Utility.DocumentUtility.get("#"+Gram.Config.get("FERCHAU","Menu","headerElementId"),null,!1)[0],this.menuSwitch=Gram.Utility.DocumentUtility.get("#"+Gram.Config.get("FERCHAU","Menu","menuSwitchElementId"),null,!1)[0],this.mainmenu=Gram.Utility.DocumentUtility.get("#"+Gram.Config.get("FERCHAU","Menu","mainmenuElementId"),null,!1)[0],this.menuStatusIndicator=this.menuSwitch.firstChild,1==this.isPhone){this.headerMenuPosition=Gram.Config.get("FERCHAU","Menu","mobilePosition")+"-"+this.hand;let e=Gram.Utility.DocumentUtility.get("#"+Gram.Config.get("FERCHAU","Menu","sitebarId")+" > nav")[0].cloneNode(!0);Gram.Utility.DocumentUtility.bemModifier([e,...Gram.Utility.DocumentUtility.getAllChildren(e)],["horizontal","sidebar-layer"],["vertical","sidebar"]),Gram.Utility.DocumentUtility.add(e,this.mainmenu),Gram.TYPO3.createJsPageLinks(Gram.Utility.DocumentUtility.get('a[data-target="jscall"]',this.mainmenu))}this.header&&Gram.Utility.DocumentUtility.bemModifier([this.header],[this.headerMenuPosition]),this.mainmenu&&Gram.Utility.DocumentUtility.bemModifier([this.mainmenu],[this.headerMenuPosition]);let t=0;Gram.Utility.DocumentUtility.get("."+Gram.Config.get("FERCHAU","Menu","submenuIdentClass"),null,!1).forEach((e=>{e.hasClass(Gram.Config.get("FERCHAU","Menu","levelZeroLinkBemClass"))&&(t=0);let i=e.classList[0]+e.title.replace(/ /g,"-").replace(/[^a-zA-Z0-9öäüÖÄÜß\-_]/g,"");e.id=i,e.dataset.index=t.toString();let a=Gram.Utility.DocumentUtility.get("#"+i+" + ."+Gram.Config.get("FERCHAU","Menu","menuIdentClass"),e.parentNode)[0];a.dataset.status="closed",a.dataset.submenu=t.toString(),e.onclick=e=>{e.target.blur(),Gram.Utility.HelperUtility.preventDefault(e);let t=Gram.Utility.HelperUtility.getEventTarget(e),i=t.parentNode;if(0==+t.dataset.index&&null!=this.activeMainmenu){let e=this.activeMainmenu==i;if(this.closeSubmenu(0),!0===e)return}0==this.openedSubmenus.length&&(this.activeMainmenu=i,Gram.Utility.DocumentUtility.bemModifier([this.mainmenu],["submenu-open"]),Gram.Utility.DocumentUtility.bemModifier([this.activeMainmenu],["active-sub-parent"])),this.subMenuAction(t)},t++})),this.mainmenu.dataset.status="closed",this.menuStatusIndicator.dataset.status="closed",this.mainmenu.onclick=e=>{let t=Gram.Utility.HelperUtility.getEventTarget(e);switch(t.nodeName){case"NAV":this.menuAction();break;case"DIV":"mainmenu"!=t.id&&void 0!==t.dataset.status||this.menuAction(),void 0!==t.dataset.status&&this.closeSubmenu(+t.dataset.submenu);break;case"OL":let e=t.parentNode;void 0===e.dataset.status&&this.menuAction(),void 0!==e.dataset.status&&this.closeSubmenu(+e.dataset.submenu);break;case"LI":let i=t.parentNode.parentNode;void 0===i.dataset.status&&this.menuAction(),void 0!==i.dataset.status&&this.closeSubmenu(+i.dataset.submenu)}},this.menuSwitch.onclick=()=>this.menuAction(),this.ferchauBorder.onclick=e=>{"opened"==this.menuStatus&&e.target==this.ferchauBorder&&this.menuAction()},Gram.Messaging.subscribe("close-menu",(()=>{"opened"==this.menuStatus&&this.menuAction()})),Gram.Messaging.subscribe("layer-open-before-hook",(e=>{"opened"==this.menuStatus&&(!1===this.isPhone||this.isPhone&&"side-navigation"!=e.layerUsage)&&this.menuAction()}))}toggle(){Gram.debug("FE.Controller.Sidebar.Search.toggle called")}adaptToHand(e){let t=Math.round(window.screen.width/2),i="right";if(e.touches[0].clientX<t&&(i="left"),i!=this.hand){let e=this.headerMenuPosition;this.headerMenuPosition=Gram.Config.get("FERCHAU","Menu","mobilePosition")+"-"+i,Gram.Utility.DocumentUtility.bemModifier([this.header,this.mainmenu],[this.headerMenuPosition],[e]),this.hand=i}}menuAction(){if("init"==this.menuStatus)return this.mainmenu.removeClass(Gram.Config.get("FERCHAU","Menu","mainmenuBemClass")+"--init"),this.menuStatus="closed",void window.setTimeout((()=>{this.menuAction()}),50);"opened"==this.menuStatus?(Gram.Utility.DocumentUtility.bemModifier([this.ferchauBorder],[],["blur"]),this.menuStatus="closed",this.mainmenu.dataset.status="closed",this.menuStatusIndicator.dataset.status="closed",1==this.isPhone&&(document.body.style.overflow="",Gram.TYPO3.closeLayer()),this.closeSubmenu(0)):"closed"==this.menuStatus&&(Gram.Messaging.publish("close-layer","menu"),Gram.Messaging.publish("close-recruiting-searchbox"),Gram.Utility.DocumentUtility.bemModifier([this.ferchauBorder],["blur"]),this.menuStatus="opened",this.mainmenu.dataset.status="opened",this.menuStatusIndicator.dataset.status="opened",1==this.isPhone&&(document.body.style.overflow="hidden",window.setTimeout((()=>{let e=Gram.Utility.DocumentUtility.get("#mainmenu .page-navi--main-layer",null,!0)[0];e.scrollTop=e.scrollHeight}),125)),this.openSubmenus())}openSubmenus(){Gram.Utility.DocumentUtility.get(".page-navi__link--active-parent + .page-navi__border",this.mainmenu).forEach(((e,t)=>{let i=document.referrer,a=125;(""===i||i.indexOf(document.location.host)<0)&&(e.dataset.status="imply",a=+Gram.Config.get("FERCHAU","Menu","submenuImplyTime")*(t+1)),window.setTimeout((()=>{e.dataset.status="opened",this.openedSubmenus.push(e),0==t&&(this.activeMainmenu=e.parentNode),Gram.Utility.DocumentUtility.bemModifier([this.mainmenu],["submenu-open"]),Gram.Utility.DocumentUtility.bemModifier([this.activeMainmenu],["active-sub-parent"]),window.setTimeout((()=>{let e=Gram.Utility.DocumentUtility.get(".page-navi__link--active");if(e.length>0){let t=e[0],i=t.parentNode.parentNode,a=0;"default"!=this.headerMenuPosition&&t.offsetTop<60&&(a=t.offsetTop+i.offsetHeight/2),"default"==this.headerMenuPosition&&t.offsetTop>i.offsetHeight-100&&(a=i.offsetHeight-t.offsetTop+i.offsetHeight/2),0!=a&&i.scrollTo({top:a,left:0,behavior:"smooth"})}}),+Gram.Config.get("FERCHAU","Menu","menuAniTime"))}),a)}))}subMenuAction(e){let t=Gram.Utility.DocumentUtility.get("#"+e.id+" + ."+Gram.Config.get("FERCHAU","Menu","menuIdentClass"),e.parentNode)[0],i=t.dataset.status;"A"==e.nodeName&&("opened"==i?this.closeSubmenu(0):(t.dataset.status="opened",this.openedSubmenus.push(t)))}closeSubmenu(e){e>=1&&(this.openedSubmenus[1].dataset.status="closed",this.openedSubmenus.pop()),0===e&&(this.openedSubmenus=this.openedSubmenus.reverse(),this.openedSubmenus.forEach((e=>{e.dataset.status="closed"})),this.openedSubmenus=[],this.resetMenu())}resetMenu(){Gram.Utility.DocumentUtility.bemModifier([this.mainmenu],[],["submenu-open"]),this.activeMainmenu&&(Gram.Utility.DocumentUtility.bemModifier([this.activeMainmenu],[],["active-sub-parent"]),this.activeMainmenu=null)}}}(t=e.Controller||(e.Controller={}))}(FE||(FE={})),function(e){let t;!function(e){Gram.debug("declaring showcase-topics class");e.ShowcaseTopics=class{constructor(){let e=0,t=new IntersectionObserver((i=>{i.forEach((i=>{if(i.intersectionRatio>0){if(0===e)return void(t&&t.disconnect());let a=0;t.unobserve(i.target),i.target.classList.forEach((e=>{e.indexOf("--view-showcase")>0&&(a=+e.split("-").pop())})),a>0&&(e--,this.findAnchor(i.target,a),this.responsiveElement(i.target,a),Gram.Messaging.subscribe("WebsiteResize",(()=>{this.responsiveElement(i.target,a)})))}}))}),Gram.Config.get("page","observer")),i=Gram.Utility.DocumentUtility.get('.content-grid__grid[class*="--view-showcase"]');e=i.length,i.forEach((e=>{t.observe(e)}))}responsiveElement(e,t){if(window.innerWidth>=1100){let i=0,a=100;e.childNodes.forEach((function(e,n){let s=e;switch(n){case 0:s.style.top=i+"px",i+=s.getBoundingClientRect().height;break;case 1:s.style.top=a+"px",a+=s.getBoundingClientRect().height;break;case 2:211==t?(i=a=Math.max(i,a),s.style.top=i+"px",i=a+=s.getBoundingClientRect().height):(s.style.top=i+"px",i+=s.getBoundingClientRect().height);break;case 3:211==t?(i=a=Math.max(i,a),s.style.top=i+"px",i=a+=s.getBoundingClientRect().height):(s.style.top=a+"px",a+=s.getBoundingClientRect().height);break;case 4:i=a=Math.max(i,a),s.style.top=i+"px",i=a+=s.getBoundingClientRect().height}})),e.style.height=Math.max(i,a)+"px",window.setTimeout((()=>{e.style.overflow="visible"}),200)}else e.childNodes.forEach((function(e,t){e.style.top=""})),e.style.height=""}findAnchor(e,t){e.childNodes.forEach((e=>{let t=e;if(t.hasClass("ce-textpic")||t.hasClass("ce-text")||t.hasClass("ce-image")){let e=t.querySelector("header");if(e){let i=e.querySelector("a");i&&(this.setReadMore(t,i.getAttribute("href")),t.title=i.title)}}}))}setReadMore(e,t){Gram.Utility.DocumentUtility.bemModifier([e],["showcase-topics-link"]),e.setAttribute("data-url",t);let i=`<p class="paragraph paragraph--columns-1 paragraph--layout-default ce-textonly__paragraph ce-textonly__paragraph--columns-1 ce-textonly__paragraph--layout-default"><a class="ce-ablelink__link header__headline header__headline--sub-5 blog-readon__link" href="${t}">${Gram.Translation.getValue("blog.read-more")}</a></p>`,a=document.createRange().createContextualFragment(i),n=e.getElementsByClassName("ce-textpic__text");n.length>0&&n[0].appendChild(a);let s=e.getElementsByClassName("ce-text__text");s.length>0&&s[0].appendChild(a)}}}(t=e.Controller||(e.Controller={}))}(FE||(FE={})),function(e){let t;!function(e){Gram.debug("declaring ColumnToSlider class");e.ColumnToSlider=class{constructor(){Gram.Utility.DocumentUtility.get(".columns--mobile-behavior-slider").forEach((e=>{this.prepareSlider(e.querySelectorAll(".columns__column"))})),Gram.Utility.DocumentUtility.get(".contentgrid--view-mobile-behavior-slider").forEach((e=>{this.prepareSlider(e.querySelectorAll(".content-grid__grid > div"),!0)}))}prepareSlider(e,t=!1){let i=e[0].parentNode;this.swiperConfig={classNameSwiper:"swiper",classNameContainer:"swiper__container",classNameWrapper:"swiper__wrapper",classNameSlide:"swiper__slide",classNameSlideActive:"swiper__slide--active",classNamePrev:"swiper__prev",classNameNext:"swiper__next",classNameIndicator:"swiper__indicator",classNameIndicatorItem:"swiper__indicator-item",classNameIndicatorItemActive:"swiper__indicator-item--active",endless:!0,adjustHeight:!0};let a=document.createElement("div");a.setAttribute("class",this.swiperConfig.classNameSwiper),a.addClass(this.swiperConfig.classNameSwiper+"--containerelements");let n=document.createElement("div");n.setAttribute("class",this.swiperConfig.classNameContainer);let s=document.createElement("div");s.setAttribute("class",this.swiperConfig.classNameWrapper);let o=document.createElement("div");o.setAttribute("class",this.swiperConfig.classNamePrev),o.innerHTML="prev";let l=document.createElement("div");l.setAttribute("class",this.swiperConfig.classNameNext),l.innerHTML="next";let r=document.createElement("div");r.setAttribute("class",this.swiperConfig.classNameIndicator),e.forEach(((t,i)=>{let a=document.createElement("div");a.setAttribute("class",this.swiperConfig.classNameSlide),a.appendChild(t),s.appendChild(a);let n=document.createElement("span");n.setAttribute("class",this.swiperConfig.classNameIndicatorItem),n.textContent=" ",n.setAttribute("title",`${i} / ${e.length}`),r.appendChild(n)})),n.appendChild(s),a.appendChild(n),a.appendChild(o),a.appendChild(l),a.appendChild(r),t?i.parentNode.parentNode.insertBefore(a,i.parentNode.nextSibling):i.parentNode.insertBefore(a,i.nextSibling),setTimeout((()=>{Gram.Utility.DocumentUtility.bemModifier([a],["visible"]),new Gram.Controller.SwiperController(a,this.swiperConfig)}),100)}}}(t=e.Controller||(e.Controller={}))}(FE||(FE={})),function(e){let t;!function(e){Gram.debug("declaring lightbox class");e.Lightbox=class{constructor(){this.delta=6,this.videos=document.querySelectorAll("video");let e=document.querySelectorAll('[data-link*="#"]');e.forEach((e=>{let t=e.dataset.link;this.initLightboxLinks(t,e)})),e=document.querySelectorAll('a[href*="#"]'),e.forEach((e=>{let t=e.getAttribute("href");this.initLightboxLinks(t,e)}))}initLightboxLinks(e,t){let i=e.split("#")[1];if(i){let e=document.querySelector("#"+i);e&&e.hasClass("ce--lightbox")&&(t.onclick=null,t.addEventListener("click",(e=>{e.preventDefault&&e.preventDefault()})),t.addEventListener("mousedown",(e=>{this.startX=e.pageX,this.startY=e.pageY})),t.addEventListener("mouseup",(t=>{const i=Math.abs(t.pageX-this.startX),a=Math.abs(t.pageY-this.startY);i<this.delta&&a<this.delta&&(this.lightboxBodyContent=e,this.openLightboxClickEvent(t))})))}}openLightboxClickEvent(e){this.createLightbox(),this.lightboxBody.append(this.lightboxBodyContent),this.openLightbox()}closeLightboxClickEvent(e){e.preventDefault&&e.preventDefault();let t=e.target;(t.hasClass("lightbox")||t.hasClass("lightbox__close-button"))&&(this.closeLightbox(),setTimeout((()=>{this.removeLightbox()}),300))}createLightbox(){this.lightbox=document.createElement("div"),this.lightbox.setAttribute("class","lightbox"),this.lightbox.addEventListener("click",(e=>{this.closeLightboxClickEvent(e)})),this.lightboxContainer=document.createElement("div"),this.lightboxContainer.setAttribute("class","lightbox__container"),this.lightboxContent=document.createElement("div"),this.lightboxContent.setAttribute("class","lightbox__content"),this.lightboxCloseButton=document.createElement("div"),this.lightboxCloseButton.setAttribute("class","lightbox__close-button"),this.lightboxCloseButton.addEventListener("click",(e=>{this.closeLightboxClickEvent(e)})),this.lightboxBody=document.createElement("div"),this.lightboxBody.setAttribute("class","lightbox__body"),this.lightboxContent.append(this.lightboxCloseButton),this.lightboxContent.append(this.lightboxBody),this.lightboxContainer.append(this.lightboxContent),this.lightbox.append(this.lightboxContainer),document.body.append(this.lightbox)}removeLightbox(){document.body.append(this.lightboxBodyContent),this.lightbox.remove()}openLightbox(){setTimeout((()=>{Gram.Utility.DocumentUtility.bemModifier([this.lightbox],["show"])}),10),setTimeout((()=>{Gram.Utility.DocumentUtility.bemModifier([this.lightbox],["movein"])}),10),Gram.Utility.DocumentUtility.bemModifier([document.body],["lightbox"]),setTimeout((()=>{Gram.Utility.DocumentUtility.bemModifier([document.body],["lightbox-fadein"])}),10),this.pauseVideos()}closeLightbox(){Gram.Utility.DocumentUtility.bemModifier([this.lightbox],[],["movein"]),Gram.Utility.DocumentUtility.bemModifier([this.lightbox],[],["show"]),Gram.Utility.DocumentUtility.bemModifier([document.body],[],["lightbox-fadein"]),setTimeout((()=>{Gram.Utility.DocumentUtility.bemModifier([document.body],[],["lightbox"])}),250),this.playVideos()}pauseVideos(){this.videos.forEach((e=>{e.played&&e.pause()}))}playVideos(){this.videos.forEach((e=>{e.paused&&e.play()}))}}}(t=e.Controller||(e.Controller={}))}(FE||(FE={})),function(e){let t;!function(e){e.Share=class{constructor(){this.socialButtons=[],this.shareConfig={linkedin:{url:"https://www.linkedin.com/sharing/share-offsite/?url=",icon:""},xing:{url:"https://www.xing.com/social/share/spi?url=",icon:""},facebook:{url:"https://www.facebook.com/sharer/sharer.php?u=",icon:""},twitter:{url:"https://twitter.com/intent/tweet?url=",icon:""},mail:{url:"",icon:""}},Gram.Messaging.subscribe("layer-open-before-hook",(e=>{let t=e.layerUsage.split("-")[0];["blog","press","recruiting"].indexOf(t)>-1&&this.addLayerTopbar(t,e.layerUsage)})),Gram.Messaging.subscribe("layer-content-added-after-hook",(e=>{let t=e.layerUsage.split("-")[0];["blog","press","recruiting"].indexOf(t)>-1&&this.updateLayerTopbar(t)}))}getElements(e=""){let t=document.createElement("div");t.addClass("social"+e);let i=window.location.href;for(let a in this.shareConfig){let n=this.shareConfig[a],s=document.createElement("div");s.addClass("social"+e+"__button","social"+e+"__button--"+a),s.setAttribute("key",a),s.innerText=n.icon,s.onclick=()=>{"mail"===a?window.location.href="mailto:?subject="+Gram.Translation.getValue("share.mail.subject")+"&body="+encodeURIComponent(Gram.Translation.getValue("share.mail.text"))+i:window.open(n.url+i,a+"-share-dialog","width=500,height=500")},this.socialButtons.push(s),t.appendChild(s)}return t}addLayerTopbar(e,t){let i=document.createElement("div");i.addClass("layerv2__topbar");let a=document.createElement("div");a.addClass("socialtopbar__share"),a.innerHTML='<span class="socialtopbar__share-icon"></span>';let n=this.getElements("topbar");i.appendChild(a),i.appendChild(n),i.onmouseover=e=>{n.classList.add("open")},i.onmouseout=()=>{n.classList.remove("open")},e="recruiting"===e?"jobs":e,document.querySelector('.layerv2[data-layer-usage="'+t+'"] .layerv2__wrapper').insertAdjacentElement("afterbegin",i)}updateLayerTopbar(e){let t=window.location.href,i=document.querySelector(".layerv2 .entry-item h1").textContent;this.socialButtons.forEach((a=>{a.onclick=()=>{let n=a.getAttribute("key"),s=this.shareConfig[a.getAttribute("key")];"mail"===n?window.location.href="recruiting"===e?"mailto:?subject="+encodeURIComponent(Gram.Translation.getValue("share-recruiting.mail.subject")+i)+"&body="+encodeURIComponent(Gram.Translation.getValue("share-recruiting.mail.text")+t):"mailto:?subject="+encodeURIComponent(Gram.Translation.getValue("share.mail.subject"))+"&body="+encodeURIComponent(Gram.Translation.getValue("share.mail.text")+t):window.open(s.url+t,n+"-share-dialog","width=500,height=500")}}))}}}(t=e.Controller||(e.Controller={}))}(FE||(FE={}));
/*******************************************************************************
* Gram Framework TYPO3 - FERCHAU
* @copyright ABLE Management Services
* @package Gram
* @subpackage FERCHAU
*******************************************************************************/
let ferchauCore=class{constructor(){if(Gram.debug("adding FERCHAU settings to gram config"),Gram.Config.add("FERCHAU",Gram.TYPO3.FerchauConfig),Gram.debugStart("Cookie Config"),Gram.Controller.AsyncCookieController.getInstance(Gram.TYPO3.FerchauCookieConfig),Gram.debugEnd("Cookie Config"),Gram.Config.set("GramLayerV2",{layerAnimation:"right",layerParentElementSelector:"#ferchauBorder",layerParentElementClassModifier:["layer-blur"],closeButtonParentElementSelector:"#sitebar",changeH1:!0}),this.isMobile=Gram.Utility.HelperUtility.isMobile(),this.sitebarLogo=Gram.Utility.DocumentUtility.get("#sitebarLogo")[0],this.menuSwitch=Gram.Utility.DocumentUtility.get("#"+Gram.Config.get("FERCHAU","Menu","menuSwitchElementId"),null,!1)[0],this.menuSwitch&&(Gram.TYPO3.Ferchau?Gram.Messaging.subscribe("initialize",(()=>{this.Menu=new FE.Controller.Menu(this.isMobile)})):window.setTimeout((()=>{this.Menu=new FE.Controller.Menu(this.isMobile)}),1e3)),Gram.Utility.DocumentUtility.get('.content-grid__grid[class*="--view-showcase"]').length>0&&Gram.Messaging.subscribe("initialize",(()=>{new FE.Controller.ShowcaseTopics})),Gram.Utility.DocumentUtility.get(".ce--lightbox").length>0&&Gram.Messaging.subscribe("initialize",(()=>{new FE.Controller.Lightbox})),window.innerWidth<+Gram.Config.get("page","devices","tablet")&&(Gram.Utility.DocumentUtility.get(".columns--mobile-behavior-slider").length>0||Gram.Utility.DocumentUtility.get(".contentgrid--view-mobile-behavior-slider").length>0)&&Gram.Messaging.subscribe("initialize",(()=>{new FE.Controller.ColumnToSlider})),this.sitebarLogo)if("IntersectionObserver"in window&&window.screen.width>=+Gram.Config.get("page","devices","tablet")){this.sitebarLogo.dataset.status="hidden",new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting?this.sitebarLogo.dataset.status="hidden":this.sitebarLogo.dataset.status="show"}))}),{rootMargin:"0px 0px",threshold:.01}).observe(Gram.Utility.DocumentUtility.get("#headerLogo")[0])}else this.sitebarLogo.dataset.status="show";this.stickyHeader=document.querySelector(".ferchau__header--fixed"),this.stickyHeader&&["scroll","resize","DOMContentLoaded"].forEach((e=>{window.addEventListener(e,(()=>{this.animateHeader()}))})),Gram.Messaging.subscribe("Hook:CoreLayerContent",(e=>this.getLayerHeadline(e)+e.content)),Gram.Messaging.subscribe("Hook:ImageUtility.initResponsive",(e=>{let t=e.imageHeight;if(e.image.hasClass("ce-image__image--contentgrid")){let i=e.image.parentNode;if(i.hasClass("ce-fact__iconborder--icon-left")||i.hasClass("ce-fact__iconborder--icon-right")){let a=i.parentNode.clientWidth-e.image.parentNode.nextElementSibling.clientWidth;t=Math.round((a-18)/+e.image.dataset.ratio)}}if(e.image.hasClass("ce-image__image--maxwidth-image")){const i=+Gram.Config.get("FERCHAU","decorativeImageMaxHeight");t>i&&(e.image.style.transform="translateY(-"+(t-i)/2+"px)")}return t})),Gram.Messaging.subscribe("Hook:Bloglist.addEntry",(e=>{0==e.index||2==e.index||5==e.index||7==e.index?e.element.addClass("entry-item--left"):4==e.index?e.element.addClass("entry-item--center"):1!=e.index&&3!=e.index&&6!=e.index&&8!=e.index||e.element.addClass("entry-item--right")})),Gram.Messaging.subscribe("blog-list-image-loaded",(e=>{e.image.onload=()=>{this.responsiveBlogElements(e.container)}})),Gram.Messaging.subscribe("blog-list-entries-add",(e=>{this.responsiveBlogElements(e)})),Gram.Messaging.subscribe("blog-list-resized",(e=>{this.responsiveBlogElements(e)})),Gram.Messaging.subscribe("WebsiteResize",(()=>{const e=+Gram.Config.get("FERCHAU","decorativeImageMaxHeight");Gram.Utility.DocumentUtility.get(".ce-image__image--maxwidth-image").forEach((t=>{let i=t.clientHeight;t.style.transform=i>e?"translateY(-"+(i-e)/2+"px)":""}))})),Gram.Messaging.subscribe("layer-content-added-after-hook",(e=>{if(e&&e.layerUsage){let t=document.querySelector('.layerv2[data-layer-usage="'+e.layerUsage+'"]');if(t){let e=t.querySelector(".ce-newsletter");if(e&&e.id){new Gram.TYPO3.Newsletter(e.id.replace("c",""))}let i=t.querySelector(".ce-searchlink");if(i&&i.id){new Gram.TYPO3.Searchlink(i.id.replace("c",""))}t.querySelectorAll("a[data-mailto-token][data-mailto-vector]").forEach((e=>{e.addEventListener("click",(t=>{t.preventDefault();const i=e.dataset,a=i.mailtoToken,n=-1*parseInt(i.mailtoVector,10);document.location.href=this.decryptString(a,n)}))}))}}}),!1),new FE.Controller.Share}getLayerHeadline(e){return'<div class="ce ce--default-width ce-layer-header">'+('<span class="ce-layer-header__icon iconfont iconfont--ferchau_v2">'+e.caller.firstChild.innerHTML+"</span>")+('<span class="ce-layer-header__headline">'+(""!=e.caller.dataset.header?e.caller.dataset.header:e.caller.title)+"</span>")+"</div>"}animateHeader(){250<window.scrollY?this.stickyHeader.addClass("ferchau__header--slim"):this.stickyHeader.removeClass("ferchau__header--slim")}redirectToJobs(){const e=window.location.pathname.split("/")[1],t=window.location.pathname.split("/")[2];if("en"===t)document.location.href=`/${e}/${t}/applicants/jobs`;else document.location.href=`/${e}/${t}/bewerber/jobs`}openCookieConsent(){Gram.Controller.AsyncCookieController.getInstance().showDialog()}responsiveBlogElements(e){let t=e.getElementsByClassName("ableblog-list__loaded-entries");if(window.innerWidth>=1100)for(let e=0;e<t.length;e++){let i=t[e],a=0,n=100;i.childNodes.forEach((function(e,t){let i=e;switch(t){case 0:case 2:case 5:case 7:i.style.top=a+"px",a+=i.getBoundingClientRect().height;break;case 1:case 3:case 6:case 8:i.style.top=n+"px",n+=i.getBoundingClientRect().height;break;case 4:a=n=Math.max(a,n),i.style.top=a+"px",a=n+=i.getBoundingClientRect().height,n+=100}})),i.style.height=Math.max(a,n)+"px"}else for(let e=0;e<t.length;e++){let i=t[e];i.childNodes.forEach((function(e,t){e.style.top=""})),i.style.height=""}}decryptString(e,t){let i="";for(let a=0;a<e.length;a++){const n=e.charCodeAt(a);i+=n>=43&&n<=58?this.decryptCharcode(n,43,58,t):n>=64&&n<=90?this.decryptCharcode(n,64,90,t):n>=97&&n<=122?this.decryptCharcode(n,97,122,t):e.charAt(a)}return i}decryptCharcode(e,t,i,a){return e+=a,a>0&&e>i?e=t+(e-i-1):a<0&&e<t&&(e=i-(t-e-1)),String.fromCharCode(e)}};var Gram;!function(e){let t;!function(t){e.debugStart("Ferchau"),t.Ferchau=new ferchauCore,e.debugEnd("Ferchau")}(t=e.TYPO3||(e.TYPO3={}))}(Gram||(Gram={}));Gram.Messaging.publish("initialize");