1// info-agent.js - include this as an external script 2(function () { 3 const API_URL = "https://www.nid-library.com/info-api/info-agent"; // your public API endpoint 4 5 // ---- create UI elements ---- 6 const anchor = document.getElementById("info-agent-anchor"); 7 const btn = anchor || document.createElement("div"); 8 btn.id = "info-agent-btn"; 9 btn.title = "AF Agentisches KI-Empfehlungssystem"; 10 if (anchor) { 11 btn.classList.add("info-agent-inline"); 12 } else { 13 document.body.appendChild(btn); 14 } 15 16 const resultsDiv = document.createElement("div"); 17 resultsDiv.id = "info-agent-results"; 18 resultsDiv.innerHTML = ""; 19 document.body.appendChild(resultsDiv); 20 21 const style = document.createElement("style"); 22 style.innerHTML = ` 23 #info-agent-btn { 24 position: fixed; 25 bottom: 20px; 26 right: 20px; 27 width: 44px; 28 height: 40px; 29 cursor: pointer; 30 z-index: 99999; 31 filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3)); 32 transition: transform 0.2s, filter 0.2s; 33 background: transparent; 34 border: none; 35 display: flex; 36 align-items: center; 37 justify-content: center; 38 } 39 #info-agent-btn:hover { 40 transform: scale(1.1); 41 filter: drop-shadow(0 6px 12px rgba(0,0,0,0.4)); 42 } 43 44 #info-agent-btn.info-agent-inline { 45 position: static; 46 bottom: auto; 47 right: auto; 48 width: 48px; 49 height: 48px; 50 filter: none; 51 transform: none; 52 } 53 54 #info-agent-lottie { 55 width: 100%; 56 height: 100%; 57 } 58 59 #info-agent-results { 60 position: fixed; 61 bottom: 80px; 62 right: 20px; 63 width: 420px; 64 max-height: 70vh; 65 overflow-y: auto; 66 background: #fff; 67 border: 1px solid #ddd; 68 padding: 12px; 69 border-radius: 10px; 70 display: none; 71 z-index: 99999; 72 box-shadow: 0 6px 24px rgba(0,0,0,0.28); 73 font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; 74 font-size: 14px; 75 color: #222; 76 } 77 #info-agent-results h2 { margin: 0 0 8px 0; font-size: 16px; } 78 #info-agent-loader { text-align:center; padding:18px; } 79 .loader { border: 4px solid #f3f3f3;
79 border-top: 4px solid #0078d7; border-radius: 50%; width: 30px; height: 30px; animation: spin 1s linear infinite; margin: 8px auto; } 80 @keyframes spin { 0%{transform:rotate(0)} 100%{transform:rotate(360deg)} } 81 .info-agent-close { position:absolute; top:6px; right:10px; cursor:pointer; color:#666; font-weight:bold; } 82 .info-agent-item { margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid #f0f0f0; } 83 .info-agent-key { font-weight: 600; margin-bottom:6px; display:block; } 84 .info-agent-source { display:flex; align-items:center; gap:8px; margin:4px 0; } 85 .info-agent-source img { width:16px; height:16px; } 86 .info-agent-empty { color:#666; font-style:italic; } 87 `; 88 document.head.appendChild(style); 89 90 // Lottie animation data from Analysis(1).json 91 const lottieAnimationData = {"v":"5.8.1","fr":30,"ip":0,"op":40,"w":576,"h":576,"nm":"Network","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288.278,288,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.615,0.615,0.12],"y":[1,1,1]},"o":{"x":[0.302,0.302,0.42],"y":[0.627,0.627,0]},"t":4,"s":[100,100,100]},{"i":{"x":[0.563,0.563,0.667],"y":[1,1,1]},"o":{"x":[0.52,0.52,0.42],"y":[0,0,0]},"t":10.394,"s":[115,115,100]},{"i":{"x":[0.557,0.557,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":16.034,"s":[96,96,100]},{"t":20.7353515625,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-25.871],[25.871,0],[0,25.871],[-25.871,0]],"o":[[0,25.871],[-25.871,0],[0,-25.871],[25.871,0]],"v":[[46.844,0],[0,46.844],[-46.844,0],[0,-46.844]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.251,0.349],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":17.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":40,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[438,288.556,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.615,0.615,0.12],"y":[1,1,1]},"o":{"x":[0.302,0.302,0.42],"y":[0.627,0.627,0]},"t":17,"s":[100,100,100]},{"i":{"x":[0.563,0.563,0.667],"y":[1,1,1]},"o":{"x":[0.52,0.52,0.42],"y":[0,0,0]},"t":23.394,"s":[115,115,100]},{"i":{"x":[0.557,0.557,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":29.034,"s":[96,96,100]},{"t":33.7353515625,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-16.569],[16.569,0],[0,16.569],[-16.569,0]],"o":[[0,16.569],[-16.569,0],[0,-16.569],[16.569,0]],"v":[[30,0],[0,30],[-30,0],[0,-30]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.329,0.51,0.773],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":17.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":40,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[138,438,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.615,0.615,0.12],"y":[1,1,1]},"o":{"x":[0.302,0.302,0.42],"y":[0.627,0.627,0]},"t":16,"s":[100,100,100]},{"i":{"x":[0.563,0.563,0.667],"y":[1,1,1]},"o":{"x":[0.52,0.52,0.42],"y":[0,0,0]},"t":22.394,"s":[115,115,100]},{"i":{"x":[0.557,0.557,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":28.034,"s":[96,96,100]},{"t":32.7353515625,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-16.569],[16.569,0],[0,16.569],[-16.569,0]],"o":[[0,16.569],[-16.569,0],[0,-16.569],[16.569,0]],"v":[[30,0],[0,30],[-30,0],[0,-30]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.329,0.51,0.773],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":17.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":40,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[138,138,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.615,0.615,0.12],"y":[1,1,1]},"o":{"x":[0.302,0.302,0.42],"y":[0.627,0.627,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.563,0.563,0.667],"y":[1,1,1]},"o":{"x":[0.52,0.52,0.42],"y":[0,0,0]},"t":6.394,"s":[115,115,100]},{"i":{"x":[0.557,0.557,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":12.034,"s":[96,96,100]},{"t":16.7353515625,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-16.569],[16.569,0],[0,16.569],[-16.569,0]],"o":[[0,16.569],[-16.569,0],[0,-16.569],[16.569,0]],"v":[[30,0],[0,30],[-30,0],[0,-30]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.329,0.51,0.773],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":17.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":40,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Layer 12","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[371.657,288,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-36.435,0],[29.435,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.329,0.51,0.773],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":17.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.14],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":15,"s":[0]},{"t":25,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim In Path","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":15,"op":40,"st":15,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Layer 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[371.657,288,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-26.935,0],[30.56,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.329,0.51,0.773],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":17.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":100,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.14],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":10,"s":[0]},{"t":20,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Out Path","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-4,"op":40,"st":-4,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Layer 11","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[207.292,369.036,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-43.68,44.138],[42.868,-42.513]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.329,0.51,0.773],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":17.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":10,"s":[100]},{"t":13,"s":[41]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.14],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[0]},{"t":25,"s":[-360]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":40,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Layer 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[207.292,369.036,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-43.93,44.888],[42.868,-42.513]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.329,0.51,0.773],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":17.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[7.833]},"o":{"x":[0.4],"y":[0]},"t":13,"s":[82]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0.083]}
91,"t":23,"s":[82]},{"t":33,"s":[0]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":13,"s":[0]},{"t":25,"s":[-360]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":40,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Layer 10","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[207.306,207.028,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-43.917,-43.917],[-20.694,-20.694],[20,20],[43.417,43.917]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.329,0.51,0.773],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":17.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":28.5,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.14],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"t":20,"s":[360]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":40,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Layer 9","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[207.306,207.028,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-43.917,-42.917],[-20.694,-20.694],[20,20],[43.417,43.417]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.329,0.51,0.773],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":17.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":70.7,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.14],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"t":20,"s":[360]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":40,"st":0,"bm":0}],"markers":[]}; 92 93 // Load Lottie player and initialize animation 94 function loadLottieAnimation() { 95 // Check if Lottie is already loaded 96 if (typeof lottie !== 'undefined') { 97 initializeLottie(); 98 return; 99 } 100 101 // Load Lottie library 102 const script = document.createElement('script'); 103 script.src = window.afLottiePath || 'scripts/lottie.min.js'; 104 script.onload = initializeLottie; 105 document.head.appendChild(script); 106 } 107 108 function initializeLottie() { 109 const lottieContainer = document.createElement('div'); 110 lottieContainer.id = 'info-agent-lottie'; 111 btn.appendChild(lottieContainer); 112 113 // Initialize Lottie animation 114 lottie.loadAnimation({ 115 container: lottieContainer, 116 renderer: 'svg', 117 loop: true, 118 autoplay: true, 119 animationData: lottieAnimationData 120 }); 121 } 122 123 // Start loading the Lottie animation 124 loadLottieAnimation(); 125 126 function closeResults() { 127 resultsDiv.style.display = "none"; 128 resultsDiv.innerHTML = ""; 129 } 130 131 // Render results array 132 function renderResults(json) { 133 resultsDiv.innerHTML = `<span class="info-agent-close" id="info-agent-close">×</span>`; 134 const closeBtn = document.getElementById("info-agent-close"); 135 closeBtn.onclick = closeResults; 136 137 if (!json || !json.results || json.results.length === 0) { 138 resultsDiv.innerHTML += `<p class="info-agent-empty">No results found.</p>`; 139 return; 140 } 141 142 // icons (fallback to those from server) 143 const afIcon = (json.icons && json.icons.af) ? json.icons.af : "https://austria-forum.org/images/AF-ico.png"; 144 const nidIcon = (json.icons && json.icons.nid) ? json.icons.nid : "https://austria-forum.org/images/NID-ico.png"; 145
146 json.results.forEach(item => { 147 const block = document.createElement("div"); 148 block.className = "info-agent-item"; 149 150 const key = document.createElement("div"); 151 key.className = "info-agent-key"; 152 key.innerHTML = `${escapeHtml(item.keyword)}`; 153 block.appendChild(key); 154 155 // AF result 156 if (item.af && item.af.title && item.af.url) { 157 const af = document.createElement("div"); 158 af.className = "info-agent-source"; 159 af.innerHTML = `<img src="${afIcon}" alt="AF"> <a href="${escapeHtml(item.af.url)}" target="_blank" rel="noopener">${escapeHtml(item.af.title)}</a>`; 160 block.appendChild(af); 161 } 162 163 // NID result 164 if (item.nid && item.nid.title && item.nid.url) { 165 const nid = document.createElement("div"); 166 nid.className = "info-agent-source"; 167 nid.innerHTML = `<img src="${nidIcon}" alt="NID"> <a href="${escapeHtml(item.nid.url)}" target="_blank" rel="noopener">${escapeHtml(item.nid.title)}</a>`; 168 block.appendChild(nid); 169 } 170 171 // if neither source present 172 if ((!item.af || !item.af.title) && (!item.nid || !item.nid.title)) { 173 const none = document.createElement("div"); 174 none.className = "info-agent-empty"; 175 none.textContent = "Keine Treffer für dieses Stichwort."; 176 block.appendChild(none); 177 } 178 179 resultsDiv.appendChild(block); 180 }); 181 } 182 183 // simple HTML escape 184 function escapeHtml(s) { 185 if (!s) return ""; 186 return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"); 187 } 188 189 // Click handler 190 btn.onclick = async function () { 191 if (resultsDiv.style.display === "block") { 192 closeResults(); 193 return; 194 } 195 196 // show loader 197 resultsDiv.innerHTML = ` 198 <span class="info-agent-close" id="info-agent-close">×</span> 199 <div id="info-agent-loader"> 200 <div class="loader"></div> 201 <div style="margin-top:6px">Der AF KI-Suchagent analysiertâ¦</div> 202 </div> 203 `; 204 resultsDiv.style.display = "block"; 205 document.getElementById("info-agent-close").onclick = closeResults; 206 207 // capture only <main> innerHTML if present else body.innerHTML 208 let mainEl = document.querySelector("main"); 209 let pageSource = mainEl ? mainEl.innerHTML : (document.body ? document.body.innerHTML : document.documentElement.innerHTML); 210 211 console.log("Info Agent: sending page_source length:", pageSource.length); 212 213 try { 214 const response = await fetch(API_URL, { 215 method: "POST", 216 mode: "cors", 217 headers: { "Content-Type": "application/json" }, 218 body: JSON.stringify({ page_source: pageSource }) 219 }); 220 221 if (!response.ok) { 222 throw new Error(`HTTP ${response.status}`); 223 } 224 225 const data = await response.json(); 226 if (data.error) { 227 resultsDiv.innerHTML = `<span class="info-agent-close" id="info-agent-close">×</span><p style="color:red;">${escapeHtml(data.error)}</p>`; 228 document.getElementById("info-agent-close").onclick = closeResults; 229 return; 230 } 231 232 renderResults(data); 233 234 } catch (err) { 235 console.error("Info Agent fetch error:", err); 236 resultsDiv.innerHTML = `<span class="info-agent-close" id="info-agent-close">×</span><p style="color:red;">Network error: ${escapeHtml(String(err))}</p>`; 237 document.getElementById("info-agent-close").onclick = closeResults; 238 } 239 }; 240})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.