VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/www/html/keeview_app/html/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/keeview_app/html/mobile_common_view.js
theme.mobileInitBack = function(){
    if (window.backLayoutFunc.length > 1){
        hr.menu.loadPage(window.backLayoutFunc[window.backLayoutFunc.length - 2].pageNumber, "hidden");
    }
    else {
        hr.menu.loadPage(1000, "hidden");
    }
    window.backLayoutFunc.pop();
};

theme.formSelectPartner = function(params){
    var inputsearchbox = absol.buildDom({
        tag:'searchcrosstextinput',
        style: {
            display: "block",
            width: "100%",
            marginBottom: "var(--control-verticle-distance-2)"
        },
        props: {
            placeholder: LanguageModule.text("txt_search")
        },
        on: {
            stoptyping: function(){
                params.func.filter_change_func();
            }
        }
    });
    var itemsList = contentModule.getNationCityDualSelectMenu(params);
    itemsList.forEach(function(nItem){
        nItem.items.unshift({value: 0, text: LanguageModule.text("txt_all_city")});
    });
    itemsList.unshift({
        value: 0,
        text: LanguageModule.text("txt_all_nation"),
        items: [{value: 0, text: LanguageModule.text("txt_all_city")}]
    });
    var nation_cities_select = absol.buildDom({
        tag: "dualselectmenu",
        style: {
            display: "block",
            width: "100%",
            marginBottom: "var(--control-verticle-distance-2)"
        },
        props: {
            items: itemsList,
            enableSearch: true,
            value: [0, 0]
        },
        on: {
            change: function(){
                params.func.filter_change_func();
            }
        }
    });
    var partner_class_select = absol.buildDom({
        tag: "mselectmenu",
        style: {
            display: "block",
            width: "100%",
            marginBottom: "var(--control-verticle-distance-2)"
        },
        props: {
            items: contentModule.getPartnerClassFilterList(params),
            enableSearch: true
        },
        on: {
            change: function(){
                params.func.filter_change_func();
            }
        }
    });
    params.data_container.style.maxHeight = "calc(90vh - 250px)";
    params.data_container.style.width = "100%";
    params.data_container.style.auto = "auto";
    ModalElement.showWindow({
        title: LanguageModule.text("txt_partner"),
        bodycontent: DOMElement.div({
            children: [
                DOMElement.div({
                    attrs: {
                        style: {
                            paddingBottom: "10px"
                        }
                    },
                    children: [
                        partner_class_select,
                        nation_cities_select,
                        inputsearchbox
                    ]
                }),
                params.data_container
            ]
        }),
        buttonlist: [
            {
                text: LanguageModule.text("txt_ok"),
                typeColor: "light",
                onclick: function(){
                    params.func.ok();
                    ModalElement.close();
                }
            },
            {
                text: LanguageModule.text("txt_cancel"),
                onclick: function(){
                    ModalElement.close();
                }
            }
        ]
    });
    params.data_container.nation_cities_select = nation_cities_select;
    params.data_container.inputsearchbox = inputsearchbox;
    params.data_container.partner_class_select = partner_class_select;
};

contentModule.reportTimeModule = function(params){
    console.log(params);
    var timeClass = params.class;
    var timeItems = [
        {value: 1, text: LanguageModule.text("txt_yesterday")},
        {value: 2, text: LanguageModule.text("txt_today")},
        {value: 3, text: LanguageModule.text("txt_last_week")},
        {value: 4, text: LanguageModule.text("txt_this_week")},
        {value: 5, text: LanguageModule.text("txt_last_7_days")},
        {value: 13, text: LanguageModule.text("txt_7_days_before_after")},
        {value: 15, text: LanguageModule.text("txt_30_days_before_after")},
        {value: 6, text: LanguageModule.text("txt_last_month")},
        {value: 7, text: LanguageModule.text("txt_this_month")},
        {value: 8, text: LanguageModule.text("txt_last_30_days")},
        {value: 9, text: LanguageModule.text("txt_last_quarter")},
        {value: 10, text: LanguageModule.text("txt_this_quarter")},
        {value: 11, text: LanguageModule.text("txt_last_90_days")},
        {value: 12, text: LanguageModule.text("txt_last_year")},
        {value: 14, text: LanguageModule.text("txt_this_year")},
        {value: 0, text: LanguageModule.text("txt_option")}
    ];
    var props;
    if (params.props) {
        props = params.props;
    }
    else {
        props = {};
    }
    props.items = timeItems;
    props.value = params.value.relativeTime ? params.value.relativeTime: 0;
    var displayFunc = function(value){
        if (value == 0) {
            absol.$("." + timeClass, params.container, function(elt){
                console.log(elt);
                elt.style.display = "inline-block";
            });
        }
        else {
            absol.$("." + timeClass, params.container, function(elt){
                console.log(elt);
                elt.style.display = "none";
            });
        }
    };
    var cbb = absol._({
        tag: "mselectmenu",
        style: {
            display: "block",
            width: "100%"
        },
        props: {
            items: timeItems,
            value: params.value.relativeTime ? params.value.relativeTime: 0
        },
        on: {
            change: function(){
                displayFunc(cbb.value);
                start.disabled = cbb.value != 0;
                end.disabled = cbb.value != 0;
                if (params.change) params.change();
            }
        }
    });

    var start = absol._({
        tag: 'dateinput',
        props: {
            value: params.value.start,
            disabled: cbb.value != 0
        },
        on: {
            change: function(){
                if (params.change) params.change();
            }
        }
    });

    var end = absol._({
        tag: 'dateinput',
        props: {
            value: params.value.end,
            disabled: cbb.value != 0
        },
        on: {
            change: function(){
                if (params.change) params.change();
            }
        }
    });

    var retval = {
        timeElt: cbb,
        startElt: start,
        endElt: end,
        getValue: function(){
            var timeValue, startValue, endValue;
            timeValue = cbb.value;
            startValue = start.value;
            endValue = end.value;
            var rs = contentModule.generateRelativeTime({value: timeValue, from: startValue, to: endValue});
            return {
                originValue: {
                    relativeTime: timeValue,
                    start: startValue,
                    end: endValue
                },
                specificValue: {
                    start: rs.start,
                    end: rs.end
                }
            };
        }
    };

    return retval;

};

