document.addEventListener( "DOMContentLoaded", function( event ) {

    

} );

( function ($) { 
    $(document).ready(function(){

        // transliterate file name
        function __tr_file( str ) {
            var ext = str.match(/\.[^\.]+$/, '');
            str = str.replace(/\.[^\.]+$/g, '');
            cms.tr[" "] = "_";
            for (var i in cms.tr) {
                var re = new RegExp(i,'g');
                str = str.replace(re,cms.tr[i]);
            }
            str = str.replace(/[^-A-Za-z0-9_]+/g,'');
            if (ext[0]) {
                str = str+ext[0];
            }
            str = str.toLowerCase();
            return str;
        }

        // Upload files
        let input = document.querySelector( '[data-upload-form] input[type=file]' );
        input.addEventListener( "change", async function( event ){
            const formData = new FormData();
            let id = document.querySelector( '[data-upload-form] input[name=id]' );
            id = id.value;
            formData.append( 'id', id );
            formData.append( 'fn', 'upload_files' );
            let n = 0;
            for ( let i = 0; i < input.files.length; i++ ) {
                formData.append( 'myfile[]', input.files[i] );
                var f = __tr_file(input.files[i].name);
                f = '/uploads/'+id+'/'+f;
                let f_exists = document.querySelector( '[data-page-editor-files] .filesblocks [data-src="'+f+'"]' );
                if ( f_exists ) { n++; }
            }
            if (n)  {
                var c = confirm(__("Files with the same names found on the server", "pages.mod.php")+' - '+n+' '+__("pc.", "pages.mod.php")+'\n'+__("Overwrite them or cancel the upload?", "pages.mod.php"));
                if (!c) {
                    input.value = ''; // chrome fix
                    return c;
                }
            }
            let bar = document.querySelector( '[data-settings="pages"] .bar' );
            bar.style.width = '100%';
            try {
                const response = await fetch( cms.api, { method: 'POST', body: formData } );
                const r        = await response.json();
                input.value = ''; // chrome fix
                if ( r.info_text ) {
                    notify( r.info_text, r.info_class, 5000 );
                    if ( r.info_class == 'info-success' ) {
                        let tmp = document.createElement( 'div' );
                        tmp.innerHTML = r.flist;
                        let imgs = tmp.querySelectorAll( 'img' );
                        imgs.forEach( function( img ) {
                            let file = img.getAttribute( 'data-src' );
                            let exists_file = document.querySelector( '[data-page-editor-files] .filesblocks [data-src="'+file+'"]' );
                            if ( exists_file ) {
                                exists_file.parentElement.remove();
                            }
                        } );
                        let container = document.querySelector( '[data-files-container]' );
                        container.innerHTML = r.flist + container.innerHTML;
                        // change
                        let checkboxes = container.querySelectorAll( 'input[type=checkbox]' );
                        checkboxes.forEach( function( checkbox ) {
                            checkbox.addEventListener( "change", img_rechecked );
                        } );
                        // dblclick
                        imgs = container.querySelectorAll( 'img' );
                        imgs.forEach( function( img ) {
                            img.addEventListener( "dblclick", img_lbox );
                        } );
                        // click
                        let filesblocks = document.querySelectorAll( '[data-page-editor-files] .filesblocks' );
                        filesblocks.forEach( function( filesblock ) {
                            filesblock.addEventListener( "click", img_click );
                        } );
                        // click on last
                        container.querySelector( '.filesblocks' ).click();
                        bar.style.width = ''; // hide progress bar
                    }
                }
            } catch ( error ) {
                console.error( __('Error:'), error );
            }
        } );



        /* Не готовы к переносу: */

        function api(data,rfn) {
            $.ajax({
                url: cms.api,
                type: 'POST',
                data: data,
                success: function(rdata){
                    if ((rdata.substr(0,1) == '{') || (rdata.substr(0,1) == '[')) rdata = JSON.parse(rdata);
                    if (rfn) {
                        rfn(rdata);
                    }
                },
                error: function(xhr, ajaxOptions, thrownError){
                    if (xhr.status == 0) { rfn({result:'timeout'}); }
                }
            });
        }


        

        function update_pages_list() {
            api({fn:'get_pages_list'},set_pages_list);
        }
        if ( $('body').hasClass('logged') ) {
            update_pages_list();
        }
        function set_pages_list(r) {
            // Заполняем список страниц
            $('[data-pages-list]').html(r.list);

            /* Добавляем в выпадающий список родительские */
            $('#pages [data-value]').each(function(i,el){
                $(el).next().find('.list-search').append(r.parents);
                /* Удаляем себя из списка чтобы не назначить себя родителем */
                var self   = $(el).attr('data-page-id');
                $(el).next().find('li[value="'+self+'"]').remove();
            });
            // Ищем все выпадающие списки на странице Страницы
            let $selects = pages.getElementsByClassName( "select-grid" );
            select3( $selects );
            searcher( $selects, ".list-search li", "" );
            /* Кликаем по выбранной */
            $('#pages [data-value]').each(function(i,el){
                var parent = $(el).attr('data-value');
                $(el).next().addClass('open');
                $(el).next().find('li[value="'+parent+'"]').click();
            });

            /* Выставляем шаблоны */
            $('[data-page-template]').each(function(i,el){
                var tpl = $(el).attr('data-page-template');
                if ( $(el).find('option[value="'+tpl+'"]').length == 0 ) {
                    $(el).prepend('<option value="'+tpl+'">'+tpl+'</option>');
                }
                $(el).val(tpl);
            });

            /* Call Mobile Menu */
            $('[data-page-menu]').click(function(){
                var id = $(this).attr('data-page-menu');
                $('[data-page-item='+id+'] .page-buttons').addClass('open');
            });
            
            /* Close Mobile Menu */
            $('[data-settings="pages"] .page-buttons').click(function(){
                $(this).removeClass('open');
            });

            /* Открыть свойства */
            $('[data-page-prop-open]').click(function(){
                var id = $(this).attr('data-page-prop-open');
                $('[data-page-prop='+id+']').removeClass('hidden').addClass('openhot');
                $('[data-page-item='+id+']').addClass('hidden');
                $('[data-page-item='+id+'] .page-buttons').removeClass('open');
                return false;
            });

            /* Скрыть свойства (Отменить) */
            $('[data-page-prop-cancel]').click(function(){
                var id = $(this).attr('data-page-prop-cancel');
                $('[data-page-prop='+id+']').addClass('hidden').removeClass('openhot');
                $('[data-page-item='+id+']').removeClass('hidden');
                return false;
            });

            /* Сохранить свойства (Сохранить) */
            $('[data-page-prop-save]').click(function(){
                var id      = $(this).attr('data-page-prop-save');
                var selector =  '[data-page-id='+id+']';
                var data = {
                    fn:          'save_prop',
                    id:          id,
                    title:       $(selector+'[name=title]').val(),
                    seo_title:   $(selector+'[name=seo_title]').val(),
                    type_url:    $(selector+'[name=url]').attr('data-page-url-type'),
                    url:         $(selector+'[name=url]').val(),
                    date:        $(selector+'[name=date]').val(),
                    time:        $(selector+'[name=time]').val(),
                    pid:         $(selector+'[name=pid]').attr('data-value'),
                    template:    $(selector+'[name=template]').val(),
                    sort:        $(selector+'[name=sort]').val(),
                    description: $(selector+'[name=description]').val()
                }
                api(data, function(r){
                    if (r.result == 'timeout') {
                        notify( __("Connection lost", "pages.mod.php"), 'info-error', 10000 );
                    } else if (r.info_text) {
                        notify( r.info_text, r.info_class, 5000 );
                        if ( r.list ) {
                            set_pages_list(r);
                        }
                        if ( r.info_class == 'info-success' ) {
                            /* Свернуть свойства */
                            $('[data-page-prop='+data.id+']').addClass('hidden').removeClass('openhot');
                            $('[data-page-item='+data.id+']').removeClass('hidden');
                            /* Маркер последнего редактирования */
                            $('[data-page-item]').removeClass('last-edited');
                            $('[data-page-item='+data.id+']').addClass('last-edited');
                            // Обновить Title и URL
                            $('[data-page-item-link='+data.id+']').html(r.title);
                            $('[data-page-item-link='+data.id+']').attr('href', r.new_url);
                            $('[data-page-id='+data.id+'][name=url]').val(r.short_url);
                        }
                        sendUpdateEvent();
                    }
                });
                return false;
            });

            /* Отмена редактирования страницы */
            $('[data-page-cancel-btn]').unbind( "click" );
            $('[data-page-cancel-btn]').click(function(){
                /* Отключить редактор */
                if ( window.codemirror_editor !== undefined ) {
                    window.codemirror_editor.toTextArea();
                }
                /* Скрываем редактор */
                $('[data-page-editor]').addClass('hidden');
                /* Скрыть медиа файлы */
                $('[data-page-editor-files-close]').click();
                window.prevent_reload = false;
                return false;
            });

            /* Редактировать страницу */
            $('[data-page-edit-btn]').click(function(){
                var id = $(this).attr('data-page-edit-btn');
                $('[data-page-item='+id+'] .page-buttons').removeClass('open');
                /* Запрашиваем данные о странице с сервера */
                api({fn:'get_page',id:id},function(r){
                    if (r.result == 'ok') {
                        /* Отключаем редактор */
                        $('[data-page-cancel-btn]').click();
                        /* Очищаем поля редактора */
                        $('[data-page-title]').text('');
                        $('[data-page-title]').attr('href', '');
                        $('[data-page-text]').val('');
                        $('[data-page-text]').attr('data-page-text','');
                        $('[data-page-save-btn]').attr('data-page-save-btn', '');
                        $('[data-upload-form] input[name=id]').val('');
                        $('[data-link-file]').html('');
                        
                        /* Сброс чекбоксов при обновлении страницы */
                        $('[data-files-container] input[type=checkbox]').prop('checked',false);
                        $('[data-media-del]').addClass('disabled');

                        /* Заполняем поля редактора */
                        $('[data-page-title]').text(r.page.title);
                        $('[data-page-title]').attr('href', r.page.url);
                        $('[data-page-text]').val(r.page.text);
                        if (r.page.modified != null) /* значение null удаляет атрибут, чтобы не удалять - этот фикс */ {
                            $('[data-page-text]').attr('data-page-text', r.page.modified);
                        }
                        $('[data-page-save-btn]').attr('data-page-save-btn', r.page.id);
                        $('[data-upload-form] input[name=id]').val(r.page.id);
                        /* Images */
                        $('[data-files-container]').html(r.flist);
                        $('[data-files-container] input[type=checkbox]').unbind( "change" );
                        $('[data-files-container] input[type=checkbox]').change(img_rechecked);
                        $('[data-page-editor-files] .filesblocks').unbind( "click" );
                        $('[data-page-editor-files] .filesblocks').click(img_click);
                        $('[data-files-container] img').unbind('dblclick');
                        $('[data-files-container] img').dblclick(img_lbox);

                        /* Prevent reload Window when clicking Refresh Cache */
                        window.prevent_reload = true;
                        /* Отображаем редактор */
                        $('[data-page-editor]').removeClass('hidden');
                        /* Выбираем тему */
                        var n = get_cookie('theme');
                        var theme = admin_styles[n][1];
                        
                        /* Подключаем редактор */
                        var txtarea = $('[data-page-text]')[0];
                        window.codemirror_editor = CodeMirror.fromTextArea(txtarea, {
                            mode: "application/x-httpd-php",
                            styleActiveLine: true,
                            lineNumbers: true,
                            lineWrapping: true,
                            autoCloseBrackets: true,
                            autoCloseTags: {
                                whenClosing: true,
                                whenOpening: true,
                                indentTags: ['div','ul','ol','script','style'],
                            },
                            smartIndent: true,
                            matchBrackets: true,
                            theme: theme,
                            phrases: {
                                "Search:":__("Search:", "pages.mod.php"),
                                "(Use /re/ syntax for regexp search)":__("(Use /re/ syntax for regexp search)", "pages.mod.php"),
                                "Replace all:":__("Replace all:", "pages.mod.php"),
                                "With:":__("With:", "pages.mod.php"),
                                "Replace:":__("Replace:", "pages.mod.php"),
                                "Replace?":__("Replace?", "pages.mod.php"),
                                "Yes":__("Yes", "pages.mod.php"),
                                "No":__("No", "pages.mod.php"),
                                "All":__("All", "pages.mod.php"),
                                "Stop":__("Stop", "pages.mod.php"),
                            },
                            extraKeys: { "Ctrl-Space": "autocomplete" }
                        });
                        let cm = window.codemirror_editor;
                        if ( cm.showHint ) {
                            cm.on( 'keyup', function( editor, event ) {
                                let isAlphaKey = /^[a-zA-Z]$/.test( event.key );
                                if ( cm.state.completionActive && isAlphaKey ) {
                                    return;
                                }

                                // Prevent autocompletion in string literals or comments
                                token = cm.getTokenAt( cm.getCursor() );
                                if ( token.type === 'string' || token.type === 'comment' ) {
                                    return;
                                }

                                innerMode = CodeMirror.innerMode( cm.getMode(), token.state ).mode.name;
				                lineBeforeCursor = cm.doc.getLine( cm.doc.getCursor().line ).substr( 0, cm.doc.getCursor().ch );
                                
                                if ( innerMode === 'html' || innerMode === 'xml' ) {
                                    shouldAutocomplete = event.key === '<' ||
                                        event.key === '/' && token.type === 'tag' ||
                                        isAlphaKey && token.type === 'tag' ||
                                        isAlphaKey && token.type === 'attribute' ||
                                        token.string === '=' && token.state.htmlState && token.state.htmlState.tagName;
                                } else if ( innerMode === 'css' ) {
                                    shouldAutocomplete = isAlphaKey ||
                                        event.key === ':' ||
                                        event.key === ' ' && /:\s+$/.test( lineBeforeCursor );
                                } else if ( innerMode === 'javascript' ) {
                                    shouldAutocomplete = isAlphaKey || event.key === '.';
                                } else if ( innerMode === 'clike' && cm.options.mode === 'php' ) {
                                    shouldAutocomplete = token.type === 'keyword' || token.type === 'variable';
                                }
                                if ( shouldAutocomplete ) {
                                    cm.showHint( { completeSingle: false } );
                                }
                            } );
                        }
                    }
                    if (r.result == 'timeout') {
                        notify( __("Connection lost", "pages.mod.php"), 'info-error', 10000 );
                    }
                });
                return false;
            });

            /* Кнопка копирования ссылки */
            $('[data-link-file-copy]').unbind( "click" );
            $('[data-link-file-copy]').click(function(){
                var img = $('[data-link-file]').text();
                var tmp = $("<textarea>");
                $("body").append(tmp);
                tmp.val(img).select();
                var r = document.execCommand("copy");
                tmp.remove();
                if ( r ) {
                    if ( img ) {
                        notify( __("Copyed","pages.mod.php"), 'info-success', 5000 );
                    } else {
                        notify( __("Please select file", "pages.mod.php"), 'info-error', 5000 );
                    }
                } else {
                    notify( __("Copy Error", "pages.mod.php"), 'info-error', 5000 );
                }
            });

            /* Сохранить страницу */
            $('[data-page-save-btn],[data-page-save-close-btn]').unbind( "click" );
            $('[data-page-save-btn],[data-page-save-close-btn]').click(function(){
                /* Сбросить изменения в textarea */
                window.codemirror_editor.save();
                var data = {
                    fn:'save_page',
                    id: $('[data-page-save-btn]').attr('data-page-save-btn'),
                    modified: $('[data-page-text]').attr('data-page-text'),
                    text: $('[data-page-text]').val(),
                    url: $('[data-page-title]').attr('href'), /* delete old page */
                    close: $(this)[0].hasAttribute('data-page-save-close-btn')
                }
                api(data,function(r){
                    if (r.info_text) {
                        notify( r.info_text, r.info_class, 5000 );
                        /* Маркер последнего редактирования */
                        $('[data-page-item]').removeClass('last-edited');
                        $('[data-page-item='+data.id+']').addClass('last-edited');
                        if ( r.modified ) {
                            $('[data-page-text]').attr('data-page-text', r.modified);
                        }
                        /* Закрыть редактор */
                        if (data.close) {
                            $('[data-page-cancel-btn]').click();
                        }
                    }
                    if (r.result == 'timeout') {
                        notify( __("Connection lost", "pages.mod.php"), 'info-error', 10000 );
                    }
                });
                return false;
            });
            $('[data-page-editor]').unbind( "keydown" );
            $('[data-page-editor]').keydown(function(e){
                if ( e.code == "KeyS" && e.ctrlKey == true ) {
                    e.preventDefault();
                    $('[data-page-save-btn]').click();
                }
            });

            // Создать страницу
            $('[data-page-create=0]').unbind( "click" );
            $('[data-page-create]').click(function(){
                var pid = $(this).attr('data-page-create');
                var sort = $(this).attr('data-page-sort');
                var sort2 = $(this).parents('[data-page-box]');
                sort2 = $(sort2[0]).next().find('[data-page-sort]').attr('data-page-sort');
                api({fn:'create_page',pid:pid,sort:sort,sort2:sort2},function(r){
                    if (r.result == 'timeout') {
                        notify( __("Connection lost", "pages.mod.php"), 'info-error', 10000 );
                    } else if (r.info_text) {
                        notify( r.info_text, r.info_class, 5000 );
                        if ( r.info_class == 'info-success' ) {
                            set_pages_list(r);
                        }
                    }
                });
                return false;
            });

            // Удалить страницу
            $('[data-page-del]').click(function(e){
                var id = $(this).attr('data-page-del');
                $('[data-page-item='+id+'] .page-buttons').removeClass('open');
                e.preventDefault();
                if ( !confirm( __("Delete page? All attached files will be deleted.", "pages.mod.php") ) ) return;
                var data = {
                    fn:'del_page',
                    id:id
                };
                api(data, function(r){
                    if (r.result == 'timeout') {
                        notify( __("Connection lost", "pages.mod.php"), 'info-error', 10000 );
                    } else if (r.info_text) {
                        notify( r.info_text, r.info_class, 5000 );
                        if ( r.info_class == 'info-success' ) {
                            set_pages_list(r);
                        }
                    }
                });
            });

            page_searcher.removeEventListener( "keyup", page_searcher_fn );
            page_searcher.addEventListener( "keyup", page_searcher_fn );
            function page_searcher_fn(event) {
                let $items         = pages.querySelectorAll( '[data-page-box] > [data-page-item] h1 a' );
                let $search_string = event.currentTarget.value;
                let $regex   = new RegExp( $search_string, 'i' );
                $items.forEach( function( $el ) {
                    //let $fields = $el.querySelectorAll( 'h1 a' );
                    //$fields.forEach( function( $fi ) {
                        let $content = $el.textContent;
                        let $finded  = $content.match( $regex );
                        if ( $finded ) {
                            let $par = $el.closest("[data-page-box");
                            while ( $par ) {
                                $par.classList.remove( "searcher-hidden" );
                                $par = $par.parentElement;
                                $par = $par.closest("[data-page-box");
                            }
                            
                        } else {
                            let $par = $el.closest("[data-page-box");
                            $par.classList.add( "searcher-hidden" );
                        }
                    //} );
                } );
            }

            /* Отфильтровать, подергав поиск после изменений в страницах */
            let update_searcher_ev = new Event( "keyup" );
            page_searcher.dispatchEvent( update_searcher_ev );

            sendUpdateEvent();

        }

        /* Send Update event to Menu module */
        function sendUpdateEvent() {
            if (!document.skipFirstEvent) document.skipFirstEvent = [];
            if ( document.skipFirstEvent['pages'] ) {
                let event = new Event("updated");
                $('[data-settings=pages]')[0].dispatchEvent(event);
            } else {
                document.skipFirstEvent['pages'] = true;
            }
        }

        /* Показать медиатеку */

        $('[data-page-editor-files-btn]').click(function(){
            $('[data-page-editor-buttons]').addClass('hidden');
            $('[data-page-editor-files]').removeClass('hidden');
        });

        // Replace Dialog
        document.querySelector( '[data-page-editor-replace-btn]' ).addEventListener( "click", function(e){
            let dialog = document.querySelector( '.CodeMirror-dialog' );
            if ( dialog ) {
                dialog.remove();
            } else {
                window.codemirror_editor.execCommand( "replace" );
            }
        } );

        /* Скрыть медиатеку */

        $('[data-page-editor-files-close]').click(function(){
            $('[data-page-editor-files]').addClass('hidden');
            $('[data-page-editor-buttons]').removeClass('hidden');
        });

        /* Активный файл медиатеки */

        $('[data-page-editor-files] .filesblocks').click(img_click);
        function img_click(){
            $('[data-page-editor-files] .filesblocks').removeClass('active-file');
            $(this).addClass('active-file');
            var t = $(this).find('img').attr('data-type');
            var l = $(this).find('img').attr('data-src');
            var w = $(this).find('img').attr('width');
            var h = $(this).find('img').attr('height');
            var e = l.replace(/.*\./, '');
            var img = ['webp','tiff','jpeg','jpg','png','svg','gif','bmp','ico'];
            var mus = ['mp3','ogg','m4a','flac'];
            var vid = ['mp4','mkv'];
            var a = '<a href="'+l+'" target=_blank>'+l+'</a>';
            if (img.indexOf(e) >= 0) {
                l = '&lt;img alt="" src="'+a+'"';
                if ( w ) {
                    l += ' width="'+w+'"';
                }
                if ( h ) {
                    l += ' height="'+h+'"';
                }
                l += '&gt;';
                $('[data-link-file]').html(l);
            } else if (mus.indexOf(e) >= 0) {
                l = '&lt;audio src="'+a+'" controls>&lt;/audio>';
                $('[data-link-file]').html(l);
            } else if (vid.indexOf(e) >= 0) {
                l = '&lt;video src="'+a+'" controls>&lt;/video>';
                $('[data-link-file]').html(l);
            } else {
                l = '&lt;a href="'+a+'"&gt;TEXT&lt;/a&gt;';
                $('[data-link-file]').html(l);
            }
        }

        /* Установка чекбоксов */

        $('[data-files-container] input[type=checkbox]').change(img_rechecked);
        function img_rechecked(){
            if ($('[data-files-container] input[type=checkbox]:checked').length) {
                $('[data-media-del]').removeClass('disabled');
            } else {
                $('[data-media-del]').addClass('disabled');
            }
        }
        
        /* Просмотр в лайтбоксе */

        $('[data-files-container] img').dblclick(img_lbox);
        function img_lbox(){
            var src = $(this).attr('data-src');
            var e = src.replace(/.*\./, '');
            var img = ['webp','tiff','jpeg','jpg','png','svg','gif','bmp','ico'];
            var mus = ['mp3','ogg','m4a','flac'];
            var vid = ['mp4','mkv'];
            if ( $('#lbox-window').length == 0 ) {
                if (img.indexOf(e) >= 0) {
                    var src = $(this).attr('data-src');
                    $('body').append('<div id=lbox-window><img src="'+src+'"></div>');
                    $('#lbox-window').click(function(){
                        $(this).remove();
                    });
                } else if (mus.indexOf(e) >= 0) {
                    $('body').append('<div id=lbox-window><audio src="'+src+'" controls></audio></div>');
                    $('#lbox-window').click(function(){
                        $(this).remove();
                    });
                } else if (vid.indexOf(e) >= 0) {
                    $('body').append('<div id=lbox-window><video src="'+src+'" controls></video></div>');
                    $('#lbox-window').click(function(){
                        $(this).remove();
                    });
                }
                
            }
        }

        /* Загрузка файлов */
        /*
        $('[data-upload-form2] input[type=file]').change(function(){
            var bar = $('[data-settings="pages"] .bar');
            $('[data-upload-form]').ajaxSubmit({
                beforeSubmit: function(formData, jqForm, options) {
                    var id = $('[data-upload-form] input[name=id]').val();
                    var n = 0;
                    $(formData).each(function(i,v){
                        if (v.name == 'myfile[]') {
                            var f = __tr_file(v.value.name);
                            f = '/uploads/'+id+'/'+f;
                            n += $('[data-page-editor-files] .filesblocks [data-src="'+f+'"]').length;
                        }
                    });
                    if (n)  {
                        var c = confirm(__("Files with the same names found on the server", "pages.mod.php")+' - '+n+' '+__("pc.", "pages.mod.php")+'\n'+__("Overwrite them or cancel the upload?", "pages.mod.php"));
                        if (!c) {
                            $('[data-upload-form] input[type=file]').val(''); // cancel fix
                        }
                        return c;
                    }
                },
                beforeSend: function() {
                    var percentVal = '0%';
                    bar.width(percentVal);
                },
                uploadProgress: function(event, position, total, percentComplete) {
                    var percentVal = percentComplete + '%';
                    bar.width(percentVal);
                },
                success: function() {
                    var percentVal = '0%';
                    bar.width(percentVal);
                },
                complete: function(xhr) {
                    if ( xhr.status == 200 ) {
                        if ((xhr.responseText.substr(0,1) == '{') || (xhr.responseText.substr(0,1) == '[')) {
                            r = JSON.parse(xhr.responseText);
                        }
                        if ( r.info_text ) {
                            notify( r.info_text, r.info_class, 5000 );
                            if ( r.info_class == 'info-success' ) {
                                $('[data-page-editor-files] .filesblocks').removeClass('active-file');
                                $(r.flist).find('img').each(function(i,el){
                                    var file = $(el).attr('data-src');
                                    $('[data-page-editor-files] .filesblocks [data-src="'+file+'"]').parent().remove();
                                });
                                $('[data-files-container]').prepend(r.flist);
                                $('[data-files-container] input[type=checkbox]').unbind( "change" );
                                $('[data-files-container] input[type=checkbox]').change(img_rechecked);
                                $('[data-page-editor-files] .filesblocks').unbind( "click" );
                                $('[data-page-editor-files] .filesblocks').click(img_click);
                                $('[data-files-container] img').unbind('dblclick');
                                $('[data-files-container] img').dblclick(img_lbox);
                                $('[data-files-container] .filesblocks')[0].click();
                            }
                            $('[data-upload-form] input[type=file]').val(''); // chrome fix
                        }
                    } else {
                        if ( xhr.responseText ) {
                            notify( xhr.responseText, 'info-error', 10000 );
                        } else {
                            notify( __('Files too big. Check server config.', "pages.mod.php"), 'info-error', 10000 );
                            $('.bar').width('0%');
                            $('[data-upload-form] input[type=file]').val(''); // fix after error
                        }
                    }
                }
            });
            return false;
        });
        */

        /* Удаление файлов */

        $('[data-media-del]').click(function(){
            if (!$(this).hasClass('disabled')) {
                var flist = [];
                $('[data-files-container] input[type=checkbox]:checked').each(function(i,e){
                    var f = $(e).parents('.filesblocks').find('img').attr('data-src');
                    flist.push(f);
                });
                var data = {
                    fn:'del_files',
                    flist:flist
                };
                api(data, function(r){
                    if (r.result == 'timeout') {
                        notify( __("Connection lost", "pages.mod.php"), 'info-error', 10000 );
                    } else if (r.info_text) {
                        $('[data-link-file]').html('');
                        notify( r.info_text, r.info_class, 5000 );
                        if ( r.info_class == 'info-success' ) {
                            for (var f in flist) {
                                $('[data-files-container] img[data-src="'+flist[f]+'"]').parent().remove();
                            }
                            $('[data-media-del]').addClass('disabled');
                        }
                    }
                });
            }
        });

    });
})( jQuery );
