PageSourceSearch

https://austria-forum.org/scripts/info-agent.js

js austria-forum.org collected 2026-09-24 18:15:47 UTC 21,795 bytes, 240 lines download raw bytes

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">&times;</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, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
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">&times;</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">&times;</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">&times;</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.