theme.checkinPartnerForm = function(host){
    if (data_module.employeeOfMe.length == 0){
        ModalElement.alert({message: LanguageModule.text("war_user_not_link_employee")});
        return;
    }
    var showLocation = function(position){
        var drawList = function(){
            DOMElement.removeAllChildren(list_ctn);
            if (!host.load_partner_done){
                setTimeout(function(){
                    drawList();
                }, 50);
                return;
            }
            else {
                var listPartner = [];
                var lat = position.latitude;
                var lng = position.longitude;
                var distance, res;
                for (var i = 0; i < host.database.partner.items.length; i++){
                    res = contentModule.getGPSByString(host.database.partner.items[i].gps);
                    if (!res) continue;
                    distance = contentModule.calcCrow(lat, lng, res.lat, res.lng);
                    if (isNaN(distance) || distance > hr.maximumDistance) continue;
                    listPartner.push(host.database.partner.items[i]);
                }
                ModalElement.close(-1);
                DOMElement.removeAllChildren(list_ctn);
                if (listPartner.length == 0){
                    list_ctn.appendChild(DOMElement.div({
                        children: [
                            DOMElement.div({attrs: {style: {height: "30px"}}, text: LanguageModule.text("war_txt_there_is_no_available_partner_to_check_in")}),
                            DOMElement.div({attrs: {style: {height: "30px"}}, text: LanguageModule.text("txt_your_gps") + ": " + lat +"," + lng})
                        ]
                    }));
                    copyBtn.style.display = "";
                    copyBtn.onclick = function(){
                        absol.clipboard.copyText(lat +"," + lng);
                    };
                    FormClass.api_call({
                        url: "hr_system_debugs_save.php",
                        params: [{name: "data", value: EncodingClass.string.fromVariable({
                            userid: systemconfig.userid,
                            time: new Date(),
                            task: "checkin_partner",
                            content: lat +"," + lng
                        })}],
                        func: function(success, message){
                            if (success){
                                if (message.substr(0, 2) == "ok"){
                                    // TODO:
                                }
                                else {
                                    // ModalElement.alert({message: message});
                                }
                            }
                            else {
                                // ModalElement.alert({message: message});
                            }
                        }
                    });
                    return;
                }
                var value = 0;
                var data = [];
                var highlightContent = function(row) {
                    if (row !== undefined) {
                        if (oldHighlightedRow !== row) {
                            for (i = 0; i < oldHighlightedRow.childNodes.length; i++) {
                                oldHighlightedRow.childNodes[i].style.backgroundColor = null;
                            }
                            for (i = 0; i < row.childNodes.length; i++) {
                                row.childNodes[i].style.backgroundColor = "var(--table-light-row-background-color)";
                            }
                            oldHighlightedRow = row;
                        }
                    }
                };
                var oldHighlightedRow = DOMElement.tr({});
                listPartner.forEach(function(item){
                    data.push([{
                        attrs: {
                            style: {cursor: "pointer"},
                            onclick: function(event, me){
                                value = {
                                    employeeid: data_module.employeeOfMe[0],
                                    partnerid: item.id,
                                    partnergps: item.gps,
                                    checkingps: position.latitude + "," + position.longitude,
                                    checkin_follow_gps: 1,
                                    checkintime: new Date()
                                };
                                var x = me;
                                while (x.tagName.toLowerCase() !== "tr") x = x.parentElement;
                                highlightContent(x);
                                checkinBtn.style.display = "";
                            }
                        },
                        text: item.name
                    }]);
                });
                list_ctn.appendChild(DOMElement.div({
                    attrs: {className: "cardsimpletableclass"},
                    children: [DOMElement.table({
                        attrs: {style: {width: "100%"}},
                        data: data
                    })]
                }));
                list_ctn.getValue = function(){
                    return value;
                };
            }
        };
        var drawListPre = function(){
            list_ctn.getValue = function(){
                return null;
            };
            ModalElement.show_loading();
            drawList();
        };
        host.database = {};
        host.load_partner_done = false;
        host.latLngScope = absol.measurements.latLngRectFromCenter(position, hr.maximumDistance/1000);
        data_module.loadPartnerGPSList(host).then(function(values){
            host.load_partner_done = true;
        });
        drawListPre();
    };

    var checkin = function(){
        if (host.checkintime && ((new Date().getTime() - host.checkintime.getTime()) > 60000)) return;
        host.checkintime = new Date();
        var data = list_ctn.getValue();
        if (!data){
            ModalElement.alert({message: "Chưa chọn đối tác"});
            return;
        }
        var res = contentModule.getGPSByString(data.partnergps);
        var res1 = contentModule.getGPSByString(data.checkingps);
        var distance = contentModule.calcCrow(res1.lat, res1.lng, res.lat, res.lng);
        if (distance > hr.maximumDistance){
            ModalElement.alert({message: LanguageModule.text2("war_txt_checkin_distance_invalid", [hr.maximumDistance])});
            return;
        }
        ModalElement.show_loading();
        FormClass.api_call({
            url: "partner_checkin_save_auto.php",
            params: [
                {name: "data", value: EncodingClass.string.fromVariable(data)}
            ],
            func: function(success, message){
                ModalElement.close(-1);
                if (success){
                    if (message.substr(0, 2) == "ok"){
                        ModalElement.close();
                        ModalElement.alert({message: "Checkin thành công"});
                    }
                    else {
                        ModalElement.alert({message: message});
                        return;
                    }
                }
                else {
                    ModalElement.alert({message: message});
                    return;
                }
            }
        });
    };
    if (window.isApp){
        var getLocation = function(){
            mobileHost.getLocation(function(value){
                if (value == null){
                    ModalElement.alert({message: LanguageModule.text("war_txt_devices_not_supported_gps")});
                    return;
                }
                else {
                    showLocation(value);
                }
            });
        };
        var isPriv = mobileHost.checkLocationPermission();
        if (isPriv){
            getLocation();
        }
        else {
            mobileHost.requestLocationPermission(function(value){
                if (value) getLocation();
                else {
                    ModalElement.alert({message: "Không được cấp quyền"});
                }
            });
        }
    }
    else {
        if (navigator.geolocation){
            navigator.geolocation.getCurrentPosition(function(position){
                showLocation(position.coords);
            }, function(err){
                if (err) ModalElement.alert({message: err.message});
            });
        }
        else {
            ModalElement.close(-1);
            ModalElement.alert({message: "Geolocation is not supported by this browser."});
        }
    }
    var list_ctn = DOMElement.div({});
    var params = {
        title: LanguageModule.text("txt_partner_checkin"),
        bodycontent: list_ctn,
        buttonlist: [
            {
                text: LanguageModule.text("txt_checkin"),
                typeColor: "light",
                onclick: function(){
                    checkin();
                }
            },
            {
                text: LanguageModule.text("txt_copy_gps"),
                typeColor: "light"
            },
            {
                text: LanguageModule.text("txt_cancel"),
                onclick: function(){
                    ModalElement.close();
                }
            }
        ]
    };
    ModalElement.showWindow(params);
    var checkinBtn = params.buttonEltList[0];
    checkinBtn.style.display = "none";
    var copyBtn = params.buttonEltList[1];
    copyBtn.style.display = "none";
};

