Showing source for: https://static.twizzit.com/v2/login
Duration: 0.213396s

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">

        <title>Twizzit</title>
        
<link rel="stylesheet" href="/v2/css/bootstrap-twizzit.css">

<link rel="stylesheet" href="/v2/css/ekko-lightbox.css">
<link rel="stylesheet" href="/v2/css/fontawesome/css/all.min.css?20220321">
<link rel="stylesheet" href="/v2/css/customScrollbar/customScrollbar.min.css">
<link rel="stylesheet" href="/v2/css/select2/select2.min.css">
<link rel="stylesheet" href="/v2/css/select2/select2-bootstrap4.css?20230126">
<link rel="stylesheet" type="text/css" href="/v2/css/slick/slick.min.css">
<link rel="stylesheet" href="/v2/css/swiper.min.css">

<script src="/v2/js/jquery-3.3.1.min.js" ></script>

<link rel="stylesheet" href="/v2/css/flatpickr.min.css">
<style>
    .debug {
        border: 3px solid magenta;
    }
    .flatpickr-calendar .flatpickr-clear, .flatpickr-calendar .flatpickr-today  {
        padding: .5rem;
        background-color: #f3f3f3 ;
        cursor: pointer;
    }
    .flatpickr-calendar .flatpickr-clear:hover, .flatpickr-calendar .flatpickr-today:hover {
        padding: .5rem;
        background-color: #e2e2e2 ;
        cursor: pointer;
    }

    @supports (-webkit-touch-callout: none) {
        /* only ios */
        @media (min-height: 750px) {
            .tw-module-header-primary, .tw-element-header-primary {
                padding-top: 30px!important;
            }
        }
    }
</style>

<link rel="stylesheet" href="/v2/css/twizzit-theme.css?20231102">
<link rel="stylesheet" href="/v2/css/sortable-theme-bootstrap.css?2911">

<script async src="https://www.googletagmanager.com/gtag/js?id=G-PPXQSXJP9Q"></script>
<script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', 'G-PPXQSXJP9Q');
</script>

        <style>
            #main-wrapper{
                overflow:auto;
            }
            .club-result-wrapper{
                overflow:auto;
            }
            #login-wrapper, #recover-user-results-wrapper{
                height:690px;
            }
            .club-image-wrapper {
                position: relative;
                margin: 1rem auto;
                width: 8rem;
                height: 8rem;
            }

            .list-button {
                background-color: rgba(233, 239, 240, 0.5);
                margin-bottom: .5rem;
                border-radius: 6px;
                text-align: left;
                font-weight: bold;
                text-decoration: none;
                color: #022e3e;
                cursor: pointer;
            }

            .list-button:hover {
                background-color: rgba(233, 239, 240, 0.65);
            }

            .image-wrapper {
                position: relative;
                width: 100px;
                height: 100px;
                margin-left:auto;
                margin-right:auto;
            }

            .club-image-wrapper {
                position: relative;
                margin: 1rem auto;
                width: 8rem;
                height: 8rem;
            }
            .login-header{
                margin-top:0px;
                margin-bottom: 30px;
            }
/*
            .twizzit-logo-header {
                background-image: url('/v2/images/twizzit/logo-new-landscape.png');
                background-position: center;
                background-repeat: no-repeat;
                background-size: contain;
                height: 200px;
            }

            .twizzit-logo-header-mobile {
                background-image: url('/v2/images/twizzit/logo-new.png');
            }
*/

            .twizzit-logo-swirl {
                background-image: url('/v2/images/twizzit/logo_swirl_xs.png');
                background-repeat:no-repeat;
                background-size:contain;
                background-position: center center;
                height:100px;
            }
            .twizzit-logo-text {
                background-image: url('/v2/images/twizzit/logo_text_dark_sm.png');
                background-repeat:no-repeat;
                background-size:contain;
                background-position: top center;
                height:40px;
                margin-top:10px;
            }
            .user-greeting{
                margin-top:10px;
            }
            .user-image {
                background-image: url('');
                background-size: cover;
                background-position: center;
                border-radius: 50%;
                width: 100px;
                height: 100px;
                box-shadow: 0px 2px 10px rgba(0,0,0,0.2);
            }

            .club-image {
                position: absolute;
                right: -0.2rem;
                bottom: -0.2rem;
                background-size: cover;
                background-repeat: no-repeat;
                background-position: center;
                border-radius: 50%;
                width: 2rem;
                height: 2rem;
            }

