var html = '
\
\
\
\
\
\
\
\ Heute:\
\
\ geschlossen\
\
\
\
\
Morgen:\
\
\ geschlossen\
\
\ \
\
\
Übermorgen:\
\
\ geschlossen\
\
\ \
\
\
'; var me = document.getElementById('div_hours55'); if (!me) { me = document.getElementById('hours55'); } if (me) { var textnode = document.createElement('div'); textnode.id = 'div_hours55'; textnode.scriptSrc = '//test.eaero.de/api/hours/index/55/09.05.2025/bb7f30da86a40754ee554b0123ae0981?scriptId=hours55'; textnode.innerHTML = html; me.parentNode.replaceChild(textnode, me); } else { // typ und id suchen var scripts = document.getElementsByTagName("script"); var src = '//test.eaero.de/api/hours/index/55/09.05.2025/bb7f30da86a40754ee554b0123ae0981?scriptId=hours55'; console.log(src); var type = ''; var id = ''; var pos1TableOfHours = src.indexOf('/api/tableOfHours/'); var pos1CalendarOfHours = src.indexOf('/api/calendarOfHours/'); var pos1hours = src.indexOf('/api/hours/'); var offset = 0; var idInNext = false; var template = '/'; var pos1 = -1; if(pos1TableOfHours > -1) { pos1 = pos1TableOfHours; offset = 18; type = 'tableOfHours'; } else if(pos1CalendarOfHours > -1) { type = 'calendarOfHours'; template = 'document.write'; } else if(pos1hours > -1) { pos1 = pos1hours; offset = 11; idInNext = true; type = 'hours'; } if(pos1 > -1) { var pos2 = src.indexOf('/', pos1 + offset); if(!idInNext) { id = src.substring(pos1 + offset, pos2); } else { var pos2Back = pos2 + 1; template = '/' + src.substring(pos1 + offset, pos2) + '/'; pos2 = src.indexOf('/', pos2 + 1); id = src.substring(pos2Back, pos2); } console.log(type); console.log(id); console.log(template); } // /typ und id suchen var scriptNodeReplaced = false; if(type != '' && id != '') { for(i=0;i -1) { //console.log(scripts[i]); var newNode = document.createElement('div'); newNode.innerHTML = html; newNode.setAttribute('id', 'div_hours55'); newNode.setAttribute('scriptSrc', '//test.eaero.de/api/hours/index/55/09.05.2025/bb7f30da86a40754ee554b0123ae0981?scriptId=hours55'); scripts[i].parentNode.replaceChild(newNode, scripts[i]); scriptNodeReplaced = true; console.log('gefunden'); } } } if(!scriptNodeReplaced && template != '/') { console.log('document.write'); document.write('
' + html + '
'); } } if ('{withEQCSS}' == 'withEQCSS') { var bodyElement = document.getElementsByTagName('body')[0]; var bodyEQCSS = bodyElement.getAttribute('eqcss'); if (bodyEQCSS == null) { //console.log('body eqcss: ' + bodyElement.getAttribute('eqcss')); bodyElement.setAttribute('eqcss', 'eqcss'); //!!console.log(typeof(EQCSS)); if (typeof(EQCSS) === 'undefined') { //!!console.log('EQCSS laden'); eaApiLoadScript('{base_src}/js/EQCSS.min.js', function () { if (typeof(EQCSS) !== 'undefined') { //console.log('EQCSS apply'); EQCSS.apply(); } }); } else { if (typeof(EQCSS) !== 'undefined') { //console.log('EQCSS apply'); EQCSS.apply(); } } } else { if (typeof(EQCSS) !== 'undefined') { //console.log('EQCSS apply'); EQCSS.apply(); } } } if('{withEQCSS}' == 'withEQCSS' && '' != 'withoutMouseUpListener') { if(window.eAeroMouseupInstalled === undefined) { window.eAeroMouseupInstalled = true; document.addEventListener("mouseup", function(e) { console.log('mouseup'); setTimeout(function() { console.log('EQCSS apply'); EQCSS.apply(); }, 1); }); } } if ('{withCalendarControl}' == 'withCalendarControl') { /* var bodyElement = document.getElementsByTagName('body')[0]; var bodyJQUERY = bodyElement.getAttribute('jquery'); var bodyJQUERYUI = bodyElement.getAttribute('jqueryui'); */ var isPreloadJs = typeof createjs !== 'undefined'; function doWithCalendar() { return; var bodyElement = document.getElementsByTagName('body')[0]; var preloadjs = bodyElement.getAttribute('preloadjs'); if (preloadjs) { console.log('#div_hours55 #datepicker'); $('#div_hours55 #datepicker').datepicker({ language: 'de', xmultidate: true }).next().on('click', function () { }); } } if (!isPreloadJs && false) { eaApiLoadScript('{base_src}/js/vendor/preloadjs-0.6.1.min.js', function () { console.log('loaded preloadjs hours55'); if(typeof eaQueue == 'undefined') { console.log('new eqQueue'); eaQueue = []; } eaQueue['hours55'] = new createjs.LoadQueue(); // Callback, wenn Queue abgearbeitet eaQueue['hours55'].on("complete", function () { var bodyElement = document.getElementsByTagName('body')[0]; bodyElement.setAttribute('preloadjs', 'preloadjs'); console.log('complete hours55'); //console.log($.fn.datepicker.dates['de']); doWithCalendar(); }, this); var manifest = []; var mi = 0; if (!window.jQuery) { // nur, wenn kein jQuery da //eaQueue['hours55'].loadFile('{base_src}/js/vendor/jquery-1.11.3.min.js'); manifest[mi++] = '{base_src}/js/vendor/jquery-1.11.3.min.js'; } //eaQueue['hours55'].loadFile('{base_src}/assets/js/date-time/bootstrap-datepicker.min.js'); manifest[mi++] = '{base_src}/assets/js/date-time/bootstrap-datepicker.min.js'; //if(!window.jQuery || typeof ($.fn.datepicker.dates['de']) == 'undefined') { // nur, wenn kein jquery oder locale da //eaQueue['hours55'].loadFile('{base_src}/assets/js/date-time/locales/bootstrap-datepicker.de.js'); manifest[mi++] = '{base_src}/assets/js/date-time/locales/bootstrap-datepicker.de.js'; //} //eaQueue['hours55'].loadFile('{base_src}/assets/css/bootstrap.min.css'); manifest[mi++] = '{base_src}/assets/css/bootstrap.min.css'; //eaQueue['hours55'].loadFile('{base_src}/assets/css/bootstrap-datepicker.css'); manifest[mi++] = '{base_src}/assets/css/bootstrap-datepicker.css'; //eaQueue['hours55'].loadFile('{base_src}/assets/css/datepicker.css'); manifest[mi++] = '{base_src}/assets/css/datepicker.css'; //eaQueue['hours55'].loadFile('{base_src}/assets/css/custom.css'); manifest[mi++] = '{base_src}/assets/css/custom.css'; //queue.loadFile('{base_src}/assets/css/ace.min.css'); eaQueue['hours55'].loadManifest(manifest, true); console.log('load hours55'); //eaQueue['hours55'].load(); setTimeout(function() { //console.log('load hours55'); //eaQueue['hours55'].load(); }, 1000); }); /* if(bodyJQUERY == null) { bodyElement.setAttribute('jquery', 'jquery'); eaApiLoadScript('{base_src}/js/vendor/jquery-1.11.3.min.js', function() { bodyJQUERY = true; bodyElement.setAttribute('jqueryui', 'jqueryui'); //eaApiLoadScript('{base_src}/assets/js/jquery-ui-1.10.3.full.min.js', function() { eaApiLoadScript('{base_src}/assets/js/date-time/bootstrap-datepicker.min.js', function() { bodyJQUERYUI = true; doWithCalendar(); }); }); } else { doWithCalendar(); } */ } else { doWithCalendar(); } } function eaApiLoadScript(url, callback) { // script-Tag anlegen var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = url; // Callback-Funktion binden //script.onreadystatechange = callback; // Probleme mit IE < 11, daher auskommentiert script.onload = callback; // Script-Tag im Header anlegen, damit Ladevorgang beginnt head.appendChild(script); } if (eaeroApi == undefined) { var eaeroApi = {}; // Lädt und aktualisiert Öffnungszeiten für mehrere IDs über ein API-Script. eaeroApi.updateMultipleHours = function (idArr, template, date, clear, withDayAfterTomorrow, withFootnotes, withLegend) { // todo: prüfen, ob dies ev. auch im head-Element funktioniert var bodyElement = document.getElementsByTagName('body')[0]; if(!bodyElement && bodyElement == undefined) { console.log('Fehler in der Implementierung der eaero-API. Kein Body-Element gefunden. Script wird eventuell zu früh geladen.'); return } if (!withDayAfterTomorrow || withDayAfterTomorrow == undefined) { withDayAfterTomorrow = 0; } if (!withFootnotes || withFootnotes == undefined) { withFootnotes = 0; } if (!withLegend || withLegend == undefined) { withLegend = 0; } var src = '{url}/api/multiHours/' + template + '/' + idArr + '/' + date + '/{secret}'; var params = ''; if(withDayAfterTomorrow != 0) { if(params == '') params += '?'; else params += '&'; params += 'withDayAfterTomorrow=1'; } if(withFootnotes != 0) { if(params == '') params += '?'; else params += '&'; params += 'withFootnotes=1'; } if(withLegend != 0) { if(params == '') params += '?'; else params += '&'; params += 'withLegend=1'; } src += params; var s = document.createElement("script"); s.type = "text/javascript"; s.src = src; if (clear) { for (var i = 0; i < idArr.length; i++) { var divId = 'div_hours' + idArr[i]; var div = document.getElementById(divId); if (div && div != undefined) { div.innerHTML = ''; } } } bodyElement.appendChild(s); }; // Lädt und aktualisiert Öffnungszeiten für eine einzelne ID über ein API-Script. eaeroApi.updateHours = function (scriptId, id, template, date, clear, withDayAfterTomorrow, withFootnotes, withLegend) { var divElement = document.getElementById('div_' + scriptId); if (!divElement || divElement == undefined) { return; } if (!withDayAfterTomorrow || withDayAfterTomorrow == undefined) { withDayAfterTomorrow = 0; } if (!withFootnotes || withFootnotes == undefined) { withFootnotes = 0; } if (!withLegend || withLegend == undefined) { withLegend = 0; } var scriptSrc = ''; if (divElement.scriptSrc != undefined) { scriptSrc = divElement.scriptSrc; } else { scriptSrc = '{url}/api/hours/' + template + '/' + id + '/{secret}'; } var scriptSrcArr = scriptSrc.split('/'); for (i = 0; i < scriptSrcArr.length; i++) { if (scriptSrcArr[i] == 'hours') { scriptSrcArr[i + 3] = date; } } src = scriptSrcArr.join('/'); var params = ''; if(withDayAfterTomorrow != 0) { if(params != '') params += '?'; else params += '&'; params += 'withDayAfterTomorrow=1'; } if(withFootnotes != 0) { if(params != '') params += '?'; else params += '&'; params += 'withFootnotes=1'; } if(withLegend != 0) { if(params != '') params += '?'; else params += '&'; params += 'withLegend=1'; } src += params; var s = document.createElement("script"); s.type = "text/javascript"; s.src = src; s.id = 'div_' + scriptId; if (clear) { divElement.innerHTML = ''; } divElement.appendChild(s); }; // Lädt und aktualisiert eine Tabelle mit Öffnungszeiten. eaeroApi.updateTableOfHours = function(scriptId, date, clear) { var divElement = document.getElementById('div_' + scriptId); var prevButton = document.getElementById('toh_prev_button_' + scriptId); var nextButton = document.getElementById('toh_next_button_' + scriptId); var loadIndicator = document.getElementById('toh_load_indicator_' + scriptId); if (!divElement || divElement == undefined) { return; } if(prevButton) { prevButton.setAttribute('disabled', 'disabled'); } if(nextButton) { nextButton.setAttribute('disabled', 'disabled'); } if(loadIndicator) { loadIndicator.setAttribute('style', ''); } var scriptSrc = ''; if (divElement.scriptSrc != undefined) { scriptSrc = divElement.scriptSrc; } else if(divElement.getAttribute('scriptSrc') != undefined) { scriptSrc = divElement.getAttribute('scriptSrc'); } else { scriptSrc = '{url}/api/tableOfHours/' + scriptId + '/1,2,3,4,5,6,7//{secret}'; } var scriptSrcArr = scriptSrc.split('/'); for (i = 0; i < scriptSrcArr.length; i++) { if (scriptSrcArr[i] == 'tableOfHours') { scriptSrcArr[i + 3] = date; } } src = scriptSrcArr.join('/'); var s = document.createElement("script"); s.type = "text/javascript"; s.src = src; s.id = 'div_' + scriptId; if (clear) { divElement.innerHTML = ''; } divElement.appendChild(s); }; // Schließt den Chatbot. eaeroApi.closeChatBot = function(scriptId) { eaeroApi.closeOrStartChatBot(scriptId, true); }; // Startet den Chatbot. eaeroApi.startChatBot = function(scriptId) { eaeroApi.closeOrStartChatBot(scriptId, false); }; // Öffnet oder schließt den Chatbot basierend auf dem Status. eaeroApi.closeOrStartChatBot = function(scriptId, close) { var divElement = document.getElementById('div_' + scriptId); if (!divElement || divElement == undefined) { return; } var sendButton = document.getElementById('ea-send-message-' + scriptId); var closeButton = document.getElementById('ea-close-bot-' + scriptId); if(sendButton) { sendButton.setAttribute('disabled', 'true'); } if(closeButton) { closeButton.setAttribute('disabled', 'true'); } if(!close) { sessionStorage.removeItem('eaero-hdTicketToken'); } console.log('updateChatBot-close'); eaeroApi.updateChatBot('chatbot{chatBotId}', sessionStorage.getItem('eaero-hdTicketToken'), null, close); if(!close) { eaeroApi.updateChatBot('chatbot{chatBotId}', sessionStorage.getItem('eaero-hdTicketToken'), null); } } // Minimiert oder öffnet den Chatbot und aktualisiert bei Bedarf. eaeroApi.toggleChat = function(withUpdate) { if(withUpdate === undefined) { withUpdate = true; } console.log('toggleChat'); var container = document.getElementById('ea-chat-bot-container'); var overlay = document.getElementById('ea-modal-overlay'); container.classList.toggle('minimized'); container.classList.remove('maximized'); container.classList.remove('snapped'); if (container.classList.contains('maximized')) { overlay.style.display = 'block'; } else { overlay.style.display = 'none'; } sessionStorage.setItem('eaero-mini', container.classList.contains('minimized')); sessionStorage.setItem('eaero-maxi', false); sessionStorage.setItem('eaero-snap', false); var panel = document.getElementById('ea-chat'); if(panel !== null) panel.scrollTop = panel.scrollHeight; if(!container.classList.contains('maximized')) { eaeroApi.snapInChat(withUpdate); } if(!container.classList.contains('minimized')) { console.log('updateChatBot-toggleChat'); if(withUpdate) eaeroApi.updateChatBot('chatbot{chatBotId}', sessionStorage.getItem('eaero-hdTicketToken'), null); } document.getElementById("ea-message").focus(); }; // Maximiert oder verkleinert den Chatbot-Fensterbereich. eaeroApi.toggleMaximizeChat = function(chatBotId) { //console.log('toggleMaximizeChat', chatBotId); var container = document.getElementById('ea-chat-bot-container'); var overlay = document.getElementById('ea-modal-overlay'); container.classList.toggle('maximized'); container.classList.remove('minimized'); container.classList.remove('snapped'); if (container.classList.contains('maximized')) { overlay.style.display = 'block'; } else { overlay.style.display = 'none'; } sessionStorage.setItem('eaero-mini', false); sessionStorage.setItem('eaero-maxi', container.classList.contains('maximized')); sessionStorage.setItem('eaero-snap', false); if(container.classList.contains('maximized')) { // prüfen, ob im snap-in-container, dann ans wieder zurück zum Script const chatDivElement = document.getElementById('div_chatbot' + chatBotId); const chatbotElement = document.querySelector('.ea-chatbot'); if (chatDivElement && chatbotElement) { // Den Chatbot in das snap-in-Element verschieben //console.log('appendChild from .ea-chatbot to div_chatbot8'); chatDivElement.appendChild(chatbotElement); } } var panel = document.getElementById('ea-chat'); if(panel !== null) panel.scrollTop = panel.scrollHeight; if(!container.classList.contains('maximized')) { eaeroApi.snapInChat(); } document.getElementById("ea-message").focus(); }; // Verschiebt den Chatbot in die Snap-In-Ansicht, wenn er nicht maximiert ist. eaeroApi.snapInChatIfNotMaximized = function() { //console.log('snapInChatIfNotMaximized'); if(sessionStorage.getItem('eaero-maxi') != 'true') { eaeroApi.snapInChat(); } }; // Verschiebt den Chatbot in die Snap-In-Ansicht. eaeroApi.snapInChat = function(withUpdate) { if(withUpdate === undefined) { withUpdate = true; } console.log('snapInChat'); const snapInElement = document.getElementById('ea-chat-bot-snap-in-container'); const chatbotElement = document.querySelector('.ea-chatbot'); if (snapInElement && chatbotElement) { // Den Chatbot in das snap-in-Element verschieben //console.log('appendChild from .ea-chatbot to ea-chat-bot-snap-in-container'); snapInElement.innerHTML = ''; // Inhalt leeren snapInElement.appendChild(chatbotElement); var container = document.getElementById('ea-chat-bot-container'); var overlay = document.getElementById('ea-modal-overlay'); container.classList.remove('maximized'); container.classList.remove('minimized'); container.classList.add('snapped'); overlay.style.display = 'none'; sessionStorage.setItem('eaero-mini', false); sessionStorage.setItem('eaero-maxi', false); sessionStorage.setItem('eaero-snap', true); console.log('updateChatBot-snapInChat'); if(withUpdate) eaeroApi.updateChatBot('chatbot{chatBotId}', sessionStorage.getItem('eaero-hdTicketToken'), null); } }; eaeroApi.isUpdatingChat = false; // Aktualisiert den Chatverlauf durch einen API-Request. eaeroApi.updateChatBot = function(scriptId, hdTicketToken, message, close) { console.log('updateChatBot'); if(eaeroApi.isUpdatingChat) { return; } if(close === undefined) { close = false; } //console.log('message', message); //console.log('scriptId', scriptId); var divElement = document.getElementById('div_' + scriptId); if (!divElement || divElement == undefined) { return; } if(!close) { eaeroApi.isUpdatingChat = true; } var sendButton = document.getElementById('ea-send-message-' + scriptId); var closeButton = document.getElementById('ea-close-bot-' + scriptId); var messageBox = document.getElementById('ea-message'); //console.log('...'); if(sendButton) { sendButton.setAttribute('disabled', 'true'); } if(closeButton) { closeButton.setAttribute('disabled', 'true'); } if(messageBox) { messageBox.setAttribute('disabled', 'true'); } src = '//{host_and_base}/api/chatbot/do/chat/{chatBotId}/{secret}'; src = src.replace(/\/app\.php\//g, '/'); //console.log('src', src); document.getElementById('ea-message').value = ''; const chatDiv = document.getElementById('ea-chat'); if(message) { const messageDiv = document.createElement("div"); messageDiv.classList.add("ea-chat-item"); messageDiv.classList.add("ea-chat-role-user"); messageDiv.textContent = message; chatDiv.appendChild(messageDiv); } eaeroApi.typing(); fetch(src, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ scriptId: scriptId, hdTicketToken: hdTicketToken, message: message, close: close }) }) .then(response => response.json()) .then(data => { //console.log("Antwort vom Server:", data); eaeroApi.isUpdatingChat = false; handleChatData(data); if(close && data.history.length === 0) { // todo: wenn snappedIn, dann Chat mit neuem Request neu starten var container = document.getElementById('ea-chat-bot-container'); if(container.classList.contains('snapped')) { console.log('CHAT NEU STARTEN'); eaeroApi.updateChatBot('chatbot{chatBotId}', sessionStorage.getItem('eaero-hdTicketToken'), null); return } eaeroApi.toggleChat(false); } if(sendButton) { sendButton.removeAttribute('disabled'); } if(closeButton) { closeButton.removeAttribute('disabled'); } if(messageBox) { messageBox.removeAttribute('disabled'); messageBox.focus(); } }) .catch(error => { eaeroApi.isUpdatingChat = false; console.error("Fehler:", error) }); }; // Sendet ein Formular aus dem Chatbot per API an den Server. eaeroApi.postChatBotForm = function(scriptId, hdTicketToken, formData) { console.log('postChatBotForm'); if(close === undefined) { close = false; } //console.log('message', message); //console.log('scriptId', scriptId); var divElement = document.getElementById('div_' + scriptId); if (!divElement || divElement == undefined) { return; } var sendButton = document.getElementById('ea-send-message-' + scriptId); var closeButton = document.getElementById('ea-close-bot-' + scriptId); var messageBox = document.getElementById('ea-message'); //console.log('...'); if(sendButton) { sendButton.setAttribute('disabled', 'true'); } if(closeButton) { closeButton.setAttribute('disabled', 'true'); } if(messageBox) { messageBox.setAttribute('disabled', 'true'); } //return; var src = '//{host_and_base}/api/chatbot/do/postForm/{chatBotId}/{secret}'; src = src.replace(/\/app\.php\//g, '/'); document.getElementById('ea-message').value = ''; document.querySelectorAll('.ea-chat-form button, .ea-chat-form input').forEach(function(element) { element.disabled = true; }); document.querySelectorAll('.ea-chat-form-before button, .ea-chat-form-before input').forEach(function(element) { element.disabled = true; }); eaeroApi.typing(); fetch(src, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ scriptId: scriptId, hdTicketToken: hdTicketToken, formData: formData, close: close }) }) .then(response => response.json()) .then(data => { //console.log("Antwort vom Server:", data); handleChatData(data); if(sendButton) { sendButton.removeAttribute('disabled'); } if(closeButton) { closeButton.removeAttribute('disabled'); } if(messageBox) { messageBox.removeAttribute('disabled'); messageBox.focus(); } }) .catch(error => console.error("Fehler:", error)); }; // Zeigt eine Tipp-Animation im Chatbot an. eaeroApi.typing = function() { const chatDiv = document.getElementById('ea-chat'); const typingDiv = document.createElement('div'); typingDiv.className = 'ea-chat-typing-indicator'; typingDiv.innerHTML = ` `; document.querySelectorAll('.ea-chat-typing-indicator').forEach(el => el.remove()); chatDiv.appendChild(typingDiv); chatDiv.scrollTop = chatDiv.scrollHeight; }; if (typeof eAeroApiLoaded == 'function') { eAeroApiLoaded(); } eaeroApi.chatbotCheckForUpdateTimeStamp = null; function handleChatData(data) { console.log('handleChatData', data); sessionStorage.setItem('eaero-hdTicketToken', data['hdTicketToken']); // Element in den Container einfügen const chatContainer = document.getElementById("ea-chat"); // Ziel-Container im HTML const chatBotContainer = document.getElementById("ea-chat-bot-container"); // Ziel-Container im HTML if(!data['isArchived']) { chatBotContainer.classList.remove('ea-chat-not-in-conversation'); } else if(data['isArchived']) { chatBotContainer.classList.add('ea-chat-not-in-conversation'); } if(data['isInConversation'] !== null && data['isArchived'] !== null && !data['isInConversation'] && !data['isArchived']) { eaeroApi.chatbotCheckForUpdateTimeStamp = data['timestamp']; } else { eaeroApi.chatbotCheckForUpdateTimeStamp = null; } chatContainer.innerHTML = ''; data.history.forEach(chatItem => { const chatDiv = document.createElement("div"); const innerDiv = document.createElement("div"); // Klasse je nach "in"-Wert setzen chatDiv.classList.add("ea-chat-item", chatItem.in ? "ea-chat-role-user" : "ea-chat-role-assistant"); innerDiv.classList.add("ea-chat-time"); innerDiv.setAttribute("date", chatItem.timestamp.date); // Textinhalt setzen chatDiv.textContent = chatItem.text; chatDiv.appendChild(innerDiv); chatContainer.appendChild(chatDiv); if(!chatItem.in) { const faceDiv = document.createElement("div"); const faceImg = document.createElement("img"); faceDiv.classList.add("ea-chat-face", chatItem.in ? "ea-chat-face-role-user" : "ea-chat-face-role-assistant"); faceImg.setAttribute("src", "///eaero-chat-bot/images/face.png"); faceDiv.appendChild(faceImg); chatContainer.appendChild(faceDiv); } }); renderChatBot(); initChatForm(); chatBotFormatRelativeTime(); var panel = document.getElementById('ea-chat'); if(panel !== null) panel.scrollTop = panel.scrollHeight; document.getElementById("ea-message").focus(); } function chatBotFormatRelativeTime() { //console.log('chatBotFormatRelativeTime'); const elements = document.querySelectorAll('.ea-chat-time'); elements.forEach(el => { const timeAttr = el.getAttribute('date'); if (!timeAttr) return; const dateStr = timeAttr.replace(" ", "T"); // "2025-03-21T14:20:08.000000" const eventDate = new Date(dateStr); const now = new Date(); // Zeitdifferenz in Millisekunden const diffMs = now - eventDate; const diffSeconds = Math.floor(diffMs / 1000); const diffMinutes = Math.floor(diffMs / 1000 / 60); // Format-Helfer const pad = (num) => String(num).padStart(2, "0"); // Datumsteile const eventDay = eventDate.getDate(); const eventMonth = eventDate.getMonth(); const eventYear = eventDate.getFullYear(); const nowDay = now.getDate(); const nowMonth = now.getMonth(); const nowYear = now.getFullYear(); let text = ""; if (diffSeconds < 10) { text = "gerade eben"; } else if (diffSeconds < 60) { text = `vor ${diffSeconds} Sekunde${diffSeconds === 1 ? "" : "n"}`; } else if (diffMinutes < 30) { text = `vor ${diffMinutes} Minute${diffMinutes === 1 ? "" : "n"}`; } else if ( eventYear === nowYear && eventMonth === nowMonth && eventDay === nowDay ) { // gleiches Datum wie heute text = `um ${pad(eventDate.getHours())}:${pad(eventDate.getMinutes())}`; } else { text = `${pad(eventDate.getDate())}.${pad(eventDate.getMonth() + 1)}.${eventDate.getFullYear()} ${pad(eventDate.getHours())}:${pad(eventDate.getMinutes())}`; } el.textContent = text; }); } function chatBotCheckForUpdates() { return; // derzeit deaktiviert. Es gbit ein Problem mit dieser Aktualisierung und der Interaktion mit dem Schließen-Button des Chat-Bots if(eaeroApi.chatbotCheckForUpdateTimeStamp === null) { return; } console.log('chatBotCheckForUpdates', eaeroApi.chatbotCheckForUpdateTimeStamp, eaeroApi.chatBotScriptId); eaeroApi.updateChatBot(eaeroApi.chatBotScriptId, sessionStorage.getItem('eaero-hdTicketToken'), null); } setInterval(chatBotFormatRelativeTime, 1 * 1000); setInterval(chatBotCheckForUpdates, 10 * 1000); }