theme.checkinForm = function(host){
    if (data_module.employeeOfMe.length == 0){
        LanguageModule.text("war_txt_you_need_to_link_with_an_employee_in_organization_chart_to_use_app_functions");
        return;
    }
    var checkin = function(){
        var data = data_ctn.getValue();
        if (!data) return;
        ModalElement.show_loading();
        FormClass.api_call({
            url: "checkin_save.php",
            params: [{name: "data", value: EncodingClass.string.fromVariable(data)}],
            func: function(success, message){
                ModalElement.close(-1);
                if (success){
                    if (message.substr(0, 2) == "ok"){
                        ModalElement.close();
                        ModalElement.alert({message: "Checkin thành công"});
                    }
                    else if (message == "failed_employee"){
                        LanguageModule.text("war_txt_you_need_to_link_with_an_employee_in_organization_chart_to_use_app_functions");
                    }
                    else {
                        ModalElement.alert({message: message});
                        return;
                    }
                }
                else {
                    ModalElement.alert({message: message});
                    return;
                }
            }
        });
    };
    var drawDataCtn = function(){
        DOMElement.removeAllChildren(data_ctn);
        var method_select = absol.buildDom({
            tag: "selectmenu",
            style: {
                display: "block",
                width: "100%"
            },
            props: {
                items: [{value: "other", text: LanguageModule.text("txt_other")}]
            },
            on: {
                change: function(){
                    switch (this.value) {
                        case "other":

                            break;
                        default:

                    }
                }
            }
        });
        method_select.emit('change');
        var list_ctn = DOMElement.div({});
        var comment_input = DOMElement.textarea({
            attrs: {
                className: "cardSimpleTextarea",
                style: {
                    width: "100%",
                    height: "100px"
                }
            }
        });
        data_ctn.appendChild(DOMElement.div({
            children: [
                DOMElement.table({
                    attrs: {style: {width: "100%"}},
                    data: [
                        [
                            {text: LanguageModule.text("txt_method")},
                            {attrs: {style: {width: "var(--control-horizontal-distance-2)"}}},
                            method_select
                        ]
                    ]
                }),
                list_ctn,
                DOMElement.div({
                    attrs: {
                        className: "card-mobile-label-form-edit"
                    },
                    text: LanguageModule.text("txt_note")
                }),
                comment_input
            ]
        }));
        data_ctn.getValue = function(){
            var method = method_select.value;
            var data = {
                method: method
            };
            var comment = comment_input.value.trim();
            switch (method) {
                case "other":
                    if (comment == ""){
                        ModalElement.alert({
                            message: LanguageModule.text("war_txt_no_note"),
                            func: function(){
                                comment_input.focus();
                            }
                        });
                        return;
                    }
                    data.checkingps = positionData.latitude + "," + positionData.longitude;
                    break;
                default:

            }
            data.comment = comment;
            return data;
        };
    };
    var positionData;
    if (window.isApp){
        var getLocation = function(){
            mobileHost.getLocation(function(value){
                if (value == null){
                    ModalElement.alert({message: LanguageModule.text("war_txt_devices_not_supported_gps")});
                    return;
                }
                else {
                    positionData = value;
                    checkinBtn.style.display = "";
                }
            });
        };
        var isPriv = mobileHost.checkLocationPermission();
        if (isPriv){
            getLocation();
        }
        else {
            mobileHost.requestLocationPermission(function(value){
                if (value) getLocation();
                else {
                    ModalElement.alert({message: "Không được cấp quyền"});
                }
            });
        }
    }
    else {
        if (navigator.geolocation){
            navigator.geolocation.getCurrentPosition(function(position){
                positionData = position.coords;
                checkinBtn.style.display = "";
            }, function(err){
                if (err) ModalElement.alert({message: err.message});
            });
        }
        else {
            ModalElement.close(-1);
            ModalElement.alert({message: "Geolocation is not supported by this browser."});
        }
    }
    var data_ctn = DOMElement.div({});
    var params = {
        title: LanguageModule.text("txt_checkin"),
        bodycontent: data_ctn,
        buttonlist: [
            {
                text: LanguageModule.text("txt_checkin"),
                typeColor: "light",
                onclick: function(){
                    checkin();
                }
            },
            {
                text: LanguageModule.text("txt_copy_gps"),
                typeColor: "light"
            },
            {
                text: LanguageModule.text("txt_cancel"),
                onclick: function(){
                    ModalElement.close();
                }
            }
        ]
    };
    ModalElement.showWindow(params);
    var checkinBtn = params.buttonEltList[0];
    checkinBtn.style.display = "none";
    var copyBtn = params.buttonEltList[1];
    copyBtn.style.display = "none";
    drawDataCtn();
};