/*            .image-small {
                width: 24px;
                height: 24px;
                border-radius: 50%;
                border: 1px solid #b8b4c0;
                background-position: center;
                background-size: cover;
                background-repeat: no-repeat;
                display: inline-block;
            }*/
/*
            #clear-fields {
                position: absolute;
                top: 1rem;
                left: 2rem;
            }
*/

            .login-footer{
                /*min-height: 60px;*/
            }
            @media (max-width: 992px) {
                #login-wrapper, #recover-user-results-wrapper {
                    height: auto;
                }

            }
            @media (max-width: 768px) {
                .login-header{
                    margin-bottom: 0px;
                }

                #login-wrapper, #recover-user-results-wrapper{
                    height:auto;
                }
                .h-mobile-100 {
                    height: 100%;
                }

                .club-result-wrapper{
                    height:auto;
                    overflow:visible;
                }
            }
        </style>
            <style>
            </style>
        <link rel="icon" type="image/x-icon" href="/v2/favicon.ico" />
    </head>
    <body role="document" class="default ">
        <div class="wrapper base" >
            <div id="main-wrapper" class="pt-0 h-100">
                <div class="module-container h-100">
                    <div class="container h-100" >
    <div class="row justify-content-center align-items-center  h-100">
        <div class="col-12 col-md-8 col-lg-6 h-mobile-100 d-flex flex-column justify-content-start justify-content-md-center">
            <div id="login-wrapper" class="basic-container-md-up d-flex flex-column justify-content-start ">
                <div class="row">
                    <div class="col-12" style="height:50px;">
                        <div id="clear-fields" class="d-none float:left;" >
                            <button class="btn btn-lg btn-outline btn-circle"  onclick="clearFields();"><i class="fal fa-arrow-left"></i></button>
                        </div>
                    </div>
                </div>
                <div class="row no-gutters login-header">
                    <div class="col-12 ">
                        <div class="twizzit-logo-swirl"></div>
                        <div class="image-wrapper " style="display:none;">
                            <div class="user-image"></div>
                            <div class="club-image"></div>
                        </div>
                    </div>
                    <div class="col-12 ">
                        <div class="twizzit-logo-text text-center"></div>
                        <div class="user-greeting text-center h-100" style="display:none;">
                            <div class="h-100 d-flex justify-content-center align-items-center">
                                <div >
                                    <div id="welcome-club">Welcome to <span></span></div>
                                    <h4 id="welcome-slogan" class="mb-0"><span></span></h4>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="row login-body">
                    <div class="col-10 offset-1">
                        <form accept-charset="UTF-8" role="form" action="/v2/login" method="post">
                            <input type="hidden" name="mobileDeviceType" value="">
                            <input type="hidden" name="mobileDeviceId" value="">
                            <input type="hidden" name="token" value="d979ef869334136224c64be43104cdff38a0876b14deffc920430784f5052ecc">
                            <fieldset id="login-field-set">
                                <div class="form-group mt-4 mt-lg-0">
                                    <div class="input-group">
                                        <div class="input-group ">
                                            <div class="input-group-prepend">
                                                <span class="input-group-text"><i class="fas fa-user"></i></span>
                                            </div>
                                            <input type="text" class="form-control" placeholder="Username" name="username" aria-describedby="sizing-addon1" autofocus>
                                        </div>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <div class="input-group">
                                        <div class="input-group ">
                                            <div class="input-group-prepend">
                                                <span class="input-group-text"><i class="fas fa-lock"></i></span>
                                            </div>
                                            <input type="password" class="form-control" placeholder="Password" name="password" autocomplete="current-password" aria-describedby="sizing-addon1" autofocus>
                                        </div>
                                    </div>
                                </div>
                                <div class="form-group d-none" id="auth-code">
                                    <input type="text" name="authCode" id="inputAuthCode" class="form-control" placeholder="Auth code" autocomplete="false">
                                </div>
                                                                                                                                <button class="btn btn-lg btn-primary btn-block btn-feedback" type="submit" >Login</button>
                                <div class="text-center px-3 pt-2 text-muted" >By signing in, I agree to the Twizzit's <a target='_blank' href='https://twizzit.com/v2/knowledgebase/conditions-generales/privacy-policy/privacy-policy'>Privacy policy</a> and <a target='_blank' href='https://twizzit.com/v2/knowledgebase/conditions-generales/conditions-utilisation/conditions-utilisation'>Terms of Use</a>.</div>
                            </fieldset>
                        </form>
                    </div>
                </div>
                <div class="row login-footer flex-shrink-0 flex-grow-1">
                    <div class="col-10 offset-1">
                        <div id="unknown-user-fields">
                            <div class="my-2 my-lg-4 text-center">
                                <a href="/v2/register" class="font-weight-bold btn-feedback" >Forgot username or password?</a>
                            </div>
                            <div class="mt-2 text-center text-muted">
                                <span>Don't have a username?</span>
                            </div>
                            <div class="text-center">
                                <a href="/v2/register" class="font-weight-bold btn-feedback" >Register here</a>
                            </div>
                        </div>
                        <div id="known-user-fields" class="d-none">
                            <div class="text-center mt-4">
                                <a href="#" id="forgot-password-link" class="font-weight-bold btn-feedback" >Forgot password?</a>
                            </div>
                        </div>
                    </div>
                </div>
                            </div>
        </div>
    </div>
