PageSourceSearch

https://golfpiste.com/login-system/javascript/login-form.js?v=2

js golfpiste.com collected 2026-10-01 12:22:57 UTC 20,274 bytes, 542 lines download raw bytes

1(function() {
2
3    var shouldKeepOpen = false;
4    var openUriAfterwards = null;
5
6    /**
7     * Luo FadeOut efekti
8     * @returns {HTMLObjectElement}
9     */
10    function fadeOut(el) {
11        el.style.opacity = 1;
12        (function fade() {
13            if ((el.style.opacity -= .1) < 0) {
14                el.style.display = "none";
15            } else {
16                requestAnimationFrame(fade);
17            }
18        })();
19    };
20
21    /**
22     * Luo FadeIn efekti
23     * @returns {HTMLObjectElement}
24     */
25    function fadeIn(el, display) {
26        el.style.opacity = 0;
27        el.style.display = display || "block";
28        (function fade() {
29            var val = parseFloat(el.style.opacity);
30            if (!((val += .1) > 1)) {
31                el.style.opacity = val;
32                requestAnimationFrame(fade);
33            }
34        })();
35    };
36
37    /**
38     * Funktio jolla avataan popuppi
39     * @returns {HTMLObjectElement}
40     */
41
42    function openPopup() {
43        var popup = document.getElementById("prio1-login-frame-parent");
44        fadeIn(popup, "flex");
45    }
46
47
48    function canCloseWithoutPrompt() {
49        var frameElement = document.getElementById("prio1-login-frame");
50        var inputList = frameElement.contentWindow.document.getElementsByClassName("login-input");
51        var allInputsEmpty = true;
52        for(var i = 0; i < inputList.length; i++) {
53            var input = inputList.item(i);
54            if(input.value !== "") {
55                allInputsEmpty = false;
56            }
57        }
58        return allInputsEmpty;
59    }
60
61    /**
62     * Funktio jolla suljetaan popuppi
63     * @returns {HTMLObjectElement}
64     */
65
66    function closePopup() {
67        var frameElement = document.getElementById("prio1-login-frame");
68        var popup = document.getElementById("prio1-login-frame-parent");
69
70        var shouldClose = false;
71
72        if(canCloseWithoutPrompt() === false && frameElement.contentWindow.document.getElementById("register-new-user-window").style.display === "block") {
73            var confirmed = window.confirm("Mikäli poistut sivustolta, valittu toiminto keskeytetään. Oletko varma, että haluat poistua?");
74
75            if(confirmed) {
76                shouldClose = true;
77            }
78        } else {
79            shouldClose = true;
80        }
81
82        if(shouldClose === true && shouldKeepOpen === false) {
83            fadeOut(popup);
84            setTimeout(function() {
85                popup.remove();
86            }, 300);
87            document.body.style.overflow = "visible";
88            window.onbeforeunload = null;
89
90            if(frameElement.getAttribute("lgt") != null) {
91                frameElement.removeAttribute("lgt");
92            }
93        } else if(shouldKeepOpen === true) {
94            var confirmResult = window.confirm("Ole hyvä ja kirjaudu. Tätä sivua ei voi käyttää ilman kirjautumista.");
95            if(confirmResult === false) {
96                window.location = "/";
97            }
98        }
99    }
100
101    var beforeUnloadEventListener = null;
102
103    /**
104     * Lähde, josta kirjautumislomake haetaan
105     * @type {String}
106     */
107    var loginFrameUri = "/login-system/login-page.php";
108
109    /**
110     * Mistä osoitteesta sallitaan pyyntöjä
111     * @type {String}
112     */
113    var loginFrameAddress = "https://"+window.location.hostname;
114
115    /**
116     * Tunnus iframe-elementille, joka generoidaan
117     * @type {String}
118     */
119    var loginFrameElementId = "prio1-login-frame";
120
121    /**
122     * Generoi iframe elementti kirjautumista varten
123     * @returns {HTMLElement}
124     */
125    function generateLoginFrameElement(data) {
126
127        data =(typeof data !== 'undefined') ?  data : null;
128
129        var startTime = Date.now();
130
131        // Generoi iframe piilotettuna
132        var iframe = document.createElement('iframe');
133
134        iframe.setAttribute('src', loginFrameUri);
135        iframe.setAttribute('id', loginFrameElementId);
136        iframe.style.visibility = "hidden";
137        iframe.style.height = "0";
138        iframe.style.zIndex = "-2147483647";
139        iframe.style.position = "absolute";
140
141
142        // Latausikoni
143        var loaderDiv = document.createElement("div");
144        loaderDiv.setAttribute("id", loginFrameElementId + "-loader");
145        loaderDiv.innerHTML += "<div class='lds-ring'><div></div><div></div><div></div><div></div></div>";
146        loaderDiv.style.display = "block";
147        loaderDiv.style.zIndex = "2147483647";
148
149        var parentDiv = document.createElement('div');
150        parentDiv.setAttribute("id", loginFrameElementId + "-parent");
151
152        // Sulkemisnappi
153        var popupClose = document.createElement("div");
154        popupClose.setAttribute("class", "open-popup");
155        popupClose.setAttribute("id", "login-popup-close-button");
156        popupClose.onclick = function() { closePopup(); };
157        popupClose.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512">' +
158            '<!-- Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) -->' +
159            '<path d="M193.94 256L296.5 153.44l21.15-21.15c3.12-3.12 3.12-8.19 0-11.31l
159-22.63-22.63c-3.12-3.12-8.19-3.12-11.31 0L160 222.06 36.29 ' +
160            '98.34c-3.12-3.12-8.19-3.12-11.31 0L2.34 120.97c-3.12 3.12-3.12 8.19 0 11.31L126.06 256 2.34 379.71c-3.12 3.12-3.12 8.19 0 11.31l22.63 ' +
161            '22.63c3.12 3.12 8.19 3.12 11.31 0L160 289.94 262.56 392.5l21.15 21.15c3.12 3.12 8.19 3.12 11.31 0l22.63-22.63c3.12-3.12 3.12-8.19 ' +
162            '0-11.31L193.94 256z"/></svg>';
163
164        var popupCloseBG = document.createElement("div");
165        popupCloseBG.setAttribute("id", "backdrop-close-popup");
166        // Sulkee popupin kun painaa tummennettua taustaa
167        popupCloseBG.onclick = function() { closePopup(); };
168
169        document.body.appendChild(parentDiv);
170        parentDiv.appendChild(iframe);
171        parentDiv.appendChild(loaderDiv);
172        parentDiv.appendChild(popupClose);
173        parentDiv.appendChild(popupCloseBG);
174
175        // Alustavasti tyhjennä kaikki input-kentät
176        var inputList = iframe.contentWindow.document.getElementsByClassName("login-input");
177        for(var i = 0; i < inputList.length; i++) {
178            var input = inputList.item(i);
179            input.value = "";
180        }
181
182        iframe.contentWindow.addEventListener("keyup", function() {
183
184            var canClose = canCloseWithoutPrompt();
185
186            if(canClose === false && iframe.contentWindow.document.getElementById("register-new-user-window").style.display === "block") {
187
188                window.onbeforeunload = function(e) {
189                    e.preventDefault();
190                    return "Mikäli poistut sivustolta, valittu toiminto keskeytetään. Oletko varma, että haluat poistua?";
191                }
192
193            } else if(canClose === true) {
194                window.onbeforeunload = null;
195            }
196        });
197        return iframe;
198    }
199
200    // Vastaanotetaan viestejä
201    bindLoginEvent(window, 'message', function (event) {
202
203        // Sallitaan vain sallitusta osoitteesta
204        if(event.origin !== loginFrameAddress) return;
205
206        try {
207            /**
208             * Vastaanotettu viesti
209             * @type {Object}
210             */
211            var receivedMessage = JSON.parse(event.data);
212        } catch (e) {/* Ignored */}
213
214        console.log("Received message from iframe: ", receivedMessage);
215
216        // Vastaanotetaan eventti
217        if(receivedMessage != null && receivedMessage.type != null) {
218            var eventName = receivedMessage.type;
219
220            var frame_element = document.getElementById(loginFrameElementId);
221            var loaderElement = document.getElementById(loginFrameElementId + "-loader");
222
223            // Lasketaan, mihin kohtaan sulkeutumisnappi siirretään
224            var popupCloseBtn = document.getElementById("login-popup-close-button");
225
226            // Handlataan eventit
227            if(eventName === "endLoginProcess") {
228
229                // Kirjautuminen lopetetaan
230                if(receivedMessage.result === true) {
231                    shouldKeepOpen = false;
232                    closePopup();
233                    setTimeout(function() {
234
235                        if ( !empty( receivedMessage.redirect ) ) {
236                            console.log('redirecting to ' + receivedMessage.redirect);
237                            window.open( receivedMessage.redirect, "_self" );
238                        }
239
240                        else if( !empty(openUriAfterwards) ) {
241                            window.open( openUriAfterwards, "_self" );
242                        } else {
243                            location.reload();
244                        }
245
246                    }, 500);
247                }
248
249            } else if ( eventName === 'redirect' ) {
250                window.open( receivedMessage.url, "_self" );
251            } else if(eventName === "openUri") {
252
253                if(frame_element.getAttribute("openUri") != null) {
254                    var openUri = frame_element.getAttribute("openUri");
255                    sendLoginRequest(JSON.stringify({ openUri: openUri, }));
256                }
257
258            } else if(eventName === "windowOpen") {
259
260                var openStart = Date.now();
261
262                // Ikkuna avattiin
263                frame_element.style.visibility = "visible";
264                frame_element.style.pointerEvents = "all";
265                frame_element.style.zIndex = "2147483647";
266                frame_element.style.height = frame_element.contentWindow.document.body.scrollHeight + "px";
267
268                loaderElement.style.display = "none";
269                loaderElement.style.zIndex = "-2147483647";
270
271                popupCloseBtn.style.display = "flex";
272
273                if(frame_element.getAttribute("lgt") != null) {
274                    var lgt = frame_element.getAttribute("lgt");
275                    frame_element.removeAttribute("lgt");
276                    sendLoginRequest(JSON.stringify({ lgt: lgt, }));
277                }
278
279                if(frame_element.getAttribute("openNewWindow") != null) {
280                    var newWindow = coalesce(frame_element.getAttribute("openNewWindow"), "");
281                    var force = coalesce(frame_element.getAttribute("force"),"false");
282                    var customValues = null;
283                    if(frame_element.hasAttribute("customValues")){
284                        customValues = frame_element.getAttribute("customValues");
285                        frame_element.removeAttribute("customValues");
286                    }
287                    frame_element.removeAttribute("openNewWindow");
288                    sendLoginRequest(JSON.stringify( { newWindow: newWindow, force: force, customValues:customValues } ));
289                }
290
291                if ( frame_element.getAttribute('wsdt') != null )
292                {
293                    var wsdt = coalesce(frame_element.getAttribute("wsdt"), "");
294                    wsdt = JSON.parse(wsdt);
295                    frame_element.removeAttribute('wsdt');
296                    sendLoginRequest(JSON.stringify({
297                        wsdt: wsdt
298                    }));
299                }
300
301            } else if(eventName === "windowClose") {
302                // Ikkuna suljettiin
303                frame_element.style.visibility = "hidden";
304                frame_element.style.pointerEvents = "none";
305                frame_element.style.zIndex = "-2147483647";
306                frame_element.style.height = "0";
307                frame_element.style.position = "absolute";
308
309                loaderElement.style.display = "block";
310                loaderElement.style.zIndex = "2147483647";
311
312                popupCloseBtn.style.display = "none";
313
314            } else if (eventName === "messageRender") {
315                // Viesti
316
317                frame_element.contentWindow.scrollTo(0,0);
318
319                frame_element.style.height = (frame_element.contentWindow.document.body.scrollHeight + 1) + "px";
320            } else if(eventName === "appleSignIn") {
321                nativeAppleLogin(function(data) { data.appleLogin = true; sendLoginRequest(JSON.stringify(data)); });
322            } else if(eventName === "appleRegister") {
323                nativeAppleLogin(function(data) { data.appleLogin = true; data.register_only = true; sendLoginRequest(JSON.stringify(data)); });
324            } else {
325                if( frame_element ) {
326                    frame_element.style.height = (frame_element.contentWindow.document.body.scrollHeight + 1) + "px";
327                }
328            }
329
330            updateCloseButtonLocation(frame_element);
331
332        }
333    });
334
335    /**
336     *  Päivitä "X"-napin sijainti.
337     *  @param {HTMLElement} frame_element      iFrame-elementti, jossa kirjautumis popup
338     */
339    function updateCloseButtonLocation(frame_element) {
340        if( !frame_element ) return;
341        var popupCloseBtn = document.getElementById("login-popup-close-button");
342        var iFramePosY = frame_element.offsetTop;
343        var iFramePosX = frame_element.offsetLeft + frame_element.offsetWidth;
344        popupCloseBtn.style.top = (iFramePosY + 10) + "px";
345        popupCloseBtn.style.left = (iFramePosX - 38) + "px";
346    }
347
348    // Kun ikkunan kokoa vaihdetaan
349    bindLoginEvent(window, "resize", function(event) {
350        var iframeEl = document.getElementById(loginFrameElementId);
351        if(iframeEl != null) updateCloseButtonLocation(iframeEl);
352    });
353
354    /**
355     * Hae iframe elementti, jos ei olemassa
356     * palauttaa 'false'
357     * @returns {HTMLElement|Boolean}
358     */
359    function fetchFrameElement() {
360        if(doesFrameElementExist()) return document.getElementById(loginFrameElementId);
361        return false;
362    }
363
364    /**
365     * Onko iframe elementti generoitu
366     * @returns {Boolean}
367     */
368    function doesFrameElementExist() {
369        var element = document.getElementById(loginFrameElementId);
370        return (typeof element !== "undefined") && (element != null);
371    }
372
373    /**
374     * Lähetä viesti kirjautumisjärjestelmään
375     * @param {String} message
376     */
377    function sendLoginRequest(message) {
378        var iFrame = document.getElementById(loginFrameElementId);
379        if(iFrame != null) {
380            iFrame.contentWindow.postMessage(
381                message,
382                loginFrameAddress
383            );
384        }
385    }
386
387    /**
388     * Kuuntele sivustolla tapahtuvaa toimintaa IE8
389     * yhteensopivasti
390     * @param {HTMLElement|Window} element
391     * @param {String} eventName
392     * @param {Function} eventHandler
393     */
394    function bindLoginEvent(element, eventName, eventHandler) {
395        if (element.addEventListener){
396            element.addEventListener(eventName, eventHandler, false);
397        } else if (element.attachEvent) {
398            element.attachEvent('on' + eventName, eventHandler);
399        }
400    }
401
402    var fullStart = 0;
403
404    // Kun "initLoginFrame" käynnistetään, silloin myös
405    // käynnistetään iframe
406    window.addEventListener("initLoginFrame", function(e) {
407        // Käynnistetään iframe VAIN jos sitä ei olla jo käynnistetty
408        fullStart = Date.now();
409
410        // Jos salasanan resetointitoken annettiin
411        if(e.lgt != null) {
412
413            e.preventDefault();
414
415            var myNewURL = stripQueryStringAndHashFromPath(location.href)
416            window.history.pushState(null, document.title, myNewURL);
417            function stripQueryStringAndHashFromPath(url) {
418                return url.split("?")[0].split("#")[0];
419            }
420            var frameElement = generateLoginFrameElement();
421            if(frameElement != null) {
422                frameElement.setAttribute("lgt", e.lgt);
423            }
424        } else if(e.openNewWindow != null) { // Jos avataan automaattisesti jokin ikkuna
425            e.preventDefault();
426
427            var myNewURL = stripQueryStringAndHashFromPath(location.href)
428            window.history.pushState(null, document.title, myNewURL);
429            function stripQueryStringAndHashFromPath(url) {
430                return url.split("?")[0].split("#")[0];
431            }
432
433            var frameElement = generateLoginFrameElement();
434            frameElement.setAttribute("force", coalesce(e.force, false));
435            if(frameElement != null) {
436                frameElement.setAttribute("openNewWindow", e.openNewWindow);
437            }
438
439        } else {
440            var frameElement = fetchFrameElement();
441            if(frameElement === false) frameElement = generateLoginFrameElement();
442        }
443        if ( e.customValues != null )
444        {
445            frameElement.setAttribute('customValues', e.customValues);
446        }
447        if ( e.wsdt != null )
448        {
449            frameElement.setAttribute('wsdt', JSON.stringify(e.wsdt));
450        }
451
452        // Jos tulee määräys kirjata käyttäjä ulos
453        if(e.logUserOut != null && e.logUserOut == true) {
454            $.post(loginFrameAddress + "/login-system/endpoints/login-authenticate.php", {handle_user_logout: true});
455        }
456
457        if(e.shouldKeepOpen != null) {
458            shouldKeepOpen = e.shouldKeepOpen;
459        }
460
461        if( e.openUri != null ) {
462
463            console.log("Should open uri:", e.openUri);
464            openUriAfterwards = e.openUri;
465
466        }
467
468    }, false);
469
470    function nativeAppleLogin(callback) {
471        var promise = AppleID.auth.signIn();
472        var result = {
473            status: false,
474            message: "Jokin meni pieleen.. Yritä myöhemmin uudelleen!",
475            other: {},
476        }
477        promise.then(
478            function (resp) {
479                var user = resp.user;
480                var appleAuthData = resp.authorization;
481                var firstName = "", lastName = "", email = "";
482                if(user != null) {
483                    if(user.name != null) {
484                        firstName = user.name.firstName;
485                        lastName = user.name.lastName;
486                    }
487                    if(user.email != null) { email = user.email; }
488                }
489
490                if(appleAuthData != null) {
491                    var code = appleAuthData.code;
492                    var state = appleAuthData.state;
493                    var id_token = appleAuthData.id_token;
494                    result = {
495                        status: true,
496                        message: "",
497                        other: {
498                            firstName: firstName,
499                            lastName: lastName,
500                            email: email,
501                            code: code,
502                            state: state,
503                            id_token: id_token
504                        }
505                    }
506                    callback(result);
507                } else {
508                    result.message = "Apple ID -kirjautuminen epäonnistui... Yritä myöhemmin uudelleen";
509                    callback(result);
510                }
511            },
512            function(error) {
513                result.message = "Apple ID -kirjautuminen epäonnistui... Yritä myöhemmin uudelleen";
514                callback(result);
515            }
516        );
517    }
518
519    function empty(e) {
520
521        if(e == null) return true;
522        if(typeof e === "undefined") return true;
523        if(Array.isArray(e) && !e.length) return true;
524        if(typeof(e) === "object" && Object.keys(e).length < 1) return true;
525
526        switch (e) {
527            case "":
528            case 0:
529            case "0":
530            case false:
531                return true;
532            default:
533                return false;
534        }
535    }
536
537    function coalesce(value, replacement) {
538        if(empty(value)) return replacement;
539        return value;
540    }
541
542})();

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.