// Cookie используются для авторизации на сайте,
// для запоминания количества отображаемых страниц в пейджере
// и выбранной темы.
function get_cookie( name ) {
    var cookies = document.cookie.split( ";" );
    for ( var line of cookies ) {
        var cookie = line.split( "=" );
        var key = decodeURIComponent( cookie[0].trim() );
        //   "0" == 0
        if ( key == name ) {
            return decodeURIComponent( cookie[1] );
        }
    }
    return "";
}

function set_cookie( name, value ) {
    // set_cookie( "x", "=2" );
    document.cookie = encodeURIComponent( name ) + "=" + encodeURIComponent( value ) + ";SameSite=Lax";
}

// По умолчанию устанавливает куки на год
function set_cookie_expires( name, value, expires = 31536000 ) {
    var date = ( new Date( Date.now() + expires * 1000 ) ).toUTCString();
    document.cookie = encodeURIComponent( name ) + "=" + encodeURIComponent( value ) + ";SameSite=Lax;expires=" + date;
}

// Чтобы удалить куки нужно установить отрицательную дату истечения срока действия
function del_cookie( name ) {
    document.cookie = encodeURIComponent( name ) + "=;SameSite=Lax;max-age=-1";
}

//#region select widget
// options используется если нужно повесить все обработчики или только на опции
// options = {
//     "mode": "init" | "options", // init - первый вызов, options - перепривязать слушатели
//     "value": data.t_tr, // Отображаемое
//     "option": data.t,   // Техническое
// }
function select_controls( widget, opt = {} ) {
    const selected = widget.querySelector( `.selected` );
    const value = selected.querySelector( `.value` );
    const options_el = widget.querySelector( `.options` );
    const options = options_el.querySelectorAll( `.option` );

    if ( opt.value ) selected.querySelector( ".value" ).innerText = opt.value;
    if ( opt.option ) selected.setAttribute( "data-value", opt.option );
    if ( opt.old_option ) selected.setAttribute( "data-old-value", opt.old_option );

    if ( opt.mode === "init" ) {
        // Клик по выпадающему списку выбора шаблона (в списке страниц)
        widget.addEventListener( "click", function( event ) {
            event.stopPropagation();
            widget.classList.toggle( "open" );
        } );
    }
    
    if ( opt.mode === "init" || opt.mode === "options" ) {
        options.forEach( function( option ) {
            option.addEventListener( "click", function( event ) {
                value.innerText = option.innerText;
                selected.setAttribute( "data-value", option.getAttribute( "value" ) );
            } );
        } );
    }

    if ( opt.click ) {
        options.querySelector( `[value="${value}"]` ).click();
    }
}
document.addEventListener( "DOMContentLoaded", function( event ) {
    // Закрытие выпадающих списков при кликах вне их, а так же по ним
    document.body.addEventListener( "click", function( e ) {
        document.querySelectorAll( ".select.widget" ).forEach( function( list ) {
            list.classList.remove( "open" );
        } );
    } );
} );
//#endregion select widget

document.addEventListener( "DOMContentLoaded", function( event ) {
    // Тема
    document.querySelectorAll( "body > header .menu .theme" ).forEach( function( el ) {
        el.addEventListener( "click", function( event ) {
            event.preventDefault();
            var n = get_cookie( "theme" ) || 0;
            var styles2 = admin_styles[n];
            var styles = styles2.split( " " );
            styles.forEach( function( style ) {
                document.documentElement.classList.remove( style );
            } );
            n = (+n+1) % admin_styles.length;
            styles2 = admin_styles[n];
            styles = styles2.split( " " );
            styles.forEach( function( style ) {
                document.documentElement.classList.add( style );
            } );
            // При входе нет этой функции
            const notify_fn = typeof notify_answer;
            if ( notify_fn !== "undefined" ) {
                notify_answer( {
                    "result": {
                        "notify_html": admin_styles[n]
                    }
                } );
            }
            set_cookie_expires( "theme" , n );
            theme_event = new Event( "theme" );
            document.dispatchEvent( theme_event );
        } );
    } );

    // Отображение пароля
    document.querySelectorAll( ".password.widget .button" ).forEach( function( eye ) {
        eye.addEventListener( "click", function( e ) {
            this.classList.toggle( "showed" );
            const input = this.previousElementSibling;
            if ( input.getAttribute( "type" ) == "password" ) {
                input.setAttribute( "type", "text" );
            } else {
                input.setAttribute( "type", "password" );
            }
            input.focus();
            input.setSelectionRange(input.value.length, input.value.length); // Курсор в конец
        } );
    } );
} );