</div>

<script type="text/javascript">
        $(document).ready(function() {
        let browserLanguages = getBrowserLanguage();
        if (browserLanguages.length > 0) {
            let firstLanguage = browserLanguages[0].slice(0, 2);

            console.log(firstLanguage);

            if (['nl', 'fr'].includes(firstLanguage) && firstLanguage !== 'en') {
                window.location = '?locale=' + firstLanguage;
            }
        }
    });

    function getBrowserLanguage() {
        let browserLanguages = [];

        if (navigator.languages) {
            browserLanguages = navigator.languages;
        }

        if (0 === browserLanguages.length && (navigator.language || navigator.userLanguage)) {
            browserLanguages.push(navigator.language || navigator.userLanguage);
        }

        if (0 === browserLanguages.length && (navigator.browserLanguage || navigator.systemLanguage)) {
            browserLanguages.push(navigator.browserLanguage || navigator.systemLanguage);
        }

        return browserLanguages.join('|').toLowerCase().split('|');
    }


    $('form input[name="username"]').blur(function(event){
        if (! $(this).val().length) {
            return;
        }

        if(event.relatedTarget && event.relatedTarget.type == "submit"){
            return false;
        }

        $.ajax({
            url: '/v2/ajax/login/info',
            method: 'POST',
            data: {
                username: $(this).val(),
                            },
            success: function (response) {
                if (response.hasOwnProperty('forgotPasswordLink')) {
                    $('#forgot-password-link').attr('href', response.forgotPasswordLink);
                }

                if (response.hasOwnProperty('auth') && response.auth === 1) {
                    $('#auth-code').removeClass('d-none');
                } else {
                    $('#auth-code').addClass('d-none');
                }
            },
            error: function () {
                fbs.pushError("Failed to save data");
            }
        });
    });

    function showFields() {
        $('.twizzit-logo-swirl').hide();
        $('.twizzit-logo-text').hide();
        $('.image-wrapper').fadeIn(500);
        $('.user-greeting').show();

        $('.image-wrapper').fadeIn();
        $('.user-greeting').fadeIn();

        $('#unknown-user-fields').addClass('d-none');
        $('#known-user-fields').removeClass('d-none');
        $('#clear-fields').removeClass('d-none');
    }

    function hideFields() {
        $('.twizzit-logo-swirl').show();
        $('.twizzit-logo-text').show();

        $('.image-wrapper').hide();
        $('.user-greeting').hide();

        $('#known-user-fields').addClass('d-none');
        $('#unknown-user-fields').removeClass('d-none');
        $('#clear-fields').addClass('d-none');
    }

    function clearFields() {
        $('[name="username"], [name="password"]').val('');
        hideFields();
    }
</script>
                </div>
                <div id="main-modal-container" style="display:none;"></div>
            </div>
            <style>
    .splash-loader {
        display: none;
        z-index: 9999;
    }

    @media(max-width: 992px) {
        .splash-loader {
            background: rgba(21, 53, 68, 0.1);
        }

        .splash-loader .tw-full-screen-lg-down {
            background: transparent;
        }

        .splash-loader.visible {
            display: block;
            position: fixed;
            top: 0px;
            bottom: 0px;
            left: 0px;
            width: 100%;
            z-index: 99999;
            background: #f9f9f9;
        }

        .splash-loader .tw-spinner-lg {
            position: absolute;
            top: 40%;
            left: 0;
            right: 0;
            margin-left: auto;
            margin-right: auto;
        }

        .gray-splash {
            background-color:#f4f7f7;
        }
        body.expanded .splash-loader .tw-element-body .fa-circle-notch{
            color:white;
        }
    }
