/**
 * header js for index.
 * ※Code is written mainly for dashboard and operationList.
 *
 * @since cms:1.4.3.2&1.4.3.3 web:1.0
 */

var HEADER = {};

/**
 * init
 */
HEADER.init = function () {
    $('#dspLoginId').text(ClientData.userInfo_loginId());

    $('#btnLogout').click(HEADER.logoutFunction);
};

/**
 * create url tree & show breadcrumbs list
 */
HEADER.urlTree = function () {
    const pathName = location.pathname;
    const htmlName = pathName.substring(pathName.indexOf('/') + 1);

    //now url tree
    let urlTree = session.getItem('urlTree');

    // check auth
    let authFlg = false;
    if ((!urlTree && htmlName == CONSTANT.URL_TREE_NAME.OPERATION_LIST) || htmlName == CONSTANT.URL_TREE_NAME.DASHBOARD) {
        authFlg = true;
        session.removeItem('urlTree');
    }
    urlList: for (const i in urlTree) {
        const urlHtmlName = urlTree[i].substring(0, pathName.indexOf('?'));
        findUrl: for (const passList in CONSTANT.URL_TREE_PASS) {
            for (const k in passList) {
                if (urlHtmlName == passList[k]) {
                    if (htmlName == passList[k]) {
                        authFlg = true;
                        break urlList;
                    }
                    break;
                } else {
                    break findUrl;
                }
            }
        }
    }

    if (authFlg) {
        session.removeItem('urlTree');
        let newUrlTree = {};
        const urlPath = htmlName + location.search;
        for (const i in urlTree) {
            const urlHtmlName = urlTree[i].substring(0, pathName.indexOf('?'));
            if (urlHtmlName == htmlName) {
                newUrlTree.push(urlPath);
            } else {
                newUrlTree.push(urlTree[i]);
            }
        }
        session.setItem('urlTree', newUrlTree);

        //show urlTree
        if ($('.breadcrumb').length) {
            for (const i in newUrlTree) {
                const urlHtmlName = newUrlTree[i].substring(0, pathName.indexOf('?'));
                if (urlHtmlName == htmlName) {
                    $('.breadcrumb').append('<li class="breadcrumb-item">作業一覧</li>');
                } else {
                    $('.breadcrumb').append('<li class="breadcrumb-item"><a href="task-list.html" class="text-decoration-none text-underline">作業一覧</a></li>');
                }
            }
        }
    } else {
        COMMON.avwScreenMove('index.html');
    }
};

/**
 * Direct home page setting
 * @param {*} pageId
 */
HEADER.goToHomePage = function (pageId) {
    DashboardSetting.getSettingData(function (settings) {
        if (settings.dashboardHome == 1) {
            HEADER.goDashboard();
        } else {
            HEADER.goOperationList();
        }
    });
};

/**
 * logout function
 */
HEADER.logoutFunction = function () {
    console.log('clicked logout');
    $('#msgModel').text(I18N.i18nText('msgLogoutConfirm'));

    $('#confirmYes').click(HEADER.processLogout);
};

/**
 * process logout
 */
HEADER.processLogout = function () {
    var params = {
        sid: ClientData.userInfo_sid(),
    };
    const url = COMMON.format(ClientData.conf_checkApiUrl(), ClientData.userInfo_accountPath()) + CONSTANT.URL.CMS.API.LOGOUT;
    COMMON.cmsAjax(
        url,
        params,
        false,
        function (data) {
            if (data.httpStatus == CONSTANT.HTTP_STATUS.OK) {
                SessionStorageUtils.clear();
                COMMON.userSetting().remove(CONSTANT.KEYS.userInfo_sid);
                COMMON.userSetting().remove(CONSTANT.KEYS.userInfo_sid_local);
                // Move to login screen
                //window.location = COMMON.ScreenIds.Login;
                COMMON.goUrlWithCurrentParams(CONSTANT.PAGE_NAME.LOGIN);
            } else {
                if (data.errorMessage) {
                    COMMON.displayAlert(data.errorMessage);
                } else {
                    COMMON.displayAlert('errorOccured');
                }
            }
        },
        function (xmlHttpRequest, txtStatus, errorThrown) {
            if (xmlHttpRequest.errorMessage) {
                COMMON.displayAlert(xmlHttpRequest.errorMessage);
            } else {
                COMMON.displayAlert('errorOccured');
            }
        },
    );
};

/**
 * Go page of operationList
 */
HEADER.goOperationList = function () {
    sessionStorage.activeHomePage = CONSTANT.PAGE_NAME.OPERATION_LIST;
    OL.init();
};

/**
 * Go page of dashboard
 */
HEADER.goDashboard = function () {
    sessionStorage.activeHomePage = CONSTANT.PAGE_NAME.DASHBOARD;
    COMMON.avwScreenMove('dashboard.html');
};

/**
 * Initialize with any navigation
 *
 * @param {String} bottomNav
 */
HEADER.activeInitBottomNav = function (bottomNav) {
    HEADER.inactiveAllBottomNav();
    HEADER.activeBottomNav(bottomNav);
};

/**
 * change inactive all footer bottom
 */
HEADER.inactiveAllBottomNav = function () {
    let navs = document.getElementsByClassName('bottom-nav');
    for (i = 0; i < navs.length; i++) {
        navs[i].className = navs[i].className.replace('text-primary', 'text-secondary');
        let img = navs[i].querySelector('img');
        if (img && img.getAttribute('data-inactive-src')) {
            img.src = img.getAttribute('data-inactive-src');
        }
    }
};

/**
 * Change specific footer bottom to active.
 *
 * @param {String} bottomNavId
 */
HEADER.activeBottomNav = function (bottomNavId) {
    let elm = $('#' + bottomNavId);
    if (typeof elm !== 'object') {
        console.log('HEADER.activeBottomNav:elm !== object:' + bottomNavId);
        return;
    }
    elm.removeClass('text-secondary');
    elm.addClass('text-primary');
    let img = elm.find('img')[0];
    if (img && img.getAttribute('data-src')) {
        img.src = img.getAttribute('data-src');
    }
};
