// Класс модальных окон
qwins_wins_arr=[];
class QwinClass {
    wins=[]; // Массив объектов всех окон
    constructor() {
        this.wins = []; // Массив всех загруженных окон
    }
    /*
    Сollapse_all(){
        var x=13, y=13;
        for(var jj in qwins_wins_arr) {
            if (!qwins_wins_arr.hasOwnProperty(jj)) continue;
            if ((!$('#'+jj).jqxWindow('collapsed'))&&(qwins_wins_arr[jj]))  {
                $('#' + jj).jqxWindow('collapse');
                $('#' + jj).jqxWindow({ position: { x: x, y: y }});
                x=x+3;
                y=y+31;
            }
        }
    }*/
    Close_all(){
        console.log("QWIN close all");
        WinStack.close_all_flag=true;
        for (var k in this.wins) {
            //Allfeatures[k].setStyle(BaseStyle);
            $('#qwin_'+this.wins[k]).jqxWindow('close');
        }
        WinStack.close_all_flag=false;
    }
    Drow(objname){
        //console.log(objname);
        if (this.wins.indexOf(objname)>-1){

            $('#qwin_'+objname).jqxWindow({ showCloseButton: true });
            if (!$('#qwin_'+objname).jqxWindow('isOpen')){
                $('#qwin_'+objname).jqxWindow('open');
                //console.log("Окно закрыто - откроем");
            } else {
                //console.log("Окно уже открыто");
            }
            $('#qwin_'+objname).jqxWindow('bringToFront');
            $('#qwin_'+objname).jqxWindow('focus');
            setTimeout(function () {
                $('#qwin_'+objname).jqxWindow('bringToFront');
                $('#qwin_'+objname).jqxWindow('focus');
                $('#qwin_'+objname).jqxWindow({ showCloseButton: true });
                $('#qwin_'+objname).alignCenterScreen();
            }, 137);
            $('#qwin_'+objname).alignCenterScreen();

         //  showCollapseButton: true, maxHeight: 400, maxWidth: 700, minHeight: 200, minWidth: 200, height: 300, width: 500,

            //$('#qwin_'+objname).alignCenterScreen(); не центрируем уже созданное
            this.Action(objname);
            $('#qwin_'+objname).jqxWindow({ showCloseButton: true });
        }else{
            this.Create(objname);
        }
        $("#bg_qwin").show();
    }
    Action_once(objname){ // Что нужно сделать при создании окна (единожды)
        // Окно создано, надо с ним что-то сделать
        switch (objname) {
            case 'login':
                $('#qwin_input_pass').val("");
                $("#qwin_input_login").jqxInput({  width: '300px', placeHolder:"Логин", height: '30px', theme: "material" }); // theme: "material"
                $("#qwin_input_pass").jqxPasswordInput({  width: '300px', placeHolder:"Пароль", height: '30px', theme: "material" }); // theme: "material"
                $("#qwin_input_login").focus();
                $('#qwin_input_login').unbind("keydown");
                $('#qwin_input_pass').unbind("keydown");
                $('#qwin_input_login').keydown(function (e) { if (e.which == 13) $("#qwin_input_pass").focus(); });
                $('#qwin_input_pass').keydown(function (e) { if (e.which == 13){ login()} });
                $("#qwin_input_button_login").jqxButton({ width: 173, height: 30, theme: "arctic" });

                break;
            case 'messages':
                var inpWidth=610;
                if (parseInt(window.innerWidth)<=640){
                    inpWidth=window.innerWidth*0.9;
                    $("#div_main_mess").width(inpWidth);
                }
                $("#mess_fio").jqxInput({  width: inpWidth+'px', placeHolder:"Ваше имя", height: '30px', theme: "material" }); // theme: "material"
                $("#mess_phone").jqxMaskedInput({  mask: '+7(###)###-####', width: inpWidth+'px', placeHolder:"Номер телефона", height: '30px', theme: "material" }); // theme: "material"
                $('#mess_mess').jqxTextArea({ placeHolder: 'Дополнительная информация', height: 60, width: inpWidth, minLength: 1, theme: "material" });
                $("#callback_button_cancel").jqxButton({ width: "77px", height: 30, theme: "arctic" });
                $("#callback_button_send").jqxButton({ width: "137px", height: 30, theme: "arctic" });
                $("#mess_img_ssl").jqxTooltip({ content: "<p style='width: 173px; text-align: left;'>Ваши персональные данные надежно защищены и зашифрованы по протоколу уровня SSL.</p>", theme: 'arctic', position: 'mouse', name: 'movieTooltip'});
                //$('#qwin_messages').jqxWindow('close');
                break;


            case 'how_much':
                var inpWidth=610;
                if (parseInt(window.innerWidth)<=640){
                    inpWidth=window.innerWidth*0.9;
                    $("#div_main_mess2").width(inpWidth);
                }
                $("#mess2_fio").jqxInput({  width: inpWidth+'px', placeHolder:"Ваше имя", height: '30px', theme: "material" }); // theme: "material"
                $("#mess2_phone").jqxMaskedInput({  mask: '+7(###)###-####', width: inpWidth+'px', placeHolder:"Номер телефона", height: '30px', theme: "material" }); // theme: "material"
                $('#mess2_mess').jqxTextArea({ placeHolder: 'Дополнительная информация', height: 60, width: inpWidth, minLength: 1, theme: "material" });
                $("#callback2_button_cancel").jqxButton({ width: "77px", height: 30, theme: "arctic" });
                $("#callback2_button_send").jqxButton({ width: "137px", height: 30, theme: "arctic" });
                $("#mess2_img_ssl").jqxTooltip({ content: "<p style='width: 173px; text-align: left;'>Ваши персональные данные надежно защищены и зашифрованы по протоколу уровня SSL.</p>", theme: 'arctic', position: 'mouse', name: 'movieTooltip'});


                var uslugi=[
                    "Бухгалтерский и налоговый учет",
                    "Восстановление бухгалтерского учета",
                    "Расчет заработной платы",
                    "Консультация",
                    "Кадровое делопроизводство",
                    "Регистрация компании",
                    "Охрана труда",
                    "Внедрение, доработка 1С",
                    "Юридическая поддержка",
                    "Приостановка деятельности",
                    "Ликвидация компании",
                    "Другое"
                ];
                var localdata = [];
                for (var jj in uslugi) {
                    if (!uslugi.hasOwnProperty(jj)) continue;
                    var tmp=[];
                    tmp["title"] = uslugi[jj];
                    localdata.push(tmp);
                }
                var source =
                    {
                        localdata: localdata,
                        datatype: "array",
                        datafields:
                            [
                                {name: 'title', type: 'string'}
                            ]
                    };
                var dataAdapter = new $.jqx.dataAdapter(source, {async: false});
                $("#mess2_type").jqxDropDownList({
                    checkboxes: true,
                    selectedIndex: 0,
                    placeHolder: "Услуги",
                    source: dataAdapter,
                    displayMember: "title",
                    valueMember: "title",
                    width: inpWidth,
                    height: 30,
                    theme: "material"
                });
                $("#mess2_type").jqxDropDownList('uncheckAll');
                //$('#qwin_how_much').jqxWindow('close');
                break;

            default:
                console.log( "qwin: Нет таких значений: "+objname );
        }
        //$('#qwin_'+objname).on('close', function (event) {
            /*
            var qid=$(event.currentTarget).attr("id"); //.attributes.id;
            qwins_wins_arr[qid]=false;*/
        //    WinStack.close();
        //});
        $('#qwin_'+objname).on('close', function (event) {  WinStack.close(); });
    }
    Action(objname){ // Что нужно сделать при открытитие окна КАЖДЫЙ РАЗ
        // Окно создано, надо с ним что-то сделать
        $('#qwin_'+objname).jqxWindow('bringToFront');
        $('#qwin_'+objname).jqxWindow('focus');
        $('#qwin_'+objname).jqxWindow({ showCloseButton: true });
        switch (objname) {
            case 'login':
                $('#qwin_input_pass').val("");
                break;
            default:
                console.log( "Нет таких значений" );
        }
    }
    Create(objname){
        this.wins.push(objname); //[objname+"_"+data.id]=true;
        jQuery("body").append("<div id='qwin_"+objname+"' class='qwin'><div><img src='image/qloading.gif' width='100' height='80' class='qwin_loading default'  title='Загрузка' alt='Загрузка'/></div></div>");
        $('#qwin_'+objname).alignCenterScreen();
        cmd({action:"load_qwin", objname:objname, data:[]});

    }
    Get(qwin, objname){
        $('#qwin_'+objname).html(qwin);
        if (parseInt(window.innerWidth)<=640){
         $('#qwin_'+objname).jqxWindow({ height: 'auto', width: parseInt(window.innerWidth)*0.95, theme: "arctic", showCloseButton: true, resizable: false });
         }else{
            $('#qwin_'+objname).jqxWindow({ height: 'auto', width: 'auto', theme: "arctic", showCloseButton: true, resizable: false });
        }
        $('#qwin_'+objname).alignCenterScreen();
        //$('#qwin_'+objname).jqxWindow('showCollapseButton', true);
        qwins_wins_arr['qwin_'+objname]=true;

        $('#qwin_'+objname).on('open', function (event) {
            /*
            var qid=$(event.currentTarget).attr("id"); //.attributes.id;
            qwins_wins_arr[qid]=true; // Открыто
             */
        });
        $('#qwin_'+objname).on('close', function (event) {
            $("#bg_qwin").hide();
        });
        $('#qwin_'+objname).alignCenterScreen();
        this.Action_once(objname);
        this.Action(objname);
    }
}
const Qwin = new QwinClass();