</style>

<div class="splash-loader tw-full-screen-lg-down d-lg-none">
        <div class="d-flex flex-column h-100">
            <div class="tw-element-header-primary d-flex flex-column justify-content-center align-items-stretch">
                <div class="row no-gutter">
                    <div class="col-3"></div>
                    <div class="col-6 d-flex flex-column align-items-center"></div>
                    <div class="col-3"></div>
                </div>
            </div>
            <div class="tw-element-body d-flex justify-content-center h-100 align-items-center">
                <i class="fal fa-circle-notch fa-spin fa-4x"></i>
            </div>
        </div>
</div>

<script type="text/javascript">
    $(document).on('click', '.btn-feedback', function () {
        showLoader();
    });

    function showLoader() {
        $('.splash-loader').addClass('show');

        setTimeout(function() {
            $('.splash-loader').removeClass('show');
        }, 7000);
    }
    function hideLoader() {
        $('.splash-loader').removeClass('show');
    }
</script>

            <div id="activity-details-modal"></div>

<script type="text/javascript" src="/v2/js/bootstrap.bundle.min.js"></script>
<script type="text/javascript" src="/v2/js/ekko-lightbox.js" defer></script>
<script type="text/javascript" src="/v2/js/table-sortable.js"></script>

<script async type="text/javascript">$.fn.modal.Constructor.prototype._enforceFocus = function() {};</script>

<script type="text/javascript" src="/v2/js/feedbackStack.js?20230303" defer></script>
<script type="text/javascript" src="/v2/js/jquery.mCustomScrollbar.min.js"></script>
<script type="text/javascript" src="/v2/js/jquery.inputmask.bundle.min.js"></script>
<script type="text/javascript" src="/v2/js/flatpickr.js"></script>
<script type="text/javascript" src="/v2/js/bs-custom-file-input.min.js"></script>
<script type="text/javascript" src="/v2/js/isMobile.min.js"></script>
<script type="text/javascript" src="/v2/js/formEmpty.js"></script>
<script type="text/javascript" src="/v2/js/historyManager.js?1"></script>
<script type="text/javascript" src="/v2/js/Datepicker.js?20240305"></script>
<script type="text/javascript" src="/v2/js/utils.js?45148424"></script>

<script type="text/javascript" src="/v2/js/select2_modified.js?1711"></script>
<script> $.fn.select2.defaults.set("theme", "bootstrap4"); </script>

<script type="text/javascript" src="/v2/js/twizzit.js"></script>

<script type="text/javascript" src="//cdn.jsdelivr.net/npm/[email protected]/slick/slick.min.js"></script>

<script type="text/javascript" src="/v2/js/polyfills/object_assign.js"></script>
<script type="text/javascript" src="/v2/js/polyfills/custom_event.js"></script>
<script type="text/javascript" src="/v2/js/classes/ConfigurableObject.js?2"></script>
<script type="text/javascript" src="/v2/js/classes/Modal.js?5"></script>
<script type="text/javascript" src="/v2/js/classes/SidePanel.js?4"></script>
<script type="text/javascript" src="/v2/js/classes/ModalCollection.js?2"></script>
<script type="text/javascript" src="/v2/js/classes/SidePanelCollection.js?2"></script>
<script type="text/javascript" src="/v2/js/classes/Loqate.js"></script>

