PageSourceSearch

https://www.dentway.se/includes/air_amply.js?2

js dentway.se collected 2026-10-08 17:13:09 UTC 41,820 bytes, 374 lines download raw bytes

1(function() {
2    const logo = `\n        <svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 162.54 169.95">\n            <g id="Layer_1-2" data-name="Layer 1">\n                <g>\n                <path class="cls-1" d="m3.28,40.88s43.43,3.68,77.03,35.24c5.06-3.01,35.24-29.09,79.9-36.87C143.03,28.51,117.86,10.14,80.31,0,54.14,4.74,22.08,25.55,3.28,40.88Z"/>\n                <path class="cls-1" d="m0,52.36s38.56,4.27,75.39,34.42c0,6.15-.17,83.18-.17,83.18C18.87,152.97.41,130.2.41,130.2l-.41-77.85Z"/>\n                <path class="cls-1" d="m162.54,52s-37.71,4.27-75.39,34.42c0,6.15.17,83.18.17,83.18,62.38-17.49,74.81-39.75,74.81-39.75l.41-77.84Z"/>\n                </g>\n            </g>\n        </svg>\n    `;
3    document.addEventListener("keydown", e => {
4        if (e.ctrlKey && e.altKey && e.key === "\uf8ff") {
5            localStorage.setItem("amplyEnabled", localStorage.getItem("amplyEnabled") === "true" ? false : true);
6            activateAmply();
7        }
8    });
9    let paramName = "amply";
10    const urlParams = new URLSearchParams(window.location.search);
11    if (urlParams.has(paramName)) {
12        localStorage.setItem("amplyEnabled", urlParams.get(paramName) === "1" ? true : false);
13    }
14    let amplyWrapper;
15    const activateAmply = () => {
16        let amplyEnabled = localStorage.getItem("amplyEnabled") === "true";
17        if (amplyEnabled) {
18            let amplyIsOpen = localStorage.getItem("amplyIsOpen");
19            if (amplyIsOpen === null) {
20                amplyIsOpen = "true";
21                localStorage.setItem("amplyIsOpen", amplyIsOpen);
22            }
23            amplyIsOpen = amplyIsOpen === "true";
24            let isDragging = false;
25            let utokadInfo = localStorage.getItem("amplyMoreInfo") === "true";
26            let amplyTheme = localStorage.getItem("amplyTheme");
27            const themes = [ {
28                value: "Askas_Amply_origTheme",
29                label: "Original"
30            }, {
31                value: "Askas_Amply_darkTheme",
32                label: "M\xf6rkt"
33            }, {
34                value: "Askas_Amply_greenTheme",
35                label: "Slimegr\xf6n"
36            }, {
37                value: "Askas_Amply_julTheme",
38                label: "Jul"
39            }, {
40                value: "Askas_Amply_halloweenTheme",
41                label: "Halloween"
42            }, {
43                value: "Askas_Amply_easterTheme",
44                label: "P\xe5sk"
45            }, {
46                value: "Askas_Amply_brownTheme",
47                label: "Brun"
48            }, {
49                value: "Askas_Amply_calmBlueTheme",
50                label: "Lugn Bl\xe5"
51            }, {
52                value: "Askas_Amply_sunsetOrangeTheme",
53                label: "Solnedg\xe5ng"
54            }, {
55                value: "Askas_Amply_forestGreenTheme",
56                label: "Skog"
57            }, {
58                value: "Askas_Amply_oceanWaveTheme",
59                label: "Havsv\xe5g"
60            }, {
61                value: "Askas_Amply_sunnyYellowTheme",
62                label: "Solsken"
63            }, {
64                value: "Askas_Amply_pinkBlossomTheme",
65                label: "Rosa Blomma"
66            }, {
67                value: "Askas_Amply_midnightPurpleTheme",
68                label: "Midnatt"
69            }, {
70                value: "Askas_Amply_coffeeBrownTheme",
71                label: "Kaffe"
72            }, {
73                value: "Askas_Amply_svartGultLilaTheme",
74                label: "SvartGultLila"
75            }, {
76                value: "Askas_Amply_bubblegumTheme",
77                label: "Bubblegum"
78            }, {
79                value: "Askas_Amply_blackWeekTheme",
80                label: "Black Week"
81            } ];
82            createAmply();
83            async function loadAmplyData() {
84                try {
85                    const sessionData = await fetchSessionData();
86                    const adminData = await fetchAdminData(sessionData.default_domain);
87                    if (sessionData && adminData) {
88                        displaySessionData(sessionData);
89                        displayAdminData(adminData);
90                        amplyWrapper.style.display = "inline";
91                    } else {
92                        console.error("Failed to fetch session data or admin data.");
93                    }
94                } catch (error) {
95                    console.error("An error occurred:", error);
96                }
97            }
98            loadAmplyData();
99            function createAmply() {
100                const style = document.createElement("style");
101                style.innerHTML = `\n    \n                    :root {\n                        --Askas_yellow: #fdbc52;\n                        --Askas_input-border-active: #0d79cb;\n                        --Askas_input-border-inactive: #C3C3C3;\n                    }\n    \n                    .Askas_Amply_origTheme {\n                        --Askas_Amply_bg-color: #515380;\n                        --Askas_Amply_text-color: #F7F7F8;\n                        --Askas_Amply_border-color: #67699b;\n                        --Askas_Amply_logo-color: #fdbc52;\n                    }\n                    \n                    .Askas_Amply_darkTheme {\n                        --Askas_Amply_bg-color: #2a2b36;\n                        --Askas_Amply_text-color: #cccccc;\n                        --Askas_Amply_border-color: #434451;\n                        --Askas_Amply_logo-color: #fdbc52;\n                    }\n\n                    .Askas_Amply_greenTheme {\n                        --Askas_Amply_bg-color: #C2FFC7;\n                        --Askas_Amply_text-color: #62825D;\n                        --Askas_Amply_border-color: #526E48;\n                        --Askas_Amply_logo-color: #3b593f;\n                    }\n\n                    .Askas_Amply_julTheme {\n                        --Askas_Amply_bg-color: #a62323;
101\n                        --Askas_Amply_text-color: #ffffff;\n                        --Askas_Amply_border-color: #4fa14f;\n                        --Askas_Amply_logo-color: #ffcc00;\n                    }\n\n                    .Askas_Amply_halloweenTheme {\n                        --Askas_Amply_bg-color: #ff7518;\n                        --Askas_Amply_text-color: #000000;\n                        --Askas_Amply_border-color: #8b0000;\n                        --Askas_Amply_logo-color: #b5651d;\n                    }\n\n                    .Askas_Amply_easterTheme {\n                        --Askas_Amply_bg-color: #69397c;\n                        --Askas_Amply_text-color: #f1d907;\n                        --Askas_Amply_border-color: #c93cb2;\n                        --Askas_Amply_logo-color: #ff99ff;\n                    }\n\n                    .Askas_Amply_brownTheme {\n                        --Askas_Amply_bg-color: rgb(61, 42, 42);\n                        --Askas_Amply_text-color: #d8bd8a;\n                        --Askas_Amply_border-color: #b9610e;\n                        --Askas_Amply_logo-color: #e2b974;\n                    }\n\n                    .Askas_Amply_calmBlueTheme {\n                        --Askas_Amply_bg-color: #0077b6;\n                        --Askas_Amply_text-color: #ffffff;\n                        --Askas_Amply_border-color: #023e8a;\n                        --Askas_Amply_logo-color: #89c2d9;\n                    }\n\n                    .Askas_Amply_sunsetOrangeTheme {\n                        --Askas_Amply_bg-color: #ff6f61;\n                        --Askas_Amply_text-color: #ffffff;\n                        --Askas_Amply_border-color: #d84315;\n                        --Askas_Amply_logo-color: #ffd9c7;\n                    }\n\n                    .Askas_Amply_forestGreenTheme {\n                        --Askas_Amply_bg-color: rgb(62, 119, 62);\n                        --Askas_Amply_text-color: #f4f4f4;\n                        --Askas_Amply_border-color: #2e8b57;\n                        --Askas_Amply_logo-color: #aad4aa;\n                    }\n\n                    .Askas_Amply_oceanWaveTheme {\n                        --Askas_Amply_bg-color: #1e81b0;\n                        --Askas_Amply_text-color: #d1eef6;\n                        --Askas_Amply_border-color: #0a525e;\n                        --Askas_Amply_logo-color: #79d2de;\n                    }\n\n                    .Askas_Amply_sunnyYellowTheme {\n                        --Askas_Amply_bg-color: #ffd700;\n                        --Askas_Amply_text-color: #5a5a00;\n                        --Askas_Amply_border-color: #c7a400;\n                        --Askas_Amply_logo-color: #ffed9c;\n                    }\n\n                    .Askas_Amply_pinkBlossomTheme {\n                        --Askas_Amply_bg-color: #ffc1cc;\n                        --Askas_Amply_text-color: #5b2333;\n                        --Askas_Amply_border-color: #d490a7;\n                        --Askas_Amply_logo-color: #ff69b4;\n                    }\n\n                    .Askas_Amply_midnightPurpleTheme {\n                        --Askas_Amply_bg-color: #4b0082;\n                        --Askas_Amply_text-color: #e0e0e0;\n                        --Askas_Amply_border-color: #6a0dad;\n                        --Askas_Amply_logo-color: #9370db;\n                    }\n\n                    .Askas_Amply_coffeeBrownTheme {\n                        --Askas_Amply_bg-color: #6f4e37;\n                        --Askas_Amply_text-color: #ffffff;\n                        --Askas_Amply_border-color: #3d2b1f;\n                        --Askas_Amply_logo-color: #d2b48c;\n                    }\n\n                    .Askas_Amply_svartGultLilaTheme {\n                        --Askas_Amply_bg-color: #000000;\n                        --Askas_Amply_text-color: #f9e2af;\n                        --Askas_Amply_border-color: #cba6f7;\n                        --Askas_Amply_logo-color: #f9e2af;\n                    }\n\n                    .Askas_Amply_bubblegumTheme {\n                        --Askas_Amply_bg-color: #7BD3EA;\n                        --Askas_Amply_text-color: #fdffa5;\n                        --Askas_Amply_border-color: #A1EEBD;\n                        --Askas_Amply_logo-color: #F6D6D6;\n                    }\n                    \n                    .Askas_Amply_blackWeekTheme {\n                        --Askas_Amply_bg-color: #1a1a1a;\n                        --Askas_Amply_text-color: #ffffff;\n                        --Askas_Amply_border-color: #ffcc00;\n                        --Askas_Amply_logo-color: #ffcc00;\n                    }\n    \n                    #Askas_Amply_AmplyWrapper * {\n                        font-family: Arial, Helvetica, sans-serif;\n                    }\n\n                    #Askas_Amply_AmplyWrapper {\n                        all: unset;\n                        position: fixed;\n                        z-index: 9999999999;\n                        user-select: none;\n                        bottom: 80px;\n                        left: 10px;\n                        display:none;\n                        font-size: 14px;\n                    }\n\n                    #Askas_Amply_AmplyWrapper #Askas_Amply_dataDisplay,\n                    #Askas_Amply_AmplyWrapper #Askas_Amply_mover_content {\n                        font-size: 14px;\n                    }\n\n\n                    #Askas_Amply_AmplyWrapper svg {\n                        all: unset;\n                    }\n    \n                    #Askas_Amply_dataDisplay .Askas_Amply_closeBtn {\n                        background-color: var(--Askas_Amply_bg-color);\n                        display: flex;\n                        justify-content: center;\n                        align-items: center;\n                        padding-bottom: 4px;\n                    }    \n    \n                    #Askas_Amply_dataDisplay {\n                        display: flex;\n                        flex-direction: column;\n                        background-color: var(--Askas_Amply_bg-color);\n                        color: var(--Askas_Amply_text-color);\n                        padding: 8px 16px 24px 16px;\n                        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);\n                        z-index: 1000;\n                        font-family: Poppins, sans-serif;\n                        border-radius: 10px 10px 10px 0;\n                        min-width: 175px;\n                        max-width: 200px;\n                        min-height: 185px;\n                        scrollbar-width: none;\n                        white-space: nowrap;\n                    }\n                    #Askas_Amply_dataDisplay.settingsOpen {\n                        border-radius: 10px 0 0 0;\n                    }\n                    \n                    #Askas_Amply_dataDisplay::-webkit-scrollbar {\n                        display: none;\n                    }\n    \n                    #Askas_Amply_dataDisplay.closed {\n                        display: none;\n                    }\n    \n                    #Askas_Amply_output {\n                        margin-top: 8px;\n                        display: flex;\n                        flex-direction: column;\n                        gap: 8px;\n                    }\n                    #Askas_Amply_output span {\n                        white-space: nowrap;\n                        font-weight: 500;\n                    }\n    \n                    #Askas_Amply_output .request_info {\n                        margin-top: -8px;\n                        padding-bottom: 16px;\n                        border-bottom: 1px solid var(--Askas_Amply_border-color);\n                        display: flex;\n                        flex-direction: column;\n                        gap: 8px;\n                    }\n    \n                    #Askas_Amply_output .general_info {\n                        display: flex;\n                        flex-direction: column;\n                        gap: 8px;\n                        overflow: hidden;\n                    }\n    \n                    #Askas_Amply_mover {\n                        position: absolute;\n                        background-color: var(--Askas_Amply_bg-color);\n                        color: var(--Askas_Amply_text-color);\n                        width: 50px;\n                        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);\n                        border-radius: 0 0 10px 10px;\n                        transition: width 0.2s ease-in-out, height 0.2s ease-in-out;\n                        max-height: 50px;\n                        min-height: 50px;\n                        overflow-y: hidden;\n                        scrollbar-width: none;\n                        white-space: nowrap;\n                        padding-bottom: 4px;\n                    }\n                    #Askas_Amply_mover::-webkit-scrollbar {\n                        display: none;\n                    }\n    \n                    .Askas_Amply_logo {\n                        width: 37px;\n                        position: absolute;\n                        top: 6px;\n                        left: 6px;\n                        cursor: grab;\n                        transition: top 0.2s ease-in-out;\n                    }\n                    #Askas_Amply_AmplyWrapper.amplyMoreInfo #Askas_Amply_dataDisplay.closed + #Askas_Amply_mover:has(#Askas_Amply_mover_content > *:nth-child(2)) .Askas_Amply_logo {\n                        top: 16px;\n                    }\n\n                    .Askas_Amply_logo .cls-1 {\n                        fill: var(--Askas_Amply_logo-color);\n                    }\n    \n                    #Askas_Amply_mover_content {\n                        margin-left: 53px;\n                        overflow: auto;\n                        white-space: nowrap;\n                        display: flex;\n                        flex-direction: column;\n                        scrollbar-width: none;\n                        padding: 4px 0;\n                    }\n                    #Askas_Amply_mover_content::-webkit-scrollbar {\n                        display: none;\n                    }\n    \n                    #Askas_Amply_mover_content .Askas_Amply_mover_content-currency-display,\n                    #Askas_Amply_mover_content .Askas_Amply_mover_content-theme-display {\n                        margin-top: 4px;\n                    }\n    \n                    #Askas_Amply_AmplyWrapper #Askas_Amply_dataDisplay.closed + #Askas_Amply_mover {\n                        border-radius: 10px;\n                        width: 50px;\n                        max-width: 50px;\n                        max-height: 50px;\n                    }\n                    #Askas_Amply_AmplyWrapper.amplyMoreInfo #Askas_Amply_dataDisplay.closed + #Askas_Amply_mover {\n                        width: 250px;\n                        max-width: 250px;\n                        max-height: unset;\n                    }\n    \n                    #Askas_Amply_links {\n                        display: flex;\n                        flex-direction: column;\n                        gap: 4px;\n                        margin-bottom: 8px;\n                    }\n    \n                    #Askas_Amply_links a,\n                    #Askas_Amply_mover_content a {\n                        font-size: 15px;\n                        color: var(--Askas_Amply_text-color);\n                        padding: 8px 0;\n                        font-weight: 600;\n                        text-transform: capitalize;\n                        white-space: nowrap;\n                        scrollbar-width: none;\n                        overflow-x: hidden;\n                    }\n                    #Askas_Amply_links a::-webkit-scrollbar,        \n                    #Askas_Amply_mover_content a::-webkit-scrollbar {\n                        display: none;\n                    }\n\n                    #Askas_Amply_links a:hover,\n                    #Askas_Amply_mover_content a:hover {\n                        text-decoration: underline;\n                        text-underline-offset: 7px;\n                    }\n    \n                    #Askas_Amply_links .link-admin {\n                        text-transform: unset;\n                    }\n    \n                    .Askas_Amply_settings-toggle {\n                        display: flex;\n                        justify-content: flex-end;\n                        position: absolute;\n                        bottom: 10px;\n                        right: 10px;\n                    }\n\n                    #Askas_Amply_AmplyWrapper .Askas_Amply_settings-toggle svg,\n                    #Askas_Amply_AmplyWrapper .close-widget svg {\n                        fill: var(--Askas_Amply_text-color);\n                        cursor: pointer;\n                        transition: transform 0.2s ease-in-out;\n                    }\n                    #Askas_Amply_AmplyWrapper .close-widget:hover svg,\n                    #Askas_Amply_AmplyWrapper .Askas_Amply_settings-toggle:hover svg {\n                        transform: scale(1.3);\n                    }\n    \n                    #Askas_Amply_settingsDisplay {\n                        position: absolute;\n                        top: 0;\n                        left: 0;\n                        height: 100%;\n                        background-color: var(--Askas_Amply_bg-color);\n                        border-radius: 10px 10px 10px 0;\n                        transform: translateX(0);\n                        z-index: -1;\n                        transition: left 0.2s ease-out;\n                        display: flex;\n                        justify-content: center;\n                    }\n    \n                    #Askas_Amply_dataDisplay.settingsOpen #Askas_Amply_settingsDisplay {\n                        left: 100%;\n                        border-radius: 0px 10px 10px 0;\n                    }\n    \n                    #Askas_Amply_dataDisplay .Askas_Amply_settings-wrapper {\n                        display: flex;\n                        flex-direction: column;\n                        gap: 8px;\n                        padding: 8px 16px;\n                        width: 175px;\n                        white-space: wrap;\n                    }\n    \n                    .Askas_Amply_settings-wrapper div {\n                        display: flex;\n                        justify-content: space-between;\n                        align-items: center;\n                    }\n\n                    .Askas_Amply_settings-wrapper .close-widget {\n                        position: absolute;\n                        bottom: 6px;\n                        right: 10px;\n                        cursor: pointer;\n                        justify-content: flex-start;\n                    }\n\n                    .Askas_Amply_settings-wrapper .close-widget label {\n                        margin-right: 5px;\n                        cursor: pointer;\n                        padding-bottom: 4px;\n                        border-bottom: 1px solid transparent;\n                        transition: border-color 0.2s ease-in-out;\n                    }\n\n                    .Askas_Amply_settings-wrapper .close-widget:hover label {\n                        border-color: var(--Askas_Amply_text-color);\n                    }\n    \n                    #Askas_Amply_AmplyWrapper h4 {\n                        font-size: 15px;\n                        margin: 8px 0 4px 0;\n                        padding-bottom: 8px;\n                        border-bottom: 1px solid var(--Askas_Amply_border-color);\n                    }\n    \n                    .Askas_Amply_settings-wrapper #Askas_Amply_theme-selector {\n                        padding: 4px;\n                        border: none;\n                        text-align: center;\n                        outline: none;\n                        appearance: none;\n                        box-shadow: none;\n                        cursor: pointer;\n                        width: unset !important;\n                        max-width: 50%;\n                        line-height: unset;\n                        height: unset;\n  
101                      border-radius: 4px;\n                        box-shadow: 0 0 0 1px transparent;\n                        transition: unset;\n                    }\n                    .Askas_Amply_settings-wrapper #Askas_Amply_theme-selector:hover {\n                        box-shadow: 0 0 0 1px #000;\n                    }\n    \n                    .Askas_Amply_settings-wrapper .extended-view .Askas_Amply_switch {\n                        align-self: flex-end;\n                    }\n    \n                    .Askas_Amply_switch {\n                        position: relative;\n                        display: inline-block;\n                        width: 35px;\n                        height: 20px;\n                    }\n    \n                    .Askas_Amply-slider {\n                        position: absolute;\n                        cursor: pointer;\n                        top: 0;\n                        left: 0;\n                        right: 0;\n                        bottom: 0;\n                        background-color: var(--Askas_input-border-inactive);\n                        border-radius: 15px;\n                        box-shadow: 0 0 0 1px transparent;\n                    }\n                    .Askas_Amply-slider:hover {\n                        box-shadow: 0 0 0 1px #000;\n                    }\n                    .Askas_Amply-slider:before {\n                        position: absolute;\n                        content: "";\n                        height: 17px;\n                        width: 17px;\n                        left: 2px;\n                        top: 1.5px;\n                        background-color: #fff;\n                        transition: all 0.2s ease-in-out;\n                        border-radius: 50%;\n                    }\n                    .Askas_Amply-slider.active {\n                        background-color: var(--Askas_Amply_logo-color);\n                    }\n                    .Askas_Amply-slider.active::before {\n                        transform: translateX(14px);\n                    }\n\n                    @media screen and (max-width: 768px) {\n                        #Askas_Amply_AmplyWrapper {\n                            display: none !important;\n                        }\n                    }\n                `;
102                const wrapper = document.createElement("div");
103                wrapper.id = "Askas_Amply_AmplyWrapper";
104                wrapper.classList.add(amplyTheme || "Askas_Amply_origTheme");
105                if (utokadInfo) {
106                    wrapper.classList.add("amplyMoreInfo");
107                }
108                const dataDisplay = document.createElement("div");
109                dataDisplay.id = "Askas_Amply_dataDisplay";
110                dataDisplay.classList = amplyIsOpen ? "" : "closed";
111                dataDisplay.innerHTML = `\n                    <div id="Askas_Amply_links"></div>\n                    <div id="Askas_Amply_output">Loading data...</div>\n                    <span class="Askas_Amply_settings-toggle">\n                        <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#F7F7F8"><path d="m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z"/></svg>\n                    </span>\n                `;
112                const mover = document.createElement("div");
113                mover.id = "Askas_Amply_mover";
114                const moverLogo = document.createElement("div");
115                moverLogo.innerHTML = logo;
116                moverLogo.classList.add("Askas_Amply_logo");
117                moverLogo.alt = "logotype Ask\xe5s";
118                const settingsDisplay = document.createElement("div");
119                settingsDisplay.id = "Askas_Amply_settingsDisplay";
120                settingsDisplay.innerHTML = `\n                    <div class="Askas_Amply_settings-wrapper">\n                    <h4>
120Amply-inst\u00E4llningar</h4>\n                    <div class="theme-selector">\n                        <label for="Askas_Amply_theme-selector">F\u00E4rgtema</label>\n                        <select id="Askas_Amply_theme-selector">\n                            ${themes.map(theme => `<option value="${theme.value}" ${theme.value === amplyTheme ? "selected" : ""}>${theme.label}</option>`).join("")}\n                        </select>\n                    </div>\n                    <div class="extended-view">\n                        <label for="Askas_Amply_settings-checkbox">Minimera</label>\n                        <div class="Askas_Amply_switch">\n                            <span id="Askas_Amply_settings-checkbox" class="Askas_Amply-slider ${utokadInfo ? "" : "active"}"></span>\n                        </div>\n                    </div>\n                    <div class="close-widget">\n                        <label for="Askas_Amply_closeBtn">Inaktivera widget</label>\n                        <span class="Askas_Amply_closeBtn">\n                            <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#333"><path d="m336-280 144-144 144 144 56-56-144-144 144-144-56-56-144 144-144-144-56 56 144 144-144 144 56 56ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg>\n                        </span>\n                    </div>\n                </div>\n                `;
121                dataDisplay.appendChild(settingsDisplay);
122                document.head.appendChild(style);
123                document.body.appendChild(wrapper);
124                wrapper.appendChild(dataDisplay);
125                wrapper.appendChild(mover);
126                mover.appendChild(moverLogo);
127                amplyWrapper = document.getElementById("Askas_Amply_AmplyWrapper");
128                applySavedPosition();
129            }
130            async function fetchSessionData() {
131                try {
132                    const response = await fetch("/cgi-bin/ibutik/API.fcgi?funk=get_session_data");
133                    if (!response.ok) throw new Error(`Error: ${response.statusText}`);
134                    const data = await response.json();
135                    return data;
136                } catch (error) {
137                    console.log(error.message);
138                    return null;
139                }
140            }
141            async function fetchAdminData(domain) {
142                try {
143                    const response = await fetch(`${domain ? `https://${domain}` : ""}/webbadmin?funk=get_session_data_json&url=` + encodeURIComponent(window.location.pathname + window.location.search), {
144                        method: "GET",
145                        credentials: "include"
146                    });
147                    if (!response.ok) throw new Error(`Error: ${response.statusText}`);
148                    const adminData = await response.json();
149                    return adminData;
150                } catch (error) {
151                    console.log(error.message);
152                    return null;
153                }
154            }
155            function displaySessionData(data) {
156                const output = document.getElementById("Askas_Amply_output");
157                output.innerHTML = "";
158                const generalInfo = document.createElement("div");
159                generalInfo.classList.add("general_info");
160                output.appendChild(generalInfo);
161                const infoItems = [ {
162                    label: "Spr\xe5k",
163                    value: data.language
164                }, {
165                    label: "Valuta",
166                    value: `${data.currency}, ${data.vat_type}`
167                }, {
168                    label: "Tema",
169                    value: data.theme
170                }, {
171                    label: "Kundkategori",
172                    value: data.customer_category_id
173                }, {
174                    label: "Prislista",
175                    value: data.customer_type
176                } ];
177                infoItems.forEach(item => {
178                    if (item.value) {
179                        const span = document.createElement("span");
180                        const strong = document.createElement("strong");
181                        strong.textContent = `${item.label}: `;
182                        span.appendChild(strong);
183                        span.appendChild(document.createTextNode(item.value));
184                        generalInfo.appendChild(span);
185                    }
186                });
187                const mover = document.getElementById("Askas_Amply_mover");
188                const moverContent = document.createElement("div");
189                moverContent.id = "Askas_Amply_mover_content";
190                moverContent.innerHTML = `\n                    <span class="Askas_Amply_mover_content-currency-display">${data.language}, ${data.currency}, ${data.vat_type} - ${data.theme}</span>\n                    \n                `;
191                mover.appendChild(moverContent);
192            }
193            function displayAdminData(data) {
194                const links = document.getElementById("Askas_Amply_links");
195                const output = document.getElementById("Askas_Amply_output");
196                const moverContent = document.getElementById("Askas_Amply_mover_content");
197                links.innerHTML = "";
198                const renderProductLink = () => {
199                    const productLink = document.createElement("a");
200                    productLink.classList.add("link-product");
201                    productLink.href = path;
202                    productLink.target = "_blank";
203                    productLink.textContent = entityDisplay;
204                    links.appendChild(productLink);
205                };
206                const renderAdminLink = () => {
207                    const adminLink = document.createElement("a");
208                    adminLink.classList.add("link-admin");
209                    adminLink.href = `/webbadmin`;
210                    adminLink.target = "_blank";
211                    adminLink.textContent = "G\xe5 till Admin";
212                    links.appendChild(adminLink);
213                    document.querySelector(".Askas_Amply_logo").style.top = "6px";
214                };
215                const version = data.version;
216                if (version) {
217                    const versionSpan = document.createElement("span");
218                    versionSpan.innerHTML = `<strong>Version:</strong> ${version}`;
219                    output.insertBefore(versionSpan, output.firstChild);
220                }
221                if (data.request?.info?.length) {
222                    const requestInfo = document.createElement("div");
223                    requestInfo.classList.add("request_info");
224                    output.insertBefore(requestInfo, output.firstChild);
225                    for (const item of data.request.info) {
226                        const itemSpan = document.createElement("strong");
227                        const itemData = document.createElement("span");
228                        itemSpan.classList.add("Askas_Amply_product_info_item");
229                        itemData.classList.add("Askas_Amply_product_info_data");
230                        itemSpan.textContent = `${item.name}: `;
231                        itemData.textContent = item.value;
232                        requestInfo.appendChild(itemSpan);
233                        itemSpan.appendChild(itemData);
234                    }
235                }
236                let reqType = data.request?.type;
237                let entityDisplay = `${reqType}: ${data.request?.key}`;
238                let id = data.request?.key;
239                let path = data.request?.adminLink;
240                if (reqType == "ovriga") {
241                    reqType = data.request.key;
242                    entityDisplay = reqType;
243                } else if (reqType == "cms") {
244                    entityDisplay = `Webbsida: ${data.request.key}`;
245                } else if (reqType == "startsida") {
246                    entityDisplay = "G\xe5 till startsidor";
247                }
248                if (!id) {
249                    if (reqType == "startsida") {
250                        renderProductLink();
251                    } else {
252                        renderAdminLink();
253                    }
254                } else if (!path) {
255                    renderAdminLink();
256                } else {
257                    renderProductLink();
258                }
259                if (reqType && path) {
260                    const moverProductLink = document.createElement("a");
261                    moverProductLink.classList.add("link-product");
262                    moverProductLink.href = path;
263                    moverProductLink.target = "_blank";
264                    moverProductLink.textContent = entityDisplay;
265                    moverContent.insertBefore(moverProductLink, moverContent.firstChild);
266                } else if (reqType && !path) {
267                    const moverAdminLink = document.createElement("a");
268                    moverAdminLink.classList.add("link-admin");
269                    moverAdminLink.href = `/webbadmin`;
270                    moverAdminLink.target = "_blank";
271                    moverAdminLink.textContent = "G\xe5 till Admin";
272                    moverContent.insertBefore(moverAdminLink, moverContent.firstChild);
273                }
274            }
275            const openOrClose = () => {
276                const wrapper = document.getElementById("Askas_Amply_dataDisplay");
277                if (amplyIsOpen) {
278                    wrapper.classList.add("closed");
279                    localStorage.setItem("amplyIsOpen", "false");
280                } else {
281                    wrapper.classList.remove("closed");
282                    localStorage.setItem("amplyIsOpen", "true");
283                }
284                amplyIsOpen = !amplyIsOpen;
285            };
286            const amplyLogo = document.querySelector(".Askas_Amply_logo");
287            amplyLogo.addEventListener("mousedown", function(e) {
288                e.preventDefault();
289                isDragging = true;
290                offsetX = e.clientX - amplyWrapper.getBoundingClientRect().left;
291                offsetY = e.clientY - amplyWrapper.getBoundingClientRect().top;
292                maxX = window.innerWidth - amplyWrapper.offsetWidth;
293                maxY = window.innerHeight - amplyWrapper.offsetHeight;
294            });
295            document.addEventListener("mouseup", function() {
296                isDragging = false;
297                localStorage.setItem("amplyLeft", amplyWrapper.style.left || "0px");
298                localStorage.setItem("amplyBottom", amplyWrapper.style.bottom || "50px");
299            });
300            document.addEventListener("mousemove", function(e) {
301                const dataDisplay = document.getElementById("Askas_Amply_dataDisplay");
302                const mover = document.getElementById("Askas_Amply_mover");
303                if (isDragging) {
304                    const amplyWidth = amplyWrapper.offsetWidth;
305                    const moverWidth = dataDisplay.classList.contains("closed") ? mover.offsetWidth : amplyWidth;
306                    const currentMaxX = window.innerWidth - moverWidth;
307                    const currentMaxY = window.innerHeight - amplyWrapper.offsetHeight;
308                    let x = e.clientX - offsetX;
309                    let y = window.innerHeight - e.clientY + 30;
310                    x = Math.max(0, Math.min(x, currentMaxX));
311                    y = Math.max(50, Math.min(y, currentMaxY));
312                    amplyWrapper.style.left = `${x}px`;
313                    amplyWrapper.style.bottom = `${y}px`;
314                }
315            });
316            document.addEventListener("DOMContentLoaded", () => {
317                const wrapper = document.getElementById("Askas_Amply_dataDisplay");
318                let amplyIsOpen = localStorage.getItem("amplyIsOpen");
319                if (amplyIsOpen === null) {
320                    amplyIsOpen = "false";
321                    localStorage.setItem("amplyIsOpen", amplyIsOpen);
322                }
323                amplyIsOpen = amplyIsOpen === "true";
324                if (amplyIsOpen) {
325                    wrapper.classList.remove("closed");
326                } else {
327                    wrapper.classList.add("closed");
328                }
329                applySavedPosition();
330            });
331            function applySavedPosition() {
332                const savedLeft = localStorage.getItem("amplyLeft");
333                const savedBottom = localStorage.getItem("amplyBottom");
334                if (savedLeft && savedBottom) {
335                    amplyWrapper.style.left = savedLeft.includes("px") ? savedLeft : `${savedLeft}px`;
336                    amplyWrapper.style.bottom = savedBottom.includes("px") ? savedBottom : `${savedBottom}px`;
337                }
338            }
339            document.getElementById("Askas_Amply_mover").addEventListener("dblclick", openOrClose);
340            const themeSelector = document.getElementById("Askas_Amply_theme-selector");
341            themeSelector.addEventListener("change", e => {
342                themes.forEach(theme => amplyWrapper.classList.remove(theme.value));
343                amplyWrapper.classList.add(e.target.value);
344                localStorage.setItem("amplyTheme", e.target.value);
345            });
346            document.querySelector(".Askas_Amply-slider").addEventListener("click", () => {
347                const slider = document.querySelector(".Askas_Amply-slider");
348                slider.classList.toggle("active");
349                utokadInfo = !utokadInfo;
350                localStorage.setItem("amplyMoreInfo", utokadInfo);
351                amplyWrapper.classList.toggle("amplyMoreInfo");
352            });
353            const settingsBtn = document.querySelector(".Askas_Amply_settings-toggle");
354            settingsBtn.addEventListener("click", () => {
355                document.getElementById("Askas_Amply_dataDisplay").classList.toggle("settingsOpen");
356            });
357            const closeBtn = document.querySelector(".Askas_Amply_closeBtn svg");
358            closeBtn.addEventListener("click", () => {
359                amplyWrapper.remove();
360                localStorage.removeItem("amplyEnabled");
361                const url = new URL(window.location);
362                if (url.searchParams.has("amply")) {
363                    url.searchParams.delete("amply");
364                    window.history.replaceState({}, document.title, url.toString());
365                }
366            });
367        } else if (amplyWrapper) {
368            amplyWrapper.remove();
369        }
370    };
371    window.onload = function() {
372        activateAmply();
373    };
374})();

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.