contentModule.drawComment = function (params){
    var drawCommentEdit = function(){
        window.backLayoutFunc.push({
            func: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            }
        });
        ModalElement.show_loading();
        contentModule.drawCommentInside(params).then(function(cBox){
            ModalElement.close(-1);
            var header = absol.buildDom({
                tag: 'mheaderbar',
                props: {
                    actionIcon: DOMElement.i({
                        attrs: {
                            className: "material-icons"
                        },
                        text: "arrow_back_ios"
                    }),
                    title: LanguageModule.text("txt_comment")
                },
                on: {
                    action: function(){
                        params.frameList.removeLast();
                    },
                    command: function(event){
                        event.commandItem.cmd();
                    }
                }
            });
            var singlePage = absol.buildDom({
                tag: 'tabframe',
                child: [
                    header,
                    DOMElement.div({
                        attrs: {
                            className: "card-mobile-content",
                            style: {
                                padding: 0
                            }
                        },
                        children: [cBox.getView()]
                    })
                ]
            });
            params.frameList.addChild(singlePage);
            singlePage.requestActive();
        });
    };
    var comment_ctn = DOMElement.div({});
    var child = [
        {
            class: 'm-mk-section-header-name',
            child: { text: LanguageModule.text("txt_comment") }
        }
    ];
    var add_elt = absol.buildDom({
        class: 'm-mk-section-header-right',
        child: [
            DOMElement.a({
                attrs: {
                    onclick: function(){
                        drawCommentEdit();
                    }
                },
                text: LanguageModule.text("txt_add")
            })
        ]
    });
    if (!params.disabled) child.push(add_elt);
    var res = absol.buildDom({
        attr: {
            "data-sectionid": "comment"
        },
        child: [
            absol.buildDom({
                class: 'm-mk-section-header',
                child: child
            }),
            DOMElement.div({
                attrs: {style: {paddingTop: "var(--control-verticle-distance-2)"}},
                children: [comment_ctn]
            })
        ]
    });
    res.setDisabled = function(type){
        add_elt.style.display = "none";
    };
    contentModule.drawCommentInside({taskid: params.taskid, tablename: params.tablename, disabled: true}).then(function(chatBox){
        var x = chatBox.getView();
        var y = absol.$('.card-chat-box-messages-container', x);
        y.addStyle({
            position: "relative",
            left: "unset",
            top: "unset",
            right: "unset",
            bottom: "unset",
            overflowY: "visible"
        });
        comment_ctn.appendChild(y);
    });
    return res;
};

contentModule.questionChange = function (params) {
    var message = params.message, title = params.title, func = params.onclick;
    if (message === undefined) message = LanguageModule.text("war_close_not_save");
    if (title === undefined) title = "Question";
    if (func === undefined) func = function (){};
    theme.showForm({
        message: message,
        buttonList: [
            {
                text: LanguageModule.text("txt_yes")
            },
            {
                text: LanguageModule.text("txt_no")
            },
            {
                text: LanguageModule.text("txt_cancel")
            }
        ],
        func: func
    });
};

theme.HeaderBarWithSearh = (function(){
    var _ = absol._;
    var $ = absol.$;
    function HeaderBarWithSearch(){
        this.$disableSearchBtn = _({
            tag: 'button',
            class: ['am-header-bar-left-btn', 'am-header-bar-disable-search-btn'],
            child:{ tag:'i', class: 'material-icons', child:{text:'keyboard_backspace'}},
            on:{
                click: this.eventHandler.clickDisableSearchBtn
            }
        });
        this.addChildBefore(this.$disableSearchBtn, this.firstChild);
    }

    HeaderBarWithSearch.tag = 'headerbarwithsearch';

    HeaderBarWithSearch.render = function(data){
        var searchInput = data.searchInput;
        var res =  _('mheaderbar');
        searchInput.attr('style', undefined);
        res.$searchInput = searchInput;
        res.addChildBefore(searchInput, res.$right);
        return res;
    };

    HeaderBarWithSearch.prototype.searchMode = function(flag){
        if (this.containsClass('am-search-mode') == flag) return;
        if (flag){
            this.addClass('am-search-mode');
            this.$searchInput.focus();
            this._prevActionIcon = this.actionIcon;
        }
        else {
            this.removeClass('am-search-mode');
            this.$searchInput.blur();
            this.$searchInput.value = "";
        }
    };

    HeaderBarWithSearch.eventHandler = {};

    HeaderBarWithSearch.eventHandler.clickDisableSearchBtn = function(event){
        this.searchMode(false);
    };

    absol.coreDom.install(HeaderBarWithSearch);
    return HeaderBarWithSearch;
})();

theme.modalFormMobile = function(params){
    if (params.title === undefined) params.title = "";
    var formcontent;
    var h = DOMElement.div({
        attrs: {
            className: "card-modal-mobile-body-content-ctn"
        }
    });
    if (params.bodycontent !== undefined) h.appendChild(params.bodycontent);
    var buttonElt = DOMElement.div({
        attrs: {
            align: "right",
            style: {
                paddingTop: "20px"
            }
        }
    });
    if (params.buttonList === undefined) params.buttonList = [];
    var color;
    for (var i = 0; i < params.buttonList.length; i++){
        switch (params.buttonList[i].typeColor) {
            case "light":
                color = "var(--a-color)";
                break;
            case "dark":
            default:
                color = "#aaaaaa";
        }
        buttonElt.appendChild(DOMElement.span({
            attrs: {
                style: {
                    color: color,
                    fontWeight: "bold",
                    marginLeft: "20px"
                },
                onclick: function(i) {
                    return function (event, me) {
                        formcontent.remove();
                        params.func(i);
                    }
                } (i)
            },
            text: params.buttonList[i].text.toUpperCase()
        }));
    }
    if (params.buttonList.length > 0) h.appendChild(buttonElt);
    formcontent = DOMElement.div({
        attrs: {
            style: {
                width: "100vw",
                height: "100vh",
                top: 0,
                position: "fixed",
                background: "#0000001a",
                zIndex: 88888
            }
        },
        children: [DOMElement.div({
            attrs: {
                className: "card-modal-mobile-ctn"
            },
            children: [
                DOMElement.div({
                    attrs: {
                        className: "card-modal-mobile-header-ctn"
                    },
                    children: [
                        DOMElement.div({
                            attrs: {
                                className: "card-modal-mobile-header-title"
                            },
                            text: params.title
                        }),
                        DOMElement.div({
                            attrs: {
                                className: "card-modal-mobile-close-btn",
                                onclick: function(){
                                    formcontent.remove();
                                }
                            },
                            children: [DOMElement.i({
                                attrs: {
                                    className: "material-icons card-modal-mobile-close-icon"
                                },
                                text: "clear"
                            })]
                        })
                    ]
                }),
                h
            ]
        })]
    });
    document.body.appendChild(formcontent);
};