<script type="text/javascript">
    var spinner = '<div style="text-align: center;"><i class="fal fa-circle-notch fa-2x fa-spin m-2"></i></div>';
    var spinnerLarge = '<div style="text-align: center;"><i class="fal fa-circle-notch fa-4x fa-spin m-4"></i></div>';

    function isMobileBreakpoint() {
        return window.matchMedia("(max-width: 992px)").matches;
    }

    /**
     * Use this instance to create a modal.
     * Example:
     *      modalCollection.create('link-to-resource-modal', { title: "Link resource" });
     */
    const modalCollection = new ModalCollection();
    const sidePanelCollection = new SidePanelCollection();

    function showModalPlaceholder(selector, classes) {
        const modalPlaceholder = '<div id="modal-placeholder" class="modal fade"><div class="modal-dialog ' + (classes ? classes : '') + '" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="btn tw-btn-noborder d-block d-lg-none float-left tw-full-screen-modal-back" data-dismiss="modal" aria-hidden="true"><i class="fal fa-long-arrow-left" aria-hidden="true"></i> </button><h5 class="modal-title"></h5><button type="button" class="close d-none d-lg-block" data-dismiss="modal" aria-hidden="true">&times;</button></div></div></div></div>';
        $(selector).html(modalPlaceholder);
        $('#modal-placeholder').modal('show');
    }

    function hideModalPlaceholder() {
        $('#modal-placeholder').remove();
        $('.modal-backdrop').remove();
    }

    var flatpickrInstances = [];
    var flatpickrLocale = 'en';
    var flatpickrTranslations = {
        clear: "Clear",
        today: "Today"
    };

    window.regex = {
        decimal: /^[0-9.]+$/,
        email: /^[a-zA-Z0-9.!#$%&'*+\:?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
        date: /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,
        ISODate: /^(\d{4})\-(\d{1,2})\-(\d{1,2})$/,
        votas: /[a-zA-Z0-9]{8}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{12}/,
        url: /^[(http(s)?):\/\/(www\.)?a-zA-Z0-9\-@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/=]*)/,
    }

    document.addEventListener('scroll', function(event) {
        if (!event.target.className) {
            return;
        }

        const isScrolling = $(event.target).scrollTop() > 0;

        switch (true) {
            case $(event.target).hasClass('tw-element-body'):
                $(event.target).prevAll('.tw-element-header-primary').toggleClass('scrolling', isScrolling);
                $(event.target).prevAll('.tw-element-header-secondary').toggleClass('scrolling', isScrolling);
                $(event.target).prevAll('.tw-element-header-data-list').toggleClass('scrolling', isScrolling);
                break;
            case $(event.target).hasClass('tw-module-body'):
                $(event.target).prevAll('.tw-module-header-primary').toggleClass('scrolling', isScrolling);
                $(event.target).prevAll('.tw-module-header-secondary').toggleClass('scrolling', isScrolling);
                $(event.target).prevAll('.tw-module-header-data-list').toggleClass('scrolling', isScrolling);
                break;
            case $(event.target).hasClass('tw-module-body-page'):
                {
                    const body = $(event.target).parents('.tw-module-body');
                    $(body).prevAll('.tw-module-header-primary').toggleClass('scrolling', isScrolling);
                    $(body).prevAll('.tw-module-header-secondary').toggleClass('scrolling', isScrolling);
                    $(body).prevAll('.tw-module-header-data-list').toggleClass('scrolling', isScrolling);
                }
                break;
            case $(event.target).hasClass('tw-element-body-page'):
                {
                    const body = $(event.target).parents('.tw-element-body');
                    $(body).prevAll('.tw-element-header-primary').toggleClass('scrolling', isScrolling);
                    $(body).prevAll('.tw-element-header-secondary').toggleClass('scrolling', isScrolling);
                    $(body).prevAll('.tw-element-header-data-list').toggleClass('scrolling', isScrolling);
                }
                break;
        }
    }, true);

    $(document).ready(function () {

        $(document).on('click', '.tw-btn-options', function () {
            $(this).toggleClass('open');
        });

        if (!isMobile.any) {
            $('.custom-scroll-bar, .custom-scroll-bar-dark').mCustomScrollbar({
                theme: 'minimal',
                scrollInertia: 100
            });
        }

        $(document).on('click', '.js-fullscreen-image[data-url]', function showFullscreenProfileImage(event) {
            event.preventDefault();
            event.stopPropagation();
            const imagePath = $(this).data('url');
            $('body').append('<div id="js-fullscreen-image-container" tabindex="0"><img src="' + imagePath + '" alt="Image not found"></div>');
            $('#js-fullscreen-image-container')
                .off()
                .click(function removeFullscreenProfileImage(event) {
                    if (event.target.tagName !== 'IMG') {
                        $(this).remove();
                    }
                })
                .keyup(function removeFullscreenProfileImageByEsc(event) {
                    event.preventDefault();
                    event.stopPropagation();
                    if (('undefined' !== typeof event.key && 'Escape' === event.key) || (27 === event.which)) {
                        $(this).remove();
                    }
                })
                .focus();
            historyManager.setBackAction({ action: 'removeFullscreenImage' }, true);
        });
    });

    $(document).on('show.bs.modal', '.modal-stacked', function(e) {
        var parentModal = $('.modal-stacked.show:visible');
        if (parentModal.length || ($(e.target).parents('#results-container').length && 'create-template-document-modal' !== $(e.target).attr('id'))) {
            if (!$(e.target).hasClass('modal-stacked') || $(e.target).hasClass('modal-master')) {
                return false;
            }
            var identifier = Math.floor(Math.random() * 10000) + 1;
            var newModal = e.target;
            $(parentModal).attr('data-modal-identifier', identifier);
            $(e.target).attr('data-parent-modal', identifier);

            $(newModal).before('<div data-modal-placeholder="' + identifier + '"></div>');
            $(newModal).detach().appendTo($('#main-modal-container'));
            $('#main-modal-container').show();

            $(parentModal).modal('hide');
        }
    });

    $(document).on('hidden.bs.modal', '.modal-stacked', function(e) {
        if ($('[data-modal-placeholder="' + $(e.target).attr('data-parent-modal') + '"]').length) {
            $(e.target).detach();
            $('[data-modal-placeholder="' + $(e.target).attr('data-parent-modal') + '"]').replaceWith($(e.target));
            $('[data-modal-identifier="' + $(e.target).attr('data-parent-modal') + '"]').modal('show');
        }
    });

    
    /*
     * Compare arrays (recursively), loose comparison for values (['1', '3'] == [1, 3])
     * To check if array contains equal elements: call .sort() on both arrays
     */
    Array.prototype.compare = function (array) {
        if (!array) {
            return false;
        }
        if (this.length !== array.length) {
            return false;
        }
        for (var i = 0; i < this.length; i++) {
            if (this[i] instanceof Array && array[i] instanceof Array) {
                if (!this[i].compare(array[i])) {
                    return false;
                }
            } else if (this[i] != array[i]) {
                return false;
            }
        }
        return true;
    };

    /**
     * Alternative method to serialize a form with disabled inputs
     */
    $.fn.serializeIncludeDisabled = function () {
        let disabled = this.find(":input:disabled").prop("disabled", false);
        let serialized = this.serialize();
        disabled.prop("disabled", true);
        return serialized;
    };

    $.fn.serializeArrayIncludeDisabled = function () {
        let disabled = this.find(":input:disabled").prop("disabled", false);
        let serialized = this.serializeArray();
        disabled.prop("disabled", true);
        $('input[type="checkbox"]:not(:checked), input[type="radio"]:not(:checked)', this).each(function() {
            serialized.push({name: $(this).attr('name'), value: "0"});
        });
        return serialized;
    };

    $.fn.serializeArrayIncludeCheckboxes = function () {
        let result = $(this).serializeArray();
        $('input[type="checkbox"]:not(:checked)', this).each(function() {
            result.push({name: $(this).attr('name'), value: "0"});
        });
        return result;
    };

    function shareDialog(title, message, url) {
        if (typeof window.ReactNativeWebView != 'undefined') {
            window.ReactNativeWebView.postMessage(JSON.stringify({
                type: 'share',
                title: title,
                message: message,
                url: url
            }));
        }
    }

    function toCurrency(number) {
        const { format } = new Intl.NumberFormat('nl-BE', {
            style: 'decimal',
            //currency: 'EUR',
            minimumFractionDigits: 2
        });

        return format(number).replace('.', ' ');
    }

    function formToArray(form) {
        return form.serializeArray().reduce(function(a, x) {
            let value = x.value;
            if ('checkbox' === $(`[name="${x.name}"]`)[0].type) {
                value = 'on' === x.value ? 1 : x.value;
            }
            if (x.name.indexOf('[]') !== -1) {
                if (typeof a[x.name.replace('[]', '')] === 'undefined') {
                    a[x.name.replace('[]', '')] = [];
                }

                a[x.name.replace('[]', '')].push(value);
            } else {
                a[x.name] = value;
            }

            return a;
        }, {});
    }

    function deepMergeObjects(object1, object2) {
        /*console.log('merge:' );
        console.log(object1);
        console.log(object2);*/
        if ('undefined' === typeof object1) {
            return object2;
        }
        if ('undefined' === typeof object2) {
            return object1;
        }

        const merged = {
            ...object1,
            ...object2
        };

        for (const key of Object.keys(merged)) {
            if (typeof merged[key] === 'object' && merged[key] !== null) {
                if (Array.isArray(object1[key]) && Array.isArray(object2[key])) {
                    merged[key] = [...object1[key], ...object2[key]];
                } else {
                    merged[key] = deepMergeObjects(object1[key], object2[key]);
                }
            }
        }

        return merged;
    }
