// ページ内リンク 1行に収まらない場合は行間を空ける
function contentsLinkStyle() {
    let firstOffsetTop = $('.contentsLink li').first().offset().top;
    $('.contentsLink li').each(function() {
        $(this).css('margin-top', (firstOffsetTop == $(this).offset().top) ? '0px' : '5px');
    });
}

window.onready = function () {
    // 会社概要をもっと見る
    var corpSummaryHeight = $('.corpSummary-description').children('div').height();
    if (corpSummaryHeight > 158) {
        $('.corpSummary-description').children('div').addClass('is-hidden');
        $('.corpSummary-description').append('<button class="more__button">もっと見る</button>');
    }
    $('.corpSummary-description .more__button').on('click', function () {
        $('.corpSummary-description').children('div').removeClass("is-hidden");
        $(this).remove();
    });

    // この企業の社風・環境をもっと見る
    var corpCultureHeight = $('.corpCulture-description').height();
    if (corpCultureHeight > 158) {
        $('.corpCulture-description').children('div').addClass('is-hidden');
        $('.corpCulture-description').append('<button class="more__button">もっと見る</button>');
    }
    $('.corpCulture-description .more__button').on('click', function () {
        $('.corpCulture-description').children('div').removeClass("is-hidden");
        $(this).remove();
    });

    // ページ内リンク
    contentsLinkStyle();
};

window.onresize = function(){
    // ページ内リンク
    contentsLinkStyle();
}

function reloadJobList(page_id = 1) {
    if ($('.filterSettingArea').is(':visible')) {
        // 設定中の職種条件の表示（SP）
        if ($('#result_search_form').find('.js-insertArea-occupation input[type="checkbox"]:checked').length == 0) {
            $('.filterSetting--head .condition-occupation').text('特に指定しない');
            $('.conditionBox .condition-occupation').text('指定する');
            $('.condition-occupation').next('.suffix').hide();
        } else {
            var displayCondition = $('#result_search_form .js-insertArea-occupation input[type="checkbox"]:checked').first().next('.searchDetail__checkboxText').text().replace(/\n/g, '').replace(/^.* - /g, '');
            $('.filterSetting--head .condition-occupation').text(displayCondition);
            $('.conditionBox .condition-occupation').text(displayCondition);

            if ($('#result_search_form').find('.js-insertArea-occupation input[type="checkbox"]:checked').length == 1) {
                $('.condition-occupation').next('.suffix').hide();
            } else {
                $('.condition-occupation').next('.suffix').show();
            }
        }

        // 設定中の勤務地条件の表示（SP）
        if ($('#result_search_form').find('.js-insertArea-location input[type="checkbox"]:checked').length == 0) {
            $('.filterSetting--head .condition-location').text('特に指定しない');
            $('.conditionBox .condition-location').text('指定する');
            $('.condition-location').next('.suffix').hide();
        } else {
            var displayCondition = $('#result_search_form .js-insertArea-location input[type="checkbox"]:checked').first().next('.searchDetail__checkboxText').text().replace(/\n/g, '');
            displayCondition = displayCondition.replace(/^([^-]+)-([^-]+)-([^-]+)$/, '$2 - $3');

            if (displayCondition == '海外 すべて') {
                displayCondition = '海外';
            }

            $('.filterSetting--head .condition-location').text(displayCondition);
            $('.conditionBox .condition-location').text(displayCondition);

            if ($('#result_search_form').find('.js-insertArea-location input[type="checkbox"]:checked').length == 1) {
                $('.condition-location').next('.suffix').hide();
            } else {
                $('.condition-location').next('.suffix').show();
            }
        }
    }

    // 絞り込み条件の取得
    var conditions = {};
    $('#result_search_form').find('input[type="checkbox"]:checked').each(function() {
        if (conditions[$(this).attr('name')] == undefined) {
            conditions[$(this).attr('name')] = [];
        }
        conditions[$(this).attr('name')].push($(this).val());
    });

    $.ajax({
        url: location.pathname,
        type: 'POST',
        dataType: 'html',
        data: {
            conditions: JSON.stringify(conditions),
            pageID: page_id
        }
    }).done(function(response) {
        let dom = $($.parseHTML(response));
        $('#jobListWrap').empty().append(dom.filter('#jobList')[0]);
        $('#recommendedListWrap').empty().append(dom.filter('#recommendedList')[0]);
        $('#titleArea a[href="#section-01"]').click();

        if ($(".recommended__item").length > 3) {
            if (is_mobile) {
                $(".recommended__list").after('<button class="recommended__button">もっと見る</button>');
                $('li.recommended__item:gt(2)').addClass('is-hidden');
                $('.recommended__button').on('click', function () {
                    $('li.recommended__item.is-hidden').removeClass('is-hidden');
                    $('.recommended__button').remove();
                });
            } else {
                $(".recommended__list").slick({
                    slidesToShow: 3,
                    slidesToScroll: 3,
                    prevArrow: '<button class="slide-arrow-prev"><img src="/resource/jobsearch/img/slide-arrow-prev.svg"></button>',
                    nextArrow: '<button class="slide-arrow-next"><img src="/resource/jobsearch/img/slide-arrow-next.svg"></button>',
                    variableWidth: true,
                    infinite: false,
                });
            }
        }
    }).fail(function(XMLHttpRequest, textStatus, errorThrown) {
    });

    return false;
}

