// Фиксируем навигацию и массовые действия в списках
// ----------------------------------------//
function fixedBottom() {
    $('.js-list-footer').innerWidth($('.js-list-footer-fixed').innerWidth()).addClass('is-fixed');
    $('.js-list-footer-fixed').addClass('is-fixed')
}

// Прелоудер
// ----------------------------------------//
function preloader(status) {
    if (status == true) {
        $('body').addClass('fullscreen-enable');
        $('body').addClass('preloader-show');
    } else {
        $('body').removeClass('fullscreen-enable');
        $('body').removeClass('preloader-show');
    };
}

// Оповещения
// ----------------------------------------//
function notify(message, status, position, duration){
    if(!duration) duration = 300;
    if(!position) position = 'top-right';
    if(!status) status = 'success';
    NioApp.Toast(message, status, {
        position: position,
        showDuration: duration
    });
}

// Переход по значению select в списках
// ----------------------------------------//
function SelectGoValue(that) {
    var pick = that.options[that.selectedIndex].value;
    location.href = pick;
}

// Автоматическое формирование meta тегов
// ----------------------------------------//
function generate_url(){
    url = $('input[name="name"]').val();
    url = url.replace(/[\s]+/gi, '-');
    url = translit(url);
    url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
    return url;
}

function translit(str){
    var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
    var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
    var res = '';
    for(var i=0, l=str.length; i<l; i++)
    {
        var s = str.charAt(i), n = ru.indexOf(s);
        if(n >= 0) { res += en[n]; }
        else { res += s; }
    }
    return res;
}