theme.showForm = function(params){
    var bodycontent;
    var h = DOMElement.div({});
    if (params.title !== undefined){
        h.appendChild(DOMElement.div({
            attrs: {
                style: {
                    textAlign: "center",
                    fontWeight: "bold",
                    paddingBottom: "20px"
                }
            },
            text: params.title
        }));
    }
    if (params.message !== undefined){
        h.appendChild(DOMElement.div({
            attrs: {
                style: {
                    textAlign: "center"
                }
            },
            text: params.message
        }));
    }
    else if (params.bodycontent !== undefined){
        h.appendChild(params.bodycontent);
    }
    var buttonElt = DOMElement.div({
        attrs: {
            align: "right",
            style: {
                paddingTop: "20px"
            }
        }
    });
    if (params.buttonList === undefined) params.buttonList = [];
    for (var i = 0; i < params.buttonList.length; i++){
        buttonElt.appendChild(DOMElement.span({
            attrs: {
                style: {
                    color: params.buttonList[i].color,
                    fontWeight: "bold",
                    marginLeft: "20px"
                },
                onclick: function(i) {
                    return function (event, me) {
                        bodycontent.remove();
                        params.func(i);
                    }
                } (i)
            },
            text: params.buttonList[i].text.toUpperCase()
        }));
    }
    if (params.buttonList.length > 0) h.appendChild(buttonElt);
    bodycontent = DOMElement.div({
        attrs: {
            style: {
                width: "100vw",
                height: "100vh",
                top: 0,
                position: "fixed",
                background: "#0000001a",
                zIndex: 888888
            }
        },
        children: [DOMElement.div({
            attrs: {
                style: {
                    width: "calc(100vw - 60px)",
                    maxWidth: "400px",
                    paddingTop: "20px",
                    paddingBottom: "10px",
                    backgroundColor: "white",
                    padding: "30px",
                    borderRadius: "15px",
                    margin: "50% auto",
                    boxShadow: "2px 2px 2px 0px #908787"
                }
            },
            children: [h]
        })]
    });
    document.body.appendChild(bodycontent);
};

ModalElement.alertNoLanguage = function (params) {
    var message, func;
    if (typeof params === 'string'){
        message = params;
    }
    else {
        message = params.message;
        func = params.func;
    }
    if (message === undefined) message = "";
    if (func === undefined) func = function () {};
    theme.showForm({
        message: message,
        buttonList: [
            {
                text: "OK",
                color: "var(--a-color)"
            }
        ],
        func: func
    });
};

ModalElement.alert = function (params) {
    ModalElement.close(-1);
    var message, func;
    if (typeof params === 'string'){
        message = params;
    }
    else {
        message = params.message;
        func = params.func;
    }
    if (message === undefined) message = "";
    if (func === undefined) func = function () {};
    theme.showForm({
        message: message,
        buttonList: [
            {
                text: (LanguageModule.defaultcode === undefined)? "OK" : LanguageModule.text("txt_ok"),
                color: "var(--a-color)"
            }
        ],
        func: func
    });
};

ModalElement.show_loading = function(){
    ModalElement.show({
       index: -1,
       bodycontent: absol.buildDom({
           tag: "spinnerico",
           style: {
               width: "100px",
               height: "100px"
           }
       }),
       overflow: "visible"
   });
};

ModalElement.question = function (params) {
    var message = params.message,title = params.title, h, func = params.onclick;
    if (message === undefined) message = "";
    if (title === undefined) title = "Question";
    if (func === undefined) func = function(){};
    theme.showForm({
        title: title,
        message: message,
        buttonList: [
            {
                text: LanguageModule.text("txt_yes"),
                color: "var(--a-color)"
            },
            {
                text: LanguageModule.text("txt_no"),
                color: "#aaaaaa"
            }
        ],
        func: func
    });
};

ModalElement.question2 = function (params) {
    var message = params.message,title = params.title, h, func = params.onclick;
    if (message === undefined) message = "";
    if (title === undefined) title = "Question";
    if (func === undefined) func = function(){};
    theme.showForm({
        title: title,
        message: message,
        buttonList: [
            {
                text: LanguageModule.text("txt_ok"),
                color: "var(--a-color)"
            },
            {
                text: LanguageModule.text("txt_cancel"),
                color: "#aaaaaa"
            }
        ],
        func: func
    });
};

theme.quickmenu = function(menuItems){
    var trigger = DOMElement.i({
        attrs: {
            className: "material-icons " +  DOMElement.dropdownclass.button,
            style: {
                fontSize: "20px",
                cursor: "pointer",
                color: "#929292"
            },
            onmouseout: function(event, me){
                me.style.color = "#929292";
            },
            onmouseover: function(event, me){
                me.style.color = "black";
            }
        },
        text: "more_vert"
    });
    absol.QuickMenu.showWhenClick(trigger, {items: menuItems}, 'auto', function (menuItem) {
        if (menuItem.cmd) menuItem.cmd();
    });
    return trigger;
};

theme.layoutInit = function(params){
    return absol.buildDom({
        class: 'am-application',
        child: [
            params.tabPanel,
            params.tabBar
        ]
    });
};