</script>

<script type="text/javascript">
    function showDesktopNotification(title, body, profileUrl, url)
    {
        var notification = new Notification(title, {body: body, icon: profileUrl, tag: url});
        notification.onclick = function (x) {
            window.open(url);
            x.target.cancel();
        };
    }

    function desktopNotification(title, body, profileUrl, url)
    {
        if (!("Notification" in window)) {
            console.log("This browser does not support desktop notification");
        } else if (Notification.permission === "granted") {
            showDesktopNotification(title, body, profileUrl, url);
        } else if (Notification.permission !== 'denied') {
            Notification.requestPermission(function (permission) {
                if (permission === "granted") {
                    showDesktopNotification(title, body, profileUrl, url);
                }
            });
        }
    }

    function retrieveDesktopNotifications() {
        if (!("Notification" in window) || (typeof isMobile !== 'undefined' && isMobile.any)) {
            // console.log("This browser does not support desktop notifications");
        } else if (Notification.permission === "granted") {
            if ((typeof document.hidden === "undefined" || false === document.hidden)) {
                window.setTimeout(retrieveDesktopNotifications, 55000);
                return;
            }

            $.ajax({
                url: "/v2/ajax/notification/desktop",
                type: "POST",
                format: "json",
                success: function (data) {
                    $(data).each(function () {
                        desktopNotification(this.title, this.body, this.image, this.url);
                    });
                    if ((performance.now() / 1000) < 1800) {
                        window.setTimeout(retrieveDesktopNotifications, 55000);
                    }
                }
            });
        } else if (Notification.permission !== 'denied') {
            Notification.requestPermission(function (permission) {
                    if (permission === "granted") {
                        window.setTimeout(retrieveDesktopNotifications, 55000);
                    }
                }
            );
        }
    }

    $(document).ready(function () {
        window.setTimeout(retrieveDesktopNotifications, 55000);
    });
