$(document).ready(function () {
    const adCode = 
        ''; //←の''の間に広告ユニットのコードを記入（改行とスペースの削除必須です）
    const entryContent = $(''); //←の''の間にコンテンツ本文を囲うclass名を記入（[.]も！）

    let entryContentHTML = entryContent.html();

    entryContentText = entryContentHTML.replace(
        /(<(script|style)[^>]*?>(.*?|\n*?.*?\n*?)<\/(script|style)>)|<.*?>|\(adsbygoogle = window.adsbygoogle \|\| \[\]\).push\({}\);/gim,
        ""
    );
    entryContentText = entryContentText.replace(
        /(\s+?)|(\n+?)|(\r+?)|(\t+?)/gim,
        ""
    );
    entryContentText = entryContentText.replace(/\[.+?\]/gim, "");

    let charLength = entryContentText.length;
    let htmlLength = entryContentHTML.length;

    let h2Tags = entryContent.find("h2");
    let h2Size = h2Tags.length;
    let h2Array = [];
    for (let i = 0; i < h2Tags.length; i++) {
        h2Array.push(h2Tags[i]);
    }

    let adSize = 0;
    if (charLength <= 2500) { //この文字数（2500）以下のときは広告を表示しない
        return;
    } else if ((charLength > 11800) && (h2Size >= 5)) { //11800文字より多いときは広告数３
        adSize = 3;
    } else if ((charLength > 7200) && (h2Size >= 4)) { //7200文字より多いときは広告数２
        adSize = 2;
    } else if ((charLength > 2500) && (h2Size >= 3)) { //2500文字より多いときは広告数１
        adSize = 1;
    } else {
        return;
    }

    let h2CharNumber = [];
    let indexOffset = 0;
    for (let i = 0; i < h2Size; i++){
        h2CharNumber[i] = entryContentHTML.indexOf("<h2",indexOffset);
        indexOffset = h2CharNumber[i] + 3
    }

    let resultInsertPosition_1 = 0;
    let resultInsertPosition_2 = 0;
    let resultInsertPosition_3 = 0;
    let slicePoint = 0;
    switch (adSize) {
        case 1:
            slicePoint = htmlLength / 2;
            for (let i = 0; i < h2CharNumber.length; i++){
                if (slicePoint < h2CharNumber[i]) {
                    resultInsertPosition_1 = i + 1;
                    break;
                }
            }
            break;
        case 2:
            slicePoint = htmlLength / 3;
            for (let i = 0; i < h2CharNumber.length; i++){
                if (slicePoint < h2CharNumber[i]) {
                    resultInsertPosition_1 = i + 1; 
                    break;
                }
            }
            slicePoint *= 2;
            for (let i = 0; i < h2CharNumber.length; i++){
                if (slicePoint < h2CharNumber[i]) {
                    resultInsertPosition_2 = i + 1; 
                    break;
                }
            }
            if(resultInsertPosition_1 == resultInsertPosition_2) {
                resultInsertPosition_2++;
            }
            break;
        case 3:
            slicePoint = htmlLength / 4;
            for (let i = 0; i < h2CharNumber.length; i++){
                if (slicePoint < h2CharNumber[i]) {
                    resultInsertPosition_1 = i + 1; 
                    break;
                }
            }
            slicePoint *= 2;
            for (let i = 0; i < h2CharNumber.length; i++){
                if (slicePoint < h2CharNumber[i]) {
                    resultInsertPosition_2 = i + 1; 
                    break;
                }
            }
            if(resultInsertPosition_1 == resultInsertPosition_2) {
                resultInsertPosition_2++;
            }
            slicePoint *= 1.5;
            for (let i = 0; i < h2CharNumber.length; i++){
                if (slicePoint < h2CharNumber[i]) {
                    resultInsertPosition_3 = i + 1;
                    break;
                }
            }
            if(resultInsertPosition_2 == resultInsertPosition_3) {
                resultInsertPosition_3++;
            }
            break;
    }
    resultInsertPosition_1--;
    resultInsertPosition_2--;
    resultInsertPosition_3--;

    switch (adSize) {
        case 1:
            if (resultInsertPosition_1 >= h2Size-1) {
                ($("h2").eq(resultInsertPosition_1 - 1).before(adCode));
            } else {
                ($("h2").eq(resultInsertPosition_1).before(adCode));                
            }
            break;
        case 2:
            ($("h2").eq(resultInsertPosition_1).before(adCode));
            if (resultInsertPosition_2 != h2Size-1) {
                ($("h2").eq(resultInsertPosition_2).before(adCode));
            }
            break;
        case 3:
            ($("h2").eq(resultInsertPosition_1).before(adCode));
            ($("h2").eq(resultInsertPosition_2).before(adCode));
            if (resultInsertPosition_3 != h2Size-1) {
                ($("h2").eq(resultInsertPosition_3).before(adCode));
            }
            break;
    }
});