theme.menuHeader = function(params){
    var systemMenu = [
        {
            text: LanguageModule.text("txt_personal_profile"),
            icon: {
                tag: 'mmdirect',
                props: {
                    iconName: 'file-account-outline'
                }
            },
            cmd: params.cmd.personal_profile
        }
    ];
    systemMenu.push({
        text: LanguageModule.text("txt_log_out"),
        icon: {
            tag: "mmdirect",
            props: {
                iconName: "logout"
            }
        },
        cmd: params.cmd.logout
    });
    var listmenuhorizontal = [
        {
            text: LanguageModule.text("txt_activities"),
            items: [
                {
                    text: LanguageModule.text("txt_to_do"),
                    hidden: !params.cmd.activities,
                    icon: {
                        tag: "mmdirect",
                        props: {
                            iconName: "format-list-checks"
                        }
                    },
                    cmd: params.cmd.activities
                },
                {
                    text: LanguageModule.text("txt_partner_checkin"),
                    hidden: !params.cmd.partner_checkin,
                    icon: {
                        tag: "mmdirect",
                        props: {
                            iconName: "map-marker-check"
                        }
                    },
                    cmd: params.cmd.partner_checkin
                },
                {
                    text: LanguageModule.text("txt_work_checkin"),
                    hidden: !params.cmd.checkin,
                    icon: {
                        tag: "mmdirect",
                        props: {
                            iconName: "map-marker-check"
                        }
                    },
                    cmd: params.cmd.checkin
                },
                {
                    text: LanguageModule.text("txt_request_approval"),
                    hidden: !params.cmd.human_resource_request,
                    icon: {
                        tag: "mmdirect",
                        props: {
                            iconName: "application-edit"
                        }
                    },
                    cmd: params.cmd.human_resource_request
                }
            ]
        },
        {
            text: LanguageModule.text("txt_work_flows_and_crm"),
            icon: {
                tag: 'mmdirect',
                props: {
                    iconName: 'alpha-w-circle-outline'
                }
            },
            items: [
                {
                    text: LanguageModule.text("txt_work_flows"),
                    icon: {
                        tag: "mmdirect",
                        props: {
                            iconName: "stack-overflow"
                        }
                    },
                    cmd: params.cmd.work_flows
                },
                {
                    text: LanguageModule.text("txt_partner"),
                    icon: {
                        tag: "mmdirect",
                        props: {
                            iconName: "store"
                        }
                    },
                    cmd: params.cmd.partner
                },
                {
                    text: LanguageModule.text("txt_partner_check_in_list"),
                    icon: {
                        tag: "mmdirect",
                        props: {
                            iconName: "store-marker-outline"
                        }
                    },
                    cmd: params.cmd.partner_checkin_list
                },
                {
                    text: LanguageModule.text("txt_contact"),
                    icon: {
                        tag: "mmdirect",
                        props: {
                            iconName: "card-account-phone-outline"
                        }
                    },
                    cmd: params.cmd.contact
                }
            ]
        },
        {
            text: LanguageModule.text("txt_document_manager"),
            icon: {
                tag: 'mmdirect',
                props: {
                    iconName: 'text-box'
                }
            },
            cmd: params.cmd.document_manager
        }
    ];
    if (!window.isApp){
        listmenuhorizontal.push(
            {
                text: LanguageModule.text("txt_training"),
                icon: {
                    tag: 'mmdirect',
                    props: {
                        iconName: 'school-outline'
                    }
                },
                items: [
                    {
                        text: LanguageModule.text("txt_lesson"),
                        icon: {
                            tag: 'mmdirect',
                            props: {
                                iconName: 'book-open-blank-variant'
                            }
                        },
                        cmd: params.cmd.lesson
                    },
                    {
                        text: LanguageModule.text("txt_exercise"),
                        icon: {
                            tag: 'mmdirect',
                            props: {
                                iconName: 'format-list-checks'
                            }
                        },
                        cmd: params.cmd.exercise
                    },
                    {
                        text: LanguageModule.text("txt_examination"),
                        icon: {
                            tag: 'mmdirect',
                            props: {
                                iconName: 'format-list-checks'
                            }
                        },
                        cmd: params.cmd.examination
                    }
                ]
            }
        );
    }
    listmenuhorizontal.push(
        {
            text: LanguageModule.text("txt_bsc"),
            icon: {
                tag: 'mmdirect',
                props: {
                    iconName: 'gauge'
                }
            },
            items: [
                {
                    text: LanguageModule.text("txt_input_values"),
                    icon: {
                        tag: "mmdirect",
                        props: {
                            iconName: "button-cursor"
                        }
                    },
                    cmd: params.cmd.bsc_input_values
                }
            ]
        },
        {
            text: LanguageModule.text("txt_system"),
            icon: {
                tag: 'mmdirect',
                props: {
                    iconName: 'cog-outline'
                }
            },
            items: systemMenu
        }
    );
    var horizontalMenu = absol.buildDom({
        tag:'mmatmenu',
        props:{
            items: listmenuhorizontal
        },
        on:{
            press:function(event){
                var item = event.menuItem;
                if (item.cmd){
                    item.cmd();
                }
                this.activeTab = -1;
            }
        }
    });
    return horizontalMenu;
};