</script>


<script type="text/javascript" src="/v2/js/init-flatpickr.js?45148424"></script>


            
        </div>
    </body>
</html>

Latest requests

# Url Url Source Date
1 https://static.twizzit.com/v2/login 2024-06-03 02:08:52
2 https://thebolditalic.com/?gi=206c… 2024-06-03 02:08:52
3 https://thebolditalic.com/?gi=aa78… 2024-06-03 02:08:50
4 https://filedn.eu/lXvDNJGJo3S0aUrN… 2024-06-03 02:08:50
5 https://thebolditalic.com/?gi=0765… 2024-06-03 02:08:50
6 https://thebolditalic.com/?gi=1d63… 2024-06-03 02:08:49
7 https://thebolditalic.com/?gi=c486… 2024-06-03 02:08:48
8 https://thebolditalic.com/?gi=231e… 2024-06-03 02:08:47
9 https://thebolditalic.com/?gi=e30b… 2024-06-03 02:08:46
10 https://thebolditalic.com/?gi=ee77… 2024-06-03 02:08:45
11 https://thebolditalic.com/?gi=6a3a… 2024-06-03 02:08:45
12 https://thebolditalic.com/?gi=f2d5… 2024-06-03 02:08:44
13 https://thebolditalic.com/?gi=32e8… 2024-06-03 02:08:44
14 https://thebolditalic.com/?gi=19f2… 2024-06-03 02:08:43
15 https://thebolditalic.com/?gi=01c7… 2024-06-03 02:08:42
16 https://thebolditalic.com/?gi=ad85… 2024-06-03 02:08:41
17 https://thebolditalic.com/?gi=1bbf… 2024-06-03 02:08:41
18 https://thebolditalic.com/?gi=5c60… 2024-06-03 02:08:40
19 https://thebolditalic.com/?gi=8f8d… 2024-06-03 02:08:39
20 https://thebolditalic.com/?gi=51f8… 2024-06-03 02:08:38