$(function() {
    // ページ内スクロール
    if (is_mobile) {
        $('a[href^="#"]:not(.modalBtn)').click(function () {
            var href = $(this).attr("href");
            var target = $(href == "#" || href == "" ? 'html' : href);
            var position = (href == "#section-01" ? target.offset().top : target.offset().top - 80);
            $("html, body").animate({scrollTop: position}, 500, "swing");
            return false;
        });
    } else {
        $('a[href^="#"]:not(.modalBtn)').click(function () {
            var href = $(this).attr("href");
            var target = $(href == "#" || href == "" ? 'html' : href);
            var position = target.offset().top - 60;
            $("html, body").animate({scrollTop: position}, 500, "swing");
            return false;
        });
    }

    $('.js-clearButton').click(function(event) {
        // 設定中アイコンを非表示にする
        var icon = $(this).parents('#searchSide').find('span.setting');
        settingIconForResult(false, icon);

        $('.choseList').html('<li class="unspecified">指定なし</li>');
        $('a[href=#modal01]').text('職種を選択');
        $('a[href=#modal02]').text('勤務地を選択');
    });

    // 絞り込み条件の設定モーダルで「条件をクリア」ボタンを表示させる
    $('.searchDetailModalDetail__clear').show();

    // 条件を変更するモーダルを開く
    $('.filterSettingButton').click(function(event) {
        // 条件を変更するモーダル（SP）から条件設定モーダルを開いた場合は
        // 条件を設定した際に親画面に反映されないようにする
        $('.searchDetailModalDetail__button').addClass('temporary');

        // 設定中の条件をモーダル内の条件欄に反映させる
        var conditionTypes = ['occupation', 'location'];

        $.each(conditionTypes, function(_index, type) {
            var conditions = $('#result_search_form').find('.js-insertArea-'+type).children().not('.unspecified');

            if (conditions.length == 0) {
                $('.filterSettingModal .js-insertArea-'+type).html('<li class="searchDetail__selectItem">特に指定しない</li>');
            } else {
                $('.filterSettingModal .js-insertArea-'+type).html(conditions.clone());
            }
        });

        $(".footerFixArea__box").css("display","none");
        $(".filterSettingModalWrap").css({"display":"block", "top":$(window).scrollTop(), "opacity":1, "visibility":"visible"});
        $(".filterSettingModalBg").css("display","block");
        $(".filterSettingModal").css("display","block");
    });

    // 条件を変更するモーダル > 条件をクリアボタン押下
    $(".filterSetting__clear").click(function() {
        $('.filterSetting__selectList').html('<li class="searchDetail__selectItem">特に指定しない</li>');
    });

    // 条件を変更するモーダル > この条件で検索するボタン押下
    $(".filterSetting__search").click(function(event) {
        // 設定中の条件を親画面に反映させる
        var conditionTypes = ['occupation', 'location'];

        $.each(conditionTypes, function(_index, type) {
            var conditions = $('.filterSettingModal').find('.js-insertArea-'+type).children();
            $('#result_search_form .js-insertArea-'+type).html(conditions.clone());
        });

        reloadJobList(1);
    });

    // 条件を変更するモーダルを閉じる
    $(".filterSettingModalBg,.filterSettingModal__close,.filterSetting__search").click(function() {
        $('.searchDetailModalDetail__button').removeClass('filterLink temporary');
        $(".filterSettingModalWrap").css("display","none");
        $(".filterSettingModalBg").css("display","none");
        $(".footerFixArea__box").css("display","flex");
        $('html').removeAttr('style');
        $('html').css("top",$(window).scrollTop());
    });

    $('.sp.filterSettingArea .js-modalOpen').click(function(event) {
        // 条件をさらに絞り込むエリア（SP）から条件設定モーダルを開いた場合は
        // 条件を設定したタイミングで即時に絞り込みを実行するようにする
        $('.searchDetailModalDetail__button').addClass('filterLink');
    });

    $(document).on('click', '.filterLink', function(event) {
        event.preventDefault();
        reloadJobList(1);
        return false;
    });
});