theme.formPersonalProfile = function(params){
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className:"material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: LanguageModule.text("txt_personal_profile"),
            commands: [
                {
                    icon:  DOMElement.i({
                        attrs: {
                            className:"material-icons"
                        },
                        text: "save"
                    })
                }
            ]
        },
        on: {
            action: params.cmdbutton.close,
            command: params.cmdbutton.save
        }
    });
    console.log(header);
    var fullname = theme.input({
        style: {
            width: "100%"
        },
        value: params.data.fullname
    });
    var username = theme.input({
        style: {
            width: "100%"
        },
        disabled: true,
        value: params.data.username
    });

    var language = absol.buildDom({
        tag: 'selectmenu',
        style: {
            display: "block",
            width: "100%"
        },
        props:{
            value: params.data.language,
            items: params.data.languageList
        }
    });
    var font_level_select = absol.buildDom({
        tag: 'selectmenu',
        style: {
            display: "block",
            width: "100%"
        },
        props:{
            value: params.data.font_level,
            items: contentModule.getFontLevelList()
        }
    });
    var email = theme.input({
        style: {
            width: "100%"
        },
        value: params.data.email
    });
    var comment = DOMElement.textarea({
        attrs: {
            className: "cardSimpleTextarea",
            style: {
                width: "100%",
                height: "100px"
            },
            value: params.data.comment
        }
    });
    var celloldpasswordlabel = DOMElement.div({
        attrs: {
            className: "card-mobile-label-form-edit",
            style: {
                display: "none"
            }
        },
        text: LanguageModule.text("txt_old_password")
    });
    var oldpassword = theme.input({
        style: {
            width: "100%",
            display: "none"
        }
    });
    var celloldpasswordinput = oldpassword;
    var cellnewpasswordlabel = DOMElement.div({
        attrs: {
            className: "card-mobile-label-form-edit",
            style: {
                display: "none"
            }
        },
        text: LanguageModule.text("txt_new_password")
    });
    var newpassword = theme.input({
        style: {
            width: "100%",
            display: "none"
        }
    });
    var cellnewpasswordinput = newpassword;
    var cellrepasswordlabel = DOMElement.div({
        attrs: {
            className: "card-mobile-label-form-edit",
            style: {
                display: "none"
            }
        },
        text: LanguageModule.text("txt_reinput_password_new")
    });
    var repassword = theme.input({
        style: {
            width: "100%",
            display: "none"
        }
    });
    var cellrepasswordinput = repassword;
    var logo_img = DOMElement.img({
        attrs: {
            style: {
                maxHeight: "128px",
                maxWidth: "128px",
                cursor: "pointer",
                display: "inline-block"
            },
            src: params.data.user_avatars
        }
    });
    var logo_cell = DOMElement.div({
        attrs: {
            align: "center",
            style: {
                height: "130px",
                backgroundColor: "#ffffff",
                textAlign: "center",
                cursor: "pointer",
                verticalAlign: "middle",
                display: "table-cell"
            },
            onclick: function(event, me){
                pizo.xmlModalDragImage.createModal(document.body,function(){
                   var src = pizo.xmlModalDragImage.imgUrl.src;
                   params.user_avatars = src;
                   logo_img.src = src;
               });
            }
        },
        children: [logo_img]
    });
    var change = 0;
    var singlePage = DOMElement.div({
        attrs: {style: {height: "100%"}},
        children: [
            header,
            DOMElement.div({
                attrs: {
                    className: "card-mobile-content"
                },
                children: [
                    DOMElement.div({
                        attrs: {
                            className: "card-mobile-label-form-edit-first"
                        },
                        text: LanguageModule.text("txt_username")
                    }),
                    username,
                    DOMElement.div({
                        attrs: {
                            className: "card-mobile-label-form-edit"
                        },
                        text: LanguageModule.text("txt_fullname")
                    }),
                    fullname,
                    DOMElement.div({
                        attrs: {style: {paddingTop: "var(--control-verticle-distance-2)"}},
                        children: [DOMElement.a({
                            attrs:{
                                style: {
                                    cursor: "pointer",
                                    color: "var(--a-color)"
                                },
                                onclick:  function(event,me){
                                    if (change == 0){
                                        change = 1;
                                        me.text = LanguageModule.text("txt_hide_change_password");
                                        celloldpasswordlabel.style.display = "";
                                        celloldpasswordinput.style.display = "";
                                        cellnewpasswordlabel.style.display = "";
                                        cellnewpasswordinput.style.display = "";
                                        cellrepasswordlabel.style.display = "";
                                        cellrepasswordinput.style.display = "";
                                        oldpassword.setAttribute('type', "password");
                                        oldpassword.focus();
                                        newpassword.setAttribute('type', "password");
                                        repassword.setAttribute('type', "password");
                                    }
                                    else {
                                        change = 0;
                                        me.text = LanguageModule.text("txt_change_password");
                                        celloldpasswordlabel.style.display = "none";
                                        celloldpasswordinput.style.display = "none";
                                        cellnewpasswordlabel.style.display = "none";
                                        cellnewpasswordinput.style.display = "none";
                                        cellrepasswordlabel.style.display = "none";
                                        cellrepasswordinput.style.display = "none";
                                        oldpassword.setAttribute('type', "text");
                                        newpassword.setAttribute('type', "text");
                                        repassword.setAttribute('type', "text");
                                        oldpassword.value = "";
                                        newpassword.value = "";
                                        repassword.value = "";
                                    }
                                }
                            },
                            text: LanguageModule.text("txt_change_password")
                        })]
                    }),
                    celloldpasswordlabel,
                    celloldpasswordinput,
                    cellnewpasswordlabel,
                    cellnewpasswordinput,
                    cellrepasswordlabel,
                    cellrepasswordinput,
                    DOMElement.div({
                        attrs: {
                            className: "card-mobile-label-form-edit"
                        },
                        text: LanguageModule.text("txt_email")
                    }),
                    email,
                    DOMElement.div({
                        attrs: {
                            className: "card-mobile-label-form-edit"
                        },
                        text: LanguageModule.text("txt_language")
                    }),
                    language,
                    // DOMElement.div({
                    //     attrs: {
                    //         className: "card-mobile-label-form-edit"
                    //     },
                    //     text: LanguageModule.text("txt_font_level")
                    // }),
                    // font_level_select,
                    DOMElement.div({
                        attrs: {
                            className: "card-mobile-label-form-edit"
                        },
                        text: LanguageModule.text("txt_avatar")
                    }),
                    DOMElement.div({
                        attrs: {
                            align: "center",
                            style: {
                                border: "1px solid #d6d6d6",
                                width: "130px",
                                borderRadius: "3px"
                            }
                        },
                        children: [
                            DOMElement.div({
                                attrs: {
                                    style: {
                                        display: "table-cell"
                                    }
                                },
                                children: [logo_cell]
                            })
                        ]
                    }),
                    DOMElement.div({
                        attrs: {
                            className: "card-mobile-label-form-edit"
                        },
                        text: LanguageModule.text("txt_comment")
                    }),
                    comment
                ]
            })
        ]
    });
    singlePage.getValue = function(){
        var emailadd = email.value.trim();
        if (!contentModule.filterEmail.test(emailadd)){
            ModalElement.alert({
                message: LanguageModule.text("war_txt_email_invalid"),
                func: function(){
                    email.focus();
                }
            });
            return;
        }
        if (fullname.value.trim() == ""){
            ModalElement.alert({
                message: LanguageModule.text("war_no_fullname"),
                func: function(){
                   fullname.focus();
                }
            });
            return;
        }
        var data = {
            fullname: fullname.value.trim(),
            email: emailadd,
            comment: comment.value.trim(),
            language: language.value,
            font_level: font_level_select.value,
            user_avatars: params.user_avatars
        };
        if (change == 1) {
            if (oldpassword.value.trim() == ""){
                ModalElement.alert({
                    message: LanguageModule.text("txt_old_password_is_null"),
                    func: function(){
                        oldpassword.focus();
                    }
                });
                return;
            }
            if (newpassword.value.trim() == ""){
                ModalElement.alert({
                    message: LanguageModule.text("txt_password_is_null"),
                    func: function(){
                        newpassword.focus();
                    }
                });
                return;
            }
            if (newpassword.value != repassword.value) {
                ModalElement.alert({
                    message: LanguageModule.text("war_password_nomatch"),
                    func: function(){
                        repassword.focus();
                    }
                });
                return;
            }
            data.newpassword = newpassword.value.trim();
            data.oldpassword = oldpassword.value.trim();
        }
        return data;
    };
    return singlePage;
};