$(document).ready(function(){

	// --------------------------------------------------------------------------------------------//
	// ---------------------------------      Общие скрипты          ------------------------------//
	// --------------------------------------------------------------------------------------------//

    // Заглушки изображений
    var no_image_70 = '/files/no-image.png';

    // Color picker
    // ----------------------------------------//
    $('.color-picker').colorpicker({
        format: "hex"
    });

    // Date picker
    // ----------------------------------------//
    $('.date-picker-lang').datepicker({
        language: "ru",
        todayHighlight: true,
        format: "dd.mm.yyyy",
        autoclose: true
    });

    // Фильтрация через select
    // ----------------------------------------//
    $(document).on('change', '.js-filter-select', function() {
        SelectGoValue(this);
    });

    // Фиксируем навигацию и массовые действия в списках
    // ----------------------------------------//
    if((document.body.offsetHeight - window.innerHeight) > 30) {
        fixedBottom();

        $(document).resize(function () {
            fixedBottom();
        })
    }

    // Выделить все элементы в списке
    // ----------------------------------------//
    $(document).on('click', '.js-check-all', function(event) {
        if(this.checked) {
            $(this).closest(".js-list-form").find('input[type="checkbox"]').not("[disabled]").each(function() {
                this.checked = true;
                $(this).closest('.js-list-item').addClass('seleted');
            });
        } else {
            $(this).closest(".js-list-form").find('input[type="checkbox"]').not("[disabled]").each(function() {
                this.checked = false;
                $(this).closest('.js-list-item').removeClass('seleted');
            });
        }
    });

    // Выделить элемент в списке при активном чекбоксе
    // ----------------------------------------//
    $(document).on('change', '.custom-control-input', function() {
        var item = $(this).closest('.js-list-item');
        if(this.checked) {
            item.addClass('seleted');
        } else {
            item.removeClass('seleted');
        };
    });

    // Удаление в списке
    // ----------------------------------------//
    $(document).on('click', '.js-list-delete', function(e) {
        e.preventDefault();
        $('.js-list input[type="checkbox"][name*="check"]').attr('checked', false);
        $(this).closest(".js-list-item").find('input[type="checkbox"][name*="check"]').attr('checked', true);
        $(this).closest(".js-list-form").find('select[name="action"] option[value=delete]').attr('selected', true);
        $('.js-list-form').submit();
        return false;
    });

    // Подтверждение удаления в списке
    $(document).on('submit', '.js-list-form', function() {
        if($('select[name="action"]').val()=='delete' && !confirm("Подтвердите удаление"))
            return false;
    });

    // Очистка поиска в списке
    // ----------------------------------------//
    $(document).on('click', '.js-list-search-reset', function(ev) {
        ev.preventDefault();
        $('.js-list-search').find('input[type=text]').attr('value', '');
        $('.js-list-search').submit();
    });

    // Метки в списке
    // ----------------------------------------//
    $(document).on('click', '.js-list-mark', function(ev){
        ev.preventDefault();

        var btn = $(this);
        // Блок item
        var item = $(this).closest(".js-list-item");
        // Обьект
        var object = $(this).data('mark-object');
        // Тим метки
        var type = $(this).data('mark-type');
        // Класс
        var toogle = $(this).data('mark-toogle-class');

        // ID
        if ($(this).hasClass('js-list-mark-currency')) {
            var id = item.find('input[name*="currency[id]"]').val();
        } else {
            var id = item.find('input[type="checkbox"][name*="check"]').val();
        };

        // Type of state
        if ($(this).hasClass('js-list-mark-state-first')) {
            var state = item.hasClass(toogle)?0:1;
            var state_type = '1';
        }else if ($(this).hasClass('js-list-mark-state-second')) {
            var state = item.hasClass(toogle)?0:2;
            var state_type = '1';
        }else{
            var state = item.hasClass(toogle)?1:0;
            var state_type = '2';
        };

        // Group
        if ($(this).data('mark-group')) {
            var group = $(this).data('mark-group');
        };

        MarkData = {};
        MarkData['object'] = object;
        MarkData['id'] = id;
        MarkData['values'] = {};
        MarkData['values'][type] = state;
        $.ajax({
            type: "POST",
            url: "/admin/ajax/update_object.php",
            data: MarkData,
            success: function(data){
                notify("Параметры элемента успешно сохранены.");
                if (state_type == '1') {
                    if(!state){
                        item.removeClass(toogle);
                    }else{
                        item.addClass(toogle);
                    };
                }else{
                    if(state){
                        item.removeClass(toogle);
                    }else{
                        item.addClass(toogle);
                    };
                };

                if (group == 'product-label') {
                    if(state){
                        btn.removeClass('btn-light');
                        btn.addClass('btn-primary');
                    }else{
                        btn.addClass('btn-light');
                        btn.removeClass('btn-primary');
                    };
                };
            },
            error: function() {
                notify("Произошла ошибка при изменении элемента.",'error');
            },
            dataType: 'json'
        });
        return false;
    });

    // Перетаскивание элементов в списке
    // ----------------------------------------//
    $(".js-list-sortable").sortable({
        items: ".js-list-item",
        tolerance: "pointer",
        handle: ".js-list-move",
        cancel: '',
        scrollSensitivity: 100,
        axis: 'y',
        forcePlaceholderSize: true,
        placeholder: "sortable-highlight",
        update: function (evt) {
            $(".js-list-form input[name*='check']").attr('checked', false);
            $(".js-list-form").ajaxSubmit({
                success: function() {
                    notify("Позиции элементов успешно сохранены.");
                },
                error: function() {
                    notify("Произошла ошибка при сохранении позиций элемента.",'error');
                }
            });
        },
    });



    // --------------------------------------------------------------------------------------------//
    // ----------------------------------   Список разделов      ---------------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($("body").hasClass('js-module-pages')) {
        function page_toggle(t){
            $(t).find('.icon').toggleClass('ti-chevron-up').toggleClass('ti-chevron-down');
			$(t).closest('.js-list-item').find('.js-list:first').slideToggle(600);
        }

        // Развернуть все разделы
		$(document).on('click', '.js-all-pages-toogle', function(ev){
            $(".js-pages-toogle").each(function() {
                page_toggle(this);
            });
		});

		// Развернуть и свернуть раздел
		$(document).on('click', '.js-pages-toogle', function(ev){
            page_toggle(this);
		});

    };

    // --------------------------------------------------------------------------------------------//
    // ------------------------------   Редактирование раздела      -----------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($("body").hasClass('js-module-page')) {
        // Удаление переменной
        $(document).on('click', '.js-param-delete', function(){
            $(this).tooltip('hide');
            $(this).closest(".js-param-item").fadeOut(200, function() {
                $(this).remove();
            });
        });
    }


    // --------------------------------------------------------------------------------------------//
    // ------------------------------   Редактирование баннеров      ------------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($("body").hasClass('js-module-banners')) {

        // Перетаскивание баннеров
        $('.js-banners-sortable').sortable({
            items: ".js-list-item",
            tolerance: "pointer",
            handle: ".js-list-move",
            cancel: '',
            axis: "x,y",
            scrollSensitivity: 100,
            forcePlaceholderSize: true,
            placeholder: "sortable-highlight",
            update: function(evt){
                //сохраняем сортировку на js т.к. у каждого баннера своя форма, а не единая в отличие от товаров
                var arr = [];
                $(this).find('.js-list-item').each(function(key, obj){
                    id = $(obj).data('id');
                    position = $(obj).data('position');
                    arr.push([id, position]);
                });
                $.post({
                    url: '/admin/?module=BannersAdmin',
                    data: {'positions': arr},
                    success: function(data){
                        notify('Позиции элементов успешно сохранены.');
                    },
                    error: function(data){
                        notify('Произошла ошибка при сохранении позиций элементов.', 'error');
                    }
                });
    		}
        });
    };

    // --------------------------------------------------------------------------------------------//
    // ----------------------------       Редактирование отзыва      ------------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($("body").hasClass('js-module-comment')) {

        // Действующий
        var rating = $('#js-comment-rating-slider').data('rating');

        // Создаем слайдер
        var rateSlider = document.getElementById('js-comment-rating-slider');
        noUiSlider.create(rateSlider, {
            step: 1,
            range: {
                'min': [0],
                'max': [5]
            },
            start: rating
        });

        // Обновляем input
        var rateSliderValueElement = document.getElementById('js-comment-rating-value');
        rateSlider.noUiSlider.on('update', function (values, handle) {
            $('#comment_rating').val(values[handle]);
        });
    };

    // --------------------------------------------------------------------------------------------//
    // -----------------------------   Редактирование менеджера      ------------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($("body").hasClass('js-module-manager')) {

        // Выбрать все права
        $(document).on('click', '.js-manager-perms-check-all', function(event) {
            if(this.checked) {
                $(this).closest(".nk-block").find('.js-manager-perms-list input[type="checkbox"]').not("[disabled]").each(function() {
                    this.checked = true;
                });
            } else {
                $(this).closest(".nk-block").find('.js-manager-perms-list input[type="checkbox"]').not("[disabled]").each(function() {
                    this.checked = false;
                });
            }
        });

    };

    // --------------------------------------------------------------------------------------------//
    // ---------------------------------       Дизайн - Темы        -------------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($("body").hasClass('js-module-theme')) {

        // Управление шаблонами - установка темы
        $(document).on('click', '.js-set-main-theme', function(ev) {
            ev.preventDefault();
            $(".js-theme input[name=action]").val('set_main_theme');
            $(".js-theme input[name=theme]").val($(this).closest('.js-item-theme').data('theme'));
            $(".js-theme").submit();
        });

        // Управление шаблонами - клонировать тему
        $(document).on('click', '.js-clone-theme', function(ev) {
            ev.preventDefault();
            $(".js-theme input[name=action]").val('clone_theme');
            $(".js-theme").submit();
        });

        // Управление шаблонами - редактировать название
        $(document).on('click', '.js-theme-edit', function() {
            var name = $(this).closest('.js-item-theme').data('theme');
            var old_name = $('<input type="hidden" name="old_name[]">').val(name);
            var new_name = $('<input class="form-control form-control-sm" type="text" name="new_name[]">').val(name);

            $(this).closest('.js-item-theme').find(".js-theme-name").html('').append(old_name).append(new_name);
            new_name.focus().select();
            return false;
        });

        // Управление шаблонами - удалить тему
        $(document).on('click', '.js-theme-delete', function() {
            $(".js-theme input[name=action]").val('delete_theme');
            $(".js-theme input[name=theme]").val($(this).closest('.js-item-theme').data('theme'));
            $(".js-theme").submit();
        });

        // Подтверждение удаления
        $(".js-theme").submit(function() {
            if($(".js-theme input[name=action]").val()=='delete_theme' && !confirm("Подтвердите удаление"))
                return false;
        });

    };

    // --------------------------------------------------------------------------------------------//
    // -------------------------------       Дизайн - Шаблоны        ------------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($("body").hasClass('js-module-design')) {
        let design = $('.js-design-save');
        let module = design.data('module');

        const modes = {'html': 'text/x-smarty', 'css':'text/css', 'js':'text/javascript'}
        editor = CodeMirror.fromTextArea($('.htmltext')[0], {
            showTrailingSpace: true,
            lineNumbers: true,
            lineWrapping: false,
            matchBrackets: true,
            mode: modes[module],
            indentUnit: 4,
            indentWithTabs: true,
            enterMode: "keep",
            tabMode: "shift",
            extraKeys: {
                "Ctrl-S": function (cm) {
                    let dir = design.data('dir');
                    let filename = design.data('filename');
                    let module = design.data('module');
                    let file_content = editor.getValue();

                    $.ajax({
                        type: 'POST',
                        url: '/admin/ajax/update_design.php',
                        data: {
                            'file_content': file_content,
                            'module': module,
                            'dir': dir,
                            'filename': filename
                        },
                        success: function(data){
                            notify("Шаблон успешно сохранен.");
                        },
                        error: function(data){
                            notify("Произошла ошибка при сохранении. Проверьте права на запись файлов.", 'error');
                        },
                        dataType: 'json'
                    });
                },
                "Ctrl-Q": function (cm) {
                    cm.foldCode(cm.getCursor());
                },
                F11: function (cm) {
                    cm.setOption("fullScreen", !cm.getOption("fullScreen"));
                },
                Esc: function (cm) {
                    if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
                },
            }
        });

        $(document).on('click', '.js-design-save', function(ev){
            editor.options.extraKeys["Ctrl-S"]();
        });
    };

    // --------------------------------------------------------------------------------------------//
    // ----------------------------       Дизайн - Изображения        -----------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($("body").hasClass('js-module-images')) {

        // Изображения шаблона - редактировать название
        $(document).on('click', '.js-image-edit', function(ev) {
            ev.preventDefault();

            var name = $(this).closest('.js-image-item').data('name');
            var old_name = $('<input type="hidden" name="old_name[]">').val(name);
            var new_name = $('<input class="form-control form-control-sm" type="text" name="new_name[]">').val(name);

            $(this).html('').append(old_name).append(new_name);
            new_name.focus().select();
            return false;
        });

        // Изображения шаблона - удалить изображение
        $(document).on('click', '.js-image-delete', function() {
            var name = $(this).closest('.js-image-item').data('name');
            $('input[name=delete_image]').val(name);
            $(this).closest("form").submit();
        });
        $("form").submit(function() {
            if($('input[name="delete_image"]').val()!='' && !confirm("Подтвердите удаление"))
                return false;
        });

    };

    // --------------------------------------------------------------------------------------------//
    // ----------------------------    Компонент - Изображения        -----------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($('.js-component-images').length) {

        // Сортировка изображений
        $(".js-images-sortable").sortable({
            items: ".js-image-item",
            tolerance: "pointer",
            handle: ".js-image-move",
            cancel: "",
            scrollSensitivity: 100,
            forcePlaceholderSize: true,
            placeholder: "sortable-highlight"
        });

        // Удаление изображений
        $(document).on('click', '.js-image-delete', function() {
            $(this).closest(".js-image-item").fadeOut(200, function() {
                $(this).find('input').prop('name','delete_images[]');
            });
            return false;
        });

        // Загрузка изображений
        if(window.File && window.FileReader && window.FileList)
        {
            $(".js-drop-zone").show();
            $(".js-drop-zone").on('dragover', function (e){
                $(".js-drop-zone").addClass('drag');
            });

            $(document).on('dragenter', function (e){
                $(".js-drop-zone").addClass('drag');
            });

            dropInput = $('.js-drop-input').last().clone();

            function handleFileSelect(evt){
                // FileList object
                var files = evt.target.files;

                // Loop through the FileList and render image files as thumbnails.
                for (var i = 0, f; f = files[i]; i++) {
                    // Only process image files.
                    if (!f.type.match('image.*')) {
                        continue;
                    }
                var reader = new FileReader();

                // Closure to capture the file information.
                reader.onload = (function(theFile) {
                    return function(e) {

                        // Render thumbnail.
                        $("<div class='nk-file-item nk-file js-image-item'><input type=hidden name=images_urls[] value='"+theFile.name+"'><div class='nk-file-info'><div class='nk-file-link'><div class='nk-file-title'><div class='nk-file-icon'><a href='"+e.target.result+"' target='_blank'><img onerror='$(this).closest(\".js-image-item\").remove();' src='"+e.target.result+"' class='h-max-150px'></a></div><div class='nk-file-name'><div class='nk-file-name-text'><div class='title'>"+theFile.name+"</div></div></div></div><ul class='nk-file-desc'></ul></div></div><div class='nk-file-actions hideable'><div class='btn btn-sm btn-icon btn-trigger text-danger js-image-delete' data-toggle='tooltip' data-placement='top' title='Удалить'><em class='icon ti ti-trash'></em></div></div></div>").appendTo('.js-images-list');

                        temp_input =  dropInput.clone();
                        $('.js-drop-input').hide();
                        $('.js-drop-zone').append(temp_input);
                        $(".js-drop-zone").addClass('drag');
                    };
                  })(f);

                  // Read in the image file as a data URL.
                  reader.readAsDataURL(f);
                }
            }
            $(document).on("change", '.js-drop-input', handleFileSelect);
        };
    };


    $('.sortable-table tbody').sortable({
        axis: 'y',
        animation: 150,
        scrollSensitivity: 100,
        scrollSpeed: 10,
        placeholder: "sortable-highlight"
    });

    $(document).on("change", "#ajax_upload_file", function(){
        const input = this;
        const status = '#ajax_upload_file_status';
        let file = this.files[0];
        let maxsize = 100;
        if(file.size > maxsize*1024*1024){
            this.value = '';
            alert('Размер файла превысил '+maxsize+'МБ');
            return false;
        }

        var loaded = 0;
        //чанк = 1Мб
        var step = 1*1024*1024;
        var progressBar = $(this).next();

        //очищаем элемент
        $(status).html();

        var reader = new FileReader();
        reader.onload = function(e){
            var xhr = new XMLHttpRequest();
            var upload = xhr.upload;
            var isLastChunk = (loaded + step >= file.size);

            xhr.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    json = JSON.parse(this.responseText);
                    input.value = '';
                    if(json){
                        $(status).html('Файл '+file.name+' добавлен');
                        $("<input/>").attr('type', 'hidden').attr('name','upload[]').attr('value',this.responseText).appendTo(input);
                    }
                    if(json === false)
                        alert('Данный формат не поддерживается');
                    return false;
                }
            };

            upload.addEventListener('load',function(){
                loaded += step;
                progressBar.val((loaded/file.size) * 100);
                if(loaded <= file.size){
                    blob = file.slice(loaded, loaded+step);
                    reader.readAsDataURL(blob);
                }
            });
            const params = new URLSearchParams({
                filename: file.name,
                loaded: loaded,
                total: file.size,
                finished: isLastChunk ? 1 : 0
            });

            xhr.open("POST", "/admin/ajax/add_file.php?"+params);
            xhr.send(e.target.result.split(',')[1]); // Отправляем только данные, без префикса
        };

        var blob = file.slice(0,step);
        reader.readAsDataURL(blob);
    });

    // Удаление файлов
    $(document).on('click', '.js-delete-file', function() {
        $(this).closest(".js-file-item").fadeOut(200, function() {
            let input = $(this).find('input');
            input.first().prop('name','delete_files[]');  //ID записи в БД
            input.first().next().remove();  //описание файла
        });
        return false;
    });

    // --------------------------------------------------------------------------------------------//
    // -------------------------    Компонент - Связанные товары        ---------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($('.js-component-related').length) {

        // Сортировка cвязанных товаров
        $(".js-product-related-list").sortable({
            items: ".js-product-related-item",
            tolerance: "pointer",
            handle: ".js-list-move",
            cancel: '',
            axis: 'y',
            animation: 150,
            scrollSensitivity: 100,
            scrollSpeed: 10,
            forcePlaceholderSize: true,
            placeholder: "sortable-highlight"
        });

        // Добавление связанного обьекта
        var new_related_product = $('.js-product-related-new').clone(true);
        $('.js-product-related-new').remove();

        $(".js-product-related-add").devbridgeAutocomplete({
            serviceUrl:'/admin/ajax/get_pages.php',
            minChars:0,
            noCache: false,
            onSelect:function(suggestion){
                // console.log(suggestion);
                $(".js-product-related-add").val('').focus().blur();
                new_item = new_related_product.clone().appendTo('.js-product-related-list');
                new_item.addClass('js-product-related-item');
                new_item.removeClass('js-product-related-new');
                new_item.find(".js-list-move").data('bs.tooltip',false).tooltip();
                new_item.find(".js-related-delete").data('bs.tooltip',false).tooltip();
                new_item.find('.tb-lead').html(suggestion.data.name);
                new_item.find('.user-card').parent().attr('href', 'index.php?module=PageAdmin&id='+suggestion.data.id);
                new_item.find('input[name*="related_pages"]').val(suggestion.data.id);
                new_item.find('img').attr("src", ''+suggestion.data.image+'');
                new_item.removeClass('d-none');
            },
            formatResult: function (suggestion, currentValue) {
                var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
                var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
                return `
                        <div class="d-flex p-1">
                            <div class="user-card">
                                <div class="user-avatar border bg-white rounded-pill rounded-0">
                                    <img src="${suggestion.data.image}" class="rounded-0 p-1">
                                </div>
                                <div class="user-info">
                                    <span class="tb-lead link link-secondary d-block">
                                        ${suggestion.value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>')}
                                    </span>
                                </div>
                            </div>
                        </div>
                    `
                ;
            }
        });

        // Удаление связанного товара
        $(document).on('click', '.js-related-delete', function(){
            $(this).closest(".js-product-related-item").find(".js-list-move").tooltip('dispose');
            $(this).closest(".js-product-related-item").find(".js-related-delete").tooltip('dispose');
            $(this).closest(".js-product-related-item").fadeOut(200, function() {
                $(this).remove();
            });
            return false;
        });

    };

    // --------------------------------------------------------------------------------------------//
    // ----------------------------    Компонент - Meta данные        -----------------------------//
    // --------------------------------------------------------------------------------------------//

		if ($('.js-component-meta').length)
		{
			url_touched = true;

			if($('input[name="url"]').val() == generate_url() && $('input[name="url"]').val() == '')
				url_touched = false;

			$('input[name="url"]').change(function() { url_touched = true; });
			$('input[name="name"]').keyup(function() {
				if(!url_touched)
					$('input[name="url"]').val(generate_url());
			});
	        // Подсчет символов
	        $('.meta_title_counter').html('('+$('input[name="meta_title"]').val().length + ' ' + $('.meta_title_counter').data('symbols')+')');
	        $('.meta_description_counter').html('('+$('textarea[name="meta_description"]').val().replace(/\n/g, "\r\n").length + ' ' + $('.meta_description_counter').data('symbols')+')');
	        $('input[name="meta_title"]').keyup(function() {
	            $('.meta_title_counter').html('('+$('input[name="meta_title"]').val().length + ' ' + $('.meta_title_counter').data('symbols')+')');
	        });
	        $('textarea[name="meta_description"]').keyup(function() {
	            $('.meta_description_counter').html('('+$('textarea[name="meta_description"]').val().replace(/\n/g, "\r\n").length + ' ' + $('.meta_description_counter').data('symbols')+')');
	        });
    }

    // --------------------------------------------------------------------------------------------//
    // ---------------------------------   Автоматизация - Бекап    -------------------------------//
    // --------------------------------------------------------------------------------------------//

    if ($("body").hasClass('js-module-backup')) {

        // Создать бекап
        $(document).on('click', '.js-backup-create', function(){
            preloader(true);
            $('.js-backup-form input[name="action"]').val('create');
            $('.js-backup-form').submit();
        });

        // Восстановить бекап
        $(document).on('click', '.js-backup-restore', function(ev){
            ev.preventDefault();
            var file = $(this).data('file');
            $('.js-backup-form input[name="action"]').val('restore');
            $('.js-backup-form input[name="name"]').val(file);
            $('.js-backup-form').submit();
            return false;
        });

        // Уведомление при восстановлении
        $(".js-backup-form").submit(function() {
            if($('input[name="action"]').val()=='restore' && !confirm("Текущие данные будут потеряны. Подтвердите восстановление"))
                return false;
        });
    }

    // --------------------------------------------------------------------------------------------//
    // --------------------- Подтягивание шаблона при выборе родительской категории ---------------//
    // --------------------------------------------------------------------------------------------//
    $(document).on('change', '#parent_id', function(event) {
        let template = $(this).find(":selected").data("template");
        $('#page_template option').filter(function(i, e) { return $(e).val() == template}).prop('selected', true).trigger('change');
    });

    // --------------------------------------------------------------------------------------------//
    // -----------------------   Подтягивание свойств страницы по имени шаблона   -----------------//
    // --------------------------------------------------------------------------------------------//
    $(document).on('change', '#page_template', function(event) {
        let template = $(this).val();
        $.post("/admin/ajax/get_properties.php", {template: template}, function(response) {
            $("#js-update-properties").html(response);
        });
    });

    $("a.js-clipboard-copy").click(function(event) {
        event.preventDefault();
        navigator.clipboard.writeText($(this).attr("href"));
     });


    if ($("body").hasClass('js-module-page')) {
     if($('.htmltext').length > 0){
         var editor = CodeMirror.fromTextArea(document.querySelector(".htmltext"), {
             showTrailingSpace: true,
             lineNumbers: true,
             lineWrapping: false,
             matchBrackets: true,
             mode: "text/x-smarty",
             indentUnit: 4,
             indentWithTabs: true,
             enterMode: "keep",
             tabMode: "shift",
             extraKeys: {
                 "Ctrl-Q": function (cm) {
                     cm.foldCode(cm.getCursor());
                 },
                 F11: function (cm) {
                     cm.setOption("fullScreen", !cm.getOption("fullScreen"));
                 },
                 Esc: function (cm) {
                     if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
                 },
             }
         });
     }
    }

     $(document).on("click", ".change-editor", function(){
         var expires = new Date();
         expires.setTime(expires.getTime() + (30 * 24 * 60 * 60 * 1000));
         document.cookie = 'editor='+ $(this).data('editor') + ';expires=' + expires.toUTCString();
     });
});