class WinStackClass { // Заменим Qwin.Drow на  open(w)
    stack = [];
    close_all_flag=false;
    constructor() {
        this.stack = [];
        this.close_all_flag=false;
    }
    open(w){ // Открытие окна: закрыть все, добавить новое коно в стек
        /*
        type - qwin, left, ex
        name - ""
         */
        if (this.stack.length>0){
            var lastwin = this.stack[this.stack.length - 1];
            if ((lastwin.type==w.type)&&(lastwin.name==w.name)){
                console.log("Окно и так открыто");
                console.log(w);
                return false;
            }
            for(var jj in this.stack) { // ЕГП текстом
                if (!this.stack.hasOwnProperty(jj)) continue;
                if ((this.stack[jj].type==w.type)&&(this.stack[jj].name==w.name)){
                    micmess("Пожалуйста закройте ранее открытые окна", "warning");
                    return false;
                }
            }


        }
        this.closeAll();
        this.stack.push(w);
        this.realOpen(w);
    }
    close(){ // Закрыть текущее, убрать верхнее из стека, открыть предыдущее если есть // Событие на всех клозерах
        if (!this.close_all_flag) {
            console.log("close: ");
            this.stack.pop(); // Последнее убрали из стека
            console.log(this.stack);
            this.closeAll(); // Закрыли все
            if (this.stack.length > 0) {
                var lastwin = this.stack[this.stack.length - 1];
                this.realOpen(lastwin); // новый последний покажем
            } else console.log("WinStack: закрыто последнее окно стека.");
        }else{
            console.log("close: close all");
        }
    }
    realOpen(w){
        if (w.type=="qwin"){
            Qwin.Drow(w.name);
            if (redrow_functions[w.name]!=undefined)
                redrow_functions[w.name]();
        }
        if (w.type=="left"){
            left_div_info_closer("open");
            $(w.name).show();
            if (redrow_functions[w.name.substring(1)]!=undefined)
                redrow_functions[w.name.substring(1)]();
        }
        if (w.type=="ex"){
            if (w.name=="right_div_edit_layer")
                $("#right_div_edit_layer").show();
        }

    }
    closeAll(){ // Закрыть всё
        //console.log("WinStack: Закрытие всех окон");
        Qwin.Close_all();
        $("#right_div_edit_layer").hide();
    }
}
var WinStack=new WinStackClass();