theme.formConfirmPassword = function(params){
    ModalElement.showWindow({
        index: 1,
        closebutton: false,
        title: LanguageModule.text("txt_confirm_password"),
        bodycontent: DOMElement.table({
            data: [
                [
                    {},{},params.notification
                ],
                [
                    {
                        attrs: {style: {whiteSpace: "nowrap"}},
                        text: LanguageModule.text("txt_password")
                    },
                    {attrs: {style: {width: "10px"}}},
                    params.password_confirm
                ],
                [{attrs: {style: {height: "20px"}}}],
                [{
                    attrs :{
                        colSpan: 3,
                        align: "center"
                    },
                    children: [DOMElement.table({
                        data: [[
                            {
                                children: [theme.noneIconButton({
                                    onclick: params.func.ok,
                                    text: LanguageModule.text("txt_ok")
                                })]
                            },
                            {
                                attrs: {style: {width: carddone.menu.distanceButtonForm}}
                            },
                            {
                                children: [theme.noneIconButton({
                                    onclick: params.func.close,
                                    text: LanguageModule.text("txt_close")
                                })]
                            }
                        ]]
                    })]
                }]
            ]
        })
    });
};

theme.checkbox = function(params){
   var res = {
       tag: "checkbox",
       props: {},
       on: {}
   };
   if (params.class !== undefined) res.class = params.class;
   if (params.checked !== undefined) res.props.checked = params.checked;
   if (params.disabled !== undefined) res.props.disabled = params.disabled;
   if (params.text !== undefined) res.props.text = params.text;
   if (params.cursor !== undefined) res.props.cursor = params.cursor;
   if (params.onchange !== undefined) res.on.change = params.onchange;
   return absol.buildDom(res);
};

theme.input = function(params){
    var res = {
        class: "cardsimpleInput",
        tag: "input",
        props: {},
        on: {}
    };
    if (params.style !== undefined) res.style = params.style;
    if (params.value !== undefined) res.props.value = params.value;
    if (params.disabled !== undefined) res.props.disabled = params.disabled;
    if (params.onkeyup !== undefined) res.on.keyup = params.onkeyup;
    if (params.onkeydown !== undefined) res.on.keydown = params.onkeydown;
    if (params.onfocus !== undefined) res.on.focus = params.onfocus;
    if (params.onblur !== undefined) res.on.blur = params.onblur;
    if (params.align !== undefined) res.props.align = params.align;
    if (params.placeholder !== undefined) res.props.placeholder = params.placeholder;
    if (params.type !== undefined) res.props.type = params.type;
    if (params.autocomplete !== undefined) res.props.autocomplete = params.autocomplete;
    if (params.onchange !== undefined) res.props.onchange = params.onchange;
    return absol._(res);
};

ModalElement.showWindow = function (params) {
    var childs = [];
    if (params.title) childs.push(DOMElement.div({
        attrs: {
            align: "left",
            style: {
                minWidth: "200px",
                height: "40px",
                color: "black",
                font: "16px Helvetica, Arial, sans-serif",
                fontWeight: "bold"
            }
        },
        text: params.title
    }));
    if (params.bodycontent){
        childs.push(DOMElement.div({
            attrs: {
                style: {
                    maxWidth: "90vw",
                    maxHeight: "calc(90vh - 160px)",
                    overflow: "auto"
                }
            },
            children: [params.bodycontent]
        }));
    }
    params.buttonEltList = [];
    if (params.buttonlist && params.buttonlist.length > 0){
        var buttonList = [], color, btn;
        for (var i = 0; i < params.buttonlist.length; i++){
            switch (params.buttonlist[i].typeColor) {
                case "light":
                    color = "var(--a-color)";
                    break;
                case "dark":
                default:
                    color = "#aaaaaa";
            }
            btn = DOMElement.span({
                attrs: {
                    style: {
                        fontWeight: "bold",
                        marginLeft: "20px",
                        color: color
                    },
                    onclick: params.buttonlist[i].onclick
                },
                text: params.buttonlist[i].text.toUpperCase()
            });
            params.buttonEltList.push(btn);
            buttonList.push(btn);
        }
        childs.push(DOMElement.div({
            attrs: {
                align: "right",
                style: {
                    paddingTop: "20px",
                    marginBottom: "var(--control-verticle-distance-2)"
                }
            },
            children: buttonList
        }));
    }
    ModalElement.show({
        index: params.index,
        bodycontent: DOMElement.div({children: childs})
    });
};

ModuleManagerClass.register({
    name: "Common_view",
    prerequisites: ["ModalElement"]
});

VaKeR 2022