var avatar_file;
var isBoggle = false;
$(window).resize(function () {
    onResizeScreen();
    // location = location;
});

function toFixed(str, currency) {
    currency = currency.toUpperCase();
    var size = (currency == 'GBP') ? 5 : 2;
    return Number(str).toFixed(size);
}
$(function () {
    onResizeScreen();
    ajaxGameRecentResult('powerball');
    ajaxGameRecentResult('powerladder');
    ajaxGameRecentResult('kenoladder');
    // ajaxGameRecentResult('pkenoladder');
    ajaxGameRecentResult('eospowerball');
    ajaxGameRecentResult('recentgamelist');

    //top board's item on click event;
    $('.freeboard > tbody > tr > td:first-child').on('click', function () {
        var news_id = $(this).data('id');
        location.href = BASE_URL + 'freeboard/detail?id=' + news_id + '&page=1';
    });
    //top board's item user onclick event;
    $('.freeboard > tbody > tr > td:nth-child(2)').on('click', function () {
        var user_id = $(this).data('id');
        gotoUserHome(user_id);
    });

    //top board's item onclick event;
    $('.humor > tbody > tr > td:first-child').on('click', function () {
        var news_id = $(this).data('id');
        location.href = BASE_URL + 'humor/detail?id=' + news_id + '&page=1';
    });

    //top board's item user onclick event;
    $('.humor > tbody > tr > td:nth-child(2)').on('click', function () {
        var user_id = $(this).data('id');
        gotoUserHome(user_id);
    });

    //top board's item onclick event;
    $('.video > tbody > tr > td:first-child').on('click', function () {
        var news_id = $(this).data('id');
        location.href = BASE_URL + 'video/detail?id=' + news_id + '&page=1';
    });

    //top board's item user onclick event;
    $('.video > tbody > tr > td:nth-child(2)').on('click', function () {
        var user_id = $(this).data('id');
        gotoUserHome(user_id);
    });

    $('.photo img').on('click', function () {
        var news_id = $(this).data('id');
        location.href = BASE_URL + 'photo/detail?id=' + news_id + '&page=1';
    });

    $('#password').on('keypress', function (e) {
        if (e.keyCode == '13') {
            $('.btn-login').trigger('click');
        }
    });
    //login button clicke event;
    $('.btn-login').on('click', function () {
        var email = $('#email').val();
        var passwd = $('#password').val();
        if (email == '') {
            alert('이메일을 입력하세요!');
            return;
        }
        if (passwd == '') {
            alert('비밀번호를 입력하세요!');
            return;
        }

        App.post(BASE_URL + "auth/ajaxLogin", { email: email, password: passwd }, function (resp) {
            if (resp.status == 0) {
                setTimeout(function () {
                    location.href = BASE_URL;
                });
            } else {
                alert(resp.msg);
            }
        }, "json");
    });

    //game data table more button click event;
    let tr_count = 1;
    $('.table-anal a.btn-more').on('click', function () {
        if ($(this).hasClass('btn-more3')) return;
        if ($(this).hasClass('more')) {

            //console.log($('.table-anal > tbody > tr:gt(0)').length)
            $('.table-anal > tbody > tr').each(function (index, item) {
                if (index <= 15 * tr_count) {
                    $(this).removeClass('hidden');

                }
            });
            tr_count++;
            if ($('.table-anal > tbody > tr:gt(0)').length <= tr_count * 15) {
                $(this).removeClass('more').addClass('less');
                $(this).html('데이터 감추기');
            }
        } else {
            $(this).removeClass('less').addClass('more');
            $(this).html('데이터 더 보기');
            var i = 0;

            $('.table-anal > tbody > tr').each(function () {
                if (i++ > 14) {
                    $(this).addClass('hidden');
                }
            });
        }
    });
    $('#tab_powerball > a').on('click', function () {
        if ($('#tab_powerball > div').css("display") == "none") {
            $('#tab_powerball > div').css("display", "block");
        } else {
            $('#tab_powerball > div').css("display", "none");
        }
    });
    //img file on click and upload user avatar img event;
    $('#imgFile').on('change', function (evt) {
        var files = evt.target.files;
        avatar_file = files[0];
        if (avatar_file.size / 1024 / 1024 > 1) {
            alert('최대 용량 1MB입니다.');
            return;
        }
        var reader = new FileReader();
        reader.onload = (function () {
            return function (e) {
                $("#user_avatar").attr("src", e.target.result);
            };
        })(avatar_file);
        reader.readAsDataURL(avatar_file);
    });

    //like button click event;
    $('.icon-like').on('click', function () {
        var id = $(this).data('id');
        var type = $(this).data('type');
        if (id == undefined || type == undefined) {
            App.notify('error', '추천할수 없습니다.');
            return;
        }
        var user = $(this).data('user');

        var url = BASE_URL + type + "/ajaxLike";
        App.post(url, { id: id, user: user }, function (resp) {
            if (resp.status == App.SUCCESS) {
                App.notify('success', resp.msg);
            } else {
                App.notify('error', resp.msg);
            }
        }, 'json');
    });

    $('#chat_area').on('change', function () {
        var chatData = $(this).val();
        $('.chat-length').html(chatData.length + "/80");
    });

    $('.day-prev').on('click', function () {
        var dateVal = $(this).siblings('b').html();
        var a = new Date(dateVal).getTime();
        a -= 3600 * 24 * 1000;
        var prevA = new Date(a).getTime();
        $(this).siblings('b').html(App.getDate(prevA));
        $("input[name='date']").val(App.getDate(prevA));
        $("#searchForm").submit();
    });
    $('.day-next').on('click', function () {
        var dateVal = $(this).siblings('b').html();
        var a = new Date(dateVal).getTime();
        a += 3600 * 24 * 1000;
        var prevA = new Date(a).getTime();
        $(this).siblings('b').html(App.getDate(prevA));
        $("input[name='date']").val(App.getDate(prevA));
        $("#searchForm").submit();
    });

    $(".fa-refresh").on('click', function () {
        $('#searchForm').submit()
    });
});

function upload_avatar() {
    var formData = new FormData();
    if ($("#imgFile")[0].files[0] != undefined) {
        formData.append("avatar", $("#imgFile")[0].files[0]);
    } else {
        App.notify('error', '프로필 이미지를 선택하세요.');
        return;
    }
    if (App.confirm('프로필이미지 이용권을 사용 하시겠습니까?')) {
        App.post(BASE_URL + "home/uploadAvatar", formData, function (resp) {
            if (resp.status == App.SUCCESS) {
                App.notify('success', '등록되었습니다.');
                // $('#user_avatar').attr('src', BASE_URL + 'uploads/user/' + resp.data.data);
                // $('.login-info .avatar-wrapper img').attr('src', BASE_URL + 'uploads/user/' + resp.data.data);
                setTimeout(function () {
                    location.reload();
                }, 1000);
            } else {
                App.notify('error', resp.msg);
            }
        }, 'json', undefined, true);
    }
}

function selectImg() {
    $("#imgFile").trigger('click');
}
function ajaxGameRecentResult(gameType) {
    if (gameType == undefined)
        gameType = "powerball";
    App.post(BASE_URL + "home/ajaxGameRecentResult", { gameType: gameType }, function (resp) {
        if (resp.status == App.SUCCESS) {
            var gameData = resp.data;
            if (gameType == 'powerball') {
                var powerball_recent = new powerball_data();
                powerball_recent._initPowerball(gameData);
            } else if (gameType == 'powerladder') {
                var powerladder_recent = new powerladder_data();
                powerladder_recent._initPowerladder(gameData);
            } else if (gameType == 'kenoladder') {
                var kenoladder_recent = new kenoladder_data();
                kenoladder_recent._initKenoladder(gameData);
            } else if (gameType == 'pkenoladder') {
                var pkenoladder_recent = new pkenoladder_data();
                pkenoladder_recent._initPkenoladder(gameData);
            } else if (gameType == 'eospowerball') {
                var eospowerball_recent = new eospowerball_data();
                eospowerball_recent._initEosPowerball(gameData);
            } else if (gameType == 'recentgamelist') {
                var recentGameListResult = new Array();
                for (let i=0, j=0; i < gameData.length; i++) {
                    var game_name = gameData[i].game_name;
                    var data = gameData[i].data;
                    var html = recentgamelistProc(game_name, data);
                    if (html != '') recentGameListResult[j++] = html;
                }
                var i = 0;
                $('#gamelist-recent .recent-results').each(function () {
                    html = recentGameListResult[i++];
                    $(this).html(html);
                });
            }
        }
    }, 'json');
}

function recentgamelistProc(gameType, data) {
    var html = '';
    if (gameType == 'powerball') {
        var powerball_recent = new powerball_data();
        html = powerball_recent.RecentListPowerball(data);
    } else if (gameType == 'powerladder' || gameType == 'pladder') {
        var powerladder_recent = new powerladder_data();
        html = powerladder_recent.RecentListPowerladder(data);
    } else if (gameType == 'kenoladder') {
        var kenoladder_recent = new kenoladder_data();
        html = kenoladder_recent.RecentListKenoladder(data);
    } else if (gameType == 'pkenoladder') {
        var pkenoladder_recent = new pkenoladder_data();
        html = pkenoladder_recent.RecentListPkenoladder(data);
    } else if (gameType == 'eospowerball' || gameType == 'eos_powerball_1' || gameType == 'eos_powerball_2' || gameType == 'eos_powerball_3' || gameType == 'eos_powerball_4' || gameType == 'eos_powerball_5' ||
                gameType == 'rdomboxpowerball' || gameType == 'rdombox_powerball_1' || gameType == 'rdombox_powerball_2' || gameType == 'rdombox_powerball_3' || gameType == 'rdombox_powerball_4' || gameType == 'rdombox_powerball_5') {
        var powerball_game_recent = new powerball_game_data();
        html = powerball_game_recent.RecentListPowerball_game(data, gameType);
    }
    return (html);
}

function ajaxGameTable(gameType) {
    if (gameType == undefined)
        gameType = "powerball";
    App.post(BASE_URL + "home/ajaxGameTable", { gameType: gameType }, function (resp) {
        if (resp.status == App.SUCCESS) {
            var gameData = resp.data;
            if (gameType == 'powerball') {
                var powerball_dataByDay = new powerball_data();
                powerball_dataByDay.initPowerball(gameData);
            } else if (gameType == 'powerladder') {
                var powerladder_dataByDay = new powerladder_data();
                powerladder_dataByDay.initPowerball(gameData);
            }
        }
    }, 'json');
}

function onResizeScreen() {
    // if(isBoggle){
    //     //for bogle powerball trapon;
    //     var width = $('#boglepowerball_trapon').width();    
    //     var ratio = width / 820;
    //     var height = ratio * 2300;
    //     $('#boglepowerball_trapon').height(height + 20);
    //     $('.iframe-container > iframe').each(function(){
    //         $(this).css('transform', 'scale(' + ratio + ')');
    //         $(this).css('transform-origin', 'left top');
    //     });
    //     $('.iframe-container').width(ratio * 820);
    //     $('.main-menu > li.dropdown').each(function(){
    //         var menuWidth = $(this).width() + 1;
    //         $(this).children('ul.dropdown-menu').css('min-width', menuWidth);
    //     });
    // }else{
    var width = $('#powerball_trapon').width();
    var ratio = width / 820;
    var height = ratio * 630;
    $('#powerball_trapon').height(height + 20);
    $('.iframe-container > iframe').each(function () {
        $(this).css('transform', 'scale(' + ratio + ')');
        $(this).css('transform-origin', 'left top');
    });
    $('.iframe-container').width(ratio * 820);
    $('.main-menu > li.dropdown').each(function () {
        var menuWidth = $(this).width() + 1;
        $(this).children('ul.dropdown-menu').css('min-width', menuWidth);
    });
    // }
}

function gotoUserHome(user_id) {
    var w = $(window).width() / 1.3;
    var h = $(window).height();
    window.open(BASE_URL + "userhome/showUserhome?user_id=" + user_id, "_blank", "width=" + w + ",height=" + h + ",menubar=no,location=no,toolbar=no,left=0,top=0");
}

function gotoRankingPage() {
    var w = $(window).width() - 100;
    var h = $(window).height() - 150;
    window.open(BASE_URL + "ranking/chatingRanking", "_blank", "width=" + w + ",height=" + h + ",menubar=no,location=no,toolbar=no,left=0,top=0");
}
function gotoChatingPage(room_id, game_type) {
    var w = $(window).width() - 100;
    var h = $(window).height() - 150;
    window.open(BASE_URL + "ranking/room?room_id=" + room_id + "&game_type=" + game_type, "_blank", "width=" + w + ",height=" + h + ",menubar=no,location=no,toolbar=no,left=0,top=0");
}
function randomExp() {
    if (App.confirm('랜덤 경험치 상자를 사용 하시겠습니까?')) {
        App.post(BASE_URL + 'item/randomExp', {}, function (data) {
            var code = data.status;
            var exp = data.rExp;
            if (code == 0) {
                App.notify('success', exp + ' 경험치를 획득하였습니다.');
                setTimeout(function () {
                    location.reload();
                }, 1000);
            } else {
                App.notify('error', data.msg);
            }
        }, 'json');
    }
}
function levelupItem() {
    if (App.confirm('레벨업 부스터 아이템을 사용 하시겠습니까?')) {
        App.post(BASE_URL + 'item/use_levelup', { item_rel_id: 'levelup' }, function (data) {
            var status = data.status;
            var expired_at = data.expired_at;
            if (status == 0) {
                App.notify('success', expired_at.substr(0, 10) + ' 까지 경험치를 2배로 획득할수 있습니다.');
                setTimeout(function () {
                    location.reload();
                }, 1500);
            } else {
                App.notify('error', data.msg);
            }
        }, 'json');
    }
}
function super_levelupItem() {
    if (App.confirm('초강력 레벨업 부스터 아이템을 사용 하시겠습니까?')) {
        App.post(BASE_URL + 'item/use_levelup', { item_rel_id: 'super_levelup' }, function (data) {
            var status = data.status;
            var expired_at = data.expired_at;
            if (status == 0) {
                App.notify('success', expired_at.substr(0, 10) + ' 까지 경험치를 4배로 획득할수 있습니다.');
                setTimeout(function () {
                    location.reload();
                }, 1500);
            } else {
                App.notify('error', data.msg);
            }
        }, 'json');
    }
}

function super_chat() {
    if (App.confirm('슈퍼채팅 이용권 아이템을 사용 하시겠습니까?')) {
        App.post(BASE_URL + 'item/use_super_chat', {}, function (data) {
            var status = data.status;
            var expired_at = data.expired_at;
            if (status == 0) {
                App.notify('success', expired_at.substr(0, 10) + ' 까지 슈퍼채팅 효과를 볼수 있습니다.');
                setTimeout(function () {
                    location.reload();
                }, 2000);
            } else {
                App.notify('error', data.msg);
            }
        }, 'json');
    }
}
function sendMemoByItemModal() {
    $('#modal-memo').modal();
}
function randomMemoModal() {
    $('#modal-random-memo').modal();
}
function profileImgModal() {
    $('#modal-profile-avatar').modal();
}
var powerball_data = function () {
    var MAX_ROUND = 288;
    var STAND_POWER_UNOVER = 4.5;
    var STAND_UNOVER = 72.5;
    var POWERBALL_SECTION = [{ 'min': 0, 'max': 2, 'val': 'A' }, { 'min': 3, 'max': 4, 'val': 'B' },
    { 'min': 5, 'max': 6, 'val': 'C' }, { 'min': 7, 'max': 9, 'val': 'D' }];
    var BALL_SECTION = [{ 'min': 15, 'max': 35, 'val': 'A' }, { 'min': 36, 'max': 49, 'val': 'B' },
    { 'min': 50, 'max': 57, 'val': 'C' }, { 'min': 58, 'max': 65, 'val': 'D' },
    { 'min': 66, 'max': 78, 'val': 'E' }, { 'min': 79, 'max': 130, 'val': 'F' }];
    var BALL_SML = [{ 'min': 15, 'max': 64, 'val': '소', '_val': 'small', 'style': 'br-green color-green', 'style_short': 'bg-green' },
    { 'min': 65, 'max': 80, 'val': '중', '_val': 'middle', 'style': 'br-blue color-blue', 'style_short': 'bg-blue' },
    { 'min': 81, 'max': 130, 'val': '대', '_val': 'large', 'style': 'br-red color-red', 'style_short': 'bg-red' },];
    var objSmlCnt = { 'small': 0, 'middle': 0, 'large': 0 };
    var _data = [];
    var nPOddCnt = 0;
    var nPEvenCnt = 0;
    var nPOverCnt = 0;
    var nPUnderCnt = 0;
    var nBOddCnt = 0;
    var nBEvenCnt = 0;
    var nBOverCnt = 0;
    var nBUnderCnt = 0;
    var nCntPowerOddevenPlop = 0;
    var nCntPowerUnoverPlop = 0;
    var nCntBallOddevenPlop = 0;
    var nCntBallUnoverPlop = 0;
    var nCntPowerOddevenBroken = 0;
    var nCntPowerUnoverBroken = 0;
    var nCntBallOddevenBroken = 0;
    var nCntBallUnoverBroken = 0;
    var nCntMaxPowerOdd = 0;
    var nCntMaxPowerEven = 0;
    var nCntMaxPowerUnder = 0;
    var nCntMaxPowerOver = 0;
    var nCntMaxBallOdd = 0;
    var nCntMaxBallEven = 0;
    var nCntMaxBallUnder = 0;
    var nCntMaxBallOver = 0;
    var objMaxCtnSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
    this._initPowerball = function (data) {
        _data = data;
        analyzePowerball();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        _data = data;
        $('.round-result').show();
        analyzePowerball();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (data, game_type = "p_oddeven", sround, eround, sdate, edate) {
        _data = data;
        $('.round-result').show();
        setRoundTable(game_type, sround, eround, sdate, edate);
    }
    this.initPowerball = function (dataByDay) {
        // _data = dataByDay;
        Object.assign(_data, dataByDay);
        analyzePowerball();
        calculatePlop();
        setPowerOddEvenTableData();
        setPowerUnOverTableData();
        setBallOddEvenTableData();
        setBallUnOverTableData();
        setStatistics();
        setGameDataTable();
    };

    this.RecentListPowerball = function (data) {
        _data = data;
        analyzePowerball();
        var html = setRecentListResult();
        return (html);
    };

    var analyzePowerball = function () {
        var nFlagSML = '';
        var objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['p_oddeven'] == 0) {
                _data[i]['p_oddeven'] = '홀';
                _data[i]['p_oddeven_style'] = 'bg-blue';
                nPOddCnt++;
            } else {
                _data[i]['p_oddeven'] = '짝';
                _data[i]['p_oddeven_style'] = 'bg-red';
                nPEvenCnt++;
            }
            if (_data[i]['p_unover'] == 1) {
                _data[i]['p_unover'] = '오버';
                _data[i]['p_unover_short'] = '오';
                _data[i]['p_unover_style'] = 'bg-red'//'br-red color-red';
                _data[i]['p_unover_style1'] = 'br-red color-red';
                _data[i]['p_unover_style_short'] = 'bg-red';
                nPOverCnt++;
            } else {
                _data[i]['p_unover'] = '언더';
                _data[i]['p_unover_short'] = '언';
                _data[i]['p_unover_style'] = 'bg-blue'//'br-blue color-blue';
                _data[i]['p_unover_style1'] = 'br-blue color-blue';
                _data[i]['p_unover_style_short'] = 'bg-blue';
                nPUnderCnt++;
            }

            for (var ii = 0; ii < POWERBALL_SECTION.length; ii++) {
                if (_data[i]['powerball'] <= POWERBALL_SECTION[ii].max &&
                    _data[i]['powerball'] >= POWERBALL_SECTION[ii].min) {
                    _data[i]['p_section'] = POWERBALL_SECTION[ii].val;
                    break;
                }
            }
            var ball_arr = _data[i]['ball'].split(',');
            var nBall = 0;

            for (var j = 0; j < ball_arr.length; j++) {
                nBall += ball_arr[j] * 1;
            }
            _data[i]['sum'] = nBall;
            for (var ii = 0; ii < BALL_SECTION.length; ii++) {
                if (nBall <= BALL_SECTION[ii].max &&
                    nBall >= BALL_SECTION[ii].min) {
                    _data[i]['n_section'] = BALL_SECTION[ii].val;
                    break;
                }
            }
            if (_data[i]['n_oddeven'] == 0) {
                _data[i]['n_oddeven'] = '홀';
                _data[i]['n_oddeven_style'] = 'bg-blue';
                nBOddCnt++;
            } else {
                _data[i]['n_oddeven'] = '짝';
                _data[i]['n_oddeven_style'] = 'bg-red';
                nBEvenCnt++;
            }
            if (_data[i]['n_unover'] == 1) {
                _data[i]['n_unover'] = '오버';
                _data[i]['n_unover_short'] = '오';
                _data[i]['n_unover_style'] = 'bg-red'//'br-red color-red';
                _data[i]['n_unover_style1'] = 'br-red color-red';
                _data[i]['n_unover_style_short'] = 'bg-red';
                nBOverCnt++;
            } else {
                _data[i]['n_unover'] = '언더';
                _data[i]['n_unover_short'] = '언';
                _data[i]['n_unover_style'] = 'bg-blue'//'br-blue color-blue';
                _data[i]['n_unover_style1'] = 'br-blue color-blue';
                _data[i]['n_unover_style_short'] = 'bg-blue';
                nBUnderCnt++;
            }
            for (var ii = 0; ii < BALL_SML.length; ii++) {
                if (nBall <= BALL_SML[ii].max && nBall >= BALL_SML[ii].min) {
                    _data[i]['n_sml'] = BALL_SML[ii].val;
                    _data[i]['n_sml_style'] = BALL_SML[ii].style;
                    _data[i]['n_sml_style_short'] = BALL_SML[ii].style_short;
                    objSmlCnt[BALL_SML[ii]._val]++;
                    if (nFlagSML == BALL_SML[ii]._val) {
                        objCntSeqSML[BALL_SML[ii]._val]++;
                        objMaxCtnSeqSML[BALL_SML[ii]._val] = Math.max(objMaxCtnSeqSML[BALL_SML[ii]._val], objCntSeqSML[BALL_SML[ii]._val]);
                    } else {
                        nFlagSML = BALL_SML[ii]._val;
                        objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
                    }
                    break;
                }
            }
        }
    };
    var calculatePlop = function () {
        /*var power_plop_oddeven = [];
        var power_plop_unover = [];
        var ball_plop_oddeven = [];
        var ball_plop_unover = [];
        for(var i = 0; i < _data.length; i++){
            if(i == 0){
                if(_data[i]['p_oddeven'] != _data[i + 1]['p_oddeven'] && 
                _data[i + 1]['p_oddeven'] != _data[i + 2]['p_oddeven']){
                    if(!power_plop_oddeven.includes(i)){
                        power_plop_oddeven.push(i, i + 1);
                    }
                }
                if(_data[i]['p_unover'] != _data[i + 1]['p_unover'] && 
                _data[i + 1]['p_unover'] != _data[i + 2]['p_unover']){
                    if(!power_plop_unover.includes(i)){
                        power_plop_unover.push(i, i + 1);
                    }
                }
                if(_data[i]['n_oddeven'] != _data[i + 1]['n_oddeven'] && 
                _data[i + 1]['n_oddeven'] != _data[i + 2]['n_oddeven']){
                    if(!ball_plop_oddeven.includes(i)){
                        ball_plop_oddeven.push(i, i + 1);
                    }
                }
                if(_data[i]['n_unover'] != _data[i + 1]['n_unover'] && 
                _data[i + 1]['n_unover'] != _data[i + 2]['n_unover']){
                    if(!ball_plop_unover.includes(i)){
                        ball_plop_unover.push(i, i + 1);
                    }
                }
            }else if(i == _data.length - 2){
                if(_data[i]['p_oddeven'] != _data[i - 1]['p_oddeven'] &&
                _data[i - 1]['p_oddeven'] != _data[i - 2]['p_oddeven']){
                    if(!power_plop_oddeven.includes(i)){
                        power_plop_oddeven.push(i, i + 1);
                    }
                }
                if(_data[i]['p_unover'] != _data[i - 1]['p_unover'] &&
                _data[i - 1]['p_unover'] != _data[i - 2]['p_unover']){
                    if(!power_plop_unover.includes(i)){
                        power_plop_unover.push(i, i + 1);
                    }
                }
                if(_data[i]['n_oddeven'] != _data[i - 1]['n_oddeven'] &&
                _data[i - 1]['n_oddeven'] != _data[i - 2]['n_oddeven']){
                    if(!ball_plop_oddeven.includes(i)){
                        ball_plop_oddeven.push(i, i + 1);
                    }
                }
                if(_data[i]['n_unover'] != _data[i - 1]['n_unover'] &&
                _data[i - 1]['n_unover'] != _data[i - 2]['n_unover']){
                    if(!ball_plop_unover.includes(i)){
                        ball_plop_unover.push(i, i + 1);
                    }
                }
            }else if(i == _data.length - 1){
                continue;
            }else{
                if(_data[i - 1]['p_oddeven'] != _data[i]['p_oddeven'] &&
                _data[i]['p_oddeven'] != _data[i + 1]['p_oddeven'] &&
                _data[i + 1]['p_oddeven'] != _data[i + 2]['p_oddeven']){
                    if(!power_plop_oddeven.includes(i)){
                        power_plop_oddeven.push(i, i + 1);
                    }
                }
                if(_data[i - 1]['p_unover'] != _data[i]['p_unover'] &&
                _data[i]['p_unover'] != _data[i + 1]['p_unover'] &&
                _data[i + 1]['p_unover'] != _data[i + 2]['p_unover']){
                    if(!power_plop_unover.includes(i)){
                        power_plop_unover.push(i, i + 1);
                    }
                }
                if(_data[i - 1]['n_oddeven'] != _data[i]['n_oddeven'] &&
                _data[i]['n_oddeven'] != _data[i + 1]['n_oddeven'] &&
                _data[i + 1]['n_oddeven'] != _data[i + 2]['n_oddeven']){
                    if(!ball_plop_oddeven.includes(i)){
                        ball_plop_oddeven.push(i, i + 1);
                    }
                }
                if(_data[i - 1]['n_unover'] != _data[i]['n_unover'] &&
                _data[i]['n_unover'] != _data[i + 1]['n_unover'] &&
                _data[i + 1]['n_unover'] != _data[i + 2]['n_unover']){
                    if(!ball_plop_unover.includes(i)){
                        ball_plop_unover.push(i, i + 1);
                    }
                }
            }
        }
        nCntPowerOddevenPlop = power_plop_oddeven.length / 2;
        nCntPowerUnoverPlop = power_plop_unover.length / 2;
        nCntBallOddevenPlop = ball_plop_oddeven.length / 2;
        nCntBallUnoverPlop = ball_plop_unover.length / 2;*/

    };
    var setPowerOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_oddeven'] == _data[i - 1]['p_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntPowerOddevenBroken = Math.max(nCntPowerOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxPowerEven = Math.max(nCntMaxPowerEven, cnt_per_col);
            } else {
                nCntMaxPowerOdd = Math.max(nCntMaxPowerOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nPOddCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerOdd + '연속');
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nPEvenCnt + '번 (' + per_even + '%) ' + nCntMaxPowerEven + '연속');
        $('#powerball_oddeven #plop_result').html((nCntPowerOddevenBroken - nCntPowerOddevenPlop) + '번');
        $('#powerball_oddeven #broken_result').html((nCntPowerOddevenBroken + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('.poddeven').scrollLeft($('.poddeven table.poddeven').width());
    };
    var setPowerUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_unover'] == _data[i - 1]['p_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
                nCntPowerUnoverBroken = Math.max(nCntPowerUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxPowerUnder = Math.max(nCntMaxPowerUnder, cnt_per_col);
            } else {
                nCntMaxPowerOver = Math.max(nCntMaxPowerOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nPUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerUnder + '연속');
        var per_even = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nPOverCnt + '번 (' + per_even + '%) ' + nCntMaxPowerOver + '연속');
        $('#powerball_underover #plop_unover').html((nCntPowerUnoverBroken - nCntPowerUnoverPlop) + '번');
        $('#powerball_underover #broken_unover').html((nCntPowerUnoverBroken + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_oddeven'] == _data[i - 1]['n_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntBallOddevenBroken = Math.max(nCntBallOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxBallEven = Math.max(nCntMaxBallEven, cnt_per_col);
            } else {
                nCntMaxBallOdd = Math.max(nCntMaxBallOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBOddCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #odd_ball').html(nBOddCnt + '번 (' + per_odd + '%) ' + nCntMaxBallOdd + '연속');
        var per_even = (100 * nBEvenCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #even_ball').html(nBEvenCnt + '번 (' + per_even + '%) ' + nCntMaxBallEven + '연속');
        $('#ball_oddeven #plop_ball').html((nCntBallOddevenBroken - nCntBallOddevenPlop) + '번');
        $('#ball_oddeven #broken_ball').html((nCntBallOddevenBroken + 1) + '번');
        $('#ball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_unover'] == _data[i - 1]['n_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
                nCntBallUnoverBroken = Math.max(nCntBallUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxBallUnder = Math.max(nCntMaxBallUnder, cnt_per_col);
            } else {
                nCntMaxBallOver = Math.max(nCntMaxBallOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBUnderCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #under_result').html(nBUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxBallUnder + '연속');
        var per_even = (100 * nBOverCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #over_result').html(nBOverCnt + '번 (' + per_even + '%) ' + nCntMaxBallOver + '연속');
        $('#ball_underover #plop_unover').html((nCntBallUnoverBroken - nCntBallUnoverPlop) + '번');
        $('#ball_underover #broken_unover').html((nCntBallUnoverBroken + 1) + '번');
        $('#ball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setStatistics = function () {
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        var p_oddeven_html = ``;
        if (nPOddCnt > nPEvenCnt) {
            p_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">  
                                    <div class="progress">
                                        <span class="color-gray">${nPEvenCnt}(${per_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPOddCnt}(${per_odd}%)</span>
                                    </div>
                                </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            p_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">  
                                    <div class="progress">
                                        <span class="color-gray">${nPOddCnt}(${per_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPEvenCnt}(${per_even}%)</span>
                                    </div>
                                </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }

        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var per_under = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        var per_over = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        var p_unover_html = ``;
        if (nPUnderCnt > nPOverCnt) {
            p_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nPOverCnt}(${per_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPUnderCnt}(${per_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            p_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nPUnderCnt}(${per_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPOverCnt}(${per_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }

        $('.powerball-chart .under-over').html(p_unover_html);

        var per_n_odd = (100 * nBOddCnt / MAX_ROUND).toFixed(2);
        var per_n_even = (100 * nBEvenCnt / MAX_ROUND).toFixed(2);
        var n_oddeven_html = ``;
        if (nBOddCnt > nBEvenCnt) {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBEvenCnt}(${per_n_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBOddCnt}(${per_n_odd}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBOddCnt}(${per_n_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBEvenCnt}(${per_n_even}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }

        $('#ball_chart .odd-even').html(n_oddeven_html);
        var per_n_over = (100 * nBOverCnt / MAX_ROUND).toFixed(2);
        var per_n_under = (100 * nBUnderCnt / MAX_ROUND).toFixed(2);
        var n_unover_html = ``;
        if (nBUnderCnt > nBOverCnt) {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBOverCnt}(${per_n_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBUnderCnt}(${per_n_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBUnderCnt}(${per_n_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBOverCnt}(${per_n_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }

        $('#ball_chart .under-over').html(n_unover_html);

        var per_large = (100 * objSmlCnt['large'] / MAX_ROUND).toFixed(2);
        var per_middle = (100 * objSmlCnt['middle'] / MAX_ROUND).toFixed(2);
        var per_small = (100 * objSmlCnt['small'] / MAX_ROUND).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', objSmlCnt['large']],
                    ['d2', objSmlCnt['middle']],
                    ['d3', objSmlCnt['small']]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${objSmlCnt['large']}회(${per_large}%) ${objMaxCtnSeqSML['large'] + 1}연속`,
                    d2: `중: ${objSmlCnt['middle']}회(${per_middle}%) ${objMaxCtnSeqSML['middle'] + 1}연속`,
                    d3: `소: ${objSmlCnt['small']}회(${per_small}%) ${objMaxCtnSeqSML['small'] + 1}연속`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntPOdd = 0, nCntPEven = 0;
        var nCntNOdd = 0, nCntNEven = 0;
        var nCntPUnder = 0, nCntPOver = 0;
        var nCntNUnder = 0, nCntNOver = 0;
        var nCntNLarge = 0, nCntNMedium = 0, nCntNSmall = 0;
        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['p_oddeven'] == '홀') {
                nCntPOdd++;
            }
            if (_data[i]['p_unover'] == '언더') {
                nCntPUnder++;
            }
            if (_data[i]['n_oddeven'] == '짝') {
                nCntNOdd++;
            }
            if (_data[i]['n_unover'] == '오버') {
                nCntNOver++;
            }
            if (_data[i]['n_sml'] == '대') {
                nCntNLarge++;
            } else if (_data[i]['n_sml'] == '중') {
                nCntNMedium++;
            }
        }
        nCntPEven = nCnt - nCntPOdd;
        nCntPOver = nCnt - nCntPUnder;
        nCntNEven = nCnt - nCntNOdd;
        nCntNUnder = nCnt - nCntNOver;
        nCntNSmall = nCnt - nCntNLarge - nCntNMedium;

        var per_odd = (100 * nCntPOdd / nCnt).toFixed(2);
        var per_even = (100 * nCntPEven / nCnt).toFixed(2);
        var p_oddeven_html = '';
        if (nCntPOdd >= nCntPEven) {
            p_oddeven_html = `<div class="text-center">
                <div class="title-odd">
                    <span class="circle bg-blue"><p>홀</p></span>
                </div>
                <div class="odd-even-progress">
                    <div class="progress">
                        <span class="color-gray">${nCntPEven}(${per_even}%)</span>
                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_odd}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntPOdd}(${per_odd}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even">
                    <span class="circle no-fill br-gray"><p>짝</p></span>
                </div>
            </div>`;
        } else {
            p_oddeven_html = `<div class="text-center">
                <div class="title-odd">
                    <span class="circle no-fill br-gray"><p>홀</p></span>
                </div>
                <div class="odd-even-progress">
                    <div class="progress">
                        <span class="color-gray">${nCntPOdd}(${per_odd}%)</span>
                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_even}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntPEven}(${per_even}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even">
                    <span class="circle bg-red"><p>짝</p></span>
                </div>
            </div>`;
        }
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var per_under = (100 * nCntPUnder / nCnt).toFixed(2);
        var per_over = (100 * nCntPOver / nCnt).toFixed(2);
        var p_unover_html = "";
        if (nCntPUnder >= nCntPOver) {
            p_unover_html = `<div class="text-center">
                                <div class="title-odd">
                                    <span class="circle bg-blue"><p>언더</p></span>
                                </div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntPOver}(${per_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntPUnder}(${per_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            p_unover_html = `<div class="text-center">
                                <div class="title-odd">
                                    <span class="circle no-fill br-gray"><p>언더</p></span>
                                </div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntPUnder}(${per_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntPOver}(${per_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }
        $('.powerball-chart .under-over').html(p_unover_html);

        var per_n_odd = (100 * nCntNOdd / nCnt).toFixed(2);
        var per_n_even = (100 * nCntNEven / nCnt).toFixed(2);
        var n_oddeven_html = '';
        if (nCntNOdd > nCntNEven) {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNEven}(${per_n_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNOdd}(${per_n_odd}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNOdd}(${per_n_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNEven}(${per_n_even}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }
        $('#nball_chart .odd-even').html(n_oddeven_html);
        var per_n_over = (100 * nCntNOver / nCnt).toFixed(2);
        var per_n_under = (100 * (nCntNUnder) / nCnt).toFixed(2);
        var n_unover_html = '';
        if (nCntNUnder > nCntNOver) {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNOver}(${per_n_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNUnder}(${per_n_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNUnder}(${per_n_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNOver}(${per_n_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }
        $('#nball_chart .under-over').html(n_unover_html);

        var per_large = (100 * nCntNLarge / nCnt).toFixed(2);
        var per_middle = (100 * nCntNMedium / nCnt).toFixed(2);
        var per_small = (100 * (nCntNSmall) / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', nCntNLarge],
                    ['d2', nCntNMedium],
                    ['d3', nCntNSmall]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${nCntNLarge}회(${per_large}%)`,
                    d2: `중: ${nCntNMedium}회(${per_middle}%)`,
                    d3: `소: ${nCntNSmall}회(${per_small}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var n_ball = _data[i]['ball'].split(',').join(' ');
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['round']}(${_data[i]['date_round']})</td>
                        <td>${_data[i]['powerball']}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['p_section']}</p></span></td>
                        <td><span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['p_unover_style1']}"><p>${_data[i]['p_unover']}</p></span></td>
                        <td>${n_ball}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['sum']}</p></span></td>
                        <td><span class="circle no-fill br-gray color-dark"><p>${_data[i]['n_section']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['n_sml_style']}"><p>${_data[i]['n_sml']}</p></span></td>
                        <td><span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p> </span></td>
                        <td><span class="circle no-fill ${_data[i]['n_unover_style1']}"><p>${_data[i]['n_unover']}</p></span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };
    var setRecentResult = function () {
        var i = 0;
        $('#powerball-recent .recent-results').each(function () {
            var html = `<div class="game-title">파워볼 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                            <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                            <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };

    var setRecentListResult = function () {
        var i = 0;
        var html = `<div class="game-title">파워볼 ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                        <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                        <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                    </div>`;
        return (html);
    };

    var setRoundTable = function (game_type, sround, eround, sdate, edate) {
        var tblData = [];
        for (var i = 0; i < _data.length; i++) {
            var reg_date = _data[i]['reg_date'];
            if (tblData[reg_date] == undefined) {
                tblData[reg_date] = [];
            }
            var value = "";
            if (game_type == 'p_oddeven' || game_type == 'n_oddeven') {
                if (_data[i][game_type] == '1') {
                    value = "<td><span class='circle bg-red'><p>짝</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-blue'><p>홀</p></span></td>";
                }
            } else if (game_type == 'p_unover' || game_type == 'n_unover') {
                if (_data[i][game_type] == '0') {
                    value = "<td><span class='circle bg-blue'><p>언더</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-red'><p>오버</p></span></td>";
                }
            }
            tblData[reg_date].push({ 'date_round': _data[i]['date_round'], 'value': value });
        }

        html = "<tr><td>회차</td>";
        for (var i = sround; i <= eround; i++) {
            html += `<td>${i}</td>`;
        }
        html += "</tr>";
        for (var j = edate; j >= sdate; j = j - 3600 * 24) {
            var tr = "<tr>";
            var dtDate = new Date(j * 1000);
            var dtMonth = dtDate.getMonth() + 1 < 10 ? "0" + (dtDate.getMonth() + 1) : dtDate.getMonth() + 1;
            var dtDay = dtDate.getDate() < 10 ? "0" + dtDate.getDate() : dtDate.getDate();
            var reg_date = dtDate.getFullYear() + '-' + dtMonth + '-' + dtDay;
            tr += `<td>${reg_date}</td>`;
            if (tblData[reg_date] == undefined || tblData[reg_date] == "") {
                for (var jj = sround; jj <= eround; jj++) {
                    tr += '<td></td>';
                }
                html += tr;
                continue;
            }
            for (var i = sround; i <= eround; i++) {
                for (var k = 0; k < tblData[reg_date].length; k++) {
                    if (tblData[reg_date][k].date_round == i) {
                        tr += tblData[reg_date][k].value;
                    }
                }
            }
            tr += "</tr>";
            html += tr;
        }

        $('.tbl-round').html(html);

        var oddTr = "<tr><td><span class='circle bg-blue'><p>홀</p></span></td>";
        var evenTr = "<tr><td><span class='circle bg-red'><p>짝</p></span></td>";
        if (game_type == 'p_unover' || game_type == 'n_unover') {
            oddTr = "<tr><td><span class='circle bg-blue'><p>언더</p></span></td>";
            evenTr = "<tr><td><span class='circle bg-red'><p>오버</p></span></td>";
        }
        for (var i = 0; i < eround - sround + 1; i++) {
            var nCnt = nCntOdd = nCntEven = 0;
            $('.tbl-round td:nth-child(' + (i + 2) + ')').each(function () {
                if ($(this).children('span').hasClass('bg-red')) {
                    nCnt++;
                    nCntEven++;
                } else if ($(this).children('span').hasClass('bg-blue')) {
                    nCnt++;
                    nCntOdd++;
                }
            });
            var fPerOdd = (nCntOdd / nCnt * 100).toFixed(0);
            var fPerEven = (nCntEven / nCnt * 100).toFixed(0);
            if (fPerOdd == "NaN") {
                fPerOdd = 0;
            }
            if (fPerEven == "NaN") {
                fPerEven = 0;
            }
            oddTr += `<td>${nCntOdd}번<br/>${fPerOdd}%</td>`;
            evenTr += `<td>${nCntEven}번<br/>${fPerEven}%</td>`;
        }
        oddTr += "</tr>";
        evenTr += "</tr>";
        $('.tbl-round').append(oddTr + evenTr);
        // html += oddTr + evenTr;
    }
};


var rdomboxpowerball_data = function () {
    var MAX_ROUND = 0;
    var STAND_POWER_UNOVER = 4.5;
    var STAND_UNOVER = 72.5;
    var POWERBALL_SECTION = [{ 'min': 0, 'max': 2, 'val': 'A' }, { 'min': 3, 'max': 4, 'val': 'B' },
    { 'min': 5, 'max': 6, 'val': 'C' }, { 'min': 7, 'max': 9, 'val': 'D' }];
    var BALL_SECTION = [{ 'min': 15, 'max': 35, 'val': 'A' }, { 'min': 36, 'max': 49, 'val': 'B' },
    { 'min': 50, 'max': 57, 'val': 'C' }, { 'min': 58, 'max': 65, 'val': 'D' },
    { 'min': 66, 'max': 78, 'val': 'E' }, { 'min': 79, 'max': 130, 'val': 'F' }];
    var BALL_SML = [{ 'min': 15, 'max': 64, 'val': '소', '_val': 'small', 'style': 'br-green color-green', 'style_short': 'bg-green' },
    { 'min': 65, 'max': 80, 'val': '중', '_val': 'middle', 'style': 'br-blue color-blue', 'style_short': 'bg-blue' },
    { 'min': 81, 'max': 130, 'val': '대', '_val': 'large', 'style': 'br-red color-red', 'style_short': 'bg-red' },];
    var objSmlCnt = { 'small': 0, 'middle': 0, 'large': 0 };
    var _data = [];
    var nPOddCnt = 0;
    var nPEvenCnt = 0;
    var nPOverCnt = 0;
    var nPUnderCnt = 0;
    var nBOddCnt = 0;
    var nBEvenCnt = 0;
    var nBOverCnt = 0;
    var nBUnderCnt = 0;
    var nCntPowerOddevenPlop = 0;
    var nCntPowerUnoverPlop = 0;
    var nCntBallOddevenPlop = 0;
    var nCntBallUnoverPlop = 0;
    var nCntPowerOddevenBroken = 0;
    var nCntPowerUnoverBroken = 0;
    var nCntBallOddevenBroken = 0;
    var nCntBallUnoverBroken = 0;
    var nCntMaxPowerOdd = 0;
    var nCntMaxPowerEven = 0;
    var nCntMaxPowerUnder = 0;
    var nCntMaxPowerOver = 0;
    var nCntMaxBallOdd = 0;
    var nCntMaxBallEven = 0;
    var nCntMaxBallUnder = 0;
    var nCntMaxBallOver = 0;
    var objMaxCtnSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
    this._initPowerball = function (data) {
        _data = data;
        MAX_ROUND = _data.length;
        analyzePowerball();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        _data = data;
        MAX_ROUND = _data.length;
        $('.round-result').show();
        analyzePowerball();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (data, game_type = "p_oddeven", sround, eround, sdate, edate) {
        _data = data;
        MAX_ROUND = _data.length;
        $('.round-result').show();
        setRoundTable(game_type, sround, eround, sdate, edate);
    }
    this.initPowerball = function (dataByDay) {
        // _data = dataByDay;
        Object.assign(_data, dataByDay);
        MAX_ROUND = _data.length;
        analyzePowerball();
        calculatePlop();
        setPowerOddEvenTableData();
        setPowerUnOverTableData();
        setBallOddEvenTableData();
        setBallUnOverTableData();
        setStatistics();
        setGameDataTable();
    };
    this.RecentListPowerladder = function (data) {
        Object.assign(_data, data);
        analyzePowerladder();
        var html = setRecentListResult();
        return (html);
    };

    var analyzePowerball = function () {
        var nFlagSML = '';
        var objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['p_oddeven'] == 0) {
                _data[i]['p_oddeven'] = '홀';
                _data[i]['p_oddeven_style'] = 'bg-blue';
                nPOddCnt++;
            } else {
                _data[i]['p_oddeven'] = '짝';
                _data[i]['p_oddeven_style'] = 'bg-red';
                nPEvenCnt++;
            }
            if (_data[i]['p_unover'] == 1) {
                _data[i]['p_unover'] = '오버';
                _data[i]['p_unover_short'] = '오';
                _data[i]['p_unover_style'] = 'bg-red'//'br-red color-red';
                _data[i]['p_unover_style1'] = 'br-red color-red';
                _data[i]['p_unover_style_short'] = 'bg-red';
                nPOverCnt++;
            } else {
                _data[i]['p_unover'] = '언더';
                _data[i]['p_unover_short'] = '언';
                _data[i]['p_unover_style'] = 'bg-blue'//'br-blue color-blue';
                _data[i]['p_unover_style1'] = 'br-blue color-blue';
                _data[i]['p_unover_style_short'] = 'bg-blue';
                nPUnderCnt++;
            }

            for (var ii = 0; ii < POWERBALL_SECTION.length; ii++) {
                if (_data[i]['powerball'] <= POWERBALL_SECTION[ii].max &&
                    _data[i]['powerball'] >= POWERBALL_SECTION[ii].min) {
                    _data[i]['p_section'] = POWERBALL_SECTION[ii].val;
                    break;
                }
            }
            var ball_arr = _data[i]['ball'].split(',');
            var nBall = 0;
            for (var j = 0; j < ball_arr.length; j++) {
                nBall += ball_arr[j] * 1;
            }
            _data[i]['sum'] = nBall;
            for (var ii = 0; ii < BALL_SECTION.length; ii++) {
                if (nBall <= BALL_SECTION[ii].max &&
                    nBall >= BALL_SECTION[ii].min) {
                    _data[i]['n_section'] = BALL_SECTION[ii].val;
                    break;
                }
            }
            if (_data[i]['n_oddeven'] == 0) {
                _data[i]['n_oddeven'] = '홀';
                _data[i]['n_oddeven_style'] = 'bg-blue';
                nBOddCnt++;
            } else {
                _data[i]['n_oddeven'] = '짝';
                _data[i]['n_oddeven_style'] = 'bg-red';
                nBEvenCnt++;
            }
            if (_data[i]['n_unover'] == 1) {
                _data[i]['n_unover'] = '오버';
                _data[i]['n_unover_short'] = '오';
                _data[i]['n_unover_style'] = 'bg-red'//'br-red color-red';
                _data[i]['n_unover_style1'] = 'br-red color-red';
                _data[i]['n_unover_style_short'] = 'bg-red';
                nBOverCnt++;
            } else {
                _data[i]['n_unover'] = '언더';
                _data[i]['n_unover_short'] = '언';
                _data[i]['n_unover_style'] = 'bg-blue'//'br-blue color-blue';
                _data[i]['n_unover_style1'] = 'br-blue color-blue';
                _data[i]['n_unover_style_short'] = 'bg-blue';
                nBUnderCnt++;
            }
            for (var ii = 0; ii < BALL_SML.length; ii++) {
                if (nBall <= BALL_SML[ii].max && nBall >= BALL_SML[ii].min) {
                    _data[i]['n_sml'] = BALL_SML[ii].val;
                    _data[i]['n_sml_style'] = BALL_SML[ii].style;
                    _data[i]['n_sml_style_short'] = BALL_SML[ii].style_short;
                    objSmlCnt[BALL_SML[ii]._val]++;
                    if (nFlagSML == BALL_SML[ii]._val) {
                        objCntSeqSML[BALL_SML[ii]._val]++;
                        objMaxCtnSeqSML[BALL_SML[ii]._val] = Math.max(objMaxCtnSeqSML[BALL_SML[ii]._val], objCntSeqSML[BALL_SML[ii]._val]);
                    } else {
                        nFlagSML = BALL_SML[ii]._val;
                        objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
                    }
                    break;
                }
            }
        }
    };
    var calculatePlop = function () {
    };
    var setPowerOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_oddeven'] == _data[i - 1]['p_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntPowerOddevenBroken = Math.max(nCntPowerOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxPowerEven = Math.max(nCntMaxPowerEven, cnt_per_col);
            } else {
                nCntMaxPowerOdd = Math.max(nCntMaxPowerOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nPOddCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerOdd + '연속');
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nPEvenCnt + '번 (' + per_even + '%) ' + nCntMaxPowerEven + '연속');
        $('#powerball_oddeven #plop_result').html((nCntPowerOddevenBroken - nCntPowerOddevenPlop) + '번');
        $('#powerball_oddeven #broken_result').html((nCntPowerOddevenBroken + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('.poddeven').scrollLeft($('.poddeven table.poddeven').width());
    };
    var setPowerUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_unover'] == _data[i - 1]['p_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
                nCntPowerUnoverBroken = Math.max(nCntPowerUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxPowerUnder = Math.max(nCntMaxPowerUnder, cnt_per_col);
            } else {
                nCntMaxPowerOver = Math.max(nCntMaxPowerOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nPUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerUnder + '연속');
        var per_even = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nPOverCnt + '번 (' + per_even + '%) ' + nCntMaxPowerOver + '연속');
        $('#powerball_underover #plop_unover').html((nCntPowerUnoverBroken - nCntPowerUnoverPlop) + '번');
        $('#powerball_underover #broken_unover').html((nCntPowerUnoverBroken + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_oddeven'] == _data[i - 1]['n_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntBallOddevenBroken = Math.max(nCntBallOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxBallEven = Math.max(nCntMaxBallEven, cnt_per_col);
            } else {
                nCntMaxBallOdd = Math.max(nCntMaxBallOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBOddCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #odd_ball').html(nBOddCnt + '번 (' + per_odd + '%) ' + nCntMaxBallOdd + '연속');
        var per_even = (100 * nBEvenCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #even_ball').html(nBEvenCnt + '번 (' + per_even + '%) ' + nCntMaxBallEven + '연속');
        $('#ball_oddeven #plop_ball').html((nCntBallOddevenBroken - nCntBallOddevenPlop) + '번');
        $('#ball_oddeven #broken_ball').html((nCntBallOddevenBroken + 1) + '번');
        $('#ball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_unover'] == _data[i - 1]['n_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
                nCntBallUnoverBroken = Math.max(nCntBallUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxBallUnder = Math.max(nCntMaxBallUnder, cnt_per_col);
            } else {
                nCntMaxBallOver = Math.max(nCntMaxBallOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBUnderCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #under_result').html(nBUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxBallUnder + '연속');
        var per_even = (100 * nBOverCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #over_result').html(nBOverCnt + '번 (' + per_even + '%) ' + nCntMaxBallOver + '연속');
        $('#ball_underover #plop_unover').html((nCntBallUnoverBroken - nCntBallUnoverPlop) + '번');
        $('#ball_underover #broken_unover').html((nCntBallUnoverBroken + 1) + '번');
        $('#ball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setStatistics = function () {
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        var p_oddeven_html = ``;
        if (nPOddCnt > nPEvenCnt) {
            p_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">  
                                    <div class="progress">
                                        <span class="color-gray">${nPEvenCnt}(${per_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPOddCnt}(${per_odd}%)</span>
                                    </div>
                                </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            p_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">  
                                    <div class="progress">
                                        <span class="color-gray">${nPOddCnt}(${per_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPEvenCnt}(${per_even}%)</span>
                                    </div>
                                </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }

        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var per_under = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        var per_over = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        var p_unover_html = ``;
        if (nPUnderCnt > nPOverCnt) {
            p_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nPOverCnt}(${per_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPUnderCnt}(${per_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            p_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nPUnderCnt}(${per_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPOverCnt}(${per_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }

        $('.powerball-chart .under-over').html(p_unover_html);

        var per_n_odd = (100 * nBOddCnt / MAX_ROUND).toFixed(2);
        var per_n_even = (100 * nBEvenCnt / MAX_ROUND).toFixed(2);
        var n_oddeven_html = ``;
        if (nBOddCnt > nBEvenCnt) {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBEvenCnt}(${per_n_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBOddCnt}(${per_n_odd}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBOddCnt}(${per_n_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBEvenCnt}(${per_n_even}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }

        $('#ball_chart .odd-even').html(n_oddeven_html);
        var per_n_over = (100 * nBOverCnt / MAX_ROUND).toFixed(2);
        var per_n_under = (100 * nBUnderCnt / MAX_ROUND).toFixed(2);
        var n_unover_html = ``;
        if (nBUnderCnt > nBOverCnt) {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBOverCnt}(${per_n_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBUnderCnt}(${per_n_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBUnderCnt}(${per_n_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBOverCnt}(${per_n_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }

        $('#ball_chart .under-over').html(n_unover_html);

        var per_large = (100 * objSmlCnt['large'] / MAX_ROUND).toFixed(2);
        var per_middle = (100 * objSmlCnt['middle'] / MAX_ROUND).toFixed(2);
        var per_small = (100 * objSmlCnt['small'] / MAX_ROUND).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', objSmlCnt['large']],
                    ['d2', objSmlCnt['middle']],
                    ['d3', objSmlCnt['small']]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${objSmlCnt['large']}회(${per_large}%) ${objMaxCtnSeqSML['large'] + 1}연속`,
                    d2: `중: ${objSmlCnt['middle']}회(${per_middle}%) ${objMaxCtnSeqSML['middle'] + 1}연속`,
                    d3: `소: ${objSmlCnt['small']}회(${per_small}%) ${objMaxCtnSeqSML['small'] + 1}연속`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntPOdd = 0, nCntPEven = 0;
        var nCntNOdd = 0, nCntNEven = 0;
        var nCntPUnder = 0, nCntPOver = 0;
        var nCntNUnder = 0, nCntNOver = 0;
        var nCntNLarge = 0, nCntNMedium = 0, nCntNSmall = 0;
        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['p_oddeven'] == '홀') {
                nCntPOdd++;
            }
            if (_data[i]['p_unover'] == '언더') {
                nCntPUnder++;
            }
            if (_data[i]['n_oddeven'] == '짝') {
                nCntNOdd++;
            }
            if (_data[i]['n_unover'] == '오버') {
                nCntNOver++;
            }
            if (_data[i]['n_sml'] == '대') {
                nCntNLarge++;
            } else if (_data[i]['n_sml'] == '중') {
                nCntNMedium++;
            }
        }
        nCntPEven = nCnt - nCntPOdd;
        nCntPOver = nCnt - nCntPUnder;
        nCntNEven = nCnt - nCntNOdd;
        nCntNUnder = nCnt - nCntNOver;
        nCntNSmall = nCnt - nCntNLarge - nCntNMedium;

        var per_odd = (100 * nCntPOdd / nCnt).toFixed(2);
        var per_even = (100 * nCntPEven / nCnt).toFixed(2);
        var p_oddeven_html = '';
        if (nCntPOdd >= nCntPEven) {
            p_oddeven_html = `<div class="text-center">
                <div class="title-odd">
                    <span class="circle bg-blue"><p>홀</p></span>
                </div>
                <div class="odd-even-progress">
                    <div class="progress">
                        <span class="color-gray">${nCntPEven}(${per_even}%)</span>
                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_odd}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntPOdd}(${per_odd}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even">
                    <span class="circle no-fill br-gray"><p>짝</p></span>
                </div>
            </div>`;
        } else {
            p_oddeven_html = `<div class="text-center">
                <div class="title-odd">
                    <span class="circle no-fill br-gray"><p>홀</p></span>
                </div>
                <div class="odd-even-progress">
                    <div class="progress">
                        <span class="color-gray">${nCntPOdd}(${per_odd}%)</span>
                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_even}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntPEven}(${per_even}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even">
                    <span class="circle bg-red"><p>짝</p></span>
                </div>
            </div>`;
        }
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var per_under = (100 * nCntPUnder / nCnt).toFixed(2);
        var per_over = (100 * nCntPOver / nCnt).toFixed(2);
        var p_unover_html = "";
        if (nCntPUnder >= nCntPOver) {
            p_unover_html = `<div class="text-center">
                                <div class="title-odd">
                                    <span class="circle bg-blue"><p>언더</p></span>
                                </div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntPOver}(${per_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntPUnder}(${per_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            p_unover_html = `<div class="text-center">
                                <div class="title-odd">
                                    <span class="circle no-fill br-gray"><p>언더</p></span>
                                </div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntPUnder}(${per_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntPOver}(${per_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }
        $('.powerball-chart .under-over').html(p_unover_html);

        var per_n_odd = (100 * nCntNOdd / nCnt).toFixed(2);
        var per_n_even = (100 * nCntNEven / nCnt).toFixed(2);
        var n_oddeven_html = '';
        if (nCntNOdd > nCntNEven) {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNEven}(${per_n_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNOdd}(${per_n_odd}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNOdd}(${per_n_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNEven}(${per_n_even}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }
        $('#nball_chart .odd-even').html(n_oddeven_html);
        var per_n_over = (100 * nCntNOver / nCnt).toFixed(2);
        var per_n_under = (100 * (nCntNUnder) / nCnt).toFixed(2);
        var n_unover_html = '';
        if (nCntNUnder > nCntNOver) {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNOver}(${per_n_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNUnder}(${per_n_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNUnder}(${per_n_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNOver}(${per_n_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }
        $('#nball_chart .under-over').html(n_unover_html);

        var per_large = (100 * nCntNLarge / nCnt).toFixed(2);
        var per_middle = (100 * nCntNMedium / nCnt).toFixed(2);
        var per_small = (100 * (nCntNSmall) / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', nCntNLarge],
                    ['d2', nCntNMedium],
                    ['d3', nCntNSmall]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${nCntNLarge}회(${per_large}%)`,
                    d2: `중: ${nCntNMedium}회(${per_middle}%)`,
                    d3: `소: ${nCntNSmall}회(${per_small}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var n_ball = _data[i]['ball'].split(',').join(' ');
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['round']}(${_data[i]['date_round']})</td>
                        <td>${_data[i]['powerball']}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['p_section']}</p></span></td>
                        <td><span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['p_unover_style1']}"><p>${_data[i]['p_unover']}</p></span></td>
                        <td>${n_ball}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['sum']}</p></span></td>
                        <td><span class="circle no-fill br-gray color-dark"><p>${_data[i]['n_section']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['n_sml_style']}"><p>${_data[i]['n_sml']}</p></span></td>
                        <td><span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p> </span></td>
                        <td><span class="circle no-fill ${_data[i]['n_unover_style1']}"><p>${_data[i]['n_unover']}</p></span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };
    var setRecentResult = function () {
        var i = 0;
        $('#powerball-recent .recent-results').each(function () {
            var html = `<div class="game-title">파워볼 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                            <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                            <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };
    var setRecentListResult = function () {
        var i = 0;
        var html = `<div class="game-title">파워사다리 ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['start_point_style']}"><p>${_data[i]['start_point_formatted']}</p></span>
                        <span class="circle ${_data[i]['line_count_style']}"><p>${_data[i]['line_count']}</p></span>
                        <span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i++]['odd_even_formatted']}</p></span>
                    </div>`;
        return (html);
    };
    var setRoundTable = function (game_type, sround, eround, sdate, edate) {
        var tblData = [];
        for (var i = 0; i < _data.length; i++) {
            var reg_date = _data[i]['reg_date'];
            if (tblData[reg_date] == undefined) {
                tblData[reg_date] = [];
            }
            var value = "";
            if (game_type == 'p_oddeven' || game_type == 'n_oddeven') {
                if (_data[i][game_type] == '1') {
                    value = "<td><span class='circle bg-red'><p>짝</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-blue'><p>홀</p></span></td>";
                }
            } else if (game_type == 'p_unover' || game_type == 'n_unover') {
                if (_data[i][game_type] == '0') {
                    value = "<td><span class='circle bg-blue'><p>언더</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-red'><p>오버</p></span></td>";
                }
            }
            tblData[reg_date].push({ 'date_round': _data[i]['date_round'], 'value': value });
        }

        html = "<tr><td>회차</td>";
        for (var i = sround; i <= eround; i++) {
            html += `<td>${i}</td>`;
        }
        html += "</tr>";
        for (var j = edate; j >= sdate; j = j - 3600 * 24) {
            var tr = "<tr>";
            var dtDate = new Date(j * 1000);
            var dtMonth = dtDate.getMonth() + 1 < 10 ? "0" + (dtDate.getMonth() + 1) : dtDate.getMonth() + 1;
            var dtDay = dtDate.getDate() < 10 ? "0" + dtDate.getDate() : dtDate.getDate();
            var reg_date = dtDate.getFullYear() + '-' + dtMonth + '-' + dtDay;
            tr += `<td>${reg_date}</td>`;
            if (tblData[reg_date] == undefined || tblData[reg_date] == "") {
                for (var jj = sround; jj <= eround; jj++) {
                    tr += '<td></td>';
                }
                html += tr;
                continue;
            }
            for (var i = sround; i <= eround; i++) {
                for (var k = 0; k < tblData[reg_date].length; k++) {
                    if (tblData[reg_date][k].date_round == i) {
                        tr += tblData[reg_date][k].value;
                    }
                }
            }
            tr += "</tr>";
            html += tr;
        }

        $('.tbl-round').html(html);

        var oddTr = "<tr><td><span class='circle bg-blue'><p>홀</p></span></td>";
        var evenTr = "<tr><td><span class='circle bg-red'><p>짝</p></span></td>";
        if (game_type == 'p_unover' || game_type == 'n_unover') {
            oddTr = "<tr><td><span class='circle bg-blue'><p>언더</p></span></td>";
            evenTr = "<tr><td><span class='circle bg-red'><p>오버</p></span></td>";
        }
        for (var i = 0; i < eround - sround + 1; i++) {
            var nCnt = nCntOdd = nCntEven = 0;
            $('.tbl-round td:nth-child(' + (i + 2) + ')').each(function () {
                if ($(this).children('span').hasClass('bg-red')) {
                    nCnt++;
                    nCntEven++;
                } else if ($(this).children('span').hasClass('bg-blue')) {
                    nCnt++;
                    nCntOdd++;
                }
            });
            var fPerOdd = (nCntOdd / nCnt * 100).toFixed(0);
            var fPerEven = (nCntEven / nCnt * 100).toFixed(0);
            if (fPerOdd == "NaN") {
                fPerOdd = 0;
            }
            if (fPerEven == "NaN") {
                fPerEven = 0;
            }
            oddTr += `<td>${nCntOdd}번<br/>${fPerOdd}%</td>`;
            evenTr += `<td>${nCntEven}번<br/>${fPerEven}%</td>`;
        }
        oddTr += "</tr>";
        evenTr += "</tr>";
        $('.tbl-round').append(oddTr + evenTr);
        // html += oddTr + evenTr;
    }
};

var powerladder_data = function () {
    var MAX_ROUND = 288;
    var _data = [];
    var nCntStartLeft = 0;
    var nCntStartRight = 0;
    var nCntLine3 = 0;
    var nCntLine4 = 0;
    var nCntEndOdd = 0;
    var nCntEndEven = 0;
    var nCntPlopLR = 0;
    var nCntPlopLine = 0;
    var nCntPlopOddEven = 0;
    var nCntBrokenLR = nCntBrokenLine34 = nCntBrokenOddEven = 0;
    var nCntMaxLeft = nCntMaxRight = 0;
    var nCntMaxLine3 = nCntMaxLine4 = 0;
    var nCntMaxOdd = nCntMaxEven = 0;
    var nLeft4Odd = nLeft3Even = nRight4Even = nRight3Odd = 0;
    this._initPowerladder = function (data) {
        Object.assign(_data, data);
        analyzePowerladder();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        Object.assign(_data, data);
        $('.round-result').show();
        analyzePowerladder();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (result, cntResult, sround, eround) {
        Object.assign(_data, result);
        $('.round-result').show();
        setRoundTable(cntResult, sround, eround);
    };
    this.initPowerladder = function (dataByDay) {
        Object.assign(_data, dataByDay);
        analyzePowerladder();
        calculatePlop();
        setStartLRTableData();
        setLine34TableData();
        setOddEvenTableData();
        setStatistics();
        setGameDataTable();
    };
    this.RecentListPowerladder = function (data) {
        Object.assign(_data, data);
        analyzePowerladder();
        var html = setRecentListResult();
        return (html);
    };
    var analyzePowerladder = function () {
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['start_point'] == 'RIGHT') {
                _data[i]['start_point_formatted'] = '우';
                _data[i]['start_point_style'] = 'bg-red';
                _data[i]['start_point_style1'] = 'color-red br-red';
                nCntStartRight++;
                if (_data[i]['line_count'] == 3 && _data[i]['odd_even'] == 'ODD') {
                    nRight3Odd++;
                } else if (_data[i]['line_count'] == 4 && _data[i]['odd_even'] == 'EVEN') {
                    nRight4Even++;
                }
            } else {
                _data[i]['start_point_formatted'] = '좌';
                _data[i]['start_point_style'] = 'bg-blue';
                _data[i]['start_point_style1'] = 'color-blue br-blue';
                nCntStartLeft++;
                if (_data[i]['line_count'] == 4 && _data[i]['odd_even'] == 'ODD') {
                    nLeft4Odd++;
                } else if (_data[i]['line_count'] == 3 && _data[i]['odd_even'] == 'EVEN') {
                    nLeft3Even++;
                }
            }

            if (_data[i]['line_count'] == 3) {
                _data[i]['line_count_style'] = 'bg-blue';
                _data[i]['line_count_style1'] = 'color-blue br-blue';
                nCntLine3++;
            } else {
                _data[i]['line_count_style'] = 'bg-red';
                _data[i]['line_count_style1'] = 'color-red br-red';
                nCntLine4++;
            }

            if (_data[i]['odd_even'] == 'ODD') {
                _data[i]['odd_even_formatted'] = '홀';
                _data[i]['odd_even_style'] = 'bg-blue';
                nCntEndOdd++;
            } else {
                _data[i]['odd_even_formatted'] = '짝';
                _data[i]['odd_even_style'] = 'bg-red';
                nCntEndEven++;
            }
        }
    };
    var calculatePlop = function () {
        // var ladder_plop_lr = [];
        // var ladder_plop_line = [];
        // var ladder_plop_oddeven = [];
        // for(var i = 0; i < _data.length; i++){
        //     if(i == 0){
        //         if(_data[i]['start_point'] != _data[i + 1]['start_point'] && 
        //         _data[i + 1]['start_point'] != _data[i + 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['line_count'] != _data[i + 1]['line_count'] && 
        //         _data[i + 1]['line_count'] != _data[i + 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['odd_even'] != _data[i + 1]['odd_even'] && 
        //         _data[i + 1]['odd_even'] != _data[i + 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }else if(i == _data.length - 2){
        //         if(_data[i]['start_point'] != _data[i - 1]['start_point'] &&
        //         _data[i - 1]['start_point'] != _data[i - 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['line_count'] != _data[i - 1]['line_count'] &&
        //         _data[i - 1]['line_count'] != _data[i - 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['odd_even'] != _data[i - 1]['odd_even'] &&
        //         _data[i - 1]['odd_even'] != _data[i - 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }else if(i == _data.length - 1){
        //         continue;
        //     }else{
        //         if(_data[i - 1]['start_point'] != _data[i]['start_point'] &&
        //         _data[i]['start_point'] != _data[i + 1]['start_point'] &&
        //         _data[i + 1]['start_point'] != _data[i + 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['line_count'] != _data[i]['line_count'] &&
        //         _data[i]['line_count'] != _data[i + 1]['line_count'] &&
        //         _data[i + 1]['line_count'] != _data[i + 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['odd_even'] != _data[i]['odd_even'] &&
        //         _data[i]['odd_even'] != _data[i + 1]['odd_even'] &&
        //         _data[i + 1]['odd_even'] != _data[i + 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }
        // }
        // nCntPlopLR = ladder_plop_lr.length / 2;
        // nCntPlopLine = ladder_plop_line.length / 2;
        // nCntPlopOddEven = ladder_plop_oddeven.length / 2;
    };

    var setStartLRTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['start_point'] == 'LEFT') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['start_point_formatted']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['start_point_formatted']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['start_point_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['start_point'] == _data[i - 1]['start_point']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['start_point_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopLR++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['start_point_style']}'><p>${val}</p></span></td>`;
                nCntBrokenLR = Math.max(nCntBrokenLR, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenLR; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">좌</td>') {
                tbl_data[0][i] = '<td class="even">우</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">좌</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenLR; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenLR; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">좌</td>') {
                nCntMaxLeft = Math.max(nCntMaxLeft, cnt_per_col);
            } else {
                nCntMaxRight = Math.max(nCntMaxRight, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_left = (100 * nCntStartLeft / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nCntStartLeft + '번 (' + per_left + '%) ' + nCntMaxLeft + '연속');
        var per_right = (100 * nCntStartRight / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nCntStartRight + '번 (' + per_right + '%) ' + nCntMaxRight + '연속');
        $('#powerball_oddeven #plop_result').html((nCntBrokenLR - nCntPlopLR) + '번');
        $('#powerball_oddeven #broken_result').html((nCntBrokenLR + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };
    var setLine34TableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['line_count'] == '3') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['line_count']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['line_count']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['line_count_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['line_count'] == _data[i - 1]['line_count']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['line_count_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopLine++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['line_count_style']}'><p>${val}</p></span></td>`;
                nCntBrokenLine34 = Math.max(nCntBrokenLine34, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenLine34; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">3</td>') {
                tbl_data[0][i] = '<td class="even">4</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">3</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenLine34; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenLine34; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">3</td>') {
                nCntMaxLine3 = Math.max(nCntMaxLine3, cnt_per_col);
            } else {
                nCntMaxLine4 = Math.max(nCntMaxLine4, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_3 = (100 * nCntLine3 / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nCntLine3 + '번 (' + per_3 + '%) ' + nCntMaxLine3 + '연속');
        var per_4 = (100 * nCntLine4 / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nCntLine4 + '번 (' + per_4 + '%) ' + nCntMaxLine4 + '연속');
        $('#powerball_underover #plop_unover').html((nCntBrokenLine34 - nCntPlopLine) + '번');
        $('#powerball_underover #broken_unover').html((nCntBrokenLine34 + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };

    var setOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['odd_even'] == 'ODD') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['odd_even_formatted']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['odd_even_formatted']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['odd_even_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['odd_even'] == _data[i - 1]['odd_even']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['odd_even_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopOddEven++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['odd_even_style']}'><p>${val}</p></span></td>`;
                nCntBrokenOddEven = Math.max(nCntBrokenOddEven, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenOddEven; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">홀</td>') {
                tbl_data[0][i] = '<td class="even">짝</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenOddEven; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenOddEven; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">홀</td>') {
                nCntMaxOdd = Math.max(nCntMaxOdd, cnt_per_col);
            } else {
                nCntMaxEven = Math.max(nCntMaxEven, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nCntEndOdd / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #odd_ball').html(nCntEndOdd + '번 (' + per_odd + '%) ' + nCntMaxOdd + '연속');
        var per_even = (100 * nCntEndEven / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #even_ball').html(nCntEndEven + '번 (' + per_even + '%) ' + nCntMaxEven + '연속');
        $('#ball_oddeven #plop_ball').html((nCntBrokenOddEven - nCntPlopOddEven) + '번');
        $('#ball_oddeven #broken_ball').html((nCntBrokenOddEven + 1) + '번');
        $('#ball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };

    function setStatisticsMakeHtml(BlueCnt, RedCnt, MaxCnt, BlueTitle, RedTitle){
        BlueCnt *= 1;
        RedCnt *= 1; 
        MaxCnt *= 1;
        var per_blue = (BlueCnt > 0) ? (100 * BlueCnt / MaxCnt).toFixed(2) : '0.00';
        var per_red = (RedCnt > 0) ? (100 * RedCnt / MaxCnt).toFixed(2) : '0.00';
        var p_html = ``;

            if(BlueCnt > RedCnt){
            p_html =    `<div class="title-odd"  style='height: 20px;'><span class="circle bg-blue"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>
                                <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            if (RedCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>`;
            }
            p_html +=       `</div>
                        <div class="title-even" style='height: 20px;'><span class="circle bg-gray"><p>${RedTitle}</p></span></div>`;
        }else{
            p_html =    `<div class="title-odd" style='height: 20px;'><span class="circle bg-gray"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>`;
            if (BlueCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            }
            p_html +=           `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>
                            </div>`;
            var bg_redColor = 'bg-red';
            if (RedCnt <= 0)   {    bg_redColor = 'bg-gray';    }
            p_html +=       `<div class="title-even" style='height: 20px;'><span class="circle ${bg_redColor}"><p>${RedTitle}</p></span></div>`;
        }
        return (p_html);
    }
        
    var PercentCalcProc = function(val1, val2) {
        if (val1 == 0 || val2 == 0) return "0.00";
        else{
            let ret = (100 * val1 / val2).toFixed(2);
            return ret;
        }
    };

    var setStatistics = function () {
        var p_oddeven_html = setStatisticsMakeHtml(nCntStartLeft, nCntStartRight, MAX_ROUND, '좌', '우');
        $('.powerball-chart .left-right').html(p_oddeven_html);
        
        var p_34_html = setStatisticsMakeHtml(nCntLine3, nCntLine4, MAX_ROUND, '3', '4');
        $('.powerball-chart .line-34').html(p_34_html);
        
        var p_unover_html = setStatisticsMakeHtml(nCntEndOdd, nCntEndEven, MAX_ROUND, '홀', '짝');
        $('.powerball-chart .end-odd-even').html(p_unover_html);


        var per_left4odd = PercentCalcProc(nLeft4Odd, MAX_ROUND); // (100 * nLeft4Odd / MAX_ROUND).toFixed(2);
        var per_left3even = PercentCalcProc(nLeft3Even, MAX_ROUND); // (100 * nLeft3Even / MAX_ROUND).toFixed(2);
        var per_right4even = PercentCalcProc(nRight4Even, MAX_ROUND); // (100 * nRight4Even / MAX_ROUND).toFixed(2);
        var per_right3odd = PercentCalcProc(nRight3Odd, MAX_ROUND); // (100 * nRight3Odd / MAX_ROUND).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerladder_piechart',
            data: {
                columns: [
                    ['d1', nLeft4Odd],
                    ['d2', nRight3Odd],
                    ['d3', nLeft3Even],
                    ['d4', nRight4Even],
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `좌4홀: ${nLeft4Odd}회(${per_left4odd}%)`,
                    d2: `우3홀: ${nRight3Odd}회(${per_right3odd}%)`,
                    d3: `좌3짝: ${nLeft3Even}회(${per_left3even}%)`,
                    d4: `우4짝: ${nRight4Even}회(${per_right4even}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#3498db', '#2980b9', '#e74c3c', '#c0392b']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['reg_date']} / <span class='color-black'>${_data[i]['date_round']}</span></td>
                        <td><span class="circle ${_data[i]['start_point_style1']}"><p>${_data[i]['start_point_formatted']}</p></span></td>
                        <td><span class="circle ${_data[i]['line_count_style1']}"><p>${_data[i]['line_count']}</p> </span></td>
                        <td><span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i]['odd_even_formatted']}</p></span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };

    var setRecentResult = function () {
        var i = 0;
        $('#powerladder_recent .recent-results').each(function () {
            var html = `<div class="game-title">파워사다리 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['start_point_style']}"><p>${_data[i]['start_point_formatted']}</p></span>
                            <span class="circle ${_data[i]['line_count_style']}"><p>${_data[i]['line_count']}</p></span>
                            <span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i++]['odd_even_formatted']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };
    var setRecentListResult = function () {
        var i = 0;
        var html = `<div class="game-title">파워사다리 ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['start_point_style']}"><p>${_data[i]['start_point_formatted']}</p></span>
                        <span class="circle ${_data[i]['line_count_style']}"><p>${_data[i]['line_count']}</p></span>
                        <span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i++]['odd_even_formatted']}</p></span>
                    </div>`;
        return (html);
    };

    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntSLeft = nCntSRight = 0;
        var nCntLine3 = nCntLine4 = 0;
        var nCntEOdd = nCntEEven = 0;
        var nCntLeft3 = nCntLeft4 = nCntRight3 = nCntRight4 = 0;
        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['start_point'] == 'LEFT') {
                nCntSLeft++;
                if (_data[i]['line_count'] == 3) {
                    nCntLeft3++;
                } else {
                    nCntLeft4++;
                }
            } else {
                if (_data[i]['line_count'] == 3) {
                    nCntRight3++;
                } else {
                    nCntRight4++;
                }
            }
            if (_data[i]['line_count'] == 3) {
                nCntLine3++;
            }
            if (_data[i]['odd_even'] == 'ODD') {
                nCntEOdd++;
            }
        }
        nCntSRight = nCnt - nCntSLeft;
        nCntLine4 = nCnt - nCntLine3;
        nCntEEven = nCnt - nCntEOdd;

        var p_oddeven_html = setStatisticsMakeHtml(nCntSLeft, nCntSRight, nCnt, '좌', '우');
        $('.powerball-chart .left-right').html(p_oddeven_html);
        
        var p_34_html = setStatisticsMakeHtml(nCntLine3, nCntLine4, nCnt, '3', '4');
        $('.powerball-chart .line-34').html(p_34_html);
        
        var n_oddeven_html = setStatisticsMakeHtml(nCntEOdd, nCntEEven, nCnt, '홀', '짝');
        $('.powerball-chart .end-odd-even').html(n_oddeven_html);


        var per_large = (100 * nCntLeft3 / nCnt).toFixed(2);
        var per_middle = (100 * nCntLeft4 / nCnt).toFixed(2);
        var per_small = (100 * (nCntRight3) / nCnt).toFixed(2);
        var per_small_ = (100 * (nCntRight4) / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', nCntLeft3],
                    ['d2', nCntLeft4],
                    ['d3', nCntRight3],
                    ['d4', nCntRight4],
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `좌4홀: ${nCntLeft4}회(${per_middle}%)`,
                    d2: `우3홀: ${nCntRight3}회(${per_small}%)`,
                    d3: `좌3짝: ${nCntLeft3}회(${per_large}%)`,
                    d4: `우4짝: ${nCntRight4}회(${per_small_}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#3498db', '#2980b9', '#e74c3c', '#c0392b']
            },
            tooltip: {

            },
        });
    };
    var setRoundTable = function (arrCntResult, sround, eround) {
        var html = "";
        var tr = "<tr><td style='min-width: 110px;'>회차</td>";
        for (var i = 0; i < arrCntResult.length; i++) {
            tr += `<td>${arrCntResult[i].round}</td>`;
        }
        tr += "</tr>";
        var arrValue = [];
        var game_type = $('select[name="game_type"]').val();
        if (game_type == 'start_point') {
            arrValue = [{ val: 'LEFT', caption: '좌', style: 'color-blue' }, { val: 'RIGHT', caption: '우', style: 'color-red' }];
            cellValue = { LEFT: { caption: '좌', style: 'bg-blue' }, RIGHT: { caption: '우', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt.LEFT = arrCntResult[i].cnt.LEFT == undefined ? 0 : arrCntResult[i].cnt.LEFT;
                arrCntResult[i].cnt.RIGHT = arrCntResult[i].cnt.RIGHT == undefined ? 0 : arrCntResult[i].cnt.RIGHT;
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt.LEFT) * 1 + (arrCntResult[i].cnt.RIGHT) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt.LEFT / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt.RIGHT / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }

        } else if (game_type == 'line_count') {
            arrValue = [{ val: '3', caption: '3', style: 'color-blue' }, { val: '4', caption: '4', style: 'color-red' }];
            cellValue = { 3: { caption: '3', style: 'bg-blue' }, 4: { caption: '4', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt[3] = arrCntResult[i].cnt[3] == undefined ? 0 : arrCntResult[i].cnt[3];
                arrCntResult[i].cnt[4] = arrCntResult[i].cnt[4] == undefined ? 0 : arrCntResult[i].cnt[4];
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt[3]) * 1 + (arrCntResult[i].cnt[4]) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt[3] / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt[4] / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }
        } else {
            arrValue = [{ val: 'ODD', caption: '홀', style: 'color-blue' }, { val: 'EVEN', caption: '짝', style: 'color-red' }];
            cellValue = { ODD: { caption: '홀', style: 'bg-blue' }, EVEN: { caption: '짝', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt.ODD = arrCntResult[i].cnt.ODD == undefined ? 0 : arrCntResult[i].cnt.ODD;
                arrCntResult[i].cnt.EVEN = arrCntResult[i].cnt.EVEN == undefined ? 0 : arrCntResult[i].cnt.EVEN;
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt.ODD) * 1 + (arrCntResult[i].cnt.EVEN) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt.ODD / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt.EVEN / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }
        }
        var tr2 = "<tr><td rowspan='2'>회차별통계</td>";
        for (var j = 0; j < arrValue.length; j++) {
            for (var i = 0; i < arrCntResult.length; i++) {
                var nCntLeft = arrCntResult[i].cnt[arrValue[j].val] == undefined ? 0 : arrCntResult[i].cnt[arrValue[j].val];
                if (j == 0) {
                    tr2 += `<td><span class='circle border ${arrValue[j].style}'><p>${arrValue[j].caption}</p></span><p>${nCntLeft}</p><p class="${arrCntResult[i].cnt.style[j]}" style="width: ${arrCntResult[i].cnt.per[j]}%"></p></td>`;
                } else {
                    tr2 += `<td><p class="${arrCntResult[i].cnt.style[j]}" style="width: ${arrCntResult[i].cnt.per[j]}%"></p><p>${nCntLeft}</p><span class='circle border ${arrValue[j].style}'><p>${arrValue[j].caption}</p></span></td>`;
                }
            }
            tr2 += "</tr><tr>"
        }
        tr2 = tr2.substr(0, tr2.length - 4);
        var period = $('.period-check > li.active').data('value');
        var sdate = App.toDate($('input[name="sdate"]').val());
        var edate = App.toDate($('input[name="edate"]').val());

        for (var i = edate; i >= sdate; i = i - 3600 * 24 * 1000) {
            var dt = App.getDate(i);
            tr2 += `<tr><td><label><input type="checkbox" class="" data-date="${i}">${dt} ${_data[dt] == undefined ? 0 : _data[dt].cnt}/${eround - sround + 1}</label></td>`;
            for (var j = sround; j <= eround; j++) {
                if (_data[dt] == undefined || _data[dt][j] == undefined) {
                    tr2 += "<td></td>";
                } else {
                    tr2 += `<td><span class="circle ${cellValue[_data[dt][j]].style}"><p>${cellValue[_data[dt][j]].caption}</p></td>`;
                }
            }
            tr2 += "</tr>";
        }
        html = tr + tr2;
        $('.round-result table.tbl-round-pladder').html(html);
        // $('input[type="checkbox"].flat-red').iCheck({
        //     checkboxClass: 'icheckbox_flat-red',
        //     radioClass: 'icheckbox_flat-red',
        //     increaseArea: '20%'
        // });
    }
};

var kenoladder_data = function () {
    var MAX_ROUND = 288;
    var _data = [];
    var nCntStartLeft = 0;
    var nCntStartRight = 0;
    var nCntLine3 = 0;
    var nCntLine4 = 0;
    var nCntEndOdd = 0;
    var nCntEndEven = 0;
    var nCntPlopLR = 0;
    var nCntPlopLine = 0;
    var nCntPlopOddEven = 0;
    var nCntBrokenLR = nCntBrokenLine34 = nCntBrokenOddEven = 0;
    var nCntMaxLeft = nCntMaxRight = 0;
    var nCntMaxLine3 = nCntMaxLine4 = 0;
    var nCntMaxOdd = nCntMaxEven = 0;
    var nLeft4Odd = nLeft3Even = nRight4Even = nRight3Odd = 0;
    this._initKenoladder = function (data) {
        Object.assign(_data, data);
        analyzeKenoladder();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        Object.assign(_data, data);
        $('.round-result').show();
        analyzeKenoladder();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (result, cntResult, sround, eround) {
        Object.assign(_data, result);
        $('.round-result').show();
        setRoundTable(cntResult, sround, eround);
    };
    this.initKenoladder = function (dataByDay) {
        Object.assign(_data, dataByDay);
        analyzeKenoladder();
        calculatePlop();
        setStartLRTableData();
        setLine34TableData();
        setOddEvenTableData();
        setStatistics();
        setGameDataTable();
    };
    this.RecentListKenoladder = function (data) {
        Object.assign(_data, data);
        analyzeKenoladder();
        var html = setRecentListResult();
        return (html);
    };
    var analyzeKenoladder = function () {
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['start_point'] == 'RIGHT') {
                _data[i]['start_point_formatted'] = '우';
                _data[i]['start_point_style'] = 'bg-red';
                _data[i]['start_point_style1'] = 'color-red br-red';
                nCntStartRight++;
                if (_data[i]['line_count'] == 3 && _data[i]['odd_even'] == 'ODD') {
                    nRight3Odd++;
                } else if (_data[i]['line_count'] == 4 && _data[i]['odd_even'] == 'EVEN') {
                    nRight4Even++;
                }
            } else {
                _data[i]['start_point_formatted'] = '좌';
                _data[i]['start_point_style'] = 'bg-blue';
                _data[i]['start_point_style1'] = 'color-blue br-blue';
                nCntStartLeft++;
                if (_data[i]['line_count'] == 4 && _data[i]['odd_even'] == 'ODD') {
                    nLeft4Odd++;
                } else if (_data[i]['line_count'] == 3 && _data[i]['odd_even'] == 'EVEN') {
                    nLeft3Even++;
                }
            }

            if (_data[i]['line_count'] == 3) {
                _data[i]['line_count_style'] = 'bg-blue';
                _data[i]['line_count_style1'] = 'color-blue br-blue';
                nCntLine3++;
            } else {
                _data[i]['line_count_style'] = 'bg-red';
                _data[i]['line_count_style1'] = 'color-red br-red';
                nCntLine4++;
            }

            if (_data[i]['odd_even'] == 'ODD') {
                _data[i]['odd_even_formatted'] = '홀';
                _data[i]['odd_even_style'] = 'bg-blue';
                nCntEndOdd++;
            } else {
                _data[i]['odd_even_formatted'] = '짝';
                _data[i]['odd_even_style'] = 'bg-red';
                nCntEndEven++;
            }
        }
    };
    var calculatePlop = function () {
        // var ladder_plop_lr = [];
        // var ladder_plop_line = [];
        // var ladder_plop_oddeven = [];
        // for(var i = 0; i < _data.length; i++){
        //     if(i == 0){
        //         if(_data[i]['start_point'] != _data[i + 1]['start_point'] && 
        //         _data[i + 1]['start_point'] != _data[i + 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['line_count'] != _data[i + 1]['line_count'] && 
        //         _data[i + 1]['line_count'] != _data[i + 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['odd_even'] != _data[i + 1]['odd_even'] && 
        //         _data[i + 1]['odd_even'] != _data[i + 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }else if(i == _data.length - 2){
        //         if(_data[i]['start_point'] != _data[i - 1]['start_point'] &&
        //         _data[i - 1]['start_point'] != _data[i - 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['line_count'] != _data[i - 1]['line_count'] &&
        //         _data[i - 1]['line_count'] != _data[i - 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['odd_even'] != _data[i - 1]['odd_even'] &&
        //         _data[i - 1]['odd_even'] != _data[i - 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }else if(i == _data.length - 1){
        //         continue;
        //     }else{
        //         if(_data[i - 1]['start_point'] != _data[i]['start_point'] &&
        //         _data[i]['start_point'] != _data[i + 1]['start_point'] &&
        //         _data[i + 1]['start_point'] != _data[i + 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['line_count'] != _data[i]['line_count'] &&
        //         _data[i]['line_count'] != _data[i + 1]['line_count'] &&
        //         _data[i + 1]['line_count'] != _data[i + 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['odd_even'] != _data[i]['odd_even'] &&
        //         _data[i]['odd_even'] != _data[i + 1]['odd_even'] &&
        //         _data[i + 1]['odd_even'] != _data[i + 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }
        // }
        // nCntPlopLR = ladder_plop_lr.length / 2;
        // nCntPlopLine = ladder_plop_line.length / 2;
        // nCntPlopOddEven = ladder_plop_oddeven.length / 2;
    };

    var setStartLRTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['start_point'] == 'LEFT') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['start_point_formatted']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['start_point_formatted']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['start_point_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['start_point'] == _data[i - 1]['start_point']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['start_point_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopLR++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['start_point_style']}'><p>${val}</p></span></td>`;
                nCntBrokenLR = Math.max(nCntBrokenLR, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenLR; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">좌</td>') {
                tbl_data[0][i] = '<td class="even">우</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">좌</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenLR; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenLR; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">좌</td>') {
                nCntMaxLeft = Math.max(nCntMaxLeft, cnt_per_col);
            } else {
                nCntMaxRight = Math.max(nCntMaxRight, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_left = (100 * nCntStartLeft / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nCntStartLeft + '번 (' + per_left + '%) ' + nCntMaxLeft + '연속');
        var per_right = (100 * nCntStartRight / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nCntStartRight + '번 (' + per_right + '%) ' + nCntMaxRight + '연속');
        $('#powerball_oddeven #plop_result').html((nCntBrokenLR - nCntPlopLR) + '번');
        $('#powerball_oddeven #broken_result').html((nCntBrokenLR + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };
    var setLine34TableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['line_count'] == '3') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['line_count']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['line_count']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['line_count_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['line_count'] == _data[i - 1]['line_count']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['line_count_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopLine++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['line_count_style']}'><p>${val}</p></span></td>`;
                nCntBrokenLine34 = Math.max(nCntBrokenLine34, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenLine34; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">3</td>') {
                tbl_data[0][i] = '<td class="even">4</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">3</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenLine34; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenLine34; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">3</td>') {
                nCntMaxLine3 = Math.max(nCntMaxLine3, cnt_per_col);
            } else {
                nCntMaxLine4 = Math.max(nCntMaxLine4, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_3 = (100 * nCntLine3 / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nCntLine3 + '번 (' + per_3 + '%) ' + nCntMaxLine3 + '연속');
        var per_4 = (100 * nCntLine4 / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nCntLine4 + '번 (' + per_4 + '%) ' + nCntMaxLine4 + '연속');
        $('#powerball_underover #plop_unover').html((nCntBrokenLine34 - nCntPlopLine) + '번');
        $('#powerball_underover #broken_unover').html((nCntBrokenLine34 + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };

    var setOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['odd_even'] == 'ODD') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['odd_even_formatted']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['odd_even_formatted']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['odd_even_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['odd_even'] == _data[i - 1]['odd_even']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['odd_even_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopOddEven++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['odd_even_style']}'><p>${val}</p></span></td>`;
                nCntBrokenOddEven = Math.max(nCntBrokenOddEven, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenOddEven; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">홀</td>') {
                tbl_data[0][i] = '<td class="even">짝</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenOddEven; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenOddEven; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">홀</td>') {
                nCntMaxOdd = Math.max(nCntMaxOdd, cnt_per_col);
            } else {
                nCntMaxEven = Math.max(nCntMaxEven, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nCntEndOdd / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #odd_ball').html(nCntEndOdd + '번 (' + per_odd + '%) ' + nCntMaxOdd + '연속');
        var per_even = (100 * nCntEndEven / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #even_ball').html(nCntEndEven + '번 (' + per_even + '%) ' + nCntMaxEven + '연속');
        $('#ball_oddeven #plop_ball').html((nCntBrokenOddEven - nCntPlopOddEven) + '번');
        $('#ball_oddeven #broken_ball').html((nCntBrokenOddEven + 1) + '번');
        $('#ball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setStatistics = function () {
        var per_left = (100 * nCntStartLeft / MAX_ROUND).toFixed(2);
        var per_right = (100 * nCntStartRight / MAX_ROUND).toFixed(2);
        var p_oddeven_html = '';
        if (per_left > per_right) {
            p_oddeven_html = `
                <div class="" style="text-align:center;">
                    <div class="title-odd"><span class="circle bg-blue"><p>좌</p></span></div>
                    <div class="left-right-progress">                                
                        <div class="progress">
                            <span class="color-gray">${nCntStartRight}(${per_right}%)</span>
                            <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_left}%;border-radius: 10px!important;">
                                <span class="color-white">${nCntStartLeft}(${per_left}%)</span>
                            </div>
                        </div>
                    </div>
                    <div class="title-even"><span class="circle no-fill br-gray"><p>우</p></span></div>
                </div>`;
        } else {
            p_oddeven_html = `
                <div class="" style="text-align:center;">
                    <div class="title-odd"><span class="circle no-fill br-gray"><p>좌</p></span></div>
                    <div class="left-right-progress">                                
                        <div class="progress">
                            <span class="color-gray">${nCntStartLeft}(${per_left}%)</span>
                            <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_right}%;border-radius: 10px!important;">
                                <span class="color-white">${nCntStartRight}(${per_right}%)</span>
                            </div>
                        </div>
                    </div>
                    <div class="title-even"><span class="circle bg-red"><p>우</p></span></div>
                </div>`;
        }
        $('.powerball-chart .left-right').html(p_oddeven_html);

        var per_3 = (100 * nCntLine3 / MAX_ROUND).toFixed(2);
        var per_4 = (100 * nCntLine4 / MAX_ROUND).toFixed(2);
        var p_34_html = '';

        if (nCntLine3 > nCntLine4) {
            p_34_html =
                `<div class="" style="text-align:center;">
                    <div class="title-odd"><span class="circle bg-blue"><p>3</p></span></div>
                    <div class="left-right-progress">                                
                        <div class="progress">
                            <span class="color-gray">${nCntLine4}(${per_4}%)</span>
                            <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_3}%;border-radius: 10px!important;">
                                <span class="color-white">${nCntLine3}(${per_3}%)</span>
                            </div>
                        </div>
                    </div>
                    <div class="title-even"><span class="circle no-fill br-gray"><p>4</p></span></div>
                </div>`;
        } else {
            p_34_html =
                `<div class="" style="text-align:center;">
                    <div class="title-odd"><span class="circle no-fill br-gray"><p>3</p></span></div>
                    <div class="left-right-progress">                                
                        <div class="progress">
                            <span class="color-gray">${nCntLine3}(${per_3}%)</span>
                            <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_4}%;border-radius: 10px!important;">
                                <span class="color-white">${nCntLine4}(${per_4}%)</span>
                            </div>
                        </div>
                    </div>
                    <div class="title-even"><span class="circle bg-red"><p>4</p></span></div>
                </div>`;
        }
        $('.powerball-chart .line-34').html(p_34_html);

        var per_odd = (100 * nCntEndOdd / MAX_ROUND).toFixed(2);
        var per_even = (100 * nCntEndEven / MAX_ROUND).toFixed(2);
        var p_unover_html = '';
        if (nCntEndOdd > nCntEndEven) {
            p_unover_html = `
                <div class="" style="text-align:center;">
                    <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                    <div class="left-right-progress">
                        <div class="progress">
                            <span class="color-gray">${nCntEndEven}(${per_even}%)</span>
                            <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_odd}%;border-radius: 10px!important;">
                                <span class="color-white">${nCntEndOdd}(${per_odd}%)</span>
                            </div>
                        </div>
                    </div>
                    <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                </div>`;
        } else {
            p_unover_html = `
                <div class="" style="text-align:center;">
                    <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                    <div class="left-right-progress">
                        <div class="progress">
                            <span class="color-gray">${nCntEndOdd}(${per_odd}%)</span>
                            <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_even}%;border-radius: 10px!important;">
                                <span class="color-white">${nCntEndEven}(${per_even}%)</span>
                            </div>
                        </div>
                    </div>
                    <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                </div>`;
        }

        $('.powerball-chart .end-odd-even').html(p_unover_html);

        var per_left4odd = (100 * nLeft4Odd / MAX_ROUND).toFixed(2);
        var per_left3even = (100 * nLeft3Even / MAX_ROUND).toFixed(2);
        var per_right4even = (100 * nRight4Even / MAX_ROUND).toFixed(2);
        var per_right3odd = (100 * nRight3Odd / MAX_ROUND).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerladder_piechart',
            data: {
                columns: [
                    ['d1', nLeft4Odd],
                    ['d2', nRight3Odd],
                    ['d3', nLeft3Even],
                    ['d4', nRight4Even],
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `좌4홀: ${nLeft4Odd}회(${per_left4odd}%)`,
                    d2: `우3홀: ${nRight3Odd}회(${per_right3odd}%)`,
                    d3: `좌3짝: ${nLeft3Even}회(${per_left3even}%)`,
                    d4: `우4짝: ${nRight4Even}회(${per_right4even}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#3498db', '#2980b9', '#e74c3c', '#c0392b']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['reg_date']} / <span class='color-black'>${_data[i]['date_round']}</span></td>
                        <td><span class="circle ${_data[i]['start_point_style1']}"><p>${_data[i]['start_point_formatted']}</p></span></td>
                        <td><span class="circle ${_data[i]['line_count_style1']}"><p>${_data[i]['line_count']}</p> </span></td>
                        <td><span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i]['odd_even_formatted']}</p></span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };

    var setRecentResult = function () {
        var i = 0;
        if (!_data[i]) return;
        $('#kenoladder_recent .recent-results').each(function () {
            var html = `<div class="game-title">키노사다리 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['start_point_style']}"><p>${_data[i]['start_point_formatted']}</p></span>
                            <span class="circle ${_data[i]['line_count_style']}"><p>${_data[i]['line_count']}</p></span>
                            <span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i++]['odd_even_formatted']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };
    var setRecentListResult = function () {
        var i = 0;
        if (!_data[i]) return;
        var html = `<div class="game-title">키노사다리 ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['start_point_style']}"><p>${_data[i]['start_point_formatted']}</p></span>
                        <span class="circle ${_data[i]['line_count_style']}"><p>${_data[i]['line_count']}</p></span>
                        <span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i++]['odd_even_formatted']}</p></span>
                    </div>`;
        return (html);
    };
    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntSLeft = nCntSRight = 0;
        var nCntLine3 = nCntLine4 = 0;
        var nCntEOdd = nCntEEven = 0;
        var nCntLeft3 = nCntLeft4 = nCntRight3 = nCntRight4 = 0;
        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['start_point'] == 'LEFT') {
                nCntSLeft++;
                if (_data[i]['line_count'] == 3) {
                    nCntLeft3++;
                } else {
                    nCntLeft4++;
                }
            } else {
                if (_data[i]['line_count'] == 3) {
                    nCntRight3++;
                } else {
                    nCntRight4++;
                }
            }
            if (_data[i]['line_count'] == 3) {
                nCntLine3++;
            }
            if (_data[i]['odd_even'] == 'ODD') {
                nCntEOdd++;
            }
        }
        nCntSRight = nCnt - nCntSLeft;
        nCntLine4 = nCnt - nCntLine3;
        nCntEEven = nCnt - nCntEOdd;

        var per_sleft = (100 * nCntSLeft / nCnt).toFixed(2);
        var per_sright = (100 * nCntSRight / nCnt).toFixed(2);
        var p_oddeven_html = '';
        if (nCntSLeft > nCntSRight) {
            p_oddeven_html = `
            <div class="" style="text-align:center;">
                <div class="title-odd"><span class="circle bg-blue"><p>좌</p></span></div>
                <div class="left-right-progress">                                
                    <div class="progress">
                        <span class="color-gray">${nCntSRight}(${per_sright}%)</span>
                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_sleft}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntSLeft}(${per_sleft}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even"><span class="circle no-fill br-gray"><p>우</p></span></div>
            </div>`;
        } else {
            p_oddeven_html = `
            <div class="" style="text-align:center;">
                <div class="title-odd"><span class="circle no-fill br-gray"><p>좌</p></span></div>
                <div class="left-right-progress">                                
                    <div class="progress">
                        <span class="color-gray">${nCntSLeft}(${per_sleft}%)</span>
                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_sright}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntSRight}(${per_sright}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even"><span class="circle bg-red"><p>우</p></span></div>
            </div>`;
        }
        $('.powerball-chart .left-right').html(p_oddeven_html);

        var per_line3 = (100 * nCntLine3 / nCnt).toFixed(2);
        var per_line4 = (100 * nCntLine4 / nCnt).toFixed(2);
        var p_unover_html = '';
        if (nCntLine3 > nCntLine4) {
            p_unover_html = `
            <div class="" style="text-align:center;">
                <div class="title-odd"><span class="circle bg-blue"><p>3</p></span></div>
                <div class="under-over-progress">                                
                    <div class="progress">
                        <span class="color-gray">${nCntLine4}(${per_line4}%)</span>
                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_line3}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntLine3}(${per_line3}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even"><span class="circle no-fill br-gray"><p>4</p></span></div>
            </div>`;
        } else {
            p_unover_html = `
            <div class="" style="text-align:center;">
                <div class="title-odd"><span class="circle no-fill br-gray"><p>3</p></span></div>
                <div class="under-over-progress">                                
                    <div class="progress">
                        <span class="color-gray">${nCntLine3}(${per_line3}%)</span>
                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_line4}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntLine4}(${per_line4}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even"><span class="circle bg-red"><p>4</p></span></div>
            </div>`;
        }
        $('.powerball-chart .line-34').html(p_unover_html);

        var per_eodd = (100 * nCntEOdd / nCnt).toFixed(2);
        var per_eeven = (100 * nCntEEven / nCnt).toFixed(2);
        var n_oddeven_html = '';
        if (nCntEOdd > nCntEEven) {
            n_oddeven_html = `
            <div class="" style="text-align:center;">
                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                <div class="odd-even-progress">
                    <div class="progress">
                        <span class="color-gray">${nCntEEven}(${per_eeven}%)</span>
                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_eodd}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntEOdd}(${per_eodd}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
            </div>`;
        } else {
            n_oddeven_html = `
            <div class="" style="text-align:center;">
                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                <div class="odd-even-progress">
                    <div class="progress">
                    <span class="color-gray">${nCntEOdd}(${per_eodd}%)</span>
                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_eeven}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntEEven}(${per_eeven}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
            </div>`;
        }
        $('.powerball-chart .end-odd-even').html(n_oddeven_html);


        var per_large = (100 * nCntLeft3 / nCnt).toFixed(2);
        var per_middle = (100 * nCntLeft4 / nCnt).toFixed(2);
        var per_small = (100 * (nCntRight3) / nCnt).toFixed(2);
        var per_small_ = (100 * (nCntRight4) / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', nCntLeft3],
                    ['d2', nCntLeft4],
                    ['d3', nCntRight3],
                    ['d4', nCntRight4],
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `좌4홀: ${nCntLeft4}회(${per_middle}%)`,
                    d2: `우3홀: ${nCntRight3}회(${per_small}%)`,
                    d3: `좌3짝: ${nCntLeft3}회(${per_large}%)`,
                    d4: `우4짝: ${nCntRight4}회(${per_small_}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#3498db', '#2980b9', '#e74c3c', '#c0392b']
            },
            tooltip: {

            },
        });
    };
    var setRoundTable = function (arrCntResult, sround, eround) {
        var html = "";
        var tr = "<tr><td style='min-width: 110px;'>회차</td>";
        for (var i = 0; i < arrCntResult.length; i++) {
            tr += `<td>${arrCntResult[i].round}</td>`;
        }
        tr += "</tr>";
        var arrValue = [];
        var game_type = $('select[name="game_type"]').val();
        if (game_type == 'start_point') {
            arrValue = [{ val: 'LEFT', caption: '좌', style: 'color-blue' }, { val: 'RIGHT', caption: '우', style: 'color-red' }];
            cellValue = { LEFT: { caption: '좌', style: 'bg-blue' }, RIGHT: { caption: '우', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt.LEFT = arrCntResult[i].cnt.LEFT == undefined ? 0 : arrCntResult[i].cnt.LEFT;
                arrCntResult[i].cnt.RIGHT = arrCntResult[i].cnt.RIGHT == undefined ? 0 : arrCntResult[i].cnt.RIGHT;
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt.LEFT) * 1 + (arrCntResult[i].cnt.RIGHT) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt.LEFT / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt.RIGHT / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }

        } else if (game_type == 'line_count') {
            arrValue = [{ val: '3', caption: '3', style: 'color-blue' }, { val: '4', caption: '4', style: 'color-red' }];
            cellValue = { 3: { caption: '3', style: 'bg-blue' }, 4: { caption: '4', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt[3] = arrCntResult[i].cnt[3] == undefined ? 0 : arrCntResult[i].cnt[3];
                arrCntResult[i].cnt[4] = arrCntResult[i].cnt[4] == undefined ? 0 : arrCntResult[i].cnt[4];
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt[3]) * 1 + (arrCntResult[i].cnt[4]) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt[3] / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt[4] / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }
        } else {
            arrValue = [{ val: 'ODD', caption: '홀', style: 'color-blue' }, { val: 'EVEN', caption: '짝', style: 'color-red' }];
            cellValue = { ODD: { caption: '홀', style: 'bg-blue' }, EVEN: { caption: '짝', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt.ODD = arrCntResult[i].cnt.ODD == undefined ? 0 : arrCntResult[i].cnt.ODD;
                arrCntResult[i].cnt.EVEN = arrCntResult[i].cnt.EVEN == undefined ? 0 : arrCntResult[i].cnt.EVEN;
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt.ODD) * 1 + (arrCntResult[i].cnt.EVEN) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt.ODD / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt.EVEN / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }
        }
        var tr2 = "<tr><td rowspan='2'>회차별통계</td>";
        for (var j = 0; j < arrValue.length; j++) {
            for (var i = 0; i < arrCntResult.length; i++) {
                var nCntLeft = arrCntResult[i].cnt[arrValue[j].val] == undefined ? 0 : arrCntResult[i].cnt[arrValue[j].val];
                if (j == 0) {
                    tr2 += `<td><span class='circle border ${arrValue[j].style}'><p>${arrValue[j].caption}</p></span><p>${nCntLeft}</p><p class="${arrCntResult[i].cnt.style[j]}" style="width: ${arrCntResult[i].cnt.per[j]}%"></p></td>`;
                } else {
                    tr2 += `<td><p class="${arrCntResult[i].cnt.style[j]}" style="width: ${arrCntResult[i].cnt.per[j]}%"></p><p>${nCntLeft}</p><span class='circle border ${arrValue[j].style}'><p>${arrValue[j].caption}</p></span></td>`;
                }
            }
            tr2 += "</tr><tr>"
        }
        tr2 = tr2.substr(0, tr2.length - 4);
        var period = $('.period-check > li.active').data('value');
        var sdate = App.toDate($('input[name="sdate"]').val());
        var edate = App.toDate($('input[name="edate"]').val());

        for (var i = edate; i >= sdate; i = i - 3600 * 24 * 1000) {
            var dt = App.getDate(i);
            tr2 += `<tr><td><label><input type="checkbox" class="" data-date="${i}">${dt} ${_data[dt] == undefined ? 0 : _data[dt].cnt}/${eround - sround + 1}</label></td>`;
            for (var j = sround; j <= eround; j++) {
                if (_data[dt] == undefined || _data[dt][j] == undefined) {
                    tr2 += "<td></td>";
                } else {
                    tr2 += `<td><span class="circle ${cellValue[_data[dt][j]].style}"><p>${cellValue[_data[dt][j]].caption}</p></td>`;
                }
            }
            tr2 += "</tr>";
        }
        html = tr + tr2;
        $('.round-result table.tbl-round-pladder').html(html);
        // $('input[type="checkbox"].flat-red').iCheck({
        //     checkboxClass: 'icheckbox_flat-red',
        //     radioClass: 'icheckbox_flat-red',
        //     increaseArea: '20%'
        // });
    }
};

var pkenoladder_data = function () {
    var MAX_ROUND = 576;
    var _data = [];
    var nCntStartLeft = 0;
    var nCntStartRight = 0;
    var nCntLine3 = 0;
    var nCntLine4 = 0;
    var nCntEndOdd = 0;
    var nCntEndEven = 0;
    var nCntPlopLR = 0;
    var nCntPlopLine = 0;
    var nCntPlopOddEven = 0;
    var nCntBrokenLR = nCntBrokenLine34 = nCntBrokenOddEven = 0;
    var nCntMaxLeft = nCntMaxRight = 0;
    var nCntMaxLine3 = nCntMaxLine4 = 0;
    var nCntMaxOdd = nCntMaxEven = 0;
    var nLeft4Odd = nLeft3Even = nRight4Even = nRight3Odd = 0;
    this._initPkenoladder = function (data) {
        Object.assign(_data, data);
        analyzePkenoladder();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        Object.assign(_data, data);
        $('.round-result').show();
        analyzePkenoladder();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (result, cntResult, sround, eround) {
        Object.assign(_data, result);
        $('.round-result').show();
        setRoundTable(cntResult, sround, eround);
    };
    this.initPkenoladder = function (dataByDay) {
        Object.assign(_data, dataByDay);
        analyzePkenoladder();
        calculatePlop();
        setStartLRTableData();
        setLine34TableData();
        setOddEvenTableData();
        setStatistics();
        setGameDataTable();
    };
    this.RecentListPkenoladder = function (data) {
        Object.assign(_data, data);
        analyzePkenoladder();
        var html = setRecentListResult();
        return (html);
    };
    var analyzePkenoladder = function () {
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['start_point'] == 'RIGHT') {
                _data[i]['start_point_formatted'] = '우';
                _data[i]['start_point_style'] = 'bg-red';
                _data[i]['start_point_style1'] = 'color-red br-red';
                nCntStartRight++;
                if (_data[i]['line_count'] == 3 && _data[i]['odd_even'] == 'ODD') {
                    nRight3Odd++;
                } else if (_data[i]['line_count'] == 4 && _data[i]['odd_even'] == 'EVEN') {
                    nRight4Even++;
                }
            } else {
                _data[i]['start_point_formatted'] = '좌';
                _data[i]['start_point_style'] = 'bg-blue';
                _data[i]['start_point_style1'] = 'color-blue br-blue';
                nCntStartLeft++;
                if (_data[i]['line_count'] == 4 && _data[i]['odd_even'] == 'ODD') {
                    nLeft4Odd++;
                } else if (_data[i]['line_count'] == 3 && _data[i]['odd_even'] == 'EVEN') {
                    nLeft3Even++;
                }
            }

            if (_data[i]['line_count'] == 3) {
                _data[i]['line_count_style'] = 'bg-blue';
                _data[i]['line_count_style1'] = 'color-blue br-blue';
                nCntLine3++;
            } else {
                _data[i]['line_count_style'] = 'bg-red';
                _data[i]['line_count_style1'] = 'color-red br-red';
                nCntLine4++;
            }

            if (_data[i]['odd_even'] == 'ODD') {
                _data[i]['odd_even_formatted'] = '홀';
                _data[i]['odd_even_style'] = 'bg-blue';
                nCntEndOdd++;
            } else {
                _data[i]['odd_even_formatted'] = '짝';
                _data[i]['odd_even_style'] = 'bg-red';
                nCntEndEven++;
            }
        }
    };
    var calculatePlop = function () {
        // var ladder_plop_lr = [];
        // var ladder_plop_line = [];
        // var ladder_plop_oddeven = [];
        // for(var i = 0; i < _data.length; i++){
        //     if(i == 0){
        //         if(_data[i]['start_point'] != _data[i + 1]['start_point'] && 
        //         _data[i + 1]['start_point'] != _data[i + 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['line_count'] != _data[i + 1]['line_count'] && 
        //         _data[i + 1]['line_count'] != _data[i + 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['odd_even'] != _data[i + 1]['odd_even'] && 
        //         _data[i + 1]['odd_even'] != _data[i + 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }else if(i == _data.length - 2){
        //         if(_data[i]['start_point'] != _data[i - 1]['start_point'] &&
        //         _data[i - 1]['start_point'] != _data[i - 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['line_count'] != _data[i - 1]['line_count'] &&
        //         _data[i - 1]['line_count'] != _data[i - 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['odd_even'] != _data[i - 1]['odd_even'] &&
        //         _data[i - 1]['odd_even'] != _data[i - 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }else if(i == _data.length - 1){
        //         continue;
        //     }else{
        //         if(_data[i - 1]['start_point'] != _data[i]['start_point'] &&
        //         _data[i]['start_point'] != _data[i + 1]['start_point'] &&
        //         _data[i + 1]['start_point'] != _data[i + 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['line_count'] != _data[i]['line_count'] &&
        //         _data[i]['line_count'] != _data[i + 1]['line_count'] &&
        //         _data[i + 1]['line_count'] != _data[i + 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['odd_even'] != _data[i]['odd_even'] &&
        //         _data[i]['odd_even'] != _data[i + 1]['odd_even'] &&
        //         _data[i + 1]['odd_even'] != _data[i + 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }
        // }
        // nCntPlopLR = ladder_plop_lr.length / 2;
        // nCntPlopLine = ladder_plop_line.length / 2;
        // nCntPlopOddEven = ladder_plop_oddeven.length / 2;
    };

    var setStartLRTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['start_point'] == 'LEFT') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['start_point_formatted']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['start_point_formatted']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['start_point_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['start_point'] == _data[i - 1]['start_point']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['start_point_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopLR++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['start_point_style']}'><p>${val}</p></span></td>`;
                nCntBrokenLR = Math.max(nCntBrokenLR, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenLR; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">좌</td>') {
                tbl_data[0][i] = '<td class="even">우</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">좌</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenLR; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenLR; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">좌</td>') {
                nCntMaxLeft = Math.max(nCntMaxLeft, cnt_per_col);
            } else {
                nCntMaxRight = Math.max(nCntMaxRight, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_left = (100 * nCntStartLeft / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nCntStartLeft + '번 (' + per_left + '%) ' + nCntMaxLeft + '연속');
        var per_right = (100 * nCntStartRight / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nCntStartRight + '번 (' + per_right + '%) ' + nCntMaxRight + '연속');
        $('#powerball_oddeven #plop_result').html((nCntBrokenLR - nCntPlopLR) + '번');
        $('#powerball_oddeven #broken_result').html((nCntBrokenLR + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };
    var setLine34TableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['line_count'] == '3') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['line_count']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['line_count']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['line_count_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['line_count'] == _data[i - 1]['line_count']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['line_count_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopLine++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['line_count_style']}'><p>${val}</p></span></td>`;
                nCntBrokenLine34 = Math.max(nCntBrokenLine34, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenLine34; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">3</td>') {
                tbl_data[0][i] = '<td class="even">4</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">3</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenLine34; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenLine34; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">3</td>') {
                nCntMaxLine3 = Math.max(nCntMaxLine3, cnt_per_col);
            } else {
                nCntMaxLine4 = Math.max(nCntMaxLine4, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_3 = (100 * nCntLine3 / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nCntLine3 + '번 (' + per_3 + '%) ' + nCntMaxLine3 + '연속');
        var per_4 = (100 * nCntLine4 / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nCntLine4 + '번 (' + per_4 + '%) ' + nCntMaxLine4 + '연속');
        $('#powerball_underover #plop_unover').html((nCntBrokenLine34 - nCntPlopLine) + '번');
        $('#powerball_underover #broken_unover').html((nCntBrokenLine34 + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };

    var setOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['odd_even'] == 'ODD') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['odd_even_formatted']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['odd_even_formatted']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['odd_even_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['odd_even'] == _data[i - 1]['odd_even']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['odd_even_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopOddEven++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['odd_even_style']}'><p>${val}</p></span></td>`;
                nCntBrokenOddEven = Math.max(nCntBrokenOddEven, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenOddEven; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">홀</td>') {
                tbl_data[0][i] = '<td class="even">짝</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenOddEven; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenOddEven; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">홀</td>') {
                nCntMaxOdd = Math.max(nCntMaxOdd, cnt_per_col);
            } else {
                nCntMaxEven = Math.max(nCntMaxEven, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nCntEndOdd / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #odd_ball').html(nCntEndOdd + '번 (' + per_odd + '%) ' + nCntMaxOdd + '연속');
        var per_even = (100 * nCntEndEven / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #even_ball').html(nCntEndEven + '번 (' + per_even + '%) ' + nCntMaxEven + '연속');
        $('#ball_oddeven #plop_ball').html((nCntBrokenOddEven - nCntPlopOddEven) + '번');
        $('#ball_oddeven #broken_ball').html((nCntBrokenOddEven + 1) + '번');
        $('#ball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };


    function setStatisticsMakeHtml(BlueCnt, RedCnt, MaxCnt, BlueTitle, RedTitle){
        BlueCnt *= 1;
        RedCnt *= 1; 
        MaxCnt *= 1;
        var per_blue = (BlueCnt > 0) ? (100 * BlueCnt / MaxCnt).toFixed(2) : '0.00';
        var per_red = (RedCnt > 0) ? (100 * RedCnt / MaxCnt).toFixed(2) : '0.00';
        var p_html = ``;

            if(BlueCnt > RedCnt){
            p_html =    `<div class="title-odd"  style='height: 20px;'><span class="circle bg-blue"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>
                                <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            if (RedCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>`;
            }
            p_html +=       `</div>
                        <div class="title-even" style='height: 20px;'><span class="circle bg-gray"><p>${RedTitle}</p></span></div>`;
        }else{
            p_html =    `<div class="title-odd" style='height: 20px;'><span class="circle bg-gray"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>`;
            if (BlueCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            }
            p_html +=           `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>
                            </div>`;
            var bg_redColor = 'bg-red';
            if (RedCnt <= 0)   {    bg_redColor = 'bg-gray';    }
            p_html +=       `<div class="title-even" style='height: 20px;'><span class="circle ${bg_redColor}"><p>${RedTitle}</p></span></div>`;
        }
        return (p_html);
    }
        
    var PercentCalcProc = function(val1, val2) {
        if (val1 == 0 || val2 == 0) return "0.00";
        else{
            let ret = (100 * val1 / val2).toFixed(2);
            return ret;
        }
    };
    
    var setStatistics = function () {
        var p_oddeven_html = setStatisticsMakeHtml(nCntStartLeft, nCntStartRight, MAX_ROUND, '좌', '우');
        $('.powerball-chart .left-right').html(p_oddeven_html);
        
        var p_34_html = setStatisticsMakeHtml(nCntLine3, nCntLine4, MAX_ROUND, '3', '4');
        $('.powerball-chart .line-34').html(p_34_html);
        
        var p_unover_html = setStatisticsMakeHtml(nCntEndOdd, nCntEndEven, MAX_ROUND, '홀', '짝');
        $('.powerball-chart .end-odd-even').html(p_unover_html);


        var per_left4odd = PercentCalcProc(nLeft4Odd, MAX_ROUND); // (100 * nLeft4Odd / MAX_ROUND).toFixed(2);
        var per_left3even = PercentCalcProc(nLeft3Even, MAX_ROUND); // (100 * nLeft3Even / MAX_ROUND).toFixed(2);
        var per_right4even = PercentCalcProc(nRight4Even, MAX_ROUND); // (100 * nRight4Even / MAX_ROUND).toFixed(2);
        var per_right3odd = PercentCalcProc(nRight3Odd, MAX_ROUND); // (100 * nRight3Odd / MAX_ROUND).toFixed(2);
        
        var chart = c3.generate({
            bindto: '#powerladder_piechart',
            data: {
                columns: [
                    ['d1', nLeft4Odd],
                    ['d2', nRight3Odd],
                    ['d3', nLeft3Even],
                    ['d4', nRight4Even],
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `좌4홀: ${nLeft4Odd}회(${per_left4odd}%)`,
                    d2: `우3홀: ${nRight3Odd}회(${per_right3odd}%)`,
                    d3: `좌3짝: ${nLeft3Even}회(${per_left3even}%)`,
                    d4: `우4짝: ${nRight4Even}회(${per_right4even}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#3498db', '#2980b9', '#e74c3c', '#c0392b']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['reg_date']} / <span class='color-black'>${_data[i]['date_round']}</span></td>
                        <td><span class="circle ${_data[i]['start_point_style1']}"><p>${_data[i]['start_point_formatted']}</p></span></td>
                        <td><span class="circle ${_data[i]['line_count_style1']}"><p>${_data[i]['line_count']}</p> </span></td>
                        <td><span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i]['odd_even_formatted']}</p></span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };

    var setRecentResult = function () {
        var i = 0;
        $('#pkenoladder_recent .recent-results').each(function () {
            var html = `<div class="game-title">보글사다리 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['start_point_style']}"><p>${_data[i]['start_point_formatted']}</p></span>
                            <span class="circle ${_data[i]['line_count_style']}"><p>${_data[i]['line_count']}</p></span>
                            <span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i++]['odd_even_formatted']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };
    var setRecentListResult = function () {
        var i = 0;
        var html = `<div class="game-title">보글사다리 ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['start_point_style']}"><p>${_data[i]['start_point_formatted']}</p></span>
                        <span class="circle ${_data[i]['line_count_style']}"><p>${_data[i]['line_count']}</p></span>
                        <span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i++]['odd_even_formatted']}</p></span>
                    </div>`;
        return (html);
    };
    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntSLeft = nCntSRight = 0;
        var nCntLine3 = nCntLine4 = 0;
        var nCntEOdd = nCntEEven = 0;
        var nCntLeft3 = nCntLeft4 = nCntRight3 = nCntRight4 = 0;
        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['start_point'] == 'LEFT') {
                nCntSLeft++;
                if (_data[i]['line_count'] == 3) {
                    nCntLeft3++;
                } else {
                    nCntLeft4++;
                }
            } else {
                if (_data[i]['line_count'] == 3) {
                    nCntRight3++;
                } else {
                    nCntRight4++;
                }
            }
            if (_data[i]['line_count'] == 3) {
                nCntLine3++;
            }
            if (_data[i]['odd_even'] == 'ODD') {
                nCntEOdd++;
            }
        }
        nCntSRight = nCnt - nCntSLeft;
        nCntLine4 = nCnt - nCntLine3;
        nCntEEven = nCnt - nCntEOdd;

        var p_oddeven_html = setStatisticsMakeHtml(nCntSLeft, nCntSRight, nCnt, '좌', '우');
        $('.powerball-chart .left-right').html(p_oddeven_html);
        
        var p_34_html = setStatisticsMakeHtml(nCntLine3, nCntLine4, nCnt, '3', '4');
        $('.powerball-chart .line-34').html(p_34_html);
        
        var n_oddeven_html = setStatisticsMakeHtml(nCntEOdd, nCntEEven, nCnt, '홀', '짝');
        $('.powerball-chart .end-odd-even').html(n_oddeven_html);

        var per_large = PercentCalcProc(nCntLeft3, nCnt); // (100 * nCntLeft3 / nCnt).toFixed(2);
        var per_middle = PercentCalcProc(nCntLeft4, nCnt); // (100 * nCntLeft4 / nCnt).toFixed(2);
        var per_small = PercentCalcProc(nCntRight3, nCnt); // (100 * (nCntRight3) / nCnt).toFixed(2);
        var per_small_ = PercentCalcProc(nCntRight4, nCnt); // (100 * (nCntRight4) / nCnt).toFixed(2);

        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', nCntLeft3],
                    ['d2', nCntLeft4],
                    ['d3', nCntRight3],
                    ['d4', nCntRight4],
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `좌4홀: ${nCntLeft4}회(${per_middle}%)`,
                    d2: `우3홀: ${nCntRight3}회(${per_small}%)`,
                    d3: `좌3짝: ${nCntLeft3}회(${per_large}%)`,
                    d4: `우4짝: ${nCntRight4}회(${per_small_}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#3498db', '#2980b9', '#e74c3c', '#c0392b']
            },
            tooltip: {

            },
        });
    };
    var setRoundTable = function (arrCntResult, sround, eround) {
        var html = "";
        var tr = "<tr><td style='min-width: 110px;'>회차</td>";
        for (var i = 0; i < arrCntResult.length; i++) {
            tr += `<td>${arrCntResult[i].round}</td>`;
        }
        tr += "</tr>";
        var arrValue = [];
        var game_type = $('select[name="game_type"]').val();
        if (game_type == 'start_point') {
            arrValue = [{ val: 'LEFT', caption: '좌', style: 'color-blue' }, { val: 'RIGHT', caption: '우', style: 'color-red' }];
            cellValue = { LEFT: { caption: '좌', style: 'bg-blue' }, RIGHT: { caption: '우', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt.LEFT = arrCntResult[i].cnt.LEFT == undefined ? 0 : arrCntResult[i].cnt.LEFT;
                arrCntResult[i].cnt.RIGHT = arrCntResult[i].cnt.RIGHT == undefined ? 0 : arrCntResult[i].cnt.RIGHT;
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt.LEFT) * 1 + (arrCntResult[i].cnt.RIGHT) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt.LEFT / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt.RIGHT / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }

        } else if (game_type == 'line_count') {
            arrValue = [{ val: '3', caption: '3', style: 'color-blue' }, { val: '4', caption: '4', style: 'color-red' }];
            cellValue = { 3: { caption: '3', style: 'bg-blue' }, 4: { caption: '4', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt[3] = arrCntResult[i].cnt[3] == undefined ? 0 : arrCntResult[i].cnt[3];
                arrCntResult[i].cnt[4] = arrCntResult[i].cnt[4] == undefined ? 0 : arrCntResult[i].cnt[4];
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt[3]) * 1 + (arrCntResult[i].cnt[4]) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt[3] / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt[4] / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }
        } else {
            arrValue = [{ val: 'ODD', caption: '홀', style: 'color-blue' }, { val: 'EVEN', caption: '짝', style: 'color-red' }];
            cellValue = { ODD: { caption: '홀', style: 'bg-blue' }, EVEN: { caption: '짝', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt.ODD = arrCntResult[i].cnt.ODD == undefined ? 0 : arrCntResult[i].cnt.ODD;
                arrCntResult[i].cnt.EVEN = arrCntResult[i].cnt.EVEN == undefined ? 0 : arrCntResult[i].cnt.EVEN;
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt.ODD) * 1 + (arrCntResult[i].cnt.EVEN) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt.ODD / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt.EVEN / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }
        }
        var tr2 = "<tr><td rowspan='2'>회차별통계</td>";
        for (var j = 0; j < arrValue.length; j++) {
            for (var i = 0; i < arrCntResult.length; i++) {
                var nCntLeft = arrCntResult[i].cnt[arrValue[j].val] == undefined ? 0 : arrCntResult[i].cnt[arrValue[j].val];
                if (j == 0) {
                    tr2 += `<td><span class='circle border ${arrValue[j].style}'><p>${arrValue[j].caption}</p></span><p>${nCntLeft}</p><p class="${arrCntResult[i].cnt.style[j]}" style="width: ${arrCntResult[i].cnt.per[j]}%"></p></td>`;
                } else {
                    tr2 += `<td><p class="${arrCntResult[i].cnt.style[j]}" style="width: ${arrCntResult[i].cnt.per[j]}%"></p><p>${nCntLeft}</p><span class='circle border ${arrValue[j].style}'><p>${arrValue[j].caption}</p></span></td>`;
                }
            }
            tr2 += "</tr><tr>"
        }
        tr2 = tr2.substr(0, tr2.length - 4);
        var period = $('.period-check > li.active').data('value');
        var sdate = App.toDate($('input[name="sdate"]').val());
        var edate = App.toDate($('input[name="edate"]').val());

        for (var i = edate; i >= sdate; i = i - 3600 * 24 * 1000) {
            var dt = App.getDate(i);
            tr2 += `<tr><td><label><input type="checkbox" class="" data-date="${i}">${dt} ${_data[dt] == undefined ? 0 : _data[dt].cnt}/${eround - sround + 1}</label></td>`;
            for (var j = sround; j <= eround; j++) {
                if (_data[dt] == undefined || _data[dt][j] == undefined) {
                    tr2 += "<td></td>";
                } else {
                    tr2 += `<td><span class="circle ${cellValue[_data[dt][j]].style}"><p>${cellValue[_data[dt][j]].caption}</p></td>`;
                }
            }
            tr2 += "</tr>";
        }
        html = tr + tr2;
        $('.round-result table.tbl-round-pladder').html(html);
        // $('input[type="checkbox"].flat-red').iCheck({
        //     checkboxClass: 'icheckbox_flat-red',
        //     radioClass: 'icheckbox_flat-red',
        //     increaseArea: '20%'
        // });
    }
};

var powerladder_game_data = function () {
    var MAX_ROUND = 480;
    var _data = [];
    var nCntStartLeft = 0;
    var nCntStartRight = 0;
    var nCntLine3 = 0;
    var nCntLine4 = 0;
    var nCntEndOdd = 0;
    var nCntEndEven = 0;
    var nCntPlopLR = 0;
    var nCntPlopLine = 0;
    var nCntPlopOddEven = 0;
    var nCntBrokenLR = nCntBrokenLine34 = nCntBrokenOddEven = 0;
    var nCntMaxLeft = nCntMaxRight = 0;
    var nCntMaxLine3 = nCntMaxLine4 = 0;
    var nCntMaxOdd = nCntMaxEven = 0;
    var nLeft4Odd = nLeft3Even = nRight4Even = nRight3Odd = 0;
    this._initPowerladder_game = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        analyzePowerladder_game();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        $('.round-result').show();
        analyzePowerladder_game();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (result, cntResult, sround, eround) {
        Object.assign(_data, result);
        MAX_ROUND = _data.length;
        $('.round-result').show();
        setRoundTable(cntResult, sround, eround);
    };
    this.initPowerladder_game = function (dataByDay) {
        Object.assign(_data, dataByDay);
        MAX_ROUND = _data.length;
        analyzePowerladder_game();
        calculatePlop();
        setStartLRTableData();
        setLine34TableData();
        setOddEvenTableData();
        setStatistics();
        setGameDataTable();
    };
    this.RecentListPowerladder_game = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        analyzePowerladder_game();
        var html = setRecentListResult();
        return (html);
    };
    var analyzePowerladder_game = function () {
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['start_point'] == 'RIGHT') {
                _data[i]['start_point_formatted'] = '우';
                _data[i]['start_point_style'] = 'bg-red';
                _data[i]['start_point_style1'] = 'color-red br-red';
                nCntStartRight++;
                if (_data[i]['line_count'] == 3 && _data[i]['odd_even'] == 'ODD') {
                    nRight3Odd++;
                } else if (_data[i]['line_count'] == 4 && _data[i]['odd_even'] == 'EVEN') {
                    nRight4Even++;
                }
            } else {
                _data[i]['start_point_formatted'] = '좌';
                _data[i]['start_point_style'] = 'bg-blue';
                _data[i]['start_point_style1'] = 'color-blue br-blue';
                nCntStartLeft++;
                if (_data[i]['line_count'] == 4 && _data[i]['odd_even'] == 'ODD') {
                    nLeft4Odd++;
                } else if (_data[i]['line_count'] == 3 && _data[i]['odd_even'] == 'EVEN') {
                    nLeft3Even++;
                }
            }

            if (_data[i]['line_count'] == 3) {
                _data[i]['line_count_style'] = 'bg-blue';
                _data[i]['line_count_style1'] = 'color-blue br-blue';
                nCntLine3++;
            } else {
                _data[i]['line_count_style'] = 'bg-red';
                _data[i]['line_count_style1'] = 'color-red br-red';
                nCntLine4++;
            }

            if (_data[i]['odd_even'] == 'ODD') {
                _data[i]['odd_even_formatted'] = '홀';
                _data[i]['odd_even_style'] = 'bg-blue';
                nCntEndOdd++;
            } else {
                _data[i]['odd_even_formatted'] = '짝';
                _data[i]['odd_even_style'] = 'bg-red';
                nCntEndEven++;
            }
        }
    };
    var calculatePlop = function () {
        // var ladder_plop_lr = [];
        // var ladder_plop_line = [];
        // var ladder_plop_oddeven = [];
        // for(var i = 0; i < _data.length; i++){
        //     if(i == 0){
        //         if(_data[i]['start_point'] != _data[i + 1]['start_point'] && 
        //         _data[i + 1]['start_point'] != _data[i + 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['line_count'] != _data[i + 1]['line_count'] && 
        //         _data[i + 1]['line_count'] != _data[i + 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['odd_even'] != _data[i + 1]['odd_even'] && 
        //         _data[i + 1]['odd_even'] != _data[i + 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }else if(i == _data.length - 2){
        //         if(_data[i]['start_point'] != _data[i - 1]['start_point'] &&
        //         _data[i - 1]['start_point'] != _data[i - 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['line_count'] != _data[i - 1]['line_count'] &&
        //         _data[i - 1]['line_count'] != _data[i - 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['odd_even'] != _data[i - 1]['odd_even'] &&
        //         _data[i - 1]['odd_even'] != _data[i - 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }else if(i == _data.length - 1){
        //         continue;
        //     }else{
        //         if(_data[i - 1]['start_point'] != _data[i]['start_point'] &&
        //         _data[i]['start_point'] != _data[i + 1]['start_point'] &&
        //         _data[i + 1]['start_point'] != _data[i + 2]['start_point']){
        //             if(!ladder_plop_lr.includes(i)){
        //                 ladder_plop_lr.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['line_count'] != _data[i]['line_count'] &&
        //         _data[i]['line_count'] != _data[i + 1]['line_count'] &&
        //         _data[i + 1]['line_count'] != _data[i + 2]['line_count']){
        //             if(!ladder_plop_line.includes(i)){
        //                 ladder_plop_line.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['odd_even'] != _data[i]['odd_even'] &&
        //         _data[i]['odd_even'] != _data[i + 1]['odd_even'] &&
        //         _data[i + 1]['odd_even'] != _data[i + 2]['odd_even']){
        //             if(!ladder_plop_oddeven.includes(i)){
        //                 ladder_plop_oddeven.push(i, i + 1);
        //             }
        //         }                
        //     }
        // }
        // nCntPlopLR = ladder_plop_lr.length / 2;
        // nCntPlopLine = ladder_plop_line.length / 2;
        // nCntPlopOddEven = ladder_plop_oddeven.length / 2;
    };

    var setStartLRTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['start_point'] == 'LEFT') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['start_point_formatted']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['start_point_formatted']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['start_point_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['start_point'] == _data[i - 1]['start_point']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['start_point_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopLR++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['start_point_style']}'><p>${val}</p></span></td>`;
                nCntBrokenLR = Math.max(nCntBrokenLR, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenLR; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">좌</td>') {
                tbl_data[0][i] = '<td class="even">우</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">좌</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenLR; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenLR; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">좌</td>') {
                nCntMaxLeft = Math.max(nCntMaxLeft, cnt_per_col);
            } else {
                nCntMaxRight = Math.max(nCntMaxRight, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_left = (100 * nCntStartLeft / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nCntStartLeft + '번 (' + per_left + '%) ' + nCntMaxLeft + '연속');
        var per_right = (100 * nCntStartRight / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nCntStartRight + '번 (' + per_right + '%) ' + nCntMaxRight + '연속');
        $('#powerball_oddeven #plop_result').html((nCntBrokenLR - nCntPlopLR) + '번');
        $('#powerball_oddeven #broken_result').html((nCntBrokenLR + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };
    var setLine34TableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['line_count'] == '3') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['line_count']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['line_count']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['line_count_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['line_count'] == _data[i - 1]['line_count']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['line_count_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopLine++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['line_count_style']}'><p>${val}</p></span></td>`;
                nCntBrokenLine34 = Math.max(nCntBrokenLine34, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenLine34; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">3</td>') {
                tbl_data[0][i] = '<td class="even">4</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">3</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenLine34; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenLine34; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">3</td>') {
                nCntMaxLine3 = Math.max(nCntMaxLine3, cnt_per_col);
            } else {
                nCntMaxLine4 = Math.max(nCntMaxLine4, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_3 = (100 * nCntLine3 / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nCntLine3 + '번 (' + per_3 + '%) ' + nCntMaxLine3 + '연속');
        var per_4 = (100 * nCntLine4 / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nCntLine4 + '번 (' + per_4 + '%) ' + nCntMaxLine4 + '연속');
        $('#powerball_underover #plop_unover').html((nCntBrokenLine34 - nCntPlopLine) + '번');
        $('#powerball_underover #broken_unover').html((nCntBrokenLine34 + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };

    var setOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['odd_even'] == 'ODD') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['odd_even_formatted']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['odd_even_formatted']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['odd_even_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['odd_even'] == _data[i - 1]['odd_even']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['odd_even_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPlopOddEven++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['odd_even_style']}'><p>${val}</p></span></td>`;
                nCntBrokenOddEven = Math.max(nCntBrokenOddEven, jj);
            }
        }
        for (var i = 1; i <= nCntBrokenOddEven; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">홀</td>') {
                tbl_data[0][i] = '<td class="even">짝</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBrokenOddEven; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBrokenOddEven; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">홀</td>') {
                nCntMaxOdd = Math.max(nCntMaxOdd, cnt_per_col);
            } else {
                nCntMaxEven = Math.max(nCntMaxEven, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nCntEndOdd / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #odd_ball').html(nCntEndOdd + '번 (' + per_odd + '%) ' + nCntMaxOdd + '연속');
        var per_even = (100 * nCntEndEven / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #even_ball').html(nCntEndEven + '번 (' + per_even + '%) ' + nCntMaxEven + '연속');
        $('#ball_oddeven #plop_ball').html((nCntBrokenOddEven - nCntPlopOddEven) + '번');
        $('#ball_oddeven #broken_ball').html((nCntBrokenOddEven + 1) + '번');
        $('#ball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };


    function setStatisticsMakeHtml(BlueCnt, RedCnt, MaxCnt, BlueTitle, RedTitle){
        BlueCnt *= 1;
        RedCnt *= 1; 
        MaxCnt *= 1;
        var per_blue = (BlueCnt > 0) ? (100 * BlueCnt / MaxCnt).toFixed(2) : '0.00';
        var per_red = (RedCnt > 0) ? (100 * RedCnt / MaxCnt).toFixed(2) : '0.00';
        var p_html = ``;

            if(BlueCnt > RedCnt){
            p_html =    `<div class="title-odd"  style='height: 20px;'><span class="circle bg-blue"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>
                                <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            if (RedCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>`;
            }
            p_html +=       `</div>
                        <div class="title-even" style='height: 20px;'><span class="circle bg-gray"><p>${RedTitle}</p></span></div>`;
        }else{
            p_html =    `<div class="title-odd" style='height: 20px;'><span class="circle bg-gray"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>`;
            if (BlueCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            }
            p_html +=           `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>
                            </div>`;
            var bg_redColor = 'bg-red';
            if (RedCnt <= 0)   {    bg_redColor = 'bg-gray';    }
            p_html +=       `<div class="title-even" style='height: 20px;'><span class="circle ${bg_redColor}"><p>${RedTitle}</p></span></div>`;
        }
        return (p_html);
    }
        
    var PercentCalcProc = function(val1, val2) {
        if (val1 == 0 || val2 == 0) return "0.00";
        else{
            let ret = (100 * val1 / val2).toFixed(2);
            return ret;
        }
    };
    
    var setStatistics = function () {
        var p_oddeven_html = setStatisticsMakeHtml(nCntStartLeft, nCntStartRight, MAX_ROUND, '좌', '우');
        $('.powerball-chart .left-right').html(p_oddeven_html);
        
        var p_34_html = setStatisticsMakeHtml(nCntLine3, nCntLine4, MAX_ROUND, '3', '4');
        $('.powerball-chart .line-34').html(p_34_html);
        
        var p_unover_html = setStatisticsMakeHtml(nCntEndOdd, nCntEndEven, MAX_ROUND, '홀', '짝');
        $('.powerball-chart .end-odd-even').html(p_unover_html);


        var per_left4odd = PercentCalcProc(nLeft4Odd, MAX_ROUND); // (100 * nLeft4Odd / MAX_ROUND).toFixed(2);
        var per_left3even = PercentCalcProc(nLeft3Even, MAX_ROUND); // (100 * nLeft3Even / MAX_ROUND).toFixed(2);
        var per_right4even = PercentCalcProc(nRight4Even, MAX_ROUND); // (100 * nRight4Even / MAX_ROUND).toFixed(2);
        var per_right3odd = PercentCalcProc(nRight3Odd, MAX_ROUND); // (100 * nRight3Odd / MAX_ROUND).toFixed(2);
        
        var chart = c3.generate({
            bindto: '#powerladder_piechart',
            data: {
                columns: [
                    ['d1', nLeft4Odd],
                    ['d2', nRight3Odd],
                    ['d3', nLeft3Even],
                    ['d4', nRight4Even],
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `좌4홀: ${nLeft4Odd}회(${per_left4odd}%)`,
                    d2: `우3홀: ${nRight3Odd}회(${per_right3odd}%)`,
                    d3: `좌3짝: ${nLeft3Even}회(${per_left3even}%)`,
                    d4: `우4짝: ${nRight4Even}회(${per_right4even}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#3498db', '#2980b9', '#e74c3c', '#c0392b']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['reg_date']} / <span class='color-black'>${_data[i]['date_round']}</span></td>
                        <td><span class="circle ${_data[i]['start_point_style1']}"><p>${_data[i]['start_point_formatted']}</p></span></td>
                        <td><span class="circle ${_data[i]['line_count_style1']}"><p>${_data[i]['line_count']}</p> </span></td>
                        <td><span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i]['odd_even_formatted']}</p></span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };

    var setRecentResult = function () {
        var i = 0;
        $('#pkenoladder_recent .recent-results').each(function () {
            var html = `<div class="game-title">보글사다리 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['start_point_style']}"><p>${_data[i]['start_point_formatted']}</p></span>
                            <span class="circle ${_data[i]['line_count_style']}"><p>${_data[i]['line_count']}</p></span>
                            <span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i++]['odd_even_formatted']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };
    var setRecentListResult = function () {
        var i = 0;
        var html = `<div class="game-title">보글사다리 ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['start_point_style']}"><p>${_data[i]['start_point_formatted']}</p></span>
                        <span class="circle ${_data[i]['line_count_style']}"><p>${_data[i]['line_count']}</p></span>
                        <span class="circle ${_data[i]['odd_even_style']}"><p>${_data[i++]['odd_even_formatted']}</p></span>
                    </div>`;
        return (html);
    };
    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntSLeft = nCntSRight = 0;
        var nCntLine3 = nCntLine4 = 0;
        var nCntEOdd = nCntEEven = 0;
        var nCntLeft3 = nCntLeft4 = nCntRight3 = nCntRight4 = 0;
        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['start_point'] == 'LEFT') {
                nCntSLeft++;
                if (_data[i]['line_count'] == 3) {
                    nCntLeft3++;
                } else {
                    nCntLeft4++;
                }
            } else {
                if (_data[i]['line_count'] == 3) {
                    nCntRight3++;
                } else {
                    nCntRight4++;
                }
            }
            if (_data[i]['line_count'] == 3) {
                nCntLine3++;
            }
            if (_data[i]['odd_even'] == 'ODD') {
                nCntEOdd++;
            }
        }
        nCntSRight = nCnt - nCntSLeft;
        nCntLine4 = nCnt - nCntLine3;
        nCntEEven = nCnt - nCntEOdd;

        var p_oddeven_html = setStatisticsMakeHtml(nCntSLeft, nCntSRight, nCnt, '좌', '우');
        $('.powerball-chart .left-right').html(p_oddeven_html);
        
        var p_34_html = setStatisticsMakeHtml(nCntLine3, nCntLine4, nCnt, '3', '4');
        $('.powerball-chart .line-34').html(p_34_html);
        
        var n_oddeven_html = setStatisticsMakeHtml(nCntEOdd, nCntEEven, nCnt, '홀', '짝');
        $('.powerball-chart .end-odd-even').html(n_oddeven_html);

        var per_large = PercentCalcProc(nCntLeft3, nCnt); // (100 * nCntLeft3 / nCnt).toFixed(2);
        var per_middle = PercentCalcProc(nCntLeft4, nCnt); // (100 * nCntLeft4 / nCnt).toFixed(2);
        var per_small = PercentCalcProc(nCntRight3, nCnt); // (100 * (nCntRight3) / nCnt).toFixed(2);
        var per_small_ = PercentCalcProc(nCntRight4, nCnt); // (100 * (nCntRight4) / nCnt).toFixed(2);

        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', nCntLeft3],
                    ['d2', nCntLeft4],
                    ['d3', nCntRight3],
                    ['d4', nCntRight4],
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `좌4홀: ${nCntLeft4}회(${per_middle}%)`,
                    d2: `우3홀: ${nCntRight3}회(${per_small}%)`,
                    d3: `좌3짝: ${nCntLeft3}회(${per_large}%)`,
                    d4: `우4짝: ${nCntRight4}회(${per_small_}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#3498db', '#2980b9', '#e74c3c', '#c0392b']
            },
            tooltip: {

            },
        });
    };
    var setRoundTable = function (arrCntResult, sround, eround) {
        var html = "";
        var tr = "<tr><td style='min-width: 110px;'>회차</td>";
        for (var i = 0; i < arrCntResult.length; i++) {
            tr += `<td>${arrCntResult[i].round}</td>`;
        }
        tr += "</tr>";
        var arrValue = [];
        var game_type = $('select[name="game_type"]').val();
        if (game_type == 'start_point') {
            arrValue = [{ val: 'LEFT', caption: '좌', style: 'color-blue' }, { val: 'RIGHT', caption: '우', style: 'color-red' }];
            cellValue = { LEFT: { caption: '좌', style: 'bg-blue' }, RIGHT: { caption: '우', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt.LEFT = arrCntResult[i].cnt.LEFT == undefined ? 0 : arrCntResult[i].cnt.LEFT;
                arrCntResult[i].cnt.RIGHT = arrCntResult[i].cnt.RIGHT == undefined ? 0 : arrCntResult[i].cnt.RIGHT;
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt.LEFT) * 1 + (arrCntResult[i].cnt.RIGHT) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt.LEFT / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt.RIGHT / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }

        } else if (game_type == 'line_count') {
            arrValue = [{ val: '3', caption: '3', style: 'color-blue' }, { val: '4', caption: '4', style: 'color-red' }];
            cellValue = { 3: { caption: '3', style: 'bg-blue' }, 4: { caption: '4', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt[3] = arrCntResult[i].cnt[3] == undefined ? 0 : arrCntResult[i].cnt[3];
                arrCntResult[i].cnt[4] = arrCntResult[i].cnt[4] == undefined ? 0 : arrCntResult[i].cnt[4];
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt[3]) * 1 + (arrCntResult[i].cnt[4]) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt[3] / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt[4] / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }
        } else {
            arrValue = [{ val: 'ODD', caption: '홀', style: 'color-blue' }, { val: 'EVEN', caption: '짝', style: 'color-red' }];
            cellValue = { ODD: { caption: '홀', style: 'bg-blue' }, EVEN: { caption: '짝', style: 'bg-red' } };
            for (var i = 0; i < arrCntResult.length; i++) {
                arrCntResult[i].cnt.ODD = arrCntResult[i].cnt.ODD == undefined ? 0 : arrCntResult[i].cnt.ODD;
                arrCntResult[i].cnt.EVEN = arrCntResult[i].cnt.EVEN == undefined ? 0 : arrCntResult[i].cnt.EVEN;
                arrCntResult[i].cnt.cnt = (arrCntResult[i].cnt.ODD) * 1 + (arrCntResult[i].cnt.EVEN) * 1;
                arrCntResult[i].cnt.per = [(arrCntResult[i].cnt.ODD / arrCntResult[i].cnt.cnt * 100).toFixed(1),
                (arrCntResult[i].cnt.EVEN / arrCntResult[i].cnt.cnt * 100).toFixed(1)];
                arrCntResult[i].cnt.style = ['bg-blue bottom-line', 'bg-red top-line'];
            }
        }
        var tr2 = "<tr><td rowspan='2'>회차별통계</td>";
        for (var j = 0; j < arrValue.length; j++) {
            for (var i = 0; i < arrCntResult.length; i++) {
                var nCntLeft = arrCntResult[i].cnt[arrValue[j].val] == undefined ? 0 : arrCntResult[i].cnt[arrValue[j].val];
                if (j == 0) {
                    tr2 += `<td><span class='circle border ${arrValue[j].style}'><p>${arrValue[j].caption}</p></span><p>${nCntLeft}</p><p class="${arrCntResult[i].cnt.style[j]}" style="width: ${arrCntResult[i].cnt.per[j]}%"></p></td>`;
                } else {
                    tr2 += `<td><p class="${arrCntResult[i].cnt.style[j]}" style="width: ${arrCntResult[i].cnt.per[j]}%"></p><p>${nCntLeft}</p><span class='circle border ${arrValue[j].style}'><p>${arrValue[j].caption}</p></span></td>`;
                }
            }
            tr2 += "</tr><tr>"
        }
        tr2 = tr2.substr(0, tr2.length - 4);
        var period = $('.period-check > li.active').data('value');
        var sdate = App.toDate($('input[name="sdate"]').val());
        var edate = App.toDate($('input[name="edate"]').val());

        for (var i = edate; i >= sdate; i = i - 3600 * 24 * 1000) {
            var dt = App.getDate(i);
            tr2 += `<tr><td><label><input type="checkbox" class="" data-date="${i}">${dt} ${_data[dt] == undefined ? 0 : _data[dt].cnt}/${eround - sround + 1}</label></td>`;
            for (var j = sround; j <= eround; j++) {
                if (_data[dt] == undefined || _data[dt][j] == undefined) {
                    tr2 += "<td></td>";
                } else {
                    tr2 += `<td><span class="circle ${cellValue[_data[dt][j]].style}"><p>${cellValue[_data[dt][j]].caption}</p></td>`;
                }
            }
            tr2 += "</tr>";
        }
        html = tr + tr2;
        $('.round-result table.tbl-round-pladder').html(html);
        // $('input[type="checkbox"].flat-red').iCheck({
        //     checkboxClass: 'icheckbox_flat-red',
        //     radioClass: 'icheckbox_flat-red',
        //     increaseArea: '20%'
        // });
    }
};

var powerbaccarat_data = function () {
    var MAX_ROUND = 288;
    var STAND_POWER_UNOVER = 4.5;
    var _data = [];
    var nBrokenPowerBall = nBrokenDragonTiger = 0;
    var nCntMaxPower = nCntMaxDragon = 0;
    var nCntMaxBall = nCntMaxTiger = 0;
    var nCntMaxTie = _nCntMaxTie = 0;
    var nCntPower = nCntBall = nCntTie = 0;
    var nCntDragon = nCntTiger = _nCntTie = 0;
    var nCntPballUnder = nCntPballOdd = nCntNballOdd = 0;
    this.initPowerbaccarat = function (dataByDay) {
        _data = dataByDay;
        MAX_ROUND = _data.length;
        analyzePowerbaccarat();
        setPowerAndBallData();
        setDragonAndTigerData();
        setStatistics();
        setGameDataTable();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        _data = data;
        MAX_ROUND = _data.length;
        $('.round-result').show();
        analyzePowerbaccarat();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (data, game_type = "power_ball", sround, eround, sdate, edate) {
        _data = data;
        $('.round-result').show();
        setRoundTable(game_type, sround, eround, sdate, edate);
    }
    this._initPowerbaccarat = function (data) {
        _data = data;
        MAX_ROUND = _data.length;
        analyzePowerbaccarat();
        setPowerAndBallData();
        setDragonAndTigerData();
    }
    var analyzePowerbaccarat = function () {
        for (var i = 0; i < _data.length; i++) {
            var datum = _data[i];
            var arrBall = datum['ball'].split(',');
            datum['power'] = (arrBall[0] * 1 + arrBall[1] * 1) % 10;
            datum['ball'] = (arrBall[3] * 1 + arrBall[4] * 1) % 10;
            if (datum['power'] > datum['ball']) {
                datum['power_ball'] = 'power';
                datum['power_ball_f'] = 'P';
                datum['power_ball_style'] = 'bg-pred';
                nCntPower++;
            } else if (datum['power'] < datum['ball']) {
                datum['power_ball'] = 'ball';
                datum['power_ball_f'] = 'B';
                datum['power_ball_style'] = 'bg-yellow';
                nCntBall++;
            } else {
                datum['power_ball'] = 'tie';
                datum['power_ball_f'] = 'Tie';
                datum['power_ball_style'] = 'bg-tblack';
                nCntTie++;
            }

            datum['dragon'] = arrBall[0] * 1 % 10;
            datum['tiger'] = arrBall[4] * 1 % 10;
            if (datum['dragon'] > datum['tiger']) {
                datum['dragon_tiger'] = 'dragon';
                datum['dragon_tiger_f'] = 'D';
                datum['dragon_tiger_style'] = 'bg-dgreen';
                nCntDragon++;
            } else if (datum['dragon'] < datum['tiger']) {
                datum['dragon_tiger'] = 'tiger';
                datum['dragon_tiger_f'] = 'T';
                datum['dragon_tiger_style'] = 'bg-violet';
                nCntTiger++;
            } else {
                datum['dragon_tiger'] = 'tie';
                datum['dragon_tiger_f'] = 'Tie';
                datum['dragon_tiger_style'] = 'bg-tblack';
                _nCntTie++;
            }

            if (datum['pb'] > STAND_POWER_UNOVER) {
                datum['pball_unover'] = 'over';
            } else {
                datum['pball_unover'] = 'under';
                nCntPballUnder++;
            }

            var nSumBall = 0;
            for (var j = 0; j < arrBall.length; j++) {
                nSumBall += arrBall[j] * 1;
            }
            if (nSumBall % 2) {
                datum['nball_oddeven'] = 'ODD';
                nCntNballOdd++;
            } else {
                datum['nball_oddeven'] = 'EVEN';
            }

            if (datum['pb'] % 2) {
                datum['pball_oddeven'] = 'ODD';
                nCntPballOdd++;
            } else {
                datum['pball_oddeven'] = 'EVEN';
            }
            _data[i] = datum;
        }
    };

    var setPowerAndBallData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['power_ball'] == 'power') {
            tbl_data[0][0] = `<td class="power">${_data[0]['power_ball_f']}</td>`;
        } else if (_data[0]['power_ball'] == 'ball') {
            tbl_data[0][0] = `<td class="ball">${_data[0]['power_ball_f']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="tie">${_data[0]['power_ball_f']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['power_ball_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < MAX_ROUND; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['power_ball'] == _data[i - 1]['power_ball']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['power_ball_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['power_ball_style']}'><p>${val}</p></span></td>`;
                tbl_data[0][jj] = `<td class="${_data[i]['power_ball']}">${_data[i]['power_ball_f']}</td>`;
                nBrokenPowerBall = Math.max(nBrokenPowerBall, jj);
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nBrokenPowerBall; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nBrokenPowerBall; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="power">P</td>') {
                nCntMaxPower = Math.max(nCntMaxPower, cnt_per_col);
            } else if (tbl_data[0][i] == '<td class="ball">B</td>') {
                nCntMaxBall = Math.max(nCntMaxBall, cnt_per_col);
            } else {
                nCntMaxTie = Math.max(nCntMaxTie, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_power = (100 * nCntPower / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nCntPower + '번 (' + per_power + '%) ' + nCntMaxPower + '연속');
        var per_ball = (100 * nCntBall / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #plop_result').html(nCntBall + '번 (' + per_ball + '%) ' + nCntMaxBall + '연속');
        var per_tie = (100 * nCntTie / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nCntTie + '번 (' + per_tie + '%) ' + nCntMaxTie + '연속');
        $('#powerball_oddeven #broken_result').html((nBrokenPowerBall + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };
    var setDragonAndTigerData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['dragon_tiger'] == 'dragon') {
            tbl_data[0][0] = `<td class="dragon">${_data[0]['dragon_tiger_f']}</td>`;
        } else if (_data[0]['dragon_tiger'] == 'tiger') {
            tbl_data[0][0] = `<td class="tiger">${_data[0]['dragon_tiger_f']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="tie">${_data[0]['dragon_tiger_f']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['dragon_tiger_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < MAX_ROUND; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['dragon_tiger'] == _data[i - 1]['dragon_tiger']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['dragon_tiger_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['dragon_tiger_style']}'><p>${val}</p></span></td>`;
                tbl_data[0][jj] = `<td class="${_data[i]['dragon_tiger']}">${_data[i]['dragon_tiger_f']}</td>`;
                nBrokenDragonTiger = Math.max(nBrokenDragonTiger, jj);
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nBrokenDragonTiger; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nBrokenDragonTiger; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="dragon">D</td>') {
                nCntMaxDragon = Math.max(nCntMaxDragon, cnt_per_col);
            } else if (tbl_data[0][i] == '<td class="tiger">T</td>') {
                nCntMaxTiger = Math.max(nCntMaxTiger, cnt_per_col);
            } else {
                _nCntMaxTie = Math.max(_nCntMaxTie, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_dragon = (100 * nCntDragon / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nCntDragon + '번 (' + per_dragon + '%) ' + nCntMaxDragon + '연속');
        var per_tiger = (100 * nCntTiger / MAX_ROUND).toFixed(2);
        $('#powerball_underover #plop_unover').html(nCntTiger + '번 (' + per_tiger + '%) ' + nCntMaxTiger + '연속');
        var per_tie = (100 * _nCntTie / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(_nCntTie + '번 (' + per_tie + '%) ' + _nCntMaxTie + '연속');
        $('#powerball_underover #broken_unover').html((nBrokenDragonTiger + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };

    
    function setStatisticsMakeHtml(BlueCnt, RedCnt, MaxCnt, BlueTitle, RedTitle){
        var per_blue = (BlueCnt > 0) ? (100 * BlueCnt / MaxCnt).toFixed(2) : '0.00';
        var per_red = (RedCnt > 0) ? (100 * RedCnt / MaxCnt).toFixed(2) : '0.00';
        var p_html = ``;

            if(BlueCnt > RedCnt){
            p_html =    `<div class="title-odd"  style='height: 20px;'><span class="circle bg-blue"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>
                                <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            if (RedCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>`;
            }
            p_html +=       `</div>
                        <div class="title-even" style='height: 20px;'><span class="circle bg-gray"><p>${RedTitle}</p></span></div>`;
        }else{
            p_html =    `<div class="title-odd" style='height: 20px;'><span class="circle bg-gray"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>`;
            if (BlueCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            }
            p_html +=           `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>
                            </div>`;
            var bg_redColor = 'bg-red';
            if (RedCnt <= 0)   {    bg_redColor = 'bg-gray';    }
            p_html +=       `<div class="title-even" style='height: 20px;'><span class="circle ${bg_redColor}"><p>${RedTitle}</p></span></div>`;
        }
        return (p_html);
    }
        
    var PercentCalcProc = function(val1, val2) {
        if (val1 == 0 || val2 == 0) return "0.00";
        else{
            let ret = (100 * val1 / val2).toFixed(2);
            return ret;
        }
    };


    var setStatistics = function () {
        var nCntPballEven = (MAX_ROUND - nCntPballOdd);
        var p_oddeven_html = setStatisticsMakeHtml(nCntPballOdd, nCntPballEven, MAX_ROUND, '홀', '짝');
        $('.powerball-chart #pball_oddeven').html(p_oddeven_html);
        
        var nCntPballOver = (MAX_ROUND - nCntPballUnder);
        var p_34_html = setStatisticsMakeHtml(nCntPballUnder, nCntPballOver, MAX_ROUND, '언더', '오버');
        $('.powerball-chart #pball_unover').html(p_34_html);
        
        var nCntNballEven = (MAX_ROUND - nCntNballOdd);
        var p_unover_html = setStatisticsMakeHtml(nCntNballOdd, nCntNballEven, MAX_ROUND, '홀', '짝');
        $('.powerball-chart #nball_oddeven').html(p_unover_html);


        var per_power = (100 * nCntPower / MAX_ROUND).toFixed(2);
        var per_tie = (100 * nCntTie / MAX_ROUND).toFixed(2);
        var per_ball = (100 * nCntBall / MAX_ROUND).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerladder_piechart',
            data: {
                columns: [
                    ['d1', nCntPower],
                    ['d2', nCntTie],
                    ['d3', nCntBall],
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `파워: ${nCntPower}회(${per_power}%)`,
                    d2: `Tie: ${nCntTie}회(${per_tie}%)`,
                    d3: `볼: ${nCntBall}회(${per_ball}%)`,
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#c5393e', '#000', '#f5b32b']
            },
            tooltip: {

            },
        });

        var per_dragon = (100 * nCntDragon / MAX_ROUND).toFixed(2);
        var _per_tie = (100 * _nCntTie / MAX_ROUND).toFixed(2);
        var per_tiger = (100 * nCntTiger / MAX_ROUND).toFixed(2);
        var _chart = c3.generate({
            bindto: '#powerladder_piechart_',
            data: {
                columns: [
                    ['d1', nCntDragon],
                    ['d2', _nCntTie],
                    ['d3', nCntTiger],
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `드래곤: ${nCntDragon}회(${per_dragon}%)`,
                    d2: `Tie: ${_nCntTie}회(${_per_tie}%)`,
                    d3: `타이거: ${nCntTiger}회(${per_tiger}%)`,
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#3bc341', '#000', '#9333d6']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = MAX_ROUND - 1; i >= 0; i--) {
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['round']}(${_data[i]['date_round']})</span></td>
                        <td>${_data[i]['power']}</td>
                        <td>${_data[i]['ball']}</td>
                        <td><span class="circle ${_data[i]['power_ball_style']}"><p>${_data[i]['power_ball_f']}</p></span></td>
                        <td>${_data[i]['dragon']}</td>
                        <td>${_data[i]['tiger']}</td>
                        <td><span class="circle ${_data[i]['dragon_tiger_style']}"><p>${_data[i]['dragon_tiger_f']}</p> </span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };
    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntPOdd = 0, nCntPEven = 0;
        var nCntNOdd = 0, nCntNEven = 0;
        var nCntPUnder = 0, nCntPOver = 0;
        var nCntPower = 0, nCntBall = 0, nCntPBTie = 0;
        var nCntDragon = 0, nCntTiger = 0, nCntDTTie = 0;
        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['pball_oddeven'] == 'ODD') {
                nCntPOdd++;
            }
            if (_data[i]['pball_unover'] == 'under') {
                nCntPUnder++;
            }
            if (_data[i]['nball_oddeven'] == 'ODD') {
                nCntNOdd++;
            }
            if (_data[i]['power_ball'] == 'ball') {
                nCntBall++;
            } else if (_data[i]['power_ball'] == 'power') {
                nCntPower++;
            } else {
                nCntPBTie++;
            }
            if (_data[i]['dragon_tiger'] == 'dragon') {
                nCntDragon++;
            } else if (_data[i]['dragon_tiger'] == 'tiger') {
                nCntTiger++;
            } else {
                nCntDTTie++;
            }
        }
        nCntPEven = nCnt - nCntPOdd;
        nCntPOver = nCnt - nCntPUnder;
        nCntNEven = nCnt - nCntNOdd;

        var p_oddeven_html = setStatisticsMakeHtml(nCntPOdd, nCntPEven, nCnt, '홀', '짝');
        // $('.powerball-chart .odd-even').html(p_oddeven_html);
        $('.powerball-chart #pball_oddeven').html(p_oddeven_html);
        
        var p_unover_html = setStatisticsMakeHtml(nCntPUnder, nCntPOver, nCnt, '언더', '오버');
        // $('.powerball-chart .under-over').html(p_unover_html);
        $('.powerball-chart #pball_unover').html(p_unover_html);
        
        var n_oddeven_html = setStatisticsMakeHtml(nCntNOdd, nCntNEven, nCnt, '홀', '짝');
        $('.powerball-chart #nball_oddeven').html(n_oddeven_html);
        // $('#nball_chart .odd-even').html(n_oddeven_html);


        var per_power = (100 * nCntPower / nCnt).toFixed(2);
        var per_middle = (100 * nCntPBTie / nCnt).toFixed(2);
        var per_ball = (100 * nCntBall / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerladder_piechart',
            data: {
                columns: [
                    ['d1', nCntPower],
                    ['d2', nCntPBTie],
                    ['d3', nCntBall]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `파워: ${nCntPower}회(${per_power}%)`,
                    d2: `Tie: ${nCntPBTie}회(${per_middle}%)`,
                    d3: `볼: ${nCntBall}회(${per_ball}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#c5393e', '#000', '#f5b32b']
            },
            tooltip: {

            },
        });

        var per_dragon = (100 * nCntDragon / nCnt).toFixed(2);
        per_middle = (100 * nCntDTTie / nCnt).toFixed(2);
        var per_tiger = (100 * nCntTiger / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerladder_piechart_',
            data: {
                columns: [
                    ['d1', nCntDragon],
                    ['d2', nCntDTTie],
                    ['d3', nCntTiger]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `드래곤: ${nCntDragon}회(${per_dragon}%)`,
                    d2: `Tie: ${nCntDTTie}회(${per_middle}%)`,
                    d3: `타이거: ${nCntTiger}회(${per_tiger}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#3bc341', '#000', '#9333d6']
            },
            tooltip: {

            },
        });
    };
    var setRoundTable = function (game_type, sround, eround, sdate, edate) {
        var tblData = [];
        for (var i = 0; i < _data.length; i++) {
            var reg_date = _data[i]['reg_date'];
            if (tblData[reg_date] == undefined) {
                tblData[reg_date] = [];
            }
            var value = "";
            if (game_type == 'powernball') {
                if (_data[i][game_type] == '0') {
                    value = "<td><span class='circle bg-pred'><p>P</p></span></td>";
                } else if (_data[i][game_type] == '1') {
                    value = "<td><span class='circle bg-yellow'><p>B</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-tblack'><p>Tie</p></span></td>";
                }
            } else {
                if (_data[i][game_type] == '0') {
                    value = "<td><span class='circle bg-dgreen'><p>D</p></span></td>";
                } else if (_data[i][game_type] == '1') {
                    value = "<td><span class='circle bg-violet'><p>T</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-tblack'><p>Tie</p></span></td>";
                }
            }
            tblData[reg_date].push({ 'date_round': _data[i]['date_round'], 'value': value });
        }

        html = "<tr><td>회차</td>";
        for (var i = sround; i <= eround; i++) {
            html += `<td>${i}</td>`;
        }
        html += "</tr>";
        for (var j = edate; j >= sdate; j = j - 3600 * 24) {
            var tr = "<tr>";
            var dtDate = new Date(j * 1000);
            var dtMonth = dtDate.getMonth() + 1 < 10 ? "0" + (dtDate.getMonth() + 1) : dtDate.getMonth() + 1;
            var dtDay = dtDate.getDate() < 10 ? "0" + dtDate.getDate() : dtDate.getDate();
            var reg_date = dtDate.getFullYear() + '-' + dtMonth + '-' + dtDay;
            tr += `<td>${reg_date}</td>`;
            for (var i = sround; i <= eround; i++) {
                if (tblData[reg_date] == undefined || tblData[reg_date] == "") {
                    tr += '<td></td>';
                    continue;
                }
                for (var k = 0; k < tblData[reg_date].length; k++) {
                    if (tblData[reg_date][k].date_round == i) {
                        tr += tblData[reg_date][k].value;
                    }
                }
            }
            tr += "</tr>";
            html += tr;
        }

        $('#round_table').html(html);

        var oddTr = "<tr><td><span class='circle bg-pred'><p>P</p></span></td>";
        var tieTr = "<tr><td><span class='circle bg-tblack'><p>Tie</p></span></td>";
        var evenTr = "<tr><td><span class='circle bg-yellow'><p>B</p></span></td>";
        if (game_type == 'dragonntiger') {
            oddTr = "<tr><td><span class='circle bg-dgreen'><p>D</p></span></td>";
            evenTr = "<tr><td><span class='circle bg-violet'><p>T</p></span></td>";
        }
        for (var i = 0; i < eround - sround + 1; i++) {
            var nCnt = 0, nCntPower = 0, nCntBall = 0, nCntTie = 0;
            $('#round_table td:nth-child(' + (i + 2) + ')').each(function () {
                if (game_type == 'powernball') {
                    if ($(this).children('span').hasClass('bg-pred')) {
                        nCnt++;
                        nCntPower++;
                    } else if ($(this).children('span').hasClass('bg-yellow')) {
                        nCnt++;
                        nCntBall++;
                    } else if ($(this).children('span').hasClass('bg-tblack')) {
                        nCnt++;
                        nCntTie++;
                    }
                } else {
                    if ($(this).children('span').hasClass('bg-dgreen')) {
                        nCnt++;
                        nCntPower++;
                    } else if ($(this).children('span').hasClass('bg-violet')) {
                        nCnt++;
                        nCntBall++;
                    } else if ($(this).children('span').hasClass('bg-tblack')) {
                        nCnt++;
                        nCntTie++;
                    }
                }
            });
            var fPerOdd = (nCntPower / nCnt * 100).toFixed(0);
            var fPerEven = (nCntBall / nCnt * 100).toFixed(0);
            var fPerTie = (nCntTie / nCnt * 100).toFixed(0);
            if (fPerOdd == "NaN") {
                fPerOdd = 0;
            }
            if (fPerEven == "NaN") {
                fPerEven = 0;
            }
            fPerTie = fPerTie == 'NaN' ? 0 : fPerTie;

            oddTr += `<td>${nCntPower}번<br/>${fPerOdd}%</td>`;
            evenTr += `<td>${nCntBall}번<br/>${fPerEven}%</td>`;
            tieTr += `<td>${nCntTie}번<br/>${fPerTie}%</td>`;
        }
        oddTr += "</tr>";
        evenTr += "</tr>";
        tieTr += "</tr>";
        $('#round_table').append(oddTr + tieTr + evenTr);
    }
};

var eospowerball_data = function () {
    var _data = [];
    var POWERBALL_SECTION = [{ 'min': 0, 'max': 2, 'val': 'A' }, { 'min': 3, 'max': 4, 'val': 'B' },
    { 'min': 5, 'max': 6, 'val': 'C' }, { 'min': 7, 'max': 9, 'val': 'D' }];
    var BALL_SECTION = [{ 'min': 15, 'max': 35, 'val': 'A' }, { 'min': 36, 'max': 49, 'val': 'B' },
    { 'min': 50, 'max': 57, 'val': 'C' }, { 'min': 58, 'max': 65, 'val': 'D' },
    { 'min': 66, 'max': 78, 'val': 'E' }, { 'min': 79, 'max': 130, 'val': 'F' }];
    var BALL_SML = [{ 'min': 15, 'max': 64, 'val': '소', '_val': 'small', 'style': 'br-green color-green', 'style_short': 'bg-green' },
    { 'min': 65, 'max': 80, 'val': '중', '_val': 'middle', 'style': 'br-blue color-blue', 'style_short': 'bg-blue' },
    { 'min': 81, 'max': 130, 'val': '대', '_val': 'large', 'style': 'br-red color-red', 'style_short': 'bg-red' },];
    var objSmlCnt = { 'small': 0, 'middle': 0, 'large': 0 };
    var nPOddCnt = 0, nPEvenCnt = 0, nPOverCnt = 0, nPUnderCnt = 0, nBOddCnt = 0, nBEvenCnt = 0, nBOverCnt = 0, nBUnderCnt = 0;
    var objMaxCtnSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
    var nCntPowerOddevenPlop = 0;
    var nCntPowerUnoverPlop = 0;
    var nCntBallOddevenPlop = 0;
    var nCntBallUnoverPlop = 0;
    var nCntPowerOddevenBroken = 0;
    var nCntPowerUnoverBroken = 0;
    var nCntBallOddevenBroken = 0;
    var nCntBallUnoverBroken = 0;
    var nCntMaxPowerOdd = 0;
    var nCntMaxPowerEven = 0;
    var nCntMaxPowerUnder = 0;
    var nCntMaxPowerOver = 0;
    var nCntMaxBallOdd = 0;
    var nCntMaxBallEven = 0;
    var nCntMaxBallUnder = 0;
    var nCntMaxBallOver = 0;
    var MAX_ROUND = 0;

    this._initEosPowerball = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        analyzeEosPowerball();
        setRecentResult();
    };

    this.initEosPowerball = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        analyzeEosPowerball();
        calculatePlop();
        setPowerOddEvenTableData();
        setPowerUnOverTableData();
        setBallOddEvenTableData();
        setBallUnOverTableData();
        setStatistics();
        setGameDataTable();
    };

    this.RecentListEosPowerball = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        analyzeEosPowerball();
        var html = setRecentListResult();
        return (html);
    };

    var analyzeEosPowerball = function () {
        var nFlagSML = '';
        var objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['p_oddeven'] == 0) {
                _data[i]['p_oddeven'] = '홀';
                _data[i]['p_oddeven_style'] = 'bg-blue';
                nPOddCnt++;
            } else {
                _data[i]['p_oddeven'] = '짝';
                _data[i]['p_oddeven_style'] = 'bg-red';
                nPEvenCnt++;
            }
            if (_data[i]['p_unover'] == 1) {
                _data[i]['p_unover'] = '오버';
                _data[i]['p_unover_short'] = '오';
                _data[i]['p_unover_style'] = 'bg-red'//'br-red color-red';
                _data[i]['p_unover_style1'] = 'br-red color-red';
                _data[i]['p_unover_style_short'] = 'bg-red';
                nPOverCnt++;
            } else {
                _data[i]['p_unover'] = '언더';
                _data[i]['p_unover_short'] = '언';
                _data[i]['p_unover_style'] = 'bg-blue'//'br-blue color-blue';
                _data[i]['p_unover_style1'] = 'br-blue color-blue';
                _data[i]['p_unover_style_short'] = 'bg-blue';
                nPUnderCnt++;
            }

            for (var ii = 0; ii < POWERBALL_SECTION.length; ii++) {
                if (_data[i]['powerball'] <= POWERBALL_SECTION[ii].max &&
                    _data[i]['powerball'] >= POWERBALL_SECTION[ii].min) {
                    _data[i]['p_section'] = POWERBALL_SECTION[ii].val;
                    break;
                }
            }
            var ball_arr = _data[i]['ball'].split(',');
            var nBall = 0;
            for (var j = 0; j < ball_arr.length; j++) {
                nBall += ball_arr[j] * 1;
            }
            _data[i]['sum'] = nBall;
            for (var ii = 0; ii < BALL_SECTION.length; ii++) {
                if (nBall <= BALL_SECTION[ii].max &&
                    nBall >= BALL_SECTION[ii].min) {
                    _data[i]['n_section'] = BALL_SECTION[ii].val;
                    break;
                }
            }
            if (_data[i]['n_oddeven'] == 1) {
                _data[i]['n_oddeven'] = '홀';
                _data[i]['n_oddeven_style'] = 'bg-blue';
                nBOddCnt++;
            } else {
                _data[i]['n_oddeven'] = '짝';
                _data[i]['n_oddeven_style'] = 'bg-red';
                nBEvenCnt++;
            }
            if (_data[i]['n_unover'] == 1) {
                _data[i]['n_unover'] = '오버';
                _data[i]['n_unover_short'] = '오';
                _data[i]['n_unover_style'] = 'bg-red'//'br-red color-red';
                _data[i]['n_unover_style1'] = 'br-red color-red';
                _data[i]['n_unover_style_short'] = 'bg-red';
                nBOverCnt++;
            } else {
                _data[i]['n_unover'] = '언더';
                _data[i]['n_unover_short'] = '언';
                _data[i]['n_unover_style'] = 'bg-blue'//'br-blue color-blue';
                _data[i]['n_unover_style1'] = 'br-blue color-blue';
                _data[i]['n_unover_style_short'] = 'bg-blue';
                nBUnderCnt++;
            }
            for (var ii = 0; ii < BALL_SML.length; ii++) {
                if (nBall <= BALL_SML[ii].max && nBall >= BALL_SML[ii].min) {
                    _data[i]['n_sml'] = BALL_SML[ii].val;
                    _data[i]['n_sml_style'] = BALL_SML[ii].style;
                    _data[i]['n_sml_style_short'] = BALL_SML[ii].style_short;
                    objSmlCnt[BALL_SML[ii]._val]++;
                    if (nFlagSML == BALL_SML[ii]._val) {
                        objCntSeqSML[BALL_SML[ii]._val]++;
                        objMaxCtnSeqSML[BALL_SML[ii]._val] = Math.max(objMaxCtnSeqSML[BALL_SML[ii]._val], objCntSeqSML[BALL_SML[ii]._val]);
                    } else {
                        nFlagSML = BALL_SML[ii]._val;
                        objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
                    }
                    break;
                }
            }
        }
    };

    var setRecentResult = function () {
        var i = 0;
        $('#eospowerball_recent .recent-results').each(function () {
            var html = `<div class="game-title">EOS파워볼 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                            <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                            <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };

    var setRecentListResult = function () {
        var i = 0;
        var html = `<div class="game-title">EOS파워볼 ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                        <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                        <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                    </div>`;
        return (html);
    };

    var calculatePlop = function () {
        // var power_plop_oddeven = [];
        // var power_plop_unover = [];
        // var ball_plop_oddeven = [];
        // var ball_plop_unover = [];
        // for(var i = 0; i < _data.length; i++){
        //     if(i == 0){
        //         if(_data[i]['p_oddeven'] != _data[i + 1]['p_oddeven'] && 
        //         _data[i + 1]['p_oddeven'] != _data[i + 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['p_unover'] != _data[i + 1]['p_unover'] && 
        //         _data[i + 1]['p_unover'] != _data[i + 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_oddeven'] != _data[i + 1]['n_oddeven'] && 
        //         _data[i + 1]['n_oddeven'] != _data[i + 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_unover'] != _data[i + 1]['n_unover'] && 
        //         _data[i + 1]['n_unover'] != _data[i + 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }else if(i == _data.length - 2){
        //         if(_data[i]['p_oddeven'] != _data[i - 1]['p_oddeven'] &&
        //         _data[i - 1]['p_oddeven'] != _data[i - 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['p_unover'] != _data[i - 1]['p_unover'] &&
        //         _data[i - 1]['p_unover'] != _data[i - 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_oddeven'] != _data[i - 1]['n_oddeven'] &&
        //         _data[i - 1]['n_oddeven'] != _data[i - 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_unover'] != _data[i - 1]['n_unover'] &&
        //         _data[i - 1]['n_unover'] != _data[i - 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }else if(i == _data.length - 1){
        //         continue;
        //     }else{
        //         if(_data[i - 1]['p_oddeven'] != _data[i]['p_oddeven'] &&
        //         _data[i]['p_oddeven'] != _data[i + 1]['p_oddeven'] &&
        //         _data[i + 1]['p_oddeven'] != _data[i + 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['p_unover'] != _data[i]['p_unover'] &&
        //         _data[i]['p_unover'] != _data[i + 1]['p_unover'] &&
        //         _data[i + 1]['p_unover'] != _data[i + 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['n_oddeven'] != _data[i]['n_oddeven'] &&
        //         _data[i]['n_oddeven'] != _data[i + 1]['n_oddeven'] &&
        //         _data[i + 1]['n_oddeven'] != _data[i + 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['n_unover'] != _data[i]['n_unover'] &&
        //         _data[i]['n_unover'] != _data[i + 1]['n_unover'] &&
        //         _data[i + 1]['n_unover'] != _data[i + 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }
        // }
        // nCntPowerOddevenPlop = power_plop_oddeven.length / 2;
        // nCntPowerUnoverPlop = power_plop_unover.length / 2;
        // nCntBallOddevenPlop = ball_plop_oddeven.length / 2;
        // nCntBallUnoverPlop = ball_plop_unover.length / 2;
    };

    var setPowerOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_oddeven'] == _data[i - 1]['p_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntPowerOddevenBroken = Math.max(nCntPowerOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxPowerEven = Math.max(nCntMaxPowerEven, cnt_per_col);
            } else {
                nCntMaxPowerOdd = Math.max(nCntMaxPowerOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nPOddCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerOdd + '연속');
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nPEvenCnt + '번 (' + per_even + '%) ' + nCntMaxPowerEven + '연속');
        $('#powerball_oddeven #plop_result').html((nCntPowerOddevenBroken - nCntPowerOddevenPlop) + '번');
        $('#powerball_oddeven #broken_result').html((nCntPowerOddevenBroken + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };

    var setPowerUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_unover'] == _data[i - 1]['p_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
                nCntPowerUnoverBroken = Math.max(nCntPowerUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxPowerUnder = Math.max(nCntMaxPowerUnder, cnt_per_col);
            } else {
                nCntMaxPowerOver = Math.max(nCntMaxPowerOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nPUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerUnder + '연속');
        var per_even = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nPOverCnt + '번 (' + per_even + '%) ' + nCntMaxPowerOver + '연속');
        $('#powerball_underover #plop_unover').html((nCntPowerUnoverBroken - nCntPowerUnoverPlop) + '번');
        $('#powerball_underover #broken_unover').html((nCntPowerUnoverBroken + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_oddeven'] == _data[i - 1]['n_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntBallOddevenBroken = Math.max(nCntBallOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxBallEven = Math.max(nCntMaxBallEven, cnt_per_col);
            } else {
                nCntMaxBallOdd = Math.max(nCntMaxBallOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBOddCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #odd_ball').html(nBOddCnt + '번 (' + per_odd + '%) ' + nCntMaxBallOdd + '연속');
        var per_even = (100 * nBEvenCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #even_ball').html(nBEvenCnt + '번 (' + per_even + '%) ' + nCntMaxBallEven + '연속');
        $('#ball_oddeven #plop_ball').html((nCntBallOddevenBroken - nCntBallOddevenPlop) + '번');
        $('#ball_oddeven #broken_ball').html((nCntBallOddevenBroken + 1) + '번');
        $('#ball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_unover'] == _data[i - 1]['n_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
                nCntBallUnoverBroken = Math.max(nCntBallUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxBallUnder = Math.max(nCntMaxBallUnder, cnt_per_col);
            } else {
                nCntMaxBallOver = Math.max(nCntMaxBallOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBUnderCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #under_result').html(nBUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxBallUnder + '연속');
        var per_even = (100 * nBOverCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #over_result').html(nBOverCnt + '번 (' + per_even + '%) ' + nCntMaxBallOver + '연속');
        $('#ball_underover #plop_unover').html((nCntBallUnoverBroken - nCntBallUnoverPlop) + '번');
        $('#ball_underover #broken_unover').html((nCntBallUnoverBroken + 1) + '번');
        $('#ball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setStatistics = function () {
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        var p_oddeven_html = ``;
        if (nPOddCnt > nPEvenCnt) {
            p_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">  
                                    <div class="progress">
                                        <span class="color-gray">${nPEvenCnt}(${per_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPOddCnt}(${per_odd}%)</span>
                                    </div>
                                </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            p_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">  
                                    <div class="progress">
                                        <span class="color-gray">${nPOddCnt}(${per_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPEvenCnt}(${per_even}%)</span>
                                    </div>
                                </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }

        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var per_under = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        var per_over = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        var p_unover_html = ``;
        if (nPUnderCnt > nPOverCnt) {
            p_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nPOverCnt}(${per_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPUnderCnt}(${per_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            p_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nPUnderCnt}(${per_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPOverCnt}(${per_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }

        $('.powerball-chart .under-over').html(p_unover_html);

        var per_n_odd = (100 * nBOddCnt / MAX_ROUND).toFixed(2);
        var per_n_even = (100 * nBEvenCnt / MAX_ROUND).toFixed(2);
        var n_oddeven_html = ``;
        if (nBOddCnt > nBEvenCnt) {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBEvenCnt}(${per_n_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBOddCnt}(${per_n_odd}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBOddCnt}(${per_n_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBEvenCnt}(${per_n_even}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }

        $('#ball_chart .odd-even').html(n_oddeven_html);
        var per_n_over = (100 * nBOverCnt / MAX_ROUND).toFixed(2);
        var per_n_under = (100 * nBUnderCnt / MAX_ROUND).toFixed(2);
        var n_unover_html = ``;
        if (nBUnderCnt > nBOverCnt) {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBOverCnt}(${per_n_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBUnderCnt}(${per_n_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBUnderCnt}(${per_n_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBOverCnt}(${per_n_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }

        $('#ball_chart .under-over').html(n_unover_html);

        var per_large = (100 * objSmlCnt['large'] / MAX_ROUND).toFixed(2);
        var per_middle = (100 * objSmlCnt['middle'] / MAX_ROUND).toFixed(2);
        var per_small = (100 * objSmlCnt['small'] / MAX_ROUND).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', objSmlCnt['large']],
                    ['d2', objSmlCnt['middle']],
                    ['d3', objSmlCnt['small']]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${objSmlCnt['large']}회(${per_large}%) ${objMaxCtnSeqSML['large'] + 1}연속`,
                    d2: `중: ${objSmlCnt['middle']}회(${per_middle}%) ${objMaxCtnSeqSML['middle'] + 1}연속`,
                    d3: `소: ${objSmlCnt['small']}회(${per_small}%) ${objMaxCtnSeqSML['small'] + 1}연속`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var n_ball = _data[i]['ball'].split(',').join(' ');
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['round']}(${_data[i]['date_round']})</td>
                        <td>${_data[i]['powerball']}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['p_section']}</p></span></td>
                        <td><span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['p_unover_style1']}"><p>${_data[i]['p_unover']}</p></span></td>
                        <td>${n_ball}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['sum']}</p></span></td>
                        <td><span class="circle no-fill br-gray color-dark"><p>${_data[i]['n_section']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['n_sml_style']}"><p>${_data[i]['n_sml']}</p></span></td>
                        <td><span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p> </span></td>
                        <td><span class="circle no-fill ${_data[i]['n_unover_style1']}"><p>${_data[i]['n_unover']}</p></span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };
}

var boglepowerball_data = function () {
    var MAX_ROUND = 0;//720;
    var STAND_POWER_UNOVER = 4.5;
    var STAND_UNOVER = 72.5;
    var POWERBALL_SECTION = [{ 'min': 0, 'max': 2, 'val': 'A' }, { 'min': 3, 'max': 4, 'val': 'B' },
    { 'min': 5, 'max': 6, 'val': 'C' }, { 'min': 7, 'max': 9, 'val': 'D' }];
    var BALL_SECTION = [{ 'min': 15, 'max': 35, 'val': 'A' }, { 'min': 36, 'max': 49, 'val': 'B' },
    { 'min': 50, 'max': 57, 'val': 'C' }, { 'min': 58, 'max': 65, 'val': 'D' },
    { 'min': 66, 'max': 78, 'val': 'E' }, { 'min': 79, 'max': 130, 'val': 'F' }];
    var BALL_SML = [{ 'min': 15, 'max': 64, 'val': '소', '_val': 'small', 'style': 'br-green color-green', 'style_short': 'bg-green' },
    { 'min': 65, 'max': 80, 'val': '중', '_val': 'middle', 'style': 'br-blue color-blue', 'style_short': 'bg-blue' },
    { 'min': 81, 'max': 130, 'val': '대', '_val': 'large', 'style': 'br-red color-red', 'style_short': 'bg-red' },];
    var objSmlCnt = { 'small': 0, 'middle': 0, 'large': 0 };
    var _data = [];
    var nPOddCnt = 0;
    var nPEvenCnt = 0;
    var nPOverCnt = 0;
    var nPUnderCnt = 0;
    var nBOddCnt = 0;
    var nBEvenCnt = 0;
    var nBOverCnt = 0;
    var nBUnderCnt = 0;
    var nCntPowerOddevenPlop = 0;
    var nCntPowerUnoverPlop = 0;
    var nCntBallOddevenPlop = 0;
    var nCntBallUnoverPlop = 0;
    var nCntPowerOddevenBroken = 0;
    var nCntPowerUnoverBroken = 0;
    var nCntBallOddevenBroken = 0;
    var nCntBallUnoverBroken = 0;
    var nCntMaxPowerOdd = 0;
    var nCntMaxPowerEven = 0;
    var nCntMaxPowerUnder = 0;
    var nCntMaxPowerOver = 0;
    var nCntMaxBallOdd = 0;
    var nCntMaxBallEven = 0;
    var nCntMaxBallUnder = 0;
    var nCntMaxBallOver = 0;
    var objMaxCtnSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
    this._initPowerball = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        $('.round-result').show();
        analyzePowerball();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (data, game_type = "p_oddeven", sround, eround, sdate, edate) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        $('.round-result').show();
        setRoundTable(game_type, sround, eround, sdate, edate);
    }
    this.initPowerball = function (dataByDay) {
        // _data = dataByDay;
        Object.assign(_data, dataByDay);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        calculatePlop();
        setPowerOddEvenTableData();
        setPowerUnOverTableData();
        setBallOddEvenTableData();
        setBallUnOverTableData();
        setStatistics();
        setGameDataTable();
    };
    this.RecentListBoglePowerball = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        var html = setRecentListResult();
        return (html);
    };
    var analyzePowerball = function () {
        var nFlagSML = '';
        var objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['p_oddeven'] == 0) {
                _data[i]['p_oddeven'] = '홀';
                _data[i]['p_oddeven_style'] = 'bg-blue';
                nPOddCnt++;
            } else {
                _data[i]['p_oddeven'] = '짝';
                _data[i]['p_oddeven_style'] = 'bg-red';
                nPEvenCnt++;
            }
            if (_data[i]['p_unover'] == 1) {
                _data[i]['p_unover'] = '오버';
                _data[i]['p_unover_short'] = '오';
                _data[i]['p_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['p_unover_style1'] = 'br-red color-red';
                _data[i]['p_unover_style_short'] = 'bg-red';
                nPOverCnt++;
            } else {
                _data[i]['p_unover'] = '언더';
                _data[i]['p_unover_short'] = '언';
                _data[i]['p_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['p_unover_style1'] = 'br-blue color-blue';
                _data[i]['p_unover_style_short'] = 'bg-blue';
                nPUnderCnt++;
            }

            for (var ii = 0; ii < POWERBALL_SECTION.length; ii++) {
                if (_data[i]['powerball'] <= POWERBALL_SECTION[ii].max &&
                    _data[i]['powerball'] >= POWERBALL_SECTION[ii].min) {
                    _data[i]['p_section'] = POWERBALL_SECTION[ii].val;
                    break;
                }
            }
            var ball_arr = _data[i]['ball'].split(',');
            var nBall = 0;
            for (var j = 0; j < ball_arr.length; j++) {
                nBall += ball_arr[j] * 1;
            }
            _data[i]['sum'] = nBall;
            for (var ii = 0; ii < BALL_SECTION.length; ii++) {
                if (nBall <= BALL_SECTION[ii].max &&
                    nBall >= BALL_SECTION[ii].min) {
                    _data[i]['n_section'] = BALL_SECTION[ii].val;
                    break;
                }
            }
            if (_data[i]['n_oddeven'] == 1) {
                _data[i]['n_oddeven'] = '홀';
                _data[i]['n_oddeven_style'] = 'bg-blue';
                nBOddCnt++;
            } else {
                _data[i]['n_oddeven'] = '짝';
                _data[i]['n_oddeven_style'] = 'bg-red';
                nBEvenCnt++;
            }
            if (_data[i]['n_unover'] == 1) {
                _data[i]['n_unover'] = '오버';
                _data[i]['n_unover_short'] = '오';
                _data[i]['n_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['n_unover_style1'] = 'br-red color-red';
                _data[i]['n_unover_style_short'] = 'bg-red';
                nBOverCnt++;
            } else {
                _data[i]['n_unover'] = '언더';
                _data[i]['n_unover_short'] = '언';
                _data[i]['n_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['n_unover_style1'] = 'br-blue color-blue';
                _data[i]['n_unover_style_short'] = 'bg-blue';
                nBUnderCnt++;
            }
            for (var ii = 0; ii < BALL_SML.length; ii++) {
                if (nBall <= BALL_SML[ii].max && nBall >= BALL_SML[ii].min) {
                    _data[i]['n_sml'] = BALL_SML[ii].val;
                    _data[i]['n_sml_style'] = BALL_SML[ii].style;
                    _data[i]['n_sml_style_short'] = BALL_SML[ii].style_short;
                    objSmlCnt[BALL_SML[ii]._val]++;
                    if (nFlagSML == BALL_SML[ii]._val) {
                        objCntSeqSML[BALL_SML[ii]._val]++;
                        objMaxCtnSeqSML[BALL_SML[ii]._val] = Math.max(objMaxCtnSeqSML[BALL_SML[ii]._val], objCntSeqSML[BALL_SML[ii]._val]);
                    } else {
                        nFlagSML = BALL_SML[ii]._val;
                        objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
                    }
                    break;
                }
            }
        }
    };
    var calculatePlop = function () {
        // var power_plop_oddeven = [];
        // var power_plop_unover = [];
        // var ball_plop_oddeven = [];
        // var ball_plop_unover = [];
        // for(var i = 0; i < _data.length; i++){
        //     if(i == 0){
        //         if(_data[i]['p_oddeven'] != _data[i + 1]['p_oddeven'] && 
        //         _data[i + 1]['p_oddeven'] != _data[i + 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['p_unover'] != _data[i + 1]['p_unover'] && 
        //         _data[i + 1]['p_unover'] != _data[i + 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_oddeven'] != _data[i + 1]['n_oddeven'] && 
        //         _data[i + 1]['n_oddeven'] != _data[i + 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_unover'] != _data[i + 1]['n_unover'] && 
        //         _data[i + 1]['n_unover'] != _data[i + 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }else if(i == _data.length - 2){
        //         if(_data[i]['p_oddeven'] != _data[i - 1]['p_oddeven'] &&
        //         _data[i - 1]['p_oddeven'] != _data[i - 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['p_unover'] != _data[i - 1]['p_unover'] &&
        //         _data[i - 1]['p_unover'] != _data[i - 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_oddeven'] != _data[i - 1]['n_oddeven'] &&
        //         _data[i - 1]['n_oddeven'] != _data[i - 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_unover'] != _data[i - 1]['n_unover'] &&
        //         _data[i - 1]['n_unover'] != _data[i - 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }else if(i == _data.length - 1){
        //         continue;
        //     }else{
        //         if(_data[i - 1]['p_oddeven'] != _data[i]['p_oddeven'] &&
        //         _data[i]['p_oddeven'] != _data[i + 1]['p_oddeven'] &&
        //         _data[i + 1]['p_oddeven'] != _data[i + 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['p_unover'] != _data[i]['p_unover'] &&
        //         _data[i]['p_unover'] != _data[i + 1]['p_unover'] &&
        //         _data[i + 1]['p_unover'] != _data[i + 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['n_oddeven'] != _data[i]['n_oddeven'] &&
        //         _data[i]['n_oddeven'] != _data[i + 1]['n_oddeven'] &&
        //         _data[i + 1]['n_oddeven'] != _data[i + 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['n_unover'] != _data[i]['n_unover'] &&
        //         _data[i]['n_unover'] != _data[i + 1]['n_unover'] &&
        //         _data[i + 1]['n_unover'] != _data[i + 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }
        // }
        // nCntPowerOddevenPlop = power_plop_oddeven.length / 2;
        // nCntPowerUnoverPlop = power_plop_unover.length / 2;
        // nCntBallOddevenPlop = ball_plop_oddeven.length / 2;
        // nCntBallUnoverPlop = ball_plop_unover.length / 2;
    };
    var setPowerOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_oddeven'] == _data[i - 1]['p_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntPowerOddevenBroken = Math.max(nCntPowerOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxPowerEven = Math.max(nCntMaxPowerEven, cnt_per_col);
            } else {
                nCntMaxPowerOdd = Math.max(nCntMaxPowerOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nPOddCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerOdd + '연속');
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nPEvenCnt + '번 (' + per_even + '%) ' + nCntMaxPowerEven + '연속');
        $('#powerball_oddeven #plop_result').html((nCntPowerOddevenBroken - nCntPowerOddevenPlop) + '번');
        $('#powerball_oddeven #broken_result').html((nCntPowerOddevenBroken + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };
    var setPowerUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_unover'] == _data[i - 1]['p_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
                nCntPowerUnoverBroken = Math.max(nCntPowerUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxPowerUnder = Math.max(nCntMaxPowerUnder, cnt_per_col);
            } else {
                nCntMaxPowerOver = Math.max(nCntMaxPowerOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nPUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerUnder + '연속');
        var per_even = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nPOverCnt + '번 (' + per_even + '%) ' + nCntMaxPowerOver + '연속');
        $('#powerball_underover #plop_unover').html((nCntPowerUnoverBroken - nCntPowerUnoverPlop) + '번');
        $('#powerball_underover #broken_unover').html((nCntPowerUnoverBroken + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_oddeven'] == _data[i - 1]['n_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntBallOddevenBroken = Math.max(nCntBallOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxBallEven = Math.max(nCntMaxBallEven, cnt_per_col);
            } else {
                nCntMaxBallOdd = Math.max(nCntMaxBallOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBOddCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #odd_ball').html(nBOddCnt + '번 (' + per_odd + '%) ' + nCntMaxBallOdd + '연속');
        var per_even = (100 * nBEvenCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #even_ball').html(nBEvenCnt + '번 (' + per_even + '%) ' + nCntMaxBallEven + '연속');
        $('#ball_oddeven #plop_ball').html((nCntBallOddevenBroken - nCntBallOddevenPlop) + '번');
        $('#ball_oddeven #broken_ball').html((nCntBallOddevenBroken + 1) + '번');
        $('#ball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_unover'] == _data[i - 1]['n_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
                nCntBallUnoverBroken = Math.max(nCntBallUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxBallUnder = Math.max(nCntMaxBallUnder, cnt_per_col);
            } else {
                nCntMaxBallOver = Math.max(nCntMaxBallOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBUnderCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #under_result').html(nBUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxBallUnder + '연속');
        var per_even = (100 * nBOverCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #over_result').html(nBOverCnt + '번 (' + per_even + '%) ' + nCntMaxBallOver + '연속');
        $('#ball_underover #plop_unover').html((nCntBallUnoverBroken - nCntBallUnoverPlop) + '번');
        $('#ball_underover #broken_unover').html((nCntBallUnoverBroken + 1) + '번');
        $('#ball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setStatistics = function () {
        var nCnt = _data.length;
        var per_odd = (100 * nPOddCnt / nCnt).toFixed(2);
        var per_even = (100 * nPEvenCnt / nCnt).toFixed(2);
        var p_oddeven_html = ``;
        if (nPOddCnt > nPEvenCnt) {
            p_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">  
                                    <div class="progress">
                                        <span class="color-gray">${nPEvenCnt}(${per_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPOddCnt}(${per_odd}%)</span>
                                    </div>
                                </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            p_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">  
                                    <div class="progress">
                                        <span class="color-gray">${nPOddCnt}(${per_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPEvenCnt}(${per_even}%)</span>
                                    </div>
                                </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }

        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var per_under = (100 * nPUnderCnt / nCnt).toFixed(2);
        var per_over = (100 * nPOverCnt / nCnt).toFixed(2);
        var p_unover_html = ``;
        if (nPUnderCnt > nPOverCnt) {
            p_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nPOverCnt}(${per_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPUnderCnt}(${per_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            p_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nPUnderCnt}(${per_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nPOverCnt}(${per_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }

        $('.powerball-chart .under-over').html(p_unover_html);

        var per_n_odd = (100 * nBOddCnt / nCnt).toFixed(2);
        var per_n_even = (100 * nBEvenCnt / nCnt).toFixed(2);
        var n_oddeven_html = ``;
        if (nBOddCnt > nBEvenCnt) {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBEvenCnt}(${per_n_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBOddCnt}(${per_n_odd}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBOddCnt}(${per_n_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBEvenCnt}(${per_n_even}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }

        $('#ball_chart .odd-even').html(n_oddeven_html);
        var per_n_over = (100 * nBOverCnt / nCnt).toFixed(2);
        var per_n_under = (100 * nBUnderCnt / nCnt).toFixed(2);
        var n_unover_html = ``;
        if (nBUnderCnt > nBOverCnt) {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBOverCnt}(${per_n_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBUnderCnt}(${per_n_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nBUnderCnt}(${per_n_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nBOverCnt}(${per_n_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }

        $('#ball_chart .under-over').html(n_unover_html);

        var per_large = (100 * objSmlCnt['large'] / nCnt).toFixed(2);
        var per_middle = (100 * objSmlCnt['middle'] / nCnt).toFixed(2);
        var per_small = (100 * objSmlCnt['small'] / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', objSmlCnt['large']],
                    ['d2', objSmlCnt['middle']],
                    ['d3', objSmlCnt['small']]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${objSmlCnt['large']}회(${per_large}%) ${objMaxCtnSeqSML['large'] + 1}연속`,
                    d2: `중: ${objSmlCnt['middle']}회(${per_middle}%) ${objMaxCtnSeqSML['middle'] + 1}연속`,
                    d3: `소: ${objSmlCnt['small']}회(${per_small}%) ${objMaxCtnSeqSML['small'] + 1}연속`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntPOdd = 0, nCntPEven = 0;
        var nCntNOdd = 0, nCntNEven = 0;
        var nCntPUnder = 0, nCntPOver = 0;
        var nCntNUnder = 0, nCntNOver = 0;
        var nCntNLarge = 0, nCntNMedium = 0, nCntNSmall = 0;
        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['p_oddeven'] == '홀') {
                nCntPOdd++;
            }
            if (_data[i]['p_unover'] == '언더') {
                nCntPUnder++;
            }
            if (_data[i]['n_oddeven'] == '짝') {
                nCntNOdd++;
            }
            if (_data[i]['n_unover'] == '오버') {
                nCntNOver++;
            }
            if (_data[i]['n_sml'] == '대') {
                nCntNLarge++;
            } else if (_data[i]['n_sml'] == '중') {
                nCntNMedium++;
            }
        }
        nCntPEven = nCnt - nCntPOdd;
        nCntPOver = nCnt - nCntPUnder;
        nCntNEven = nCnt - nCntNOdd;
        nCntNUnder = nCnt - nCntNOver;
        nCntNSmall = nCnt - nCntNLarge - nCntNMedium;

        var per_odd = (100 * nCntPOdd / nCnt).toFixed(2);
        var per_even = (100 * nCntPEven / nCnt).toFixed(2);
        var p_oddeven_html = '';
        if (nCntPOdd >= nCntPEven) {
            p_oddeven_html = `<div class="text-center">
                <div class="title-odd">
                    <span class="circle bg-blue"><p>홀</p></span>
                </div>
                <div class="odd-even-progress">
                    <div class="progress">
                        <span class="color-gray">${nCntPEven}(${per_even}%)</span>
                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_odd}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntPOdd}(${per_odd}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even">
                    <span class="circle no-fill br-gray"><p>짝</p></span>
                </div>
            </div>`;
        } else {
            p_oddeven_html = `<div class="text-center">
                <div class="title-odd">
                    <span class="circle no-fill br-gray"><p>홀</p></span>
                </div>
                <div class="odd-even-progress">
                    <div class="progress">
                        <span class="color-gray">${nCntPOdd}(${per_odd}%)</span>
                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_even}%;border-radius: 10px!important;">
                            <span class="color-white">${nCntPEven}(${per_even}%)</span>
                        </div>
                    </div>
                </div>
                <div class="title-even">
                    <span class="circle bg-red"><p>짝</p></span>
                </div>
            </div>`;
        }
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var per_under = (100 * nCntPUnder / nCnt).toFixed(2);
        var per_over = (100 * nCntPOver / nCnt).toFixed(2);
        var p_unover_html = "";
        if (nCntPUnder >= nCntPOver) {
            p_unover_html = `<div class="text-center">
                                <div class="title-odd">
                                    <span class="circle bg-blue"><p>언더</p></span>
                                </div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntPOver}(${per_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntPUnder}(${per_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            p_unover_html = `<div class="text-center">
                                <div class="title-odd">
                                    <span class="circle no-fill br-gray"><p>언더</p></span>
                                </div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntPUnder}(${per_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntPOver}(${per_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }
        $('.powerball-chart .under-over').html(p_unover_html);

        var per_n_odd = (100 * nCntNOdd / nCnt).toFixed(2);
        var per_n_even = (100 * nCntNEven / nCnt).toFixed(2);
        var n_oddeven_html = '';
        if (nCntNOdd > nCntNEven) {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNEven}(${per_n_even}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_odd}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNOdd}(${per_n_odd}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>짝</p></span></div>
                            </div>`;
        } else {
            n_oddeven_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>홀</p></span></div>
                                <div class="odd-even-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNOdd}(${per_n_odd}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_even}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNEven}(${per_n_even}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>짝</p></span></div>
                            </div>`;
        }
        $('#nball_chart .odd-even').html(n_oddeven_html);
        var per_n_over = (100 * nCntNOver / nCnt).toFixed(2);
        var per_n_under = (100 * (nCntNUnder) / nCnt).toFixed(2);
        var n_unover_html = '';
        if (nCntNUnder > nCntNOver) {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle bg-blue"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNOver}(${per_n_over}%)</span>
                                        <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_under}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNUnder}(${per_n_under}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle no-fill br-gray"><p>오버</p></span></div>
                            </div>`;
        } else {
            n_unover_html = `<div class="" style="text-align:center;">
                                <div class="title-odd"><span class="circle no-fill br-gray"><p>언더</p></span></div>
                                <div class="under-over-progress">
                                    <div class="progress">
                                        <span class="color-gray">${nCntNUnder}(${per_n_under}%)</span>
                                        <div class="progress-bar progress-bar-red right" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ${per_n_over}%;border-radius: 10px!important;">
                                            <span class="color-white">${nCntNOver}(${per_n_over}%)</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="title-even"><span class="circle bg-red"><p>오버</p></span></div>
                            </div>`;
        }
        $('#nball_chart .under-over').html(n_unover_html);

        var per_large = (100 * nCntNLarge / nCnt).toFixed(2);
        var per_middle = (100 * nCntNMedium / nCnt).toFixed(2);
        var per_small = (100 * (nCntNSmall) / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', nCntNLarge],
                    ['d2', nCntNMedium],
                    ['d3', nCntNSmall]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${nCntNLarge}회(${per_large}%)`,
                    d2: `중: ${nCntNMedium}회(${per_middle}%)`,
                    d3: `소: ${nCntNSmall}회(${per_small}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var n_ball = _data[i]['ball'].split(',').join(' ');
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['round']}(${_data[i]['date_round']})</td>
                        <td>${_data[i]['powerball']}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['p_section']}</p></span></td>
                        <td><span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['p_unover_style1']}"><p>${_data[i]['p_unover']}</p></span></td>
                        <td>${n_ball}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['sum']}</p></span></td>
                        <td><span class="circle no-fill br-gray color-dark"><p>${_data[i]['n_section']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['n_sml_style']}"><p>${_data[i]['n_sml']}</p></span></td>
                        <td><span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p> </span></td>
                        <td><span class="circle no-fill ${_data[i]['n_unover_style1']}"><p>${_data[i]['n_unover']}</p></span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };
    var setRecentResult = function () {
        var i = 0;
        $('#powerball-recent .recent-results').each(function () {
            var html = `<div class="game-title">파워볼 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                            <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                            <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };
    var setRecentListResult = function () {
        var i = 0;
        var html = `<div class="game-title">파워볼 ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                        <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                        <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                    </div>`;
        return (html);
    };
    var setRoundTable = function (game_type, sround, eround, sdate, edate) {
        var tblData = [];
        for (var i = 0; i < _data.length; i++) {
            var reg_date = _data[i]['reg_date'];
            if (tblData[reg_date] == undefined) {
                tblData[reg_date] = [];
            }
            var value = "";
            if (game_type == 'p_oddeven' || game_type == 'n_oddeven') {
                if (_data[i][game_type] == '1') {
                    value = "<td><span class='circle bg-red'><p>짝</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-blue'><p>홀</p></span></td>";
                }
            } else if (game_type == 'p_unover' || game_type == 'n_unover') {
                if (_data[i][game_type] == '0') {
                    value = "<td><span class='circle bg-blue'><p>언더</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-red'><p>오버</p></span></td>";
                }
            }
            tblData[reg_date].push({ 'date_round': _data[i]['date_round'], 'value': value });
        }

        html = "<tr><td>회차</td>";
        for (var i = sround; i <= eround; i++) {
            html += `<td>${i}</td>`;
        }
        html += "</tr>";
        for (var j = edate; j >= sdate; j = j - 3600 * 24) {
            var tr = "<tr>";
            var dtDate = new Date(j * 1000);
            var dtMonth = dtDate.getMonth() + 1 < 10 ? "0" + (dtDate.getMonth() + 1) : dtDate.getMonth() + 1;
            var dtDay = dtDate.getDate() < 10 ? "0" + dtDate.getDate() : dtDate.getDate();
            var reg_date = dtDate.getFullYear() + '-' + dtMonth + '-' + dtDay;
            tr += `<td>${reg_date}</td>`;
            if (tblData[reg_date] == undefined || tblData[reg_date] == "") {
                for (var jj = sround; jj <= eround; jj++) {
                    tr += '<td></td>';
                }
                html += tr;
                continue;
            }
            for (var i = sround; i <= eround; i++) {
                for (var k = 0; k < tblData[reg_date].length; k++) {
                    if (tblData[reg_date][k].date_round == i) {
                        tr += tblData[reg_date][k].value;
                    }
                }
            }
            tr += "</tr>";
            html += tr;
        }

        $('.tbl-round').html(html);

        var oddTr = "<tr><td><span class='circle bg-blue'><p>홀</p></span></td>";
        var evenTr = "<tr><td><span class='circle bg-red'><p>짝</p></span></td>";
        if (game_type == 'p_unover' || game_type == 'n_unover') {
            oddTr = "<tr><td><span class='circle bg-blue'><p>언더</p></span></td>";
            evenTr = "<tr><td><span class='circle bg-red'><p>오버</p></span></td>";
        }
        for (var i = 0; i < eround - sround + 1; i++) {
            var nCnt = nCntOdd = nCntEven = 0;
            $('.tbl-round td:nth-child(' + (i + 2) + ')').each(function () {
                if ($(this).children('span').hasClass('bg-red')) {
                    nCnt++;
                    nCntEven++;
                } else if ($(this).children('span').hasClass('bg-blue')) {
                    nCnt++;
                    nCntOdd++;
                }
            });
            var fPerOdd = (nCntOdd / nCnt * 100).toFixed(0);
            var fPerEven = (nCntEven / nCnt * 100).toFixed(0);
            if (fPerOdd == "NaN") {
                fPerOdd = 0;
            }
            if (fPerEven == "NaN") {
                fPerEven = 0;
            }
            oddTr += `<td>${nCntOdd}번<br/>${fPerOdd}%</td>`;
            evenTr += `<td>${nCntEven}번<br/>${fPerEven}%</td>`;
        }
        oddTr += "</tr>";
        evenTr += "</tr>";
        $('.tbl-round').append(oddTr + evenTr);
        // html += oddTr + evenTr;
    }
};

var powerball_game_data = function () {
    var MAX_ROUND = 0;//720;
    var STAND_POWER_UNOVER = 4.5;
    var STAND_UNOVER = 72.5;
    var POWERBALL_SECTION = [{ 'min': 0, 'max': 2, 'val': 'A' }, { 'min': 3, 'max': 4, 'val': 'B' },
    { 'min': 5, 'max': 6, 'val': 'C' }, { 'min': 7, 'max': 9, 'val': 'D' }];
    var BALL_SECTION = [{ 'min': 15, 'max': 35, 'val': 'A' }, { 'min': 36, 'max': 49, 'val': 'B' },
    { 'min': 50, 'max': 57, 'val': 'C' }, { 'min': 58, 'max': 65, 'val': 'D' },
    { 'min': 66, 'max': 78, 'val': 'E' }, { 'min': 79, 'max': 130, 'val': 'F' }];
    var BALL_SML = [{ 'min': 15, 'max': 64, 'val': '소', '_val': 'small', 'style': 'br-green color-green', 'style_short': 'bg-green', 'title_class':'text-green' },
        { 'min': 65, 'max': 80, 'val': '중', '_val': 'middle', 'style': 'br-blue color-blue', 'style_short': 'bg-blue', 'title_class':'odd' },
        { 'min': 81, 'max': 130, 'val': '대', '_val': 'large', 'style': 'br-red color-red', 'style_short': 'bg-red', 'title_class':'even' },];
    
    var objSmlCnt = { 'small': 0, 'middle': 0, 'large': 0 };
    var _data = [];
    var nPOddCnt = 0;
    var nPEvenCnt = 0;
    var nPOverCnt = 0;
    var nPUnderCnt = 0;
    var nBOddCnt = 0;
    var nBEvenCnt = 0;
    var nBOverCnt = 0;
    var nBUnderCnt = 0;
    var nCntPowerOddevenPlop = 0;
    var nCntPowerUnoverPlop = 0;
    var nCntBallOddevenPlop = 0;
    var nCntBallUnoverPlop = 0;
    var nCntPowerOddevenBroken = 0;
    var nCntPowerUnoverBroken = 0;
    var nCntBallOddevenBroken = 0;
    var nCntBallUnoverBroken = 0;
    var nCntMaxPowerOdd = 0;
    var nCntMaxPowerEven = 0;
    var nCntMaxPowerUnder = 0;
    var nCntMaxPowerOver = 0;
    var nCntMaxBallOdd = 0;
    var nCntMaxBallEven = 0;
    var nCntMaxBallUnder = 0;
    var nCntMaxBallOver = 0;
    var objMaxCtnSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
    var nCntBallLMSPlop = 0;

    this._initPowerball = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        $('.round-result').show();
        analyzePowerball();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (data, game_type = "p_oddeven", sround, eround, sdate, edate) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        $('.round-result').show();
        setRoundTable(game_type, sround, eround, sdate, edate);
    }
    this.initPowerball = function (dataByDay) {
        // _data = dataByDay;
        Object.assign(_data, dataByDay);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        calculatePlop();
        setPowerOddEvenTableData();
        setPowerUnOverTableData();
        setBallOddEvenTableData();
        setBallUnOverTableData();
        setBallLMSTableData();
        setStatistics();
        setGameDataTable();
    };
    this.RecentListPowerball_game = function (data, gameType) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        var html = setRecentListResult(gameType);
        return (html);
    };
    var analyzePowerball = function () {
        var nFlagSML = '';
        var objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['p_oddeven'] == 0) {
                _data[i]['p_oddeven'] = '홀';
                _data[i]['p_oddeven_style'] = 'bg-blue';
                nPOddCnt++;
            } else {
                _data[i]['p_oddeven'] = '짝';
                _data[i]['p_oddeven_style'] = 'bg-red';
                nPEvenCnt++;
            }
            if (_data[i]['p_unover'] == 1) {
                _data[i]['p_unover'] = '오버';
                _data[i]['p_unover_short'] = '오';
                _data[i]['p_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['p_unover_style1'] = 'br-red color-red';
                _data[i]['p_unover_style_short'] = 'bg-red';
                nPOverCnt++;
            } else {
                _data[i]['p_unover'] = '언더';
                _data[i]['p_unover_short'] = '언';
                _data[i]['p_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['p_unover_style1'] = 'br-blue color-blue';
                _data[i]['p_unover_style_short'] = 'bg-blue';
                nPUnderCnt++;
            }

            for (var ii = 0; ii < POWERBALL_SECTION.length; ii++) {
                if (_data[i]['powerball'] <= POWERBALL_SECTION[ii].max &&
                    _data[i]['powerball'] >= POWERBALL_SECTION[ii].min) {
                    _data[i]['p_section'] = POWERBALL_SECTION[ii].val;
                    break;
                }
            }
            var ball_arr = _data[i]['ball'].split(',');
            var nBall = 0;
            for (var j = 0; j < ball_arr.length; j++) {
                nBall += ball_arr[j] * 1;
            }
            _data[i]['sum'] = nBall;
            for (var ii = 0; ii < BALL_SECTION.length; ii++) {
                if (nBall <= BALL_SECTION[ii].max &&
                    nBall >= BALL_SECTION[ii].min) {
                    _data[i]['n_section'] = BALL_SECTION[ii].val;
                    break;
                }
            }
            if (_data[i]['n_oddeven'] == 1) {
                _data[i]['n_oddeven'] = '짝';
                _data[i]['n_oddeven_style'] = 'bg-red';
                nBEvenCnt++;
            } else {
                _data[i]['n_oddeven'] = '홀';
                _data[i]['n_oddeven_style'] = 'bg-blue';
                nBOddCnt++;
            }
            if (_data[i]['n_unover'] == 1) {
                _data[i]['n_unover'] = '오버';
                _data[i]['n_unover_short'] = '오';
                _data[i]['n_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['n_unover_style1'] = 'br-red color-red';
                _data[i]['n_unover_style_short'] = 'bg-red';
                nBOverCnt++;
            } else {
                _data[i]['n_unover'] = '언더';
                _data[i]['n_unover_short'] = '언';
                _data[i]['n_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['n_unover_style1'] = 'br-blue color-blue';
                _data[i]['n_unover_style_short'] = 'bg-blue';
                nBUnderCnt++;
            }
            for (var ii = 0; ii < BALL_SML.length; ii++) {
                if (nBall <= BALL_SML[ii].max && nBall >= BALL_SML[ii].min) {
                    _data[i]['n_sml'] = BALL_SML[ii].val;
                    _data[i]['n_sml_style'] = BALL_SML[ii].style;
                    _data[i]['n_sml_style_short'] = BALL_SML[ii].style_short;
                    objSmlCnt[BALL_SML[ii]._val]++;
                    if (nFlagSML == BALL_SML[ii]._val) {
                        objCntSeqSML[BALL_SML[ii]._val]++;
                        objMaxCtnSeqSML[BALL_SML[ii]._val] = Math.max(objMaxCtnSeqSML[BALL_SML[ii]._val], objCntSeqSML[BALL_SML[ii]._val]);
                    } else {
                        nFlagSML = BALL_SML[ii]._val;
                        objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
                    }
                    break;
                }
            }
        }
    };
    var calculatePlop = function () {
        // var power_plop_oddeven = [];
        // var power_plop_unover = [];
        // var ball_plop_oddeven = [];
        // var ball_plop_unover = [];
        // for(var i = 0; i < _data.length; i++){
        //     if(i == 0){
        //         if(_data[i]['p_oddeven'] != _data[i + 1]['p_oddeven'] && 
        //         _data[i + 1]['p_oddeven'] != _data[i + 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['p_unover'] != _data[i + 1]['p_unover'] && 
        //         _data[i + 1]['p_unover'] != _data[i + 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_oddeven'] != _data[i + 1]['n_oddeven'] && 
        //         _data[i + 1]['n_oddeven'] != _data[i + 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_unover'] != _data[i + 1]['n_unover'] && 
        //         _data[i + 1]['n_unover'] != _data[i + 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }else if(i == _data.length - 2){
        //         if(_data[i]['p_oddeven'] != _data[i - 1]['p_oddeven'] &&
        //         _data[i - 1]['p_oddeven'] != _data[i - 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['p_unover'] != _data[i - 1]['p_unover'] &&
        //         _data[i - 1]['p_unover'] != _data[i - 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_oddeven'] != _data[i - 1]['n_oddeven'] &&
        //         _data[i - 1]['n_oddeven'] != _data[i - 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_unover'] != _data[i - 1]['n_unover'] &&
        //         _data[i - 1]['n_unover'] != _data[i - 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }else if(i == _data.length - 1){
        //         continue;
        //     }else{
        //         if(_data[i - 1]['p_oddeven'] != _data[i]['p_oddeven'] &&
        //         _data[i]['p_oddeven'] != _data[i + 1]['p_oddeven'] &&
        //         _data[i + 1]['p_oddeven'] != _data[i + 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['p_unover'] != _data[i]['p_unover'] &&
        //         _data[i]['p_unover'] != _data[i + 1]['p_unover'] &&
        //         _data[i + 1]['p_unover'] != _data[i + 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['n_oddeven'] != _data[i]['n_oddeven'] &&
        //         _data[i]['n_oddeven'] != _data[i + 1]['n_oddeven'] &&
        //         _data[i + 1]['n_oddeven'] != _data[i + 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['n_unover'] != _data[i]['n_unover'] &&
        //         _data[i]['n_unover'] != _data[i + 1]['n_unover'] &&
        //         _data[i + 1]['n_unover'] != _data[i + 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }
        // }
        // nCntPowerOddevenPlop = power_plop_oddeven.length / 2;
        // nCntPowerUnoverPlop = power_plop_unover.length / 2;
        // nCntBallOddevenPlop = ball_plop_oddeven.length / 2;
        // nCntBallUnoverPlop = ball_plop_unover.length / 2;
    };
    var setPowerOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_oddeven'] == _data[i - 1]['p_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntPowerOddevenBroken = Math.max(nCntPowerOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxPowerEven = Math.max(nCntMaxPowerEven, cnt_per_col);
            } else {
                nCntMaxPowerOdd = Math.max(nCntMaxPowerOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nPOddCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerOdd + '연속');
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nPEvenCnt + '번 (' + per_even + '%) ' + nCntMaxPowerEven + '연속');
        $('#powerball_oddeven #plop_result').html((nCntPowerOddevenBroken - nCntPowerOddevenPlop) + '번');
        $('#powerball_oddeven #broken_result').html((nCntPowerOddevenBroken + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };
    var setPowerUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_unover'] == _data[i - 1]['p_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
                nCntPowerUnoverBroken = Math.max(nCntPowerUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxPowerUnder = Math.max(nCntMaxPowerUnder, cnt_per_col);
            } else {
                nCntMaxPowerOver = Math.max(nCntMaxPowerOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nPUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerUnder + '연속');
        var per_even = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nPOverCnt + '번 (' + per_even + '%) ' + nCntMaxPowerOver + '연속');
        $('#powerball_underover #plop_unover').html((nCntPowerUnoverBroken - nCntPowerUnoverPlop) + '번');
        $('#powerball_underover #broken_unover').html((nCntPowerUnoverBroken + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_oddeven'] == _data[i - 1]['n_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntBallOddevenBroken = Math.max(nCntBallOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxBallEven = Math.max(nCntMaxBallEven, cnt_per_col);
            } else {
                nCntMaxBallOdd = Math.max(nCntMaxBallOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBOddCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #odd_ball').html(nBOddCnt + '번 (' + per_odd + '%) ' + nCntMaxBallOdd + '연속');
        var per_even = (100 * nBEvenCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #even_ball').html(nBEvenCnt + '번 (' + per_even + '%) ' + nCntMaxBallEven + '연속');
        $('#ball_oddeven #plop_ball').html((nCntBallOddevenBroken - nCntBallOddevenPlop) + '번');
        $('#ball_oddeven #broken_ball').html((nCntBallOddevenBroken + 1) + '번');
        $('#ball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_unover'] == _data[i - 1]['n_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
                nCntBallUnoverBroken = Math.max(nCntBallUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxBallUnder = Math.max(nCntMaxBallUnder, cnt_per_col);
            } else {
                nCntMaxBallOver = Math.max(nCntMaxBallOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBUnderCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #under_result').html(nBUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxBallUnder + '연속');
        var per_even = (100 * nBOverCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #over_result').html(nBOverCnt + '번 (' + per_even + '%) ' + nCntMaxBallOver + '연속');
        $('#ball_underover #plop_unover').html((nCntBallUnoverBroken - nCntBallUnoverPlop) + '번');
        $('#ball_underover #broken_unover').html((nCntBallUnoverBroken + 1) + '번');
        $('#ball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };

    var setBallLMSTableData = function () {
        let tbl_data = [];
        let tlbNo = -1;
        let MaxCnt = -1;
        let old_h_sml = '';

        for (let i = 0; i < _data.length; i++) {
            let h_sml = _data[i]['n_sml'];
            let Title = '';
            let td_data = `<td><span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['date_round']}</p></span></td>`;

            for (var ii = 0; ii < BALL_SML.length; ii++) {
                if (BALL_SML[ii].val == h_sml)  Title = `<td class="${BALL_SML[ii].title_class}">${h_sml}</td>`;
            }

            if (old_h_sml != h_sml) {
                old_h_sml = h_sml;
                tlbNo++;
                tbl_data.push({No:tlbNo + 1, Title:Title, Cnt:1, data:[td_data]});
            }
            else {
                tbl_data[tlbNo].data.push(td_data);
                tbl_data[tlbNo].Cnt = tbl_data[tlbNo].Cnt + 1;
            }

            MaxCnt = Math.max(tbl_data[tlbNo].Cnt, MaxCnt);
        }

        let html = '';
        for (let kk=0; kk < 4; kk++)    {
            let rowCnt = 1;
            if (kk == 1)   rowCnt = MaxCnt;

            for (let jj=0; jj < rowCnt; jj++)   {
                html += '<tr>';
                for (let i=0; i < tbl_data.length; i++)   {
                    if (kk == 0)    html += tbl_data[i].Title;
                    else if (kk == 1)   {
                        if (jj < tbl_data[i].Cnt)   html += tbl_data[i].data[jj];
                        else                        html += '<td> </td>';           
                    }
                    else if (kk == 2)    html += '<td>' + tbl_data[i].Cnt + '</td>';
                    else if (kk == 3)    html += '<td>' + tbl_data[i].No + '</td>';
                }
                html += '</tr>';
            }
        }

        nCntBallLMSPlop = 0;
        for (let i=0; i < tbl_data.length; i++)   {
            if (tbl_data[i].Cnt > 1)   nCntBallLMSPlop++;

        }

        var per_large = PercentCalcProc(objSmlCnt['large'], MAX_ROUND); //  (100 * objSmlCnt['large'] / nCnt).toFixed(2);
        var per_middle = PercentCalcProc(objSmlCnt['middle'], MAX_ROUND); // (100 * objSmlCnt['middle'] / nCnt).toFixed(2);
        var per_small = PercentCalcProc(objSmlCnt['small'], MAX_ROUND); // (100 * objSmlCnt['small'] / nCnt).toFixed(2);

        $('#ball_lms #l_ball').html(objSmlCnt['large'] + '번 (' + per_large + '%) ' + (objMaxCtnSeqSML['large'] + 1) + '연속');
        $('#ball_lms #m_ball').html(objSmlCnt['middle'] + '번 (' + per_middle + '%) ' + (objMaxCtnSeqSML['middle'] + 1) + '연속');
        $('#ball_lms #s_ball').html(objSmlCnt['small'] + '번 (' + per_small + '%) ' + (objMaxCtnSeqSML['small'] + 1) + '연속');

        let nCntBallLMSBroken = tbl_data.length;
        $('#ball_lms #plop_ball').html((nCntBallLMSBroken - nCntBallLMSPlop) + '번');
        $('#ball_lms #broken_ball').html((nCntBallLMSBroken) + '번');
        $('#ball_lms .oddeven-result > table > tbody').html(html); // html + row + footer

        setTimeout(function(){
            $('#ball_lms .oddeven-result').scrollLeft($("#ball_lms .oddeven-result > table").width());
        }, 500);        
    }

    function setStatisticsMakeHtml(BlueCnt, RedCnt, MaxCnt, BlueTitle, RedTitle){
        var per_blue = (BlueCnt > 0) ? (100 * BlueCnt / MaxCnt).toFixed(2) : '0.00';
        var per_red = (RedCnt > 0) ? (100 * RedCnt / MaxCnt).toFixed(2) : '0.00';
        var p_html = ``;

        if(BlueCnt > RedCnt){
            p_html = `<div class="" style="text-align:center;">
                        <div class="title-odd" style='height: 20px;'><span class="circle bg-blue"><p>${BlueTitle}</p></span></div>
                             <div class="odd-even-progress" style='height: 20px;'>
                                <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            if (RedCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>`;
            }
            p_html +=       `</div>
                        <div class="title-even" style='height: 20px;'><span class="circle bg-gray"><p>${RedTitle}</p></span></div>
                    </div>`;
        }else{
            p_html = `<div class="" style="text-align:center;" style='height: 20px;'>
                        <div class="title-odd" style='height: 20px;'><span class="circle bg-gray"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>`;
            if (BlueCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            }
            p_html +=           `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>
                            </div>`;
            var bg_redColor = 'bg-red';
            if (RedCnt <= 0)   {    bg_redColor = 'bg-gray';    }
            p_html +=       `<div class="title-even" style='height: 20px;'><span class="circle ${bg_redColor}"><p>${RedTitle}</p></span></div>
                        </div>`;
        }

        return (p_html);
    }
    var PercentCalcProc = function(val1, val2) {
        if (val1 == 0 || val2 == 0) return "0.00";
        else{
            let ret = (100 * val1 / val2).toFixed(2);
            return ret;
        }
    };

    var setStatistics = function () {
        var nCnt = _data.length;

        var p_oddeven_html = setStatisticsMakeHtml(nPOddCnt, nPEvenCnt, nCnt, '홀', '짝');
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var p_unover_html = setStatisticsMakeHtml(nPUnderCnt, nPOverCnt, nCnt, '언더', '오버');
        $('.powerball-chart .under-over').html(p_unover_html);

        var n_oddeven_html = setStatisticsMakeHtml(nBOddCnt, nBEvenCnt, nCnt, '홀', '짝');
        $('#ball_chart .odd-even').html(n_oddeven_html);

        var n_unover_html = setStatisticsMakeHtml(nBOverCnt, nBUnderCnt, nCnt, '언더', '오버');
        $('#ball_chart .under-over').html(n_unover_html);

        var per_large = PercentCalcProc(objSmlCnt['large'], nCnt); //  (100 * objSmlCnt['large'] / nCnt).toFixed(2);
        var per_middle = PercentCalcProc(objSmlCnt['middle'], nCnt); // (100 * objSmlCnt['middle'] / nCnt).toFixed(2);
        var per_small = PercentCalcProc(objSmlCnt['small'], nCnt); // (100 * objSmlCnt['small'] / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', objSmlCnt['large']],
                    ['d2', objSmlCnt['middle']],
                    ['d3', objSmlCnt['small']]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${objSmlCnt['large']}회(${per_large}%) ${objMaxCtnSeqSML['large'] + 1}연속`,
                    d2: `중: ${objSmlCnt['middle']}회(${per_middle}%) ${objMaxCtnSeqSML['middle'] + 1}연속`,
                    d3: `소: ${objSmlCnt['small']}회(${per_small}%) ${objMaxCtnSeqSML['small'] + 1}연속`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntPOdd = 0, nCntPEven = 0;
        var nCntNOdd = 0, nCntNEven = 0;
        var nCntPUnder = 0, nCntPOver = 0;
        var nCntNUnder = 0, nCntNOver = 0;
        var nCntNLarge = 0, nCntNMedium = 0, nCntNSmall = 0;
        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['p_oddeven'] == '홀') {
                nCntPOdd++;
            }
            if (_data[i]['p_unover'] == '언더') {
                nCntPUnder++;
            }
            if (_data[i]['n_oddeven'] == '짝') {
                nCntNOdd++;
            }
            if (_data[i]['n_unover'] == '오버') {
                nCntNOver++;
            }
            if (_data[i]['n_sml'] == '대') {
                nCntNLarge++;
            } else if (_data[i]['n_sml'] == '중') {
                nCntNMedium++;
            }
        }
        nCntPEven = nCnt - nCntPOdd;
        nCntPOver = nCnt - nCntPUnder;
        nCntNEven = nCnt - nCntNOdd;
        nCntNUnder = nCnt - nCntNOver;
        nCntNSmall = nCnt - nCntNLarge - nCntNMedium;

        var p_oddeven_html = setStatisticsMakeHtml(nCntPOdd, nCntPEven, nCnt, '홀', '짝');
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var p_unover_html = setStatisticsMakeHtml(nCntPUnder, nCntPOver, nCnt, '언더', '오버');
        $('.powerball-chart .under-over').html(p_unover_html);

        var n_oddeven_html = setStatisticsMakeHtml(nCntNOdd, nCntNEven, nCnt, '홀', '짝');
        $('#nball_chart .odd-even').html(n_oddeven_html);

        var n_unover_html = setStatisticsMakeHtml(nCntNOver, nCntNUnder, nCnt, '언더', '오버');
        $('#nball_chart .under-over').html(n_unover_html);

        var per_large = PercentCalcProc(nCntNLarge, nCnt); // (100 * nCntNLarge / nCnt).toFixed(2);
        var per_middle = PercentCalcProc(nCntNMedium, nCnt); // (100 * nCntNMedium / nCnt).toFixed(2);
        var per_small = PercentCalcProc(nCntNSmall, nCnt); // (100 * (nCntNSmall) / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', nCntNLarge],
                    ['d2', nCntNMedium],
                    ['d3', nCntNSmall]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${nCntNLarge}회(${per_large}%)`,
                    d2: `중: ${nCntNMedium}회(${per_middle}%)`,
                    d3: `소: ${nCntNSmall}회(${per_small}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var n_ball = _data[i]['ball'].split(',').join(' ');
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['round']}(${_data[i]['date_round']})</td>
                        <td>${_data[i]['powerball']}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['p_section']}</p></span></td>
                        <td><span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['p_unover_style1']}"><p>${_data[i]['p_unover']}</p></span></td>
                        <td>${n_ball}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['sum']}</p></span></td>
                        <td><span class="circle no-fill br-gray color-dark"><p>${_data[i]['n_section']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['n_sml_style']}"><p>${_data[i]['n_sml']}</p></span></td>
                        <td><span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p> </span></td>
                        <td><span class="circle no-fill ${_data[i]['n_unover_style1']}"><p>${_data[i]['n_unover']}</p></span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };
    var setRecentResult = function () {
        var i = 0;
        $('#powerball-recent .recent-results').each(function () {
            var html = `<div class="game-title">파워볼 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                            <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                            <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };
    var setRecentListResult = function (gameType) {
        var gameTypeName = '';
        if (gameType == 'eos_powerball_1' || gameType == 'eos_powerball_2' || gameType == 'eos_powerball_3' || gameType == 'eos_powerball_4' || gameType == 'eos_powerball_5')    {
            var min = gameType.substring(gameType.length - 1);
            gameTypeName = 'EOS파워볼' + min + '분';
        }
        else if (gameType == 'rdombox_powerball_1' || gameType == 'rdombox_powerball_2' || gameType == 'rdombox_powerball_3' || gameType == 'rdombox_powerball_4' || gameType == 'rdombox_powerball_5') {
            var min = gameType.substring(gameType.length - 1);
            gameTypeName = '랜덤파워볼' + min + '분';
        }

        var i = 0;
        var html = `<div class="game-title">${gameTypeName} ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                        <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                        <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                    </div>`;
        return (html);
    };
    var setRoundTable = function (game_type, sround, eround, sdate, edate) {
        var tblData = [];
        for (var i = 0; i < _data.length; i++) {
            var reg_date = _data[i]['reg_date'];
            if (tblData[reg_date] == undefined) {
                tblData[reg_date] = [];
            }
            var value = "";
            if (game_type == 'p_oddeven' || game_type == 'n_oddeven') {
                if (_data[i][game_type] == '1') {
                    value = "<td><span class='circle bg-red'><p>짝</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-blue'><p>홀</p></span></td>";
                }
            } else if (game_type == 'p_unover' || game_type == 'n_unover') {
                if (_data[i][game_type] == '0') {
                    value = "<td><span class='circle bg-blue'><p>언더</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-red'><p>오버</p></span></td>";
                }
            }
            tblData[reg_date].push({ 'date_round': _data[i]['date_round'], 'value': value });
        }

        html = "<tr><td>회차</td>";
        for (var i = sround; i <= eround; i++) {
            html += `<td>${i}</td>`;
        }
        html += "</tr>";
        for (var j = edate; j >= sdate; j = j - 3600 * 24) {
            var tr = "<tr>";
            var dtDate = new Date(j * 1000);
            var dtMonth = dtDate.getMonth() + 1 < 10 ? "0" + (dtDate.getMonth() + 1) : dtDate.getMonth() + 1;
            var dtDay = dtDate.getDate() < 10 ? "0" + dtDate.getDate() : dtDate.getDate();
            var reg_date = dtDate.getFullYear() + '-' + dtMonth + '-' + dtDay;
            tr += `<td>${reg_date}</td>`;
            if (tblData[reg_date] == undefined || tblData[reg_date] == "") {
                for (var jj = sround; jj <= eround; jj++) {
                    tr += '<td></td>';
                }
                html += tr;
                continue;
            }
            for (var i = sround; i <= eround; i++) {
                for (var k = 0; k < tblData[reg_date].length; k++) {
                    if (tblData[reg_date][k].date_round == i) {
                        tr += tblData[reg_date][k].value;
                    }
                }
            }
            tr += "</tr>";
            html += tr;
        }

        $('.tbl-round').html(html);

        var oddTr = "<tr><td><span class='circle bg-blue'><p>홀</p></span></td>";
        var evenTr = "<tr><td><span class='circle bg-red'><p>짝</p></span></td>";
        if (game_type == 'p_unover' || game_type == 'n_unover') {
            oddTr = "<tr><td><span class='circle bg-blue'><p>언더</p></span></td>";
            evenTr = "<tr><td><span class='circle bg-red'><p>오버</p></span></td>";
        }
        for (var i = 0; i < eround - sround + 1; i++) {
            var nCnt = nCntOdd = nCntEven = 0;
            $('.tbl-round td:nth-child(' + (i + 2) + ')').each(function () {
                if ($(this).children('span').hasClass('bg-red')) {
                    nCnt++;
                    nCntEven++;
                } else if ($(this).children('span').hasClass('bg-blue')) {
                    nCnt++;
                    nCntOdd++;
                }
            });
            var fPerOdd = (nCntOdd / nCnt * 100).toFixed(0);
            var fPerEven = (nCntEven / nCnt * 100).toFixed(0);
            if (fPerOdd == "NaN") {
                fPerOdd = 0;
            }
            if (fPerEven == "NaN") {
                fPerEven = 0;
            }
            oddTr += `<td>${nCntOdd}번<br/>${fPerOdd}%</td>`;
            evenTr += `<td>${nCntEven}번<br/>${fPerEven}%</td>`;
        }
        oddTr += "</tr>";
        evenTr += "</tr>";
        $('.tbl-round').append(oddTr + evenTr);
        // html += oddTr + evenTr;
    }
};



var speedkeno_game_data = function () {
    var MAX_ROUND = 0;//720;
    var _data = [];

    var nPOddCnt = 0;
    var nPEvenCnt = 0;
    var nPOverCnt = 0;
    var nPUnderCnt = 0;
    var nSOddCnt = 0;
    var nSEvenCnt = 0;
    var nSOverCnt = 0;
    var nSUnderCnt = 0;
    var nHOddCnt = 0;
    var nHEvenCnt = 0;
    var nHOverCnt = 0;
    var nHUnderCnt = 0;

    var nCntPowerOddevenPlop = 0;
    var nCntPowerUnoverPlop = 0;
    var nCntSuperOddevenPlop = 0;
    var nCntSuperUnoverPlop = 0;
    var nCntHapOddevenPlop = 0;
    var nCntHapUnoverPlop = 0;

    var nCntPowerOddevenBroken = 0;
    var nCntPowerUnoverBroken = 0;
    var nCntSuperOddevenBroken = 0;
    var nCntSuperUnoverBroken = 0;
    var nCntHapOddevenBroken = 0;
    var nCntHapUnoverBroken = 0;

    var nCntMaxPowerOdd = 0;
    var nCntMaxPowerEven = 0;
    var nCntMaxPowerUnder = 0;
    var nCntMaxPowerOver = 0;

    var nCntMaxSuperOdd = 0;
    var nCntMaxSuperEven = 0;
    var nCntMaxSuperUnder = 0;
    var nCntMaxSuperOver = 0;

    var nCntMaxHapOdd = 0;
    var nCntMaxHapEven = 0;
    var nCntMaxHapUnder = 0;
    var nCntMaxHapOver = 0;

    var objMaxCtnSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };

    this._initPowerball = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        $('.round-result').show();
        analyzePowerball();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (data, game_type = "p_oddeven", sround, eround, sdate, edate) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        $('.round-result').show();
        setRoundTable(game_type, sround, eround, sdate, edate);
    }
    this.initSpeedkeno = function (dataByDay) {
        // _data = dataByDay;
        Object.assign(_data, dataByDay);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        calculatePlop();
        setPowerOddEvenTableData();
        setPowerUnOverTableData();
        setSuperOddEvenTableData();
        setSuperUnOverTableData();
        setHapOddEvenTableData();
        setHapUnOverTableData();
        setStatistics();
        setGameDataTable();
    };
    this.RecentListPowerball_game = function (data, gameType) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        var html = setRecentListResult(gameType);
        return (html);
    };
    var analyzePowerball = function () {
        var nFlagSML = '';
        var objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };

        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['p_oddeven'] == 0) {
                _data[i]['p_oddeven'] = '홀';
                _data[i]['p_oddeven_style'] = 'bg-blue';
                nPOddCnt++;
            } else {
                _data[i]['p_oddeven'] = '짝';
                _data[i]['p_oddeven_style'] = 'bg-red';
                nPEvenCnt++;
            }
            if (_data[i]['p_unover'] == 0) {
                _data[i]['p_unover'] = '언더';
                _data[i]['p_unover_short'] = '언';
                _data[i]['p_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['p_unover_style1'] = 'br-blue color-blue';
                _data[i]['p_unover_style_short'] = 'bg-blue';
                nPUnderCnt++;
            } else {
                _data[i]['p_unover'] = '오버';
                _data[i]['p_unover_short'] = '오';
                _data[i]['p_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['p_unover_style1'] = 'br-red color-red';
                _data[i]['p_unover_style_short'] = 'bg-red';
                nPOverCnt++;
            }

            if (_data[i]['s_oddeven'] == 0) {
                _data[i]['s_oddeven'] = '홀';
                _data[i]['s_oddeven_style'] = 'bg-blue';
                nSOddCnt++;
            } else {
                _data[i]['s_oddeven'] = '짝';
                _data[i]['s_oddeven_style'] = 'bg-red';
                nSEvenCnt++;
            }
            if (_data[i]['s_unover'] == 0) {
                _data[i]['s_unover'] = '언더';
                _data[i]['s_unover_short'] = '언';
                _data[i]['s_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['s_unover_style1'] = 'br-blue color-blue';
                _data[i]['s_unover_style_short'] = 'bg-blue';
                nSUnderCnt++;
            } else {
                _data[i]['s_unover'] = '오버';
                _data[i]['s_unover_short'] = '오';
                _data[i]['s_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['s_unover_style1'] = 'br-red color-red';
                _data[i]['s_unover_style_short'] = 'bg-red';
                nSOverCnt++;
            }
            
            if (_data[i]['h_oddeven'] == 0) {
                _data[i]['h_oddeven'] = '홀';
                _data[i]['h_oddeven_style'] = 'bg-blue';
                nHOddCnt++;
            } else {
                _data[i]['h_oddeven'] = '짝';
                _data[i]['h_oddeven_style'] = 'bg-red';
                nHEvenCnt++;
            }
            if (_data[i]['h_unover'] == 0) {
                _data[i]['h_unover'] = '언더';
                _data[i]['h_unover_short'] = '언';
                _data[i]['h_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['h_unover_style1'] = 'br-blue color-blue';
                _data[i]['h_unover_style_short'] = 'bg-blue';
                nHUnderCnt++;
            } else {
                _data[i]['h_unover'] = '오버';
                _data[i]['h_unover_short'] = '오';
                _data[i]['h_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['h_unover_style1'] = 'br-red color-red';
                _data[i]['h_unover_style_short'] = 'bg-red';
                nHOverCnt++;
            }
        }
    };
    var calculatePlop = function () {
    };

    var setPowerOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_oddeven'] == _data[i - 1]['p_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntPowerOddevenBroken = Math.max(nCntPowerOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxPowerEven = Math.max(nCntMaxPowerEven, cnt_per_col);
            } else {
                nCntMaxPowerOdd = Math.max(nCntMaxPowerOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nPOddCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerOdd + '연속');
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nPEvenCnt + '번 (' + per_even + '%) ' + nCntMaxPowerEven + '연속');
        // $('#powerball_oddeven #plop_result').html((nCntPowerOddevenBroken - nCntPowerOddevenPlop) + '번');
        // $('#powerball_oddeven #broken_result').html((nCntPowerOddevenBroken + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };
    var setPowerUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_unover'] == _data[i - 1]['p_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
                nCntPowerUnoverBroken = Math.max(nCntPowerUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxPowerUnder = Math.max(nCntMaxPowerUnder, cnt_per_col);
            } else {
                nCntMaxPowerOver = Math.max(nCntMaxPowerOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nPUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerUnder + '연속');
        var per_even = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nPOverCnt + '번 (' + per_even + '%) ' + nCntMaxPowerOver + '연속');
        // $('#powerball_underover #plop_unover').html((nCntPowerUnoverBroken - nCntPowerUnoverPlop) + '번');
        // $('#powerball_underover #brokes_unover').html((nCntPowerUnoverBroken + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };

    var setSuperOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['s_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['s_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['s_oddeven']}</td>`;
        }
    
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['s_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;
    
        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['s_oddeven'] == _data[i - 1]['s_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['s_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntSuperOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['s_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntSuperOddevenBroken = Math.max(nCntSuperOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntSuperOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntSuperOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntSuperOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxSuperEven = Math.max(nCntMaxSuperEven, cnt_per_col);
            } else {
                nCntMaxSuperOdd = Math.max(nCntMaxSuperOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nSOddCnt / MAX_ROUND).toFixed(2);
        $('#superball_oddeven #odd_result').html(nSOddCnt + '번 (' + per_odd + '%) ' + nCntMaxSuperOdd + '연속');
        var per_even = (100 * nSEvenCnt / MAX_ROUND).toFixed(2);
        $('#superball_oddeven #even_result').html(nSEvenCnt + '번 (' + per_even + '%) ' + nCntMaxSuperEven + '연속');
        // $('#superball_oddeven #plop_result').html((nCntSuperOddevenBroken - nCntSuperOddevenPlop) + '번');
        // $('#superball_oddeven #broken_result').html((nCntSuperOddevenBroken + 1) + '번');
        $('#superball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#superball_oddeven .oddeven-result').scrollLeft($('#superball_oddeven .oddeven-result > table').width());
    };
    var setSuperUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['s_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['s_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['s_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['s_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;
    
        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['s_unover'] == _data[i - 1]['s_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['s_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntSuperUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['s_unover_style']}'><p>${val}</p></span></td>`;
                nCntSuperUnoverBroken = Math.max(nCntSuperUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntSuperUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntSuperUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntSuperUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxSuperUnder = Math.max(nCntMaxSuperUnder, cnt_per_col);
            } else {
                nCntMaxSuperOver = Math.max(nCntMaxSuperOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nSUnderCnt / MAX_ROUND).toFixed(2);
        $('#superball_underover #under_result').html(nSUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxSuperUnder + '연속');
        var per_even = (100 * nSOverCnt / MAX_ROUND).toFixed(2);
        $('#superball_underover #over_result').html(nSOverCnt + '번 (' + per_even + '%) ' + nCntMaxSuperOver + '연속');
        // $('#superball_underover #plos_unover').html((nCntSuperUnoverBroken - nCntSuperUnoverPlop) + '번');
        // $('#superball_underover #brokes_unover').html((nCntSuperUnoverBroken + 1) + '번');
        $('#superball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
var setHapOddEvenTableData = function () {
    var tbl_data = [];
    tbl_data[0] = [];
    tbl_data[1] = [];
    if (_data[0]['h_oddeven'] == '짝') {
        tbl_data[0][0] = `<td class="even">${_data[0]['h_oddeven']}</td>`;
    } else {
        tbl_data[0][0] = `<td class="odd">${_data[0]['h_oddeven']}</td>`;
    }

    tbl_data[1][0] = `<td><span class="circle ${_data[0]['h_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

    var j = 1; var jj = 0;
    for (var i = 1; i < _data.length; i++) {
        var val = _data[i]['date_round'];
        if (_data[i]['h_oddeven'] == _data[i - 1]['h_oddeven']) {
            j++;
            if (tbl_data[j] == undefined) {
                tbl_data[j] = [];
            }
            tbl_data[j][jj] = `<td><span class='circle ${_data[i]['h_oddeven_style']}'><p>${val}</p></span></td>`;
        } else {
            jj++;
            if (j != 1) {
                nCntHapOddevenPlop++;
            }
            j = 1;
            if (tbl_data[j] == undefined) {
                tbl_data[j] = [];
            }
            tbl_data[j][jj] = `<td><span class='circle ${_data[i]['h_oddeven_style']}'><p>${val}</p></span></td>`;
            nCntHapOddevenBroken = Math.max(nCntHapOddevenBroken, jj);
        }
    }
    for (var i = 1; i <= nCntHapOddevenBroken; i++) {
        if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
            tbl_data[0][i] = '<td class="odd">홀</td>';
        } else {
            tbl_data[0][i] = '<td class="even">짝</td>';
        }
    }
    var html = '';
    var cnt_per_col = 0;
    for (var i = 0; i < tbl_data.length; i++) {
        for (var j = 0; j <= nCntHapOddevenBroken; j++) {
            if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                tbl_data[i][j] = '<td></td>';
            } else {
                cnt_per_col++;
            }
        }
        var tr = tbl_data[i].join(" ");
        html += "<tr>" + tr + "</tr>";
    }
    var row = '<tr>';
    var footer = '<tr>';
    for (var i = 0; i <= nCntHapOddevenBroken; i++) {
        cnt_per_col = 0;
        for (j = 1; j < tbl_data.length; j++) {
            if (tbl_data[j][i] != '<td></td>') {
                cnt_per_col++;
            }
        }
        if (tbl_data[0][i] == '<td class="even">짝</td>') {
            nCntMaxHapEven = Math.max(nCntMaxHapEven, cnt_per_col);
        } else {
            nCntMaxHapOdd = Math.max(nCntMaxHapOdd, cnt_per_col);
        }
        row += '<td>' + cnt_per_col + '</td>';
        footer += '<td>' + (i + 1) + '</td>';
    }
    row += '</tr>';
    footer += '</tr>';
    var per_odd = (100 * nHOddCnt / MAX_ROUND).toFixed(2);
    $('#hapball_oddeven #odd_result').html(nHOddCnt + '번 (' + per_odd + '%) ' + nCntMaxHapOdd + '연속');
    var per_even = (100 * nHEvenCnt / MAX_ROUND).toFixed(2);
    $('#hapball_oddeven #even_result').html(nHEvenCnt + '번 (' + per_even + '%) ' + nCntMaxHapEven + '연속');
    // $('#hapball_oddeven #plop_result').html((nCntHapOddevenBroken - nCntHapOddevenPlop) + '번');
    // $('#hapball_oddeven #broken_result').html((nCntHapOddevenBroken + 1) + '번');
    $('#hapball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    $('#hapball_oddeven .oddeven-result').scrollLeft($('#hapball_oddeven .oddeven-result > table').width());
};
var setHapUnOverTableData = function () {
    var tbl_data = [];
    tbl_data[0] = [];
    tbl_data[1] = [];
    if (_data[0]['h_unover'] == '언더') {
        tbl_data[0][0] = `<td class="odd">${_data[0]['h_unover']}</td>`;
    } else {
        tbl_data[0][0] = `<td class="even">${_data[0]['h_unover']}</td>`;
    }
    tbl_data[1][0] = `<td><span class="circle ${_data[0]['h_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

    var j = 1; var jj = 0;
    for (var i = 1; i < _data.length; i++) {
        var val = _data[i]['date_round'];
        if (_data[i]['h_unover'] == _data[i - 1]['h_unover']) {
            j++;
            if (tbl_data[j] == undefined) {
                tbl_data[j] = [];
            }
            tbl_data[j][jj] = `<td><span class='circle ${_data[i]['h_unover_style']}'><p>${val}</p></span></td>`;
        } else {
            jj++;
            if (j != 1) {
                nCntHapUnoverPlop++;
            }
            j = 1;
            if (tbl_data[j] == undefined) {
                tbl_data[j] = [];
            }
            tbl_data[j][jj] = `<td><span class='circle ${_data[i]['h_unover_style']}'><p>${val}</p></span></td>`;
            nCntHapUnoverBroken = Math.max(nCntHapUnoverBroken, jj);
        }
    }
    for (var i = 1; i <= nCntHapUnoverBroken; i++) {
        if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
            tbl_data[0][i] = '<td class="even">오버</td>';
        } else {
            tbl_data[0][i] = '<td class="odd">언더</td>';
        }
    }
    var html = '';
    var cnt_per_col = 0;
    for (var i = 0; i < tbl_data.length; i++) {
        for (var j = 0; j <= nCntHapUnoverBroken; j++) {
            if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                tbl_data[i][j] = '<td></td>';
            } else {
                cnt_per_col++;
            }
        }
        var tr = tbl_data[i].join(" ");
        html += "<tr>" + tr + "</tr>";
    }
    var row = '<tr>';
    var footer = '<tr>';
    for (var i = 0; i <= nCntHapUnoverBroken; i++) {
        cnt_per_col = 0;
        for (j = 1; j < tbl_data.length; j++) {
            if (tbl_data[j][i] != '<td></td>') {
                cnt_per_col++;
            }
        }
        if (tbl_data[0][i] == '<td class="odd">언더</td>') {
            nCntMaxHapUnder = Math.max(nCntMaxHapUnder, cnt_per_col);
        } else {
            nCntMaxHapOver = Math.max(nCntMaxHapOver, cnt_per_col);
        }
        row += '<td>' + cnt_per_col + '</td>';
        footer += '<td>' + (i + 1) + '</td>';
    }
    row += '</tr>';
    footer += '</tr>';
    var per_odd = (100 * nHUnderCnt / MAX_ROUND).toFixed(2);
    $('#hapball_underover #under_result').html(nHUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxHapUnder + '연속');
    var per_even = (100 * nHOverCnt / MAX_ROUND).toFixed(2);
    $('#hapball_underover #over_result').html(nHOverCnt + '번 (' + per_even + '%) ' + nCntMaxHapOver + '연속');
    // $('#hapball_underover #ploh_unover').html((nCntHapUnoverBroken - nCntHapUnoverPlop) + '번');
    // $('#hapball_underover #brokes_unover').html((nCntHapUnoverBroken + 1) + '번');
    $('#hapball_underover .oddeven-result > table > tbody').html(html + row + footer);
};
        

    function setStatisticsMakeHtml(BlueCnt, RedCnt, MaxCnt, BlueTitle, RedTitle){
        var per_blue = (BlueCnt > 0) ? (100 * BlueCnt / MaxCnt).toFixed(2) : '0.00';
        var per_red = (RedCnt > 0) ? (100 * RedCnt / MaxCnt).toFixed(2) : '0.00';
        var p_html = ``;

        if(BlueCnt > RedCnt){
            p_html = `<div class="" style="text-align:center;">
                        <div class="title-odd" style='height: 20px;'><span class="circle bg-blue"><p>${BlueTitle}</p></span></div>
                             <div class="odd-even-progress" style='height: 20px;'>
                                <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            if (RedCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>`;
            }
            p_html +=       `</div>
                        <div class="title-even" style='height: 20px;'><span class="circle bg-gray"><p>${RedTitle}</p></span></div>
                    </div>`;
        }else{
            p_html = `<div class="" style="text-align:center;" style='height: 20px;'>
                        <div class="title-odd" style='height: 20px;'><span class="circle bg-gray"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>`;
            if (BlueCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            }
            p_html +=           `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>
                            </div>`;
            var bg_redColor = 'bg-red';
            if (RedCnt <= 0)   {    bg_redColor = 'bg-gray';    }
            p_html +=       `<div class="title-even" style='height: 20px;'><span class="circle ${bg_redColor}"><p>${RedTitle}</p></span></div>
                        </div>`;
        }

        return (p_html);
    }
    var PercentCalcProc = function(val1, val2) {
        if (val1 == 0 || val2 == 0) return "0.00";
        else{
            let ret = (100 * val1 / val2).toFixed(2);
            return ret;
        }
    };

    var setStatistics = function () {
        var nCnt = _data.length;

        var p_oddeven_html = setStatisticsMakeHtml(nPOddCnt, nPEvenCnt, nCnt, '홀', '짝');
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var p_unover_html = setStatisticsMakeHtml(nPUnderCnt, nPOverCnt, nCnt, '언더', '오버');
        $('.powerball-chart .under-over').html(p_unover_html);

        var s_oddeven_html = setStatisticsMakeHtml(nSOddCnt, nSEvenCnt, nCnt, '홀', '짝');
        $('#superball_chart .odd-even').html(s_oddeven_html);

        var s_unover_html = setStatisticsMakeHtml(nSUnderCnt, nSOverCnt, nCnt, '언더', '오버');
        $('#superball_chart .under-over').html(s_unover_html);

        var h_oddeven_html = setStatisticsMakeHtml(nHOddCnt, nHEvenCnt, nCnt, '홀', '짝');
        $('#hapball_chart .odd-even').html(h_oddeven_html);

        var h_unover_html = setStatisticsMakeHtml(nHUnderCnt, nHOverCnt, nCnt, '언더', '오버');
        $('#hapball_chart .under-over').html(h_unover_html);

    };

    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntPOdd = 0, nCntPEven = 0;
        var nCntSOdd = 0, nCntSEven = 0;
        var nCntHOdd = 0, nCntHEven = 0;
        var nCntPUnder = 0, nCntPOver = 0;
        var nCntSUnder = 0, nCntSOver = 0;
        var nCntHUnder = 0, nCntHOver = 0;

        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['p_oddeven'] == '홀') {
                nCntPOdd++;
            }
            if (_data[i]['p_unover'] == '언더') {
                nCntPUnder++;
            }
            if (_data[i]['s_oddeven'] == '홀') {
                nCntSOdd++;
            }
            if (_data[i]['s_unover'] == '언더') {
                nCntSUnder++;
            }
            if (_data[i]['h_oddeven'] == '홀') {
                nCntHOdd++;
            }
            if (_data[i]['h_unover'] == '언더') {
                nCntHUnder++;
            }
        }
        nCntPEven = nCnt - nCntPOdd;
        nCntPOver = nCnt - nCntPUnder;
        nCntSEven = nCnt - nCntSOdd;
        nCntSOver = nCnt - nCntSUnder;
        nCntHEven = nCnt - nCntHOdd;
        nCntHOver = nCnt - nCntHUnder;

        var p_oddeven_html = setStatisticsMakeHtml(nCntPOdd, nCntPEven, nCnt, '홀', '짝');
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var p_unover_html = setStatisticsMakeHtml(nCntPUnder, nCntPOver, nCnt, '언더', '오버');
        $('.powerball-chart .under-over').html(p_unover_html);

        var s_oddeven_html = setStatisticsMakeHtml(nCntSOdd, nCntSEven, nCnt, '홀', '짝');
        $('#superball_chart .odd-even').html(s_oddeven_html);

        var s_unover_html = setStatisticsMakeHtml(nCntSUnder, nCntSOver, nCnt, '언더', '오버');
        $('#superball_chart .under-over').html(s_unover_html);

        var h_oddeven_html = setStatisticsMakeHtml(nCntHOdd, nCntHEven, nCnt, '홀', '짝');
        $('#hapball_chart .odd-even').html(h_oddeven_html);

        var h_unover_html = setStatisticsMakeHtml(nCntHUnder, nCntHOver, nCnt, '언더', '오버');
        $('#hapball_chart .under-over').html(h_unover_html);
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var n_ball = _data[i]['ball'].split(',').join(' ');
            var n_balls = _data[i]['ball'].split(',');
            n_ball = '';
            for (var j=0; j < n_balls.length; j++) {
                n_ball += n_balls[j].padStart(2, '0') + ' ';
                if (j === 10)   n_ball += '<br>';
            }
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            let powerball = parseInt(_data[i]['powerball']);
            let pnum1 = Math.floor(powerball / 10);
            if (pnum1 === 0)    pnum1 = '';
            let pnum2 = powerball % 10;

            let hapball = parseInt(_data[i]['hapball']);
            let hnum1 = Math.floor(hapball / 10);
            let hnum2 = hapball % 10;

            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['reg_date']}<br>${_data[i]['round']}(<b>${_data[i]['date_round']}</b>)</td>
                        <td><span class="paccent1">${pnum1}</span><span class="paccent2">${pnum2}</span></td>
                        <td><span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['p_unover_style1']}"><p>${_data[i]['p_unover']}</p></span></td>
                        <td><span class="saccent2">${_data[i]['superball']}</span></td>
                        <td><span class="circle ${_data[i]['s_oddeven_style']}"><p>${_data[i]['s_oddeven']}</p> </span></td>
                        <td><span class="circle no-fill ${_data[i]['s_unover_style1']}"><p>${_data[i]['s_unover']}</p></span></td>
                        <td><span class="haccent1">${hnum1}</span><span class="haccent2">${hnum2}</span></td>
                        <td><span class="circle ${_data[i]['h_oddeven_style']}"><p>${_data[i]['h_oddeven']}</p> </span></td>
                        <td><span class="circle no-fill ${_data[i]['h_unover_style1']}"><p>${_data[i]['h_unover']}</p></span></td>
                        <td>${n_ball}</td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };
    var setRecentResult = function () {
        var i = 0;
        $('#powerball-recent .recent-results').each(function () {
            var html = `<div class="game-title">파워볼 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                            <span class="circle ${_data[i]['s_oddeven_style']}"><p>${_data[i]['s_oddeven']}</p></span>
                            <span class="circle ${_data[i]['s_unover_style_short']}"><p>${_data[i++]['s_unover']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };
    var setRecentListResult = function (gameType) {
        var gameTypeName = '스피드키노';

        var i = 0;
        var html = `<div class="game-title">${gameTypeName} ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['s_oddeven_style']}"><p>${_data[i]['s_oddeven']}</p></span>
                        <span class="circle ${_data[i]['s_unover_style_short']}"><p>${_data[i++]['s_unover']}</p></span>
                        <span class="circle ${_data[i]['h_oddeven_style']}"><p>${_data[i]['h_oddeven']}</p></span>
                        <span class="circle ${_data[i]['h_unover_style_short']}"><p>${_data[i++]['h_unover']}</p></span>
                    </div>`;
        return (html);
    };
    var setRoundTable = function (game_type, sround, eround, sdate, edate) {
        var tblData = [];
        for (var i = 0; i < _data.length; i++) {
            var reg_date = _data[i]['reg_date'];
            if (tblData[reg_date] == undefined) {
                tblData[reg_date] = [];
            }
            var value = "";
            if (game_type == 'p_oddeven' || game_type == 's_oddeven' || game_type == 'h_oddeven') {
                if (_data[i][game_type] == '1') {
                    value = "<td><span class='circle bg-red'><p>짝</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-blue'><p>홀</p></span></td>";
                }
            } else if (game_type == 'p_unover' || game_type == 's_unover' || game_type == 'h_unover') {
                if (_data[i][game_type] == '0') {
                    value = "<td><span class='circle bg-blue'><p>언더</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-red'><p>오버</p></span></td>";
                }
            }
            tblData[reg_date].push({ 'date_round': _data[i]['date_round'], 'value': value });
        }

        html = "<tr><td>회차</td>";
        for (var i = sround; i <= eround; i++) {
            html += `<td>${i}</td>`;
        }
        html += "</tr>";
        for (var j = edate; j >= sdate; j = j - 3600 * 24) {
            var tr = "<tr>";
            var dtDate = new Date(j * 1000);
            var dtMonth = dtDate.getMonth() + 1 < 10 ? "0" + (dtDate.getMonth() + 1) : dtDate.getMonth() + 1;
            var dtDay = dtDate.getDate() < 10 ? "0" + dtDate.getDate() : dtDate.getDate();
            var reg_date = dtDate.getFullYear() + '-' + dtMonth + '-' + dtDay;
            tr += `<td>${reg_date}</td>`;
            if (tblData[reg_date] == undefined || tblData[reg_date] == "") {
                for (var jj = sround; jj <= eround; jj++) {
                    tr += '<td></td>';
                }
                html += tr;
                continue;
            }
            for (var i = sround; i <= eround; i++) {
                for (var k = 0; k < tblData[reg_date].length; k++) {
                    if (tblData[reg_date][k].date_round == i) {
                        tr += tblData[reg_date][k].value;
                    }
                }
            }
            tr += "</tr>";
            html += tr;
        }

        $('.tbl-round').html(html);

        var oddTr = "<tr><td><span class='circle bg-blue'><p>홀</p></span></td>";
        var evenTr = "<tr><td><span class='circle bg-red'><p>짝</p></span></td>";
        if (game_type == 'p_unover' || game_type == 's_unover' || game_type == 'h_unover') {
            oddTr = "<tr><td><span class='circle bg-blue'><p>언더</p></span></td>";
            evenTr = "<tr><td><span class='circle bg-red'><p>오버</p></span></td>";
        }
        for (var i = 0; i < eround - sround + 1; i++) {
            var nCnt = nCntOdd = nCntEven = 0;
            $('.tbl-round td:nth-child(' + (i + 2) + ')').each(function () {
                if ($(this).children('span').hasClass('bg-red')) {
                    nCnt++;
                    nCntEven++;
                } else if ($(this).children('span').hasClass('bg-blue')) {
                    nCnt++;
                    nCntOdd++;
                }
            });
            var fPerOdd = (nCntOdd / nCnt * 100).toFixed(0);
            var fPerEven = (nCntEven / nCnt * 100).toFixed(0);
            if (fPerOdd == "NaN") {
                fPerOdd = 0;
            }
            if (fPerEven == "NaN") {
                fPerEven = 0;
            }
            oddTr += `<td>${nCntOdd}번<br/>${fPerOdd}%</td>`;
            evenTr += `<td>${nCntEven}번<br/>${fPerEven}%</td>`;
        }
        oddTr += "</tr>";
        evenTr += "</tr>";
        $('.tbl-round').append(oddTr + evenTr);
        // html += oddTr + evenTr;
    }
};


var speedkeno_game_data_ball5 = function () {
    var MAX_ROUND = 0;//720;
    var STAND_POWER_UNOVER = 4.5;
    var STAND_UNOVER = 177.5;
    var POWERBALL_SECTION = [{ 'min': 0, 'max': 2, 'val': 'A' }, { 'min': 3, 'max': 4, 'val': 'B' },
    { 'min': 5, 'max': 6, 'val': 'C' }, { 'min': 7, 'max': 9, 'val': 'D' }];
    var BALL_SECTION = [{ 'min': 15, 'max': 133, 'val': 'A' }, { 'min': 134, 'max': 157, 'val': 'B' },
    { 'min': 158, 'max': 177, 'val': 'C' }, { 'min': 178, 'max': 196, 'val': 'D' },
    { 'min': 197, 'max': 220, 'val': 'E' }, { 'min': 221, 'max': 340, 'val': 'F' }];
    var BALL_SML = [{ 'min': 15, 'max': 157, 'val': '소', '_val': 'small', 'style': 'br-green color-green', 'style_short': 'bg-green' },
    { 'min': 158, 'max': 196, 'val': '중', '_val': 'middle', 'style': 'br-blue color-blue', 'style_short': 'bg-blue' },
    { 'min': 197, 'max': 340, 'val': '대', '_val': 'large', 'style': 'br-red color-red', 'style_short': 'bg-red' },];
    var objSmlCnt = { 'small': 0, 'middle': 0, 'large': 0 };
    var _data = [];
    var nPOddCnt = 0;
    var nPEvenCnt = 0;
    var nPOverCnt = 0;
    var nPUnderCnt = 0;
    var nBOddCnt = 0;
    var nBEvenCnt = 0;
    var nBOverCnt = 0;
    var nBUnderCnt = 0;
    var nCntPowerOddevenPlop = 0;
    var nCntPowerUnoverPlop = 0;
    var nCntBallOddevenPlop = 0;
    var nCntBallUnoverPlop = 0;
    var nCntPowerOddevenBroken = 0;
    var nCntPowerUnoverBroken = 0;
    var nCntBallOddevenBroken = 0;
    var nCntBallUnoverBroken = 0;
    var nCntMaxPowerOdd = 0;
    var nCntMaxPowerEven = 0;
    var nCntMaxPowerUnder = 0;
    var nCntMaxPowerOver = 0;
    var nCntMaxBallOdd = 0;
    var nCntMaxBallEven = 0;
    var nCntMaxBallUnder = 0;
    var nCntMaxBallOver = 0;
    var objMaxCtnSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
    this._initPowerball = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        $('.round-result').show();
        analyzePowerball();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (data, game_type = "p_oddeven", sround, eround, sdate, edate) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        $('.round-result').show();
        setRoundTable(game_type, sround, eround, sdate, edate);
    }
    this.initPowerball = function (dataByDay) {
        // _data = dataByDay;
        Object.assign(_data, dataByDay);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        calculatePlop();
        setPowerOddEvenTableData();
        setPowerUnOverTableData();
        setBallOddEvenTableData();
        setBallUnOverTableData();
        setStatistics();
        setGameDataTable();
    };
    this.RecentListPowerball_game = function (data, gameType) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        var html = setRecentListResult(gameType);
        return (html);
    };
    var analyzePowerball = function () {
        var nFlagSML = '';
        var objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['p_oddeven'] == 0) {
                _data[i]['p_oddeven'] = '홀';
                _data[i]['p_oddeven_style'] = 'bg-blue';
                nPOddCnt++;
            } else {
                _data[i]['p_oddeven'] = '짝';
                _data[i]['p_oddeven_style'] = 'bg-red';
                nPEvenCnt++;
            }
            if (_data[i]['p_unover'] == 1) {
                _data[i]['p_unover'] = '오버';
                _data[i]['p_unover_short'] = '오';
                _data[i]['p_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['p_unover_style1'] = 'br-red color-red';
                _data[i]['p_unover_style_short'] = 'bg-red';
                nPOverCnt++;
            } else {
                _data[i]['p_unover'] = '언더';
                _data[i]['p_unover_short'] = '언';
                _data[i]['p_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['p_unover_style1'] = 'br-blue color-blue';
                _data[i]['p_unover_style_short'] = 'bg-blue';
                nPUnderCnt++;
            }

            for (var ii = 0; ii < POWERBALL_SECTION.length; ii++) {
                if (_data[i]['powerball'] <= POWERBALL_SECTION[ii].max &&
                    _data[i]['powerball'] >= POWERBALL_SECTION[ii].min) {
                    _data[i]['p_section'] = POWERBALL_SECTION[ii].val;
                    break;
                }
            }
            var ball_arr = _data[i]['ball'].split(',');
            var nBall = 0;
            for (var j = 0; j < ball_arr.length && j < 5; j++) {    // 앞 5개만
                nBall += ball_arr[j] * 1;
            }
            _data[i]['sum'] = nBall;
            for (var ii = 0; ii < BALL_SECTION.length; ii++) {
                if (nBall <= BALL_SECTION[ii].max &&
                    nBall >= BALL_SECTION[ii].min) {
                    _data[i]['n_section'] = BALL_SECTION[ii].val;
                    break;
                }
            }
            if (_data[i]['n_oddeven'] == 1) {
                _data[i]['n_oddeven'] = '짝';
                _data[i]['n_oddeven_style'] = 'bg-red';
                nBOddCnt++;
            } else {
                _data[i]['n_oddeven'] = '홀';
                _data[i]['n_oddeven_style'] = 'bg-blue';
                nBEvenCnt++;
            }
            if (_data[i]['n_unover'] == 1) {
                _data[i]['n_unover'] = '오버';
                _data[i]['n_unover_short'] = '오';
                _data[i]['n_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['n_unover_style1'] = 'br-red color-red';
                _data[i]['n_unover_style_short'] = 'bg-red';
                nBOverCnt++;
            } else {
                _data[i]['n_unover'] = '언더';
                _data[i]['n_unover_short'] = '언';
                _data[i]['n_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['n_unover_style1'] = 'br-blue color-blue';
                _data[i]['n_unover_style_short'] = 'bg-blue';
                nBUnderCnt++;
            }
            for (var ii = 0; ii < BALL_SML.length; ii++) {
                if (nBall <= BALL_SML[ii].max && nBall >= BALL_SML[ii].min) {
                    _data[i]['n_sml'] = BALL_SML[ii].val;
                    _data[i]['n_sml_style'] = BALL_SML[ii].style;
                    _data[i]['n_sml_style_short'] = BALL_SML[ii].style_short;
                    objSmlCnt[BALL_SML[ii]._val]++;
                    if (nFlagSML == BALL_SML[ii]._val) {
                        objCntSeqSML[BALL_SML[ii]._val]++;
                        objMaxCtnSeqSML[BALL_SML[ii]._val] = Math.max(objMaxCtnSeqSML[BALL_SML[ii]._val], objCntSeqSML[BALL_SML[ii]._val]);
                    } else {
                        nFlagSML = BALL_SML[ii]._val;
                        objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };
                    }
                    break;
                }
            }
        }
    };
    var calculatePlop = function () {
        // var power_plop_oddeven = [];
        // var power_plop_unover = [];
        // var ball_plop_oddeven = [];
        // var ball_plop_unover = [];
        // for(var i = 0; i < _data.length; i++){
        //     if(i == 0){
        //         if(_data[i]['p_oddeven'] != _data[i + 1]['p_oddeven'] && 
        //         _data[i + 1]['p_oddeven'] != _data[i + 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['p_unover'] != _data[i + 1]['p_unover'] && 
        //         _data[i + 1]['p_unover'] != _data[i + 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_oddeven'] != _data[i + 1]['n_oddeven'] && 
        //         _data[i + 1]['n_oddeven'] != _data[i + 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_unover'] != _data[i + 1]['n_unover'] && 
        //         _data[i + 1]['n_unover'] != _data[i + 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }else if(i == _data.length - 2){
        //         if(_data[i]['p_oddeven'] != _data[i - 1]['p_oddeven'] &&
        //         _data[i - 1]['p_oddeven'] != _data[i - 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['p_unover'] != _data[i - 1]['p_unover'] &&
        //         _data[i - 1]['p_unover'] != _data[i - 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_oddeven'] != _data[i - 1]['n_oddeven'] &&
        //         _data[i - 1]['n_oddeven'] != _data[i - 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['n_unover'] != _data[i - 1]['n_unover'] &&
        //         _data[i - 1]['n_unover'] != _data[i - 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }else if(i == _data.length - 1){
        //         continue;
        //     }else{
        //         if(_data[i - 1]['p_oddeven'] != _data[i]['p_oddeven'] &&
        //         _data[i]['p_oddeven'] != _data[i + 1]['p_oddeven'] &&
        //         _data[i + 1]['p_oddeven'] != _data[i + 2]['p_oddeven']){
        //             if(!power_plop_oddeven.includes(i)){
        //                 power_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['p_unover'] != _data[i]['p_unover'] &&
        //         _data[i]['p_unover'] != _data[i + 1]['p_unover'] &&
        //         _data[i + 1]['p_unover'] != _data[i + 2]['p_unover']){
        //             if(!power_plop_unover.includes(i)){
        //                 power_plop_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['n_oddeven'] != _data[i]['n_oddeven'] &&
        //         _data[i]['n_oddeven'] != _data[i + 1]['n_oddeven'] &&
        //         _data[i + 1]['n_oddeven'] != _data[i + 2]['n_oddeven']){
        //             if(!ball_plop_oddeven.includes(i)){
        //                 ball_plop_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['n_unover'] != _data[i]['n_unover'] &&
        //         _data[i]['n_unover'] != _data[i + 1]['n_unover'] &&
        //         _data[i + 1]['n_unover'] != _data[i + 2]['n_unover']){
        //             if(!ball_plop_unover.includes(i)){
        //                 ball_plop_unover.push(i, i + 1);
        //             }
        //         }
        //     }
        // }
        // nCntPowerOddevenPlop = power_plop_oddeven.length / 2;
        // nCntPowerUnoverPlop = power_plop_unover.length / 2;
        // nCntBallOddevenPlop = ball_plop_oddeven.length / 2;
        // nCntBallUnoverPlop = ball_plop_unover.length / 2;
    };
    var setPowerOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_oddeven'] == _data[i - 1]['p_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntPowerOddevenBroken = Math.max(nCntPowerOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxPowerEven = Math.max(nCntMaxPowerEven, cnt_per_col);
            } else {
                nCntMaxPowerOdd = Math.max(nCntMaxPowerOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nPOddCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerOdd + '연속');
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nPEvenCnt + '번 (' + per_even + '%) ' + nCntMaxPowerEven + '연속');
        $('#powerball_oddeven #plop_result').html((nCntPowerOddevenBroken - nCntPowerOddevenPlop) + '번');
        $('#powerball_oddeven #broken_result').html((nCntPowerOddevenBroken + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };
    var setPowerUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_unover'] == _data[i - 1]['p_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
                nCntPowerUnoverBroken = Math.max(nCntPowerUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxPowerUnder = Math.max(nCntMaxPowerUnder, cnt_per_col);
            } else {
                nCntMaxPowerOver = Math.max(nCntMaxPowerOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nPUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerUnder + '연속');
        var per_even = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nPOverCnt + '번 (' + per_even + '%) ' + nCntMaxPowerOver + '연속');
        $('#powerball_underover #plop_unover').html((nCntPowerUnoverBroken - nCntPowerUnoverPlop) + '번');
        $('#powerball_underover #broken_unover').html((nCntPowerUnoverBroken + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_oddeven'] == _data[i - 1]['n_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntBallOddevenBroken = Math.max(nCntBallOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxBallEven = Math.max(nCntMaxBallEven, cnt_per_col);
            } else {
                nCntMaxBallOdd = Math.max(nCntMaxBallOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBOddCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #odd_ball').html(nBOddCnt + '번 (' + per_odd + '%) ' + nCntMaxBallOdd + '연속');
        var per_even = (100 * nBEvenCnt / MAX_ROUND).toFixed(2);
        $('#ball_oddeven #even_ball').html(nBEvenCnt + '번 (' + per_even + '%) ' + nCntMaxBallEven + '연속');
        $('#ball_oddeven #plop_ball').html((nCntBallOddevenBroken - nCntBallOddevenPlop) + '번');
        $('#ball_oddeven #broken_ball').html((nCntBallOddevenBroken + 1) + '번');
        $('#ball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setBallUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['n_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['n_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['n_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['n_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['n_unover'] == _data[i - 1]['n_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBallUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['n_unover_style']}'><p>${val}</p></span></td>`;
                nCntBallUnoverBroken = Math.max(nCntBallUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBallUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBallUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBallUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxBallUnder = Math.max(nCntMaxBallUnder, cnt_per_col);
            } else {
                nCntMaxBallOver = Math.max(nCntMaxBallOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nBUnderCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #under_result').html(nBUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxBallUnder + '연속');
        var per_even = (100 * nBOverCnt / MAX_ROUND).toFixed(2);
        $('#ball_underover #over_result').html(nBOverCnt + '번 (' + per_even + '%) ' + nCntMaxBallOver + '연속');
        $('#ball_underover #plop_unover').html((nCntBallUnoverBroken - nCntBallUnoverPlop) + '번');
        $('#ball_underover #broken_unover').html((nCntBallUnoverBroken + 1) + '번');
        $('#ball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };

    function setStatisticsMakeHtml(BlueCnt, RedCnt, MaxCnt, BlueTitle, RedTitle){
        var per_blue = (BlueCnt > 0) ? (100 * BlueCnt / MaxCnt).toFixed(2) : '0.00';
        var per_red = (RedCnt > 0) ? (100 * RedCnt / MaxCnt).toFixed(2) : '0.00';
        var p_html = ``;

        if(BlueCnt > RedCnt){
            p_html = `<div class="" style="text-align:center;">
                        <div class="title-odd" style='height: 20px;'><span class="circle bg-blue"><p>${BlueTitle}</p></span></div>
                             <div class="odd-even-progress" style='height: 20px;'>
                                <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            if (RedCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>`;
            }
            p_html +=       `</div>
                        <div class="title-even" style='height: 20px;'><span class="circle bg-gray"><p>${RedTitle}</p></span></div>
                    </div>`;
        }else{
            p_html = `<div class="" style="text-align:center;" style='height: 20px;'>
                        <div class="title-odd" style='height: 20px;'><span class="circle bg-gray"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>`;
            if (BlueCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            }
            p_html +=           `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>
                            </div>`;
            var bg_redColor = 'bg-red';
            if (RedCnt <= 0)   {    bg_redColor = 'bg-gray';    }
            p_html +=       `<div class="title-even" style='height: 20px;'><span class="circle ${bg_redColor}"><p>${RedTitle}</p></span></div>
                        </div>`;
        }

        return (p_html);
    }
    var PercentCalcProc = function(val1, val2) {
        if (val1 == 0 || val2 == 0) return "0.00";
        else{
            let ret = (100 * val1 / val2).toFixed(2);
            return ret;
        }
    };

    var setStatistics = function () {
        var nCnt = _data.length;

        var p_oddeven_html = setStatisticsMakeHtml(nPOddCnt, nPEvenCnt, nCnt, '홀', '짝');
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var p_unover_html = setStatisticsMakeHtml(nPUnderCnt, nPOverCnt, nCnt, '언더', '오버');
        $('.powerball-chart .under-over').html(p_unover_html);

        var n_oddeven_html = setStatisticsMakeHtml(nBOddCnt, nBEvenCnt, nCnt, '홀', '짝');
        $('#ball_chart .odd-even').html(n_oddeven_html);

        var n_unover_html = setStatisticsMakeHtml(nBOverCnt, nBUnderCnt, nCnt, '언더', '오버');
        $('#ball_chart .under-over').html(n_unover_html);

        var per_large = PercentCalcProc(objSmlCnt['large'], nCnt); //  (100 * objSmlCnt['large'] / nCnt).toFixed(2);
        var per_middle = PercentCalcProc(objSmlCnt['middle'], nCnt); // (100 * objSmlCnt['middle'] / nCnt).toFixed(2);
        var per_small = PercentCalcProc(objSmlCnt['small'], nCnt); // (100 * objSmlCnt['small'] / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', objSmlCnt['large']],
                    ['d2', objSmlCnt['middle']],
                    ['d3', objSmlCnt['small']]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${objSmlCnt['large']}회(${per_large}%) ${objMaxCtnSeqSML['large'] + 1}연속`,
                    d2: `중: ${objSmlCnt['middle']}회(${per_middle}%) ${objMaxCtnSeqSML['middle'] + 1}연속`,
                    d3: `소: ${objSmlCnt['small']}회(${per_small}%) ${objMaxCtnSeqSML['small'] + 1}연속`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntPOdd = 0, nCntPEven = 0;
        var nCntNOdd = 0, nCntNEven = 0;
        var nCntPUnder = 0, nCntPOver = 0;
        var nCntNUnder = 0, nCntNOver = 0;
        var nCntNLarge = 0, nCntNMedium = 0, nCntNSmall = 0;
        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['p_oddeven'] == '홀') {
                nCntPOdd++;
            }
            if (_data[i]['p_unover'] == '언더') {
                nCntPUnder++;
            }
            if (_data[i]['n_oddeven'] == '짝') {
                nCntNOdd++;
            }
            if (_data[i]['n_unover'] == '오버') {
                nCntNOver++;
            }
            if (_data[i]['n_sml'] == '대') {
                nCntNLarge++;
            } else if (_data[i]['n_sml'] == '중') {
                nCntNMedium++;
            }
        }
        nCntPEven = nCnt - nCntPOdd;
        nCntPOver = nCnt - nCntPUnder;
        nCntNEven = nCnt - nCntNOdd;
        nCntNUnder = nCnt - nCntNOver;
        nCntNSmall = nCnt - nCntNLarge - nCntNMedium;

        var p_oddeven_html = setStatisticsMakeHtml(nCntPOdd, nCntPEven, nCnt, '홀', '짝');
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var p_unover_html = setStatisticsMakeHtml(nCntPUnder, nCntPOver, nCnt, '언더', '오버');
        $('.powerball-chart .under-over').html(p_unover_html);

        var n_oddeven_html = setStatisticsMakeHtml(nCntNOdd, nCntNEven, nCnt, '홀', '짝');
        $('#nball_chart .odd-even').html(n_oddeven_html);

        var n_unover_html = setStatisticsMakeHtml(nCntNOver, nCntNUnder, nCnt, '언더', '오버');
        $('#nball_chart .under-over').html(n_unover_html);

        var per_large = PercentCalcProc(nCntNLarge, nCnt); // (100 * nCntNLarge / nCnt).toFixed(2);
        var per_middle = PercentCalcProc(nCntNMedium, nCnt); // (100 * nCntNMedium / nCnt).toFixed(2);
        var per_small = PercentCalcProc(nCntNSmall, nCnt); // (100 * (nCntNSmall) / nCnt).toFixed(2);
        var chart = c3.generate({
            bindto: '#powerball_piechart',
            data: {
                columns: [
                    ['d1', nCntNLarge],
                    ['d2', nCntNMedium],
                    ['d3', nCntNSmall]
                ],
                type: 'donut',
                labels: false,
                names: {
                    d1: `대: ${nCntNLarge}회(${per_large}%)`,
                    d2: `중: ${nCntNMedium}회(${per_middle}%)`,
                    d3: `소: ${nCntNSmall}회(${per_small}%)`
                }
            },
            legend: {
                position: 'right'
            },
            color: {
                pattern: ['#e74c3c', '#3498db', '#27ae60']
            },
            tooltip: {

            },
        });
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var n_ball = _data[i]['ball'].split(',').join(' ');
            var n_balls = _data[i]['ball'].split(',');
            n_ball = '';
            for (var j=0; j < n_balls.length; j++) {
                n_ball += n_balls[j].padStart(2, '0') + ' ';
                if (j === 10)   n_ball += '<br>';
            }
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['round']}(${_data[i]['date_round']})</td>
                        <td>${_data[i]['powerball']}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['p_section']}</p></span></td>
                        <td><span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['p_unover_style1']}"><p>${_data[i]['p_unover']}</p></span></td>
                        <td>${n_ball}</td>
                        <td><span class="circle no-fill br-gray color-black"><p>${_data[i]['sum']}</p></span></td>
                        <td><span class="circle no-fill br-gray color-dark"><p>${_data[i]['n_section']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['n_sml_style']}"><p>${_data[i]['n_sml']}</p></span></td>
                        <td><span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p> </span></td>
                        <td><span class="circle no-fill ${_data[i]['n_unover_style1']}"><p>${_data[i]['n_unover']}</p></span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };
    var setRecentResult = function () {
        var i = 0;
        $('#powerball-recent .recent-results').each(function () {
            var html = `<div class="game-title">파워볼 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                            <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                            <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };
    var setRecentListResult = function (gameType) {
        var gameTypeName = '';
        if (gameType == 'eos_powerball_1' || gameType == 'eos_powerball_2' || gameType == 'eos_powerball_3' || gameType == 'eos_powerball_4' || gameType == 'eos_powerball_5')    {
            var min = gameType.substring(gameType.length - 1);
            gameTypeName = 'EOS파워볼' + min + '분';
        }
        else if (gameType == 'rdombox_powerball_1' || gameType == 'rdombox_powerball_2' || gameType == 'rdombox_powerball_3' || gameType == 'rdombox_powerball_4' || gameType == 'rdombox_powerball_5') {
            var min = gameType.substring(gameType.length - 1);
            gameTypeName = '랜덤파워볼' + min + '분';
        }

        var i = 0;
        var html = `<div class="game-title">${gameTypeName} ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                        <span class="circle ${_data[i]['n_oddeven_style']}"><p>${_data[i]['n_oddeven']}</p></span>
                        <span class="circle ${_data[i]['n_unover_style_short']}"><p>${_data[i++]['n_unover']}</p></span>
                    </div>`;
        return (html);
    };
    var setRoundTable = function (game_type, sround, eround, sdate, edate) {
        var tblData = [];
        for (var i = 0; i < _data.length; i++) {
            var reg_date = _data[i]['reg_date'];
            if (tblData[reg_date] == undefined) {
                tblData[reg_date] = [];
            }
            var value = "";
            if (game_type == 'p_oddeven' || game_type == 'n_oddeven') {
                if (_data[i][game_type] == '1') {
                    value = "<td><span class='circle bg-red'><p>짝</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-blue'><p>홀</p></span></td>";
                }
            } else if (game_type == 'p_unover' || game_type == 'n_unover') {
                if (_data[i][game_type] == '0') {
                    value = "<td><span class='circle bg-blue'><p>언더</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-red'><p>오버</p></span></td>";
                }
            }
            tblData[reg_date].push({ 'date_round': _data[i]['date_round'], 'value': value });
        }

        html = "<tr><td>회차</td>";
        for (var i = sround; i <= eround; i++) {
            html += `<td>${i}</td>`;
        }
        html += "</tr>";
        for (var j = edate; j >= sdate; j = j - 3600 * 24) {
            var tr = "<tr>";
            var dtDate = new Date(j * 1000);
            var dtMonth = dtDate.getMonth() + 1 < 10 ? "0" + (dtDate.getMonth() + 1) : dtDate.getMonth() + 1;
            var dtDay = dtDate.getDate() < 10 ? "0" + dtDate.getDate() : dtDate.getDate();
            var reg_date = dtDate.getFullYear() + '-' + dtMonth + '-' + dtDay;
            tr += `<td>${reg_date}</td>`;
            if (tblData[reg_date] == undefined || tblData[reg_date] == "") {
                for (var jj = sround; jj <= eround; jj++) {
                    tr += '<td></td>';
                }
                html += tr;
                continue;
            }
            for (var i = sround; i <= eround; i++) {
                for (var k = 0; k < tblData[reg_date].length; k++) {
                    if (tblData[reg_date][k].date_round == i) {
                        tr += tblData[reg_date][k].value;
                    }
                }
            }
            tr += "</tr>";
            html += tr;
        }

        $('.tbl-round').html(html);

        var oddTr = "<tr><td><span class='circle bg-blue'><p>홀</p></span></td>";
        var evenTr = "<tr><td><span class='circle bg-red'><p>짝</p></span></td>";
        if (game_type == 'p_unover' || game_type == 'n_unover') {
            oddTr = "<tr><td><span class='circle bg-blue'><p>언더</p></span></td>";
            evenTr = "<tr><td><span class='circle bg-red'><p>오버</p></span></td>";
        }
        for (var i = 0; i < eround - sround + 1; i++) {
            var nCnt = nCntOdd = nCntEven = 0;
            $('.tbl-round td:nth-child(' + (i + 2) + ')').each(function () {
                if ($(this).children('span').hasClass('bg-red')) {
                    nCnt++;
                    nCntEven++;
                } else if ($(this).children('span').hasClass('bg-blue')) {
                    nCnt++;
                    nCntOdd++;
                }
            });
            var fPerOdd = (nCntOdd / nCnt * 100).toFixed(0);
            var fPerEven = (nCntEven / nCnt * 100).toFixed(0);
            if (fPerOdd == "NaN") {
                fPerOdd = 0;
            }
            if (fPerEven == "NaN") {
                fPerEven = 0;
            }
            oddTr += `<td>${nCntOdd}번<br/>${fPerOdd}%</td>`;
            evenTr += `<td>${nCntEven}번<br/>${fPerEven}%</td>`;
        }
        oddTr += "</tr>";
        evenTr += "</tr>";
        $('.tbl-round').append(oddTr + evenTr);
        // html += oddTr + evenTr;
    }
};



var eos_speedkeno_game_data = function () {
    var MAX_ROUND = 0;//720;
    var _data = [];

    var nPOddCnt = 0;
    var nPEvenCnt = 0;
    var nPOverCnt = 0;
    var nPUnderCnt = 0;
    var nSOddCnt = 0;
    var nSEvenCnt = 0;
    var nSOverCnt = 0;
    var nSUnderCnt = 0;
    var nHOddCnt = 0;
    var nHEvenCnt = 0;
    var nHOverCnt = 0;
    var nHUnderCnt = 0;

    var nCntPowerOddevenPlop = 0;
    var nCntPowerUnoverPlop = 0;
    var nCntSuperOddevenPlop = 0;
    var nCntSuperUnoverPlop = 0;
    var nCntHapOddevenPlop = 0;
    var nCntHapUnoverPlop = 0;

    var nCntPowerOddevenBroken = 0;
    var nCntPowerUnoverBroken = 0;
    var nCntSuperOddevenBroken = 0;
    var nCntSuperUnoverBroken = 0;
    var nCntHapOddevenBroken = 0;
    var nCntHapUnoverBroken = 0;

    var nCntMaxPowerOdd = 0;
    var nCntMaxPowerEven = 0;
    var nCntMaxPowerUnder = 0;
    var nCntMaxPowerOver = 0;

    var nCntMaxSuperOdd = 0;
    var nCntMaxSuperEven = 0;
    var nCntMaxSuperUnder = 0;
    var nCntMaxSuperOver = 0;

    var nCntMaxHapOdd = 0;
    var nCntMaxHapEven = 0;
    var nCntMaxHapUnder = 0;
    var nCntMaxHapOver = 0;

    var objMaxCtnSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };

    this._initPowerball = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        setRecentResult();
    };
    this.init = function () {
        $('.round-result').hide();
    };
    this.analRound = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        $('.round-result').show();
        analyzePowerball();
        setStatisticsRound();
        setGameDataTable();
    };
    this._analRound = function (data, game_type = "p_oddeven", sround, eround, sdate, edate) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        $('.round-result').show();
        setRoundTable(game_type, sround, eround, sdate, edate);
    }
    this.initSpeedkeno = function (dataByDay) {
        // _data = dataByDay;
        Object.assign(_data, dataByDay);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        calculatePlop();
        setPowerOddEvenTableData();
        setPowerUnOverTableData();
        setSuperOddEvenTableData();
        setSuperUnOverTableData();
        setHapOddEvenTableData();
        setHapUnOverTableData();
        setStatistics();
        setGameDataTable();
    };
    this.RecentListPowerball_game = function (data, gameType) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        if (MAX_ROUND == 0) return;
        analyzePowerball();
        var html = setRecentListResult(gameType);
        return (html);
    };
    var analyzePowerball = function () {
        var nFlagSML = '';
        var objCntSeqSML = { 'small': 0, 'middle': 0, 'large': 0 };

        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['p_oddeven'] == 0) {
                _data[i]['p_oddeven'] = '홀';
                _data[i]['p_oddeven_style'] = 'bg-blue';
                nPOddCnt++;
            } else {
                _data[i]['p_oddeven'] = '짝';
                _data[i]['p_oddeven_style'] = 'bg-red';
                nPEvenCnt++;
            }
            if (_data[i]['p_unover'] == 0) {
                _data[i]['p_unover'] = '언더';
                _data[i]['p_unover_short'] = '언';
                _data[i]['p_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['p_unover_style1'] = 'br-blue color-blue';
                _data[i]['p_unover_style_short'] = 'bg-blue';
                nPUnderCnt++;
            } else {
                _data[i]['p_unover'] = '오버';
                _data[i]['p_unover_short'] = '오';
                _data[i]['p_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['p_unover_style1'] = 'br-red color-red';
                _data[i]['p_unover_style_short'] = 'bg-red';
                nPOverCnt++;
            }

            if (_data[i]['s_oddeven'] == 0) {
                _data[i]['s_oddeven'] = '홀';
                _data[i]['s_oddeven_style'] = 'bg-blue';
                nSOddCnt++;
            } else {
                _data[i]['s_oddeven'] = '짝';
                _data[i]['s_oddeven_style'] = 'bg-red';
                nSEvenCnt++;
            }
            if (_data[i]['s_unover'] == 0) {
                _data[i]['s_unover'] = '언더';
                _data[i]['s_unover_short'] = '언';
                _data[i]['s_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['s_unover_style1'] = 'br-blue color-blue';
                _data[i]['s_unover_style_short'] = 'bg-blue';
                nSUnderCnt++;
            } else {
                _data[i]['s_unover'] = '오버';
                _data[i]['s_unover_short'] = '오';
                _data[i]['s_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['s_unover_style1'] = 'br-red color-red';
                _data[i]['s_unover_style_short'] = 'bg-red';
                nSOverCnt++;
            }
            
            if (_data[i]['h_oddeven'] == 0) {
                _data[i]['h_oddeven'] = '홀';
                _data[i]['h_oddeven_style'] = 'bg-blue';
                nHOddCnt++;
            } else {
                _data[i]['h_oddeven'] = '짝';
                _data[i]['h_oddeven_style'] = 'bg-red';
                nHEvenCnt++;
            }
            if (_data[i]['h_unover'] == 0) {
                _data[i]['h_unover'] = '언더';
                _data[i]['h_unover_short'] = '언';
                _data[i]['h_unover_style'] = 'bg-blue';//'br-blue color-blue';
                _data[i]['h_unover_style1'] = 'br-blue color-blue';
                _data[i]['h_unover_style_short'] = 'bg-blue';
                nHUnderCnt++;
            } else {
                _data[i]['h_unover'] = '오버';
                _data[i]['h_unover_short'] = '오';
                _data[i]['h_unover_style'] = 'bg-red';//'br-red color-red';
                _data[i]['h_unover_style1'] = 'br-red color-red';
                _data[i]['h_unover_style_short'] = 'bg-red';
                nHOverCnt++;
            }
        }
    };
    var calculatePlop = function () {
    };

    var setPowerOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_oddeven']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_oddeven'] == _data[i - 1]['p_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntPowerOddevenBroken = Math.max(nCntPowerOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxPowerEven = Math.max(nCntMaxPowerEven, cnt_per_col);
            } else {
                nCntMaxPowerOdd = Math.max(nCntMaxPowerOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPOddCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #odd_result').html(nPOddCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerOdd + '연속');
        var per_even = (100 * nPEvenCnt / MAX_ROUND).toFixed(2);
        $('#powerball_oddeven #even_result').html(nPEvenCnt + '번 (' + per_even + '%) ' + nCntMaxPowerEven + '연속');
        // $('#powerball_oddeven #plop_result').html((nCntPowerOddevenBroken - nCntPowerOddevenPlop) + '번');
        // $('#powerball_oddeven #broken_result').html((nCntPowerOddevenBroken + 1) + '번');
        $('#powerball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#powerball_oddeven .oddeven-result').scrollLeft($('#powerball_oddeven .oddeven-result > table').width());
    };
    var setPowerUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['p_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['p_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['p_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['p_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['p_unover'] == _data[i - 1]['p_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntPowerUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['p_unover_style']}'><p>${val}</p></span></td>`;
                nCntPowerUnoverBroken = Math.max(nCntPowerUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntPowerUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntPowerUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntPowerUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxPowerUnder = Math.max(nCntMaxPowerUnder, cnt_per_col);
            } else {
                nCntMaxPowerOver = Math.max(nCntMaxPowerOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nPUnderCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #under_result').html(nPUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxPowerUnder + '연속');
        var per_even = (100 * nPOverCnt / MAX_ROUND).toFixed(2);
        $('#powerball_underover #over_result').html(nPOverCnt + '번 (' + per_even + '%) ' + nCntMaxPowerOver + '연속');
        // $('#powerball_underover #plop_unover').html((nCntPowerUnoverBroken - nCntPowerUnoverPlop) + '번');
        // $('#powerball_underover #brokes_unover').html((nCntPowerUnoverBroken + 1) + '번');
        $('#powerball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };

    var setSuperOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['s_oddeven'] == '짝') {
            tbl_data[0][0] = `<td class="even">${_data[0]['s_oddeven']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['s_oddeven']}</td>`;
        }
    
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['s_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;
    
        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['s_oddeven'] == _data[i - 1]['s_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['s_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntSuperOddevenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['s_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntSuperOddevenBroken = Math.max(nCntSuperOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntSuperOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntSuperOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntSuperOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxSuperEven = Math.max(nCntMaxSuperEven, cnt_per_col);
            } else {
                nCntMaxSuperOdd = Math.max(nCntMaxSuperOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nSOddCnt / MAX_ROUND).toFixed(2);
        $('#superball_oddeven #odd_result').html(nSOddCnt + '번 (' + per_odd + '%) ' + nCntMaxSuperOdd + '연속');
        var per_even = (100 * nSEvenCnt / MAX_ROUND).toFixed(2);
        $('#superball_oddeven #even_result').html(nSEvenCnt + '번 (' + per_even + '%) ' + nCntMaxSuperEven + '연속');
        // $('#superball_oddeven #plop_result').html((nCntSuperOddevenBroken - nCntSuperOddevenPlop) + '번');
        // $('#superball_oddeven #broken_result').html((nCntSuperOddevenBroken + 1) + '번');
        $('#superball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
        $('#superball_oddeven .oddeven-result').scrollLeft($('#superball_oddeven .oddeven-result > table').width());
    };
    var setSuperUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['s_unover'] == '언더') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['s_unover']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['s_unover']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['s_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;
    
        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['s_unover'] == _data[i - 1]['s_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['s_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntSuperUnoverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['s_unover_style']}'><p>${val}</p></span></td>`;
                nCntSuperUnoverBroken = Math.max(nCntSuperUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntSuperUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntSuperUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntSuperUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxSuperUnder = Math.max(nCntMaxSuperUnder, cnt_per_col);
            } else {
                nCntMaxSuperOver = Math.max(nCntMaxSuperOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nSUnderCnt / MAX_ROUND).toFixed(2);
        $('#superball_underover #under_result').html(nSUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxSuperUnder + '연속');
        var per_even = (100 * nSOverCnt / MAX_ROUND).toFixed(2);
        $('#superball_underover #over_result').html(nSOverCnt + '번 (' + per_even + '%) ' + nCntMaxSuperOver + '연속');
        // $('#superball_underover #plos_unover').html((nCntSuperUnoverBroken - nCntSuperUnoverPlop) + '번');
        // $('#superball_underover #brokes_unover').html((nCntSuperUnoverBroken + 1) + '번');
        $('#superball_underover .oddeven-result > table > tbody').html(html + row + footer);
    };
var setHapOddEvenTableData = function () {
    var tbl_data = [];
    tbl_data[0] = [];
    tbl_data[1] = [];
    if (_data[0]['h_oddeven'] == '짝') {
        tbl_data[0][0] = `<td class="even">${_data[0]['h_oddeven']}</td>`;
    } else {
        tbl_data[0][0] = `<td class="odd">${_data[0]['h_oddeven']}</td>`;
    }

    tbl_data[1][0] = `<td><span class="circle ${_data[0]['h_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

    var j = 1; var jj = 0;
    for (var i = 1; i < _data.length; i++) {
        var val = _data[i]['date_round'];
        if (_data[i]['h_oddeven'] == _data[i - 1]['h_oddeven']) {
            j++;
            if (tbl_data[j] == undefined) {
                tbl_data[j] = [];
            }
            tbl_data[j][jj] = `<td><span class='circle ${_data[i]['h_oddeven_style']}'><p>${val}</p></span></td>`;
        } else {
            jj++;
            if (j != 1) {
                nCntHapOddevenPlop++;
            }
            j = 1;
            if (tbl_data[j] == undefined) {
                tbl_data[j] = [];
            }
            tbl_data[j][jj] = `<td><span class='circle ${_data[i]['h_oddeven_style']}'><p>${val}</p></span></td>`;
            nCntHapOddevenBroken = Math.max(nCntHapOddevenBroken, jj);
        }
    }
    for (var i = 1; i <= nCntHapOddevenBroken; i++) {
        if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
            tbl_data[0][i] = '<td class="odd">홀</td>';
        } else {
            tbl_data[0][i] = '<td class="even">짝</td>';
        }
    }
    var html = '';
    var cnt_per_col = 0;
    for (var i = 0; i < tbl_data.length; i++) {
        for (var j = 0; j <= nCntHapOddevenBroken; j++) {
            if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                tbl_data[i][j] = '<td></td>';
            } else {
                cnt_per_col++;
            }
        }
        var tr = tbl_data[i].join(" ");
        html += "<tr>" + tr + "</tr>";
    }
    var row = '<tr>';
    var footer = '<tr>';
    for (var i = 0; i <= nCntHapOddevenBroken; i++) {
        cnt_per_col = 0;
        for (j = 1; j < tbl_data.length; j++) {
            if (tbl_data[j][i] != '<td></td>') {
                cnt_per_col++;
            }
        }
        if (tbl_data[0][i] == '<td class="even">짝</td>') {
            nCntMaxHapEven = Math.max(nCntMaxHapEven, cnt_per_col);
        } else {
            nCntMaxHapOdd = Math.max(nCntMaxHapOdd, cnt_per_col);
        }
        row += '<td>' + cnt_per_col + '</td>';
        footer += '<td>' + (i + 1) + '</td>';
    }
    row += '</tr>';
    footer += '</tr>';
    var per_odd = (100 * nHOddCnt / MAX_ROUND).toFixed(2);
    $('#hapball_oddeven #odd_result').html(nHOddCnt + '번 (' + per_odd + '%) ' + nCntMaxHapOdd + '연속');
    var per_even = (100 * nHEvenCnt / MAX_ROUND).toFixed(2);
    $('#hapball_oddeven #even_result').html(nHEvenCnt + '번 (' + per_even + '%) ' + nCntMaxHapEven + '연속');
    // $('#hapball_oddeven #plop_result').html((nCntHapOddevenBroken - nCntHapOddevenPlop) + '번');
    // $('#hapball_oddeven #broken_result').html((nCntHapOddevenBroken + 1) + '번');
    $('#hapball_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    $('#hapball_oddeven .oddeven-result').scrollLeft($('#hapball_oddeven .oddeven-result > table').width());
};
var setHapUnOverTableData = function () {
    var tbl_data = [];
    tbl_data[0] = [];
    tbl_data[1] = [];
    if (_data[0]['h_unover'] == '언더') {
        tbl_data[0][0] = `<td class="odd">${_data[0]['h_unover']}</td>`;
    } else {
        tbl_data[0][0] = `<td class="even">${_data[0]['h_unover']}</td>`;
    }
    tbl_data[1][0] = `<td><span class="circle ${_data[0]['h_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

    var j = 1; var jj = 0;
    for (var i = 1; i < _data.length; i++) {
        var val = _data[i]['date_round'];
        if (_data[i]['h_unover'] == _data[i - 1]['h_unover']) {
            j++;
            if (tbl_data[j] == undefined) {
                tbl_data[j] = [];
            }
            tbl_data[j][jj] = `<td><span class='circle ${_data[i]['h_unover_style']}'><p>${val}</p></span></td>`;
        } else {
            jj++;
            if (j != 1) {
                nCntHapUnoverPlop++;
            }
            j = 1;
            if (tbl_data[j] == undefined) {
                tbl_data[j] = [];
            }
            tbl_data[j][jj] = `<td><span class='circle ${_data[i]['h_unover_style']}'><p>${val}</p></span></td>`;
            nCntHapUnoverBroken = Math.max(nCntHapUnoverBroken, jj);
        }
    }
    for (var i = 1; i <= nCntHapUnoverBroken; i++) {
        if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
            tbl_data[0][i] = '<td class="even">오버</td>';
        } else {
            tbl_data[0][i] = '<td class="odd">언더</td>';
        }
    }
    var html = '';
    var cnt_per_col = 0;
    for (var i = 0; i < tbl_data.length; i++) {
        for (var j = 0; j <= nCntHapUnoverBroken; j++) {
            if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                tbl_data[i][j] = '<td></td>';
            } else {
                cnt_per_col++;
            }
        }
        var tr = tbl_data[i].join(" ");
        html += "<tr>" + tr + "</tr>";
    }
    var row = '<tr>';
    var footer = '<tr>';
    for (var i = 0; i <= nCntHapUnoverBroken; i++) {
        cnt_per_col = 0;
        for (j = 1; j < tbl_data.length; j++) {
            if (tbl_data[j][i] != '<td></td>') {
                cnt_per_col++;
            }
        }
        if (tbl_data[0][i] == '<td class="odd">언더</td>') {
            nCntMaxHapUnder = Math.max(nCntMaxHapUnder, cnt_per_col);
        } else {
            nCntMaxHapOver = Math.max(nCntMaxHapOver, cnt_per_col);
        }
        row += '<td>' + cnt_per_col + '</td>';
        footer += '<td>' + (i + 1) + '</td>';
    }
    row += '</tr>';
    footer += '</tr>';
    var per_odd = (100 * nHUnderCnt / MAX_ROUND).toFixed(2);
    $('#hapball_underover #under_result').html(nHUnderCnt + '번 (' + per_odd + '%) ' + nCntMaxHapUnder + '연속');
    var per_even = (100 * nHOverCnt / MAX_ROUND).toFixed(2);
    $('#hapball_underover #over_result').html(nHOverCnt + '번 (' + per_even + '%) ' + nCntMaxHapOver + '연속');
    // $('#hapball_underover #ploh_unover').html((nCntHapUnoverBroken - nCntHapUnoverPlop) + '번');
    // $('#hapball_underover #brokes_unover').html((nCntHapUnoverBroken + 1) + '번');
    $('#hapball_underover .oddeven-result > table > tbody').html(html + row + footer);
};
        

    function setStatisticsMakeHtml(BlueCnt, RedCnt, MaxCnt, BlueTitle, RedTitle){
        var per_blue = (BlueCnt > 0) ? (100 * BlueCnt / MaxCnt).toFixed(2) : '0.00';
        var per_red = (RedCnt > 0) ? (100 * RedCnt / MaxCnt).toFixed(2) : '0.00';
        var p_html = ``;

        if(BlueCnt > RedCnt){
            p_html = `<div class="" style="text-align:center;">
                        <div class="title-odd" style='height: 20px;'><span class="circle bg-blue"><p>${BlueTitle}</p></span></div>
                             <div class="odd-even-progress" style='height: 20px;'>
                                <div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            if (RedCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>`;
            }
            p_html +=       `</div>
                        <div class="title-even" style='height: 20px;'><span class="circle bg-gray"><p>${RedTitle}</p></span></div>
                    </div>`;
        }else{
            p_html = `<div class="" style="text-align:center;" style='height: 20px;'>
                        <div class="title-odd" style='height: 20px;'><span class="circle bg-gray"><p>${BlueTitle}</p></span></div>
                            <div class="odd-even-progress" style='height: 20px;'>`;
            if (BlueCnt > 0)   {
                p_html +=       `<div class="progress-bar progress-bar-blue left" role="progressbar" aria-valuemin="0" aria-valuenow="${per_blue}" aria-valuemax="100" style="width: ${per_blue}%;border-radius: 10px!important;">
                                    <span class="color-white">${BlueCnt}(${per_blue}%)</span>
                                </div>`;
            }
            p_html +=           `<div class="progress-bar progress-bar-red right" role="progressbar" aria-valuemin="0" aria-valuenow="${per_red}" aria-valuemax="100" style="width: ${per_red}%;border-radius: 10px!important;">
                                    <span class="color-white">${RedCnt}(${per_red}%)</span>
                                </div>
                            </div>`;
            var bg_redColor = 'bg-red';
            if (RedCnt <= 0)   {    bg_redColor = 'bg-gray';    }
            p_html +=       `<div class="title-even" style='height: 20px;'><span class="circle ${bg_redColor}"><p>${RedTitle}</p></span></div>
                        </div>`;
        }

        return (p_html);
    }
    var PercentCalcProc = function(val1, val2) {
        if (val1 == 0 || val2 == 0) return "0.00";
        else{
            let ret = (100 * val1 / val2).toFixed(2);
            return ret;
        }
    };

    var setStatistics = function () {
        var nCnt = _data.length;

        var p_oddeven_html = setStatisticsMakeHtml(nPOddCnt, nPEvenCnt, nCnt, '홀', '짝');
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var p_unover_html = setStatisticsMakeHtml(nPUnderCnt, nPOverCnt, nCnt, '언더', '오버');
        $('.powerball-chart .under-over').html(p_unover_html);

        var s_oddeven_html = setStatisticsMakeHtml(nSOddCnt, nSEvenCnt, nCnt, '홀', '짝');
        $('#superball_chart .odd-even').html(s_oddeven_html);

        var s_unover_html = setStatisticsMakeHtml(nSUnderCnt, nSOverCnt, nCnt, '언더', '오버');
        $('#superball_chart .under-over').html(s_unover_html);

        var h_oddeven_html = setStatisticsMakeHtml(nHOddCnt, nHEvenCnt, nCnt, '홀', '짝');
        $('#hapball_chart .odd-even').html(h_oddeven_html);

        var h_unover_html = setStatisticsMakeHtml(nHUnderCnt, nHOverCnt, nCnt, '언더', '오버');
        $('#hapball_chart .under-over').html(h_unover_html);

    };

    var setStatisticsRound = function () {
        var nCnt = _data.length;
        var nCntPOdd = 0, nCntPEven = 0;
        var nCntSOdd = 0, nCntSEven = 0;
        var nCntHOdd = 0, nCntHEven = 0;
        var nCntPUnder = 0, nCntPOver = 0;
        var nCntSUnder = 0, nCntSOver = 0;
        var nCntHUnder = 0, nCntHOver = 0;

        for (var i = 0; i < nCnt; i++) {
            if (_data[i]['p_oddeven'] == '홀') {
                nCntPOdd++;
            }
            if (_data[i]['p_unover'] == '언더') {
                nCntPUnder++;
            }
            if (_data[i]['s_oddeven'] == '홀') {
                nCntSOdd++;
            }
            if (_data[i]['s_unover'] == '언더') {
                nCntSUnder++;
            }
            if (_data[i]['h_oddeven'] == '홀') {
                nCntHOdd++;
            }
            if (_data[i]['h_unover'] == '언더') {
                nCntHUnder++;
            }
        }
        nCntPEven = nCnt - nCntPOdd;
        nCntPOver = nCnt - nCntPUnder;
        nCntSEven = nCnt - nCntSOdd;
        nCntSOver = nCnt - nCntSUnder;
        nCntHEven = nCnt - nCntHOdd;
        nCntHOver = nCnt - nCntHUnder;

        var p_oddeven_html = setStatisticsMakeHtml(nCntPOdd, nCntPEven, nCnt, '홀', '짝');
        $('.powerball-chart .odd-even').html(p_oddeven_html);

        var p_unover_html = setStatisticsMakeHtml(nCntPUnder, nCntPOver, nCnt, '언더', '오버');
        $('.powerball-chart .under-over').html(p_unover_html);

        var s_oddeven_html = setStatisticsMakeHtml(nCntSOdd, nCntSEven, nCnt, '홀', '짝');
        $('#superball_chart .odd-even').html(s_oddeven_html);

        var s_unover_html = setStatisticsMakeHtml(nCntSUnder, nCntSOver, nCnt, '언더', '오버');
        $('#superball_chart .under-over').html(s_unover_html);

        var h_oddeven_html = setStatisticsMakeHtml(nCntHOdd, nCntHEven, nCnt, '홀', '짝');
        $('#hapball_chart .odd-even').html(h_oddeven_html);

        var h_unover_html = setStatisticsMakeHtml(nCntHUnder, nCntHOver, nCnt, '언더', '오버');
        $('#hapball_chart .under-over').html(h_unover_html);
    };
    var setGameDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var n_ball = _data[i]['ball'].split(',').join(' ');
            var n_balls = _data[i]['ball'].split(',');
            n_ball = '';
            for (var j=0; j < n_balls.length; j++) {
                n_ball += n_balls[j].padStart(2, '0') + ' ';
                if (j === 10)   n_ball += '<br>';
            }
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            let powerball = parseInt(_data[i]['powerball']);
            let pnum1 = Math.floor(powerball / 10);
            if (pnum1 === 0)    pnum1 = '';
            let pnum2 = powerball % 10;

            let hapball = parseInt(_data[i]['hapball']);
            let hnum1 = Math.floor(hapball / 10);
            let hnum2 = hapball % 10;

            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['reg_date']}<br>${_data[i]['round']}(<b>${_data[i]['date_round']}</b>)</td>
                        <td><span class="paccent1">${pnum1}</span><span class="paccent2">${pnum2}</span></td>
                        <td><span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['p_unover_style1']}"><p>${_data[i]['p_unover']}</p></span></td>
                        <td><span class="saccent2">${_data[i]['superball']}</span></td>
                        <td><span class="circle ${_data[i]['s_oddeven_style']}"><p>${_data[i]['s_oddeven']}</p> </span></td>
                        <td><span class="circle no-fill ${_data[i]['s_unover_style1']}"><p>${_data[i]['s_unover']}</p></span></td>
                        <td><span class="haccent1">${hnum1}</span><span class="haccent2">${hnum2}</span></td>
                        <td><span class="circle ${_data[i]['h_oddeven_style']}"><p>${_data[i]['h_oddeven']}</p> </span></td>
                        <td><span class="circle no-fill ${_data[i]['h_unover_style1']}"><p>${_data[i]['h_unover']}</p></span></td>
                        <td>${n_ball}</td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };
    var setRecentResult = function () {
        var i = 0;
        $('#powerball-recent .recent-results').each(function () {
            var html = `<div class="game-title">파워볼 ${_data[i]['date_round']}회차</div>
                        <div class="game-result">
                            <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                            <span class="circle ${_data[i]['n_sml_style_short']}"><p>${_data[i]['n_sml']}</p></span>
                            <span class="circle ${_data[i]['s_oddeven_style']}"><p>${_data[i]['s_oddeven']}</p></span>
                            <span class="circle ${_data[i]['s_unover_style_short']}"><p>${_data[i++]['s_unover']}</p></span>
                        </div>`;
            $(this).html(html);
        });
    };
    var setRecentListResult = function (gameType) {
        var gameTypeName = '스피드키노';

        var i = 0;
        var html = `<div class="game-title">${gameTypeName} ${_data[i]['date_round']}회차</div>
                    <div class="game-result">
                        <span class="circle ${_data[i]['p_oddeven_style']}"><p>${_data[i]['p_oddeven']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['p_unover_style_short']}"><p>${_data[i]['p_unover']}</p></span><span class="sm-powerball"><p>p</p></span>
                        <span class="circle ${_data[i]['s_oddeven_style']}"><p>${_data[i]['s_oddeven']}</p></span>
                        <span class="circle ${_data[i]['s_unover_style_short']}"><p>${_data[i++]['s_unover']}</p></span>
                        <span class="circle ${_data[i]['h_oddeven_style']}"><p>${_data[i]['h_oddeven']}</p></span>
                        <span class="circle ${_data[i]['h_unover_style_short']}"><p>${_data[i++]['h_unover']}</p></span>
                    </div>`;
        return (html);
    };
    var setRoundTable = function (game_type, sround, eround, sdate, edate) {
        var tblData = [];
        for (var i = 0; i < _data.length; i++) {
            var reg_date = _data[i]['reg_date'];
            if (tblData[reg_date] == undefined) {
                tblData[reg_date] = [];
            }
            var value = "";
            if (game_type == 'p_oddeven' || game_type == 's_oddeven' || game_type == 'h_oddeven') {
                if (_data[i][game_type] == '1') {
                    value = "<td><span class='circle bg-red'><p>짝</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-blue'><p>홀</p></span></td>";
                }
            } else if (game_type == 'p_unover' || game_type == 's_unover' || game_type == 'h_unover') {
                if (_data[i][game_type] == '0') {
                    value = "<td><span class='circle bg-blue'><p>언더</p></span></td>";
                } else {
                    value = "<td><span class='circle bg-red'><p>오버</p></span></td>";
                }
            }
            tblData[reg_date].push({ 'date_round': _data[i]['date_round'], 'value': value });
        }

        html = "<tr><td>회차</td>";
        for (var i = sround; i <= eround; i++) {
            html += `<td>${i}</td>`;
        }
        html += "</tr>";
        for (var j = edate; j >= sdate; j = j - 3600 * 24) {
            var tr = "<tr>";
            var dtDate = new Date(j * 1000);
            var dtMonth = dtDate.getMonth() + 1 < 10 ? "0" + (dtDate.getMonth() + 1) : dtDate.getMonth() + 1;
            var dtDay = dtDate.getDate() < 10 ? "0" + dtDate.getDate() : dtDate.getDate();
            var reg_date = dtDate.getFullYear() + '-' + dtMonth + '-' + dtDay;
            tr += `<td>${reg_date}</td>`;
            if (tblData[reg_date] == undefined || tblData[reg_date] == "") {
                for (var jj = sround; jj <= eround; jj++) {
                    tr += '<td></td>';
                }
                html += tr;
                continue;
            }
            for (var i = sround; i <= eround; i++) {
                for (var k = 0; k < tblData[reg_date].length; k++) {
                    if (tblData[reg_date][k].date_round == i) {
                        tr += tblData[reg_date][k].value;
                    }
                }
            }
            tr += "</tr>";
            html += tr;
        }

        $('.tbl-round').html(html);

        var oddTr = "<tr><td><span class='circle bg-blue'><p>홀</p></span></td>";
        var evenTr = "<tr><td><span class='circle bg-red'><p>짝</p></span></td>";
        if (game_type == 'p_unover' || game_type == 's_unover' || game_type == 'h_unover') {
            oddTr = "<tr><td><span class='circle bg-blue'><p>언더</p></span></td>";
            evenTr = "<tr><td><span class='circle bg-red'><p>오버</p></span></td>";
        }
        for (var i = 0; i < eround - sround + 1; i++) {
            var nCnt = nCntOdd = nCntEven = 0;
            $('.tbl-round td:nth-child(' + (i + 2) + ')').each(function () {
                if ($(this).children('span').hasClass('bg-red')) {
                    nCnt++;
                    nCntEven++;
                } else if ($(this).children('span').hasClass('bg-blue')) {
                    nCnt++;
                    nCntOdd++;
                }
            });
            var fPerOdd = (nCntOdd / nCnt * 100).toFixed(0);
            var fPerEven = (nCntEven / nCnt * 100).toFixed(0);
            if (fPerOdd == "NaN") {
                fPerOdd = 0;
            }
            if (fPerEven == "NaN") {
                fPerEven = 0;
            }
            oddTr += `<td>${nCntOdd}번<br/>${fPerOdd}%</td>`;
            evenTr += `<td>${nCntEven}번<br/>${fPerEven}%</td>`;
        }
        oddTr += "</tr>";
        evenTr += "</tr>";
        $('.tbl-round').append(oddTr + evenTr);
        // html += oddTr + evenTr;
    }
};


var chart_data = function () {
    var MAX_ROUND = 1440;
    var _data = [];
    var nCntBuySellPlop = 0;
    var nCntHighOddEvenPlop = 0;
    var nCntHighUnOverPlop = 0;
    var nCntLowOddEvenPlop = 0;
    var nCntLowUnOverPlop = 0;

    var nCntHighOddevenBroken = 0;
    var nCntMaxHighEven = 0;
    var nCntMaxHighOdd = 0;
    var nCntHighOdd = 0;
    var nCntHighEven = 0;

    var nCntHighUnoverBroken = 0;
    var nCntMaxHighUnder = 0;
    var nCntMaxHighOver = 0;
    var nCntHighUnder = 0;
    var nCntHighOver = 0;

    var nCntLowOddevenBroken = 0;
    var nCntMaxLowOdd = 0;
    var nCntMaxLowEven = 0;
    var nCntLowOdd = 0;
    var nCntLowEven = 0;

    var nCntLowUnoverBroken = 0;
    var nCntMaxLowUnder = 0;
    var nCntMaxLowOver = 0;
    var nCntLowUnder = 0;
    var nCntLowOver = 0;

    var nCntBuySellBroken = 0;
    var nCntMaxBuy = 0;
    var nCntMaxSell = 0;
    var nCntBuy = 0;
    var nCntSell = 0;

    this.init = function (data) {
        Object.assign(_data, data);
        MAX_ROUND = _data.length;
        analyzeChartData();
        calculatePlop();
        setBuySellTableData();
        setHighOddEvenTableData();
        setHighUnOverTableData();
        setLowOddEvenTableData();
        setLowUnOverTableData();
        setChartDataTable();
    }
    var analyzeChartData = function () {
        for (var i = 0; i < _data.length; i++) {
            if (_data[i]['result'] == "BUY") {
                _data[i]['result_val'] = '매수';
                _data[i]['result_style'] = 'bg-red';
                nCntBuy++;
            } else {
                _data[i]['result_val'] = '매도';
                _data[i]['result_style'] = 'bg-blue';
                nCntSell++;
            }
            if (_data[i]['high_oddeven'] == "ODD") {
                _data[i]['high_oddeven_val'] = "홀";
                _data[i]['high_oddeven_style'] = "bg-blue";
                _data[i]['high_oddeven_style1'] = "br-blue color-blue";
                nCntHighOdd++;
            } else {
                _data[i]['high_oddeven_val'] = "짝";
                _data[i]['high_oddeven_style'] = "bg-red";
                _data[i]['high_oddeven_style1'] = "br-red color-red";
                nCntHighEven++;
            }

            if (_data[i]['high_unover'] == "UNDER") {
                _data[i]['high_unover_val'] = "언더";
                _data[i]['high_unover_style'] = "bg-blue";
                _data[i]['high_unover_style1'] = "br-blue color-blue";
                nCntHighUnder++;
            } else {
                _data[i]['high_unover_val'] = "오버";
                _data[i]['high_unover_style'] = "bg-red";
                _data[i]['high_unover_style1'] = "br-red color-red";
                nCntHighOver++;
            }

            if (_data[i]['low_oddeven'] == "ODD") {
                _data[i]['low_oddeven_val'] = "홀";
                _data[i]['low_oddeven_style'] = "bg-blue";
                _data[i]['low_oddeven_style1'] = "br-blue color-blue";
                nCntLowOdd++;
            } else {
                _data[i]['low_oddeven_val'] = "짝";
                _data[i]['low_oddeven_style'] = "bg-red";
                _data[i]['low_oddeven_style1'] = "br-red color-red";
                nCntLowEven++;
            }

            if (_data[i]['low_unover'] == "UNDER") {
                _data[i]['low_unover_val'] = "언더";
                _data[i]['low_unover_style'] = "bg-blue";
                _data[i]['low_unover_style1'] = "br-blue color-blue";
                nCntLowUnder++;
            } else {
                _data[i]['low_unover_val'] = "오버";
                _data[i]['low_unover_style'] = "bg-red";
                _data[i]['low_unover_style1'] = "br-red color-red";
                nCntLowOver++;
            }
        }
    };
    var calculatePlop = function () {
        // var buysell_plop = [];
        // var high_oddeven = [];
        // var high_unover = [];
        // var low_oddeven = [];
        // var low_unover = [];
        // for(var i = 0; i < _data.length; i++){
        //     if(i == 0){
        //         if(_data[i]['result'] != _data[i + 1]['result'] && 
        //         _data[i + 1]['result'] != _data[i + 2]['result']){
        //             if(!buysell_plop.includes(i)){
        //                 buysell_plop.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['high_unover'] != _data[i + 1]['high_unover'] && 
        //         _data[i + 1]['high_unover'] != _data[i + 2]['high_unover']){
        //             if(!high_unover.includes(i)){
        //                 high_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['high_oddeven'] != _data[i + 1]['high_oddeven'] && 
        //         _data[i + 1]['high_oddeven'] != _data[i + 2]['high_oddeven']){
        //             if(!high_oddeven.includes(i)){
        //                 high_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['low_oddeven'] != _data[i + 1]['low_oddeven'] && 
        //         _data[i + 1]['low_oddeven'] != _data[i + 2]['low_oddeven']){
        //             if(!low_oddeven.includes(i)){
        //                 low_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['low_unover'] != _data[i + 1]['low_unover'] && 
        //         _data[i + 1]['low_unover'] != _data[i + 2]['low_unover']){
        //             if(!low_unover.includes(i)){
        //                 low_unover.push(i, i + 1);
        //             }
        //         }
        //     }else if(i == _data.length - 2){
        //         if(_data[i]['result'] != _data[i - 1]['result'] &&
        //         _data[i - 1]['result'] != _data[i - 2]['result']){
        //             if(!buysell_plop.includes(i)){
        //                 buysell_plop.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['high_oddeven'] != _data[i - 1]['high_oddeven'] &&
        //         _data[i - 1]['high_oddeven'] != _data[i - 2]['high_oddeven']){
        //             if(!high_oddeven.includes(i)){
        //                 high_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['high_unover'] != _data[i - 1]['high_unover'] &&
        //         _data[i - 1]['high_unover'] != _data[i - 2]['high_unover']){
        //             if(!high_unover.includes(i)){
        //                 high_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['low_oddeven'] != _data[i - 1]['low_oddeven'] &&
        //         _data[i - 1]['low_oddeven'] != _data[i - 2]['low_oddeven']){
        //             if(!low_oddeven.includes(i)){
        //                 low_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i]['low_unover'] != _data[i - 1]['low_unover'] &&
        //         _data[i - 1]['low_unover'] != _data[i - 2]['low_unover']){
        //             if(!low_unover.includes(i)){
        //                 low_unover.push(i, i + 1);
        //             }
        //         }
        //     }else if(i == _data.length - 1){
        //         continue;
        //     }else{
        //         if(_data[i - 1]['result'] != _data[i]['result'] &&
        //         _data[i]['result'] != _data[i + 1]['result'] &&
        //         _data[i + 1]['result'] != _data[i + 2]['result']){
        //             if(!buysell_plop.includes(i)){
        //                 buysell_plop.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['high_oddeven'] != _data[i]['high_oddeven'] &&
        //         _data[i]['high_oddeven'] != _data[i + 1]['high_oddeven'] &&
        //         _data[i + 1]['high_oddeven'] != _data[i + 2]['high_oddeven']){
        //             if(!high_oddeven.includes(i)){
        //                 high_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['high_unover'] != _data[i]['high_unover'] &&
        //         _data[i]['high_unover'] != _data[i + 1]['high_unover'] &&
        //         _data[i + 1]['high_unover'] != _data[i + 2]['high_unover']){
        //             if(!high_unover.includes(i)){
        //                 high_unover.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['low_oddeven'] != _data[i]['low_oddeven'] &&
        //         _data[i]['low_oddeven'] != _data[i + 1]['low_oddeven'] &&
        //         _data[i + 1]['low_oddeven'] != _data[i + 2]['low_oddeven']){
        //             if(!low_oddeven.includes(i)){
        //                 low_oddeven.push(i, i + 1);
        //             }
        //         }
        //         if(_data[i - 1]['low_unover'] != _data[i]['low_unover'] &&
        //         _data[i]['low_unover'] != _data[i + 1]['low_unover'] &&
        //         _data[i + 1]['low_unover'] != _data[i + 2]['low_unover']){
        //             if(!low_unover.includes(i)){
        //                 low_unover.push(i, i + 1);
        //             }
        //         }
        //     }
        // }
        // nCntBuySellPlop = buysell_plop.length / 2;
        // nCntHighOddEvenPlop = high_oddeven.length / 2;
        // nCntHighUnOverPlop = high_unover.length / 2;
        // nCntLowOddEvenPlop = low_oddeven.length / 2;
        // nCntLowUnOverPlop = low_unover.length / 2;
    };
    var setBuySellTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['result'] == 'BUY') {
            tbl_data[0][0] = `<td class="even">${_data[0]['result_val']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['result_val']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['result_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['result'] == _data[i - 1]['result']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['result_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntBuySellPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['result_style']}'><p>${val}</p></span></td>`;
                nCntBuySellBroken = Math.max(nCntBuySellBroken, jj);
            }
        }
        for (var i = 1; i <= nCntBuySellBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">매수</td>') {
                tbl_data[0][i] = '<td class="odd">매도</td>';
            } else {
                tbl_data[0][i] = '<td class="even">매수</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntBuySellBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntBuySellBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">매수</td>') {
                nCntMaxBuy = Math.max(nCntMaxBuy, cnt_per_col);
            } else {
                nCntMaxSell = Math.max(nCntMaxSell, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nCntBuy / MAX_ROUND).toFixed(2);
        var per_even = (100 * nCntSell / MAX_ROUND).toFixed(2);
        $('#buysell #odd_result').html(nCntSell + '번 (' + per_even + '%) ' + nCntMaxSell + '연속');
        $('#buysell #even_result').html(nCntBuy + '번 (' + per_odd + '%) ' + nCntMaxBuy + '연속');
        $('#buysell #plop_result').html((nCntBuySellBroken - nCntBuySellPlop) + '번');
        $('#buysell #broken_result').html((nCntBuySellBroken + 1) + '번');
        $('#buysell .oddeven-result > table > tbody').html(html + row + footer);
        $('#buysell .oddeven-result').scrollLeft($('#buysell .oddeven-result > table').width());
    };
    var setHighOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['high_oddeven'] == 'EVEN') {
            tbl_data[0][0] = `<td class="even">${_data[0]['high_oddeven_val']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['high_oddeven_val']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['high_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['high_oddeven'] == _data[i - 1]['high_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['high_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntHighOddEvenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['high_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntHighOddevenBroken = Math.max(nCntHighOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntHighOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntHighOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntHighOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxHighEven = Math.max(nCntMaxHighEven, cnt_per_col);
            } else {
                nCntMaxHighOdd = Math.max(nCntMaxHighOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nCntHighOdd / MAX_ROUND).toFixed(2);
        $('#high_oddeven #odd_result').html(nCntHighOdd + '번 (' + per_odd + '%) ' + nCntMaxHighOdd + '연속');
        var per_even = (100 * nCntHighEven / MAX_ROUND).toFixed(2);
        $('#high_oddeven #even_result').html(nCntHighEven + '번 (' + per_even + '%) ' + nCntMaxHighEven + '연속');
        $('#high_oddeven #plop_result').html((nCntHighOddevenBroken - nCntHighOddEvenPlop) + '번');
        $('#high_oddeven #broken_result').html((nCntHighOddevenBroken + 1) + '번');
        $('#high_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setHighUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['high_unover'] == 'UNDER') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['high_unover_val']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['high_unover_val']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['high_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['high_unover'] == _data[i - 1]['high_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['high_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntHighUnOverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['high_unover_style']}'><p>${val}</p></span></td>`;
                nCntHighUnoverBroken = Math.max(nCntHighUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntHighUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntHighUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntHighUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxHighUnder = Math.max(nCntMaxHighUnder, cnt_per_col);
            } else {
                nCntMaxHighOver = Math.max(nCntMaxHighOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nCntHighUnder / MAX_ROUND).toFixed(2);
        $('#high_unover #under_result').html(nCntHighUnder + '번 (' + per_odd + '%) ' + nCntMaxHighUnder + '연속');
        var per_even = (100 * nCntHighOver / MAX_ROUND).toFixed(2);
        $('#high_unover #over_result').html(nCntHighOver + '번 (' + per_even + '%) ' + nCntMaxHighOver + '연속');
        $('#high_unover #plop_result').html((nCntHighUnoverBroken - nCntHighUnOverPlop) + '번');
        $('#high_unover #broken_result').html((nCntHighUnoverBroken + 1) + '번');
        $('#high_unover .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setLowOddEvenTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['low_oddeven'] == 'EVEN') {
            tbl_data[0][0] = `<td class="even">${_data[0]['low_oddeven_val']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="odd">${_data[0]['low_oddeven_val']}</td>`;
        }

        tbl_data[1][0] = `<td><span class="circle ${_data[0]['low_oddeven_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['low_oddeven'] == _data[i - 1]['low_oddeven']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['low_oddeven_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntLowOddEvenPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['low_oddeven_style']}'><p>${val}</p></span></td>`;
                nCntLowOddevenBroken = Math.max(nCntLowOddevenBroken, jj);
            }
        }
        for (var i = 1; i <= nCntLowOddevenBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="even">짝</td>') {
                tbl_data[0][i] = '<td class="odd">홀</td>';
            } else {
                tbl_data[0][i] = '<td class="even">짝</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntLowOddevenBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntLowOddevenBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="even">짝</td>') {
                nCntMaxLowEven = Math.max(nCntMaxLowEven, cnt_per_col);
            } else {
                nCntMaxLowOdd = Math.max(nCntMaxLowOdd, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nCntLowOdd / MAX_ROUND).toFixed(2);
        $('#low_oddeven #odd_result').html(nCntLowOdd + '번 (' + per_odd + '%) ' + nCntMaxLowOdd + '연속');
        var per_even = (100 * nCntLowEven / MAX_ROUND).toFixed(2);
        $('#low_oddeven #even_result').html(nCntLowEven + '번 (' + per_even + '%) ' + nCntMaxLowEven + '연속');
        $('#low_oddeven #plop_result').html((nCntLowOddevenBroken - nCntLowOddEvenPlop) + '번');
        $('#low_oddeven #broken_result').html((nCntLowOddevenBroken + 1) + '번');
        $('#low_oddeven .oddeven-result > table > tbody').html(html + row + footer);
    };
    var setLowUnOverTableData = function () {
        var tbl_data = [];
        tbl_data[0] = [];
        tbl_data[1] = [];
        if (_data[0]['low_unover'] == 'UNDER') {
            tbl_data[0][0] = `<td class="odd">${_data[0]['low_unover_val']}</td>`;
        } else {
            tbl_data[0][0] = `<td class="even">${_data[0]['low_unover_val']}</td>`;
        }
        tbl_data[1][0] = `<td><span class="circle ${_data[0]['low_unover_style']}"><p>${_data[0]['date_round']}</p></span></td>`;

        var j = 1; var jj = 0;
        for (var i = 1; i < _data.length; i++) {
            var val = _data[i]['date_round'];
            if (_data[i]['low_unover'] == _data[i - 1]['low_unover']) {
                j++;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['low_unover_style']}'><p>${val}</p></span></td>`;
            } else {
                jj++;
                if (j != 1) {
                    nCntLowUnOverPlop++;
                }
                j = 1;
                if (tbl_data[j] == undefined) {
                    tbl_data[j] = [];
                }
                tbl_data[j][jj] = `<td><span class='circle ${_data[i]['low_unover_style']}'><p>${val}</p></span></td>`;
                nCntLowUnoverBroken = Math.max(nCntLowUnoverBroken, jj);
            }
        }
        for (var i = 1; i <= nCntLowUnoverBroken; i++) {
            if (tbl_data[0][i - 1] == '<td class="odd">언더</td>') {
                tbl_data[0][i] = '<td class="even">오버</td>';
            } else {
                tbl_data[0][i] = '<td class="odd">언더</td>';
            }
        }
        var html = '';
        var cnt_per_col = 0;
        for (var i = 0; i < tbl_data.length; i++) {
            for (var j = 0; j <= nCntLowUnoverBroken; j++) {
                if (tbl_data[i][j] == undefined || tbl_data[i][j] == '') {
                    tbl_data[i][j] = '<td></td>';
                } else {
                    cnt_per_col++;
                }
            }
            var tr = tbl_data[i].join(" ");
            html += "<tr>" + tr + "</tr>";
        }
        var row = '<tr>';
        var footer = '<tr>';
        for (var i = 0; i <= nCntLowUnoverBroken; i++) {
            cnt_per_col = 0;
            for (j = 1; j < tbl_data.length; j++) {
                if (tbl_data[j][i] != '<td></td>') {
                    cnt_per_col++;
                }
            }
            if (tbl_data[0][i] == '<td class="odd">언더</td>') {
                nCntMaxLowUnder = Math.max(nCntMaxLowUnder, cnt_per_col);
            } else {
                nCntMaxLowOver = Math.max(nCntMaxLowOver, cnt_per_col);
            }
            row += '<td>' + cnt_per_col + '</td>';
            footer += '<td>' + (i + 1) + '</td>';
        }
        row += '</tr>';
        footer += '</tr>';
        var per_odd = (100 * nCntLowUnder / MAX_ROUND).toFixed(2);
        $('#low_unover #under_result').html(nCntLowUnder + '번 (' + per_odd + '%) ' + nCntMaxLowUnder + '연속');
        var per_even = (100 * nCntLowOver / MAX_ROUND).toFixed(2);
        $('#low_unover #over_result').html(nCntLowOver + '번 (' + per_even + '%) ' + nCntMaxLowOver + '연속');
        $('#low_unover #plop_result').html((nCntLowUnoverBroken - nCntLowUnOverPlop) + '번');
        $('#low_unover #broken_result').html((nCntLowUnoverBroken + 1) + '번');
        $('#low_unover .oddeven-result > table > tbody').html(html + row + footer);
    };

    var setChartDataTable = function () {
        var html = '', cnt = 0;
        for (var i = _data.length - 1; i >= 0; i--) {
            var cls_hidden = '';
            if (cnt++ > 14) {
                cls_hidden = 'hidden';
            }
            html += `<tr class="${cls_hidden}">
                        <td>${_data[i]['reg_date']} ${_data[i]['date_round']}</td>
                        <td>${toFixed(_data[i]['high'], _currency)}</td>
                        <td><span class="circle no-fill ${_data[i]['high_oddeven_style1']}"><p>${_data[i]['high_oddeven_val']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['high_unover_style1']}"><p>${_data[i]['high_unover_val']}</p></span></td>
                        <td>${toFixed(_data[i]['low'], _currency)}</td>
                        <td><span class="circle no-fill ${_data[i]['low_oddeven_style1']}"><p>${_data[i]['low_oddeven_val']}</p></span></td>
                        <td><span class="circle no-fill ${_data[i]['low_unover_style1']}"><p>${_data[i]['low_unover_val']}</p></span></td>
                        <td>${toFixed(_data[i]['open'], _currency)}</td>
                        <td>${toFixed(_data[i]['close'], _currency)}</td>
                        <td><span class="circle ${_data[i]['result_style']}"><p>${_data[i]['result_val']}</p> </span></td>
                    </tr>`;
        }
        $('#data_table tbody').html(html);
    };
};

function getGameNameKo(game = 'powerball') {
    var game_ko = '파워볼';
    switch (game) {
        case 'powerball':
            game_ko = '파워볼'; break;
        case 'power_ladder':
            game_ko = '파워사다리'; break;
        case 'rdombox_powerball':
            game_ko = '랜덤파워볼'; break;
        case 'pbaccarat':
            game_ko = '파워바카라'; break;
        case 'bogle_powerball':
            game_ko = '보글파워볼'; break;
        case 'speedkeno':
            game_ko = '스피드키노'; break;
        case 'keno_ladder':
            game_ko = '키노사다리'; break;
        case 'powerkeno_ladder':
            game_ko = '보글사다리'; break;
        case 'pkeno_ladder':
            game_ko = '보글사다리'; break;
        case 'eos_powerball':
            game_ko = 'EOS파워볼'; break;
        default: game_ko = '파워볼';
    }
    return game_ko;
}

/// md5.js
var MD5 = function (s) { function L(b, a) { return (b << a) | (b >>> (32 - a)) } function K(k, b) { var F, a, d, x, c; d = (k & 2147483648); x = (b & 2147483648); F = (k & 1073741824); a = (b & 1073741824); c = (k & 1073741823) + (b & 1073741823); if (F & a) { return (c ^ 2147483648 ^ d ^ x) } if (F | a) { if (c & 1073741824) { return (c ^ 3221225472 ^ d ^ x) } else { return (c ^ 1073741824 ^ d ^ x) } } else { return (c ^ d ^ x) } } function r(a, c, b) { return (a & c) | ((~a) & b) } function q(a, c, b) { return (a & b) | (c & (~b)) } function p(a, c, b) { return (a ^ c ^ b) } function n(a, c, b) { return (c ^ (a | (~b))) } function u(G, F, aa, Z, k, H, I) { G = K(G, K(K(r(F, aa, Z), k), I)); return K(L(G, H), F) } function f(G, F, aa, Z, k, H, I) { G = K(G, K(K(q(F, aa, Z), k), I)); return K(L(G, H), F) } function D(G, F, aa, Z, k, H, I) { G = K(G, K(K(p(F, aa, Z), k), I)); return K(L(G, H), F) } function t(G, F, aa, Z, k, H, I) { G = K(G, K(K(n(F, aa, Z), k), I)); return K(L(G, H), F) } function e(k) { var G; var d = k.length; var c = d + 8; var b = (c - (c % 64)) / 64; var F = (b + 1) * 16; var H = Array(F - 1); var a = 0; var x = 0; while (x < d) { G = (x - (x % 4)) / 4; a = (x % 4) * 8; H[G] = (H[G] | (k.charCodeAt(x) << a)); x++ } G = (x - (x % 4)) / 4; a = (x % 4) * 8; H[G] = H[G] | (128 << a); H[F - 2] = d << 3; H[F - 1] = d >>> 29; return H } function B(c) { var b = "", d = "", k, a; for (a = 0; a <= 3; a++) { k = (c >>> (a * 8)) & 255; d = "0" + k.toString(16); b = b + d.substr(d.length - 2, 2) } return b } function J(b) { b = b.replace(/\r\n/g, "\n"); var a = ""; for (var k = 0; k < b.length; k++) { var d = b.charCodeAt(k); if (d < 128) { a += String.fromCharCode(d) } else { if ((d > 127) && (d < 2048)) { a += String.fromCharCode((d >> 6) | 192); a += String.fromCharCode((d & 63) | 128) } else { a += String.fromCharCode((d >> 12) | 224); a += String.fromCharCode(((d >> 6) & 63) | 128); a += String.fromCharCode((d & 63) | 128) } } } return a } var C = Array(); var P, h, E, v, g, Y, X, W, V; var S = 7, Q = 12, N = 17, M = 22; var A = 5, z = 9, y = 14, w = 20; var o = 4, m = 11, l = 16, j = 23; var U = 6, T = 10, R = 15, O = 21; s = J(s); C = e(s); Y = 1732584193; X = 4023233417; W = 2562383102; V = 271733878; for (P = 0; P < C.length; P += 16) { h = Y; E = X; v = W; g = V; Y = u(Y, X, W, V, C[P + 0], S, 3614090360); V = u(V, Y, X, W, C[P + 1], Q, 3905402710); W = u(W, V, Y, X, C[P + 2], N, 606105819); X = u(X, W, V, Y, C[P + 3], M, 3250441966); Y = u(Y, X, W, V, C[P + 4], S, 4118548399); V = u(V, Y, X, W, C[P + 5], Q, 1200080426); W = u(W, V, Y, X, C[P + 6], N, 2821735955); X = u(X, W, V, Y, C[P + 7], M, 4249261313); Y = u(Y, X, W, V, C[P + 8], S, 1770035416); V = u(V, Y, X, W, C[P + 9], Q, 2336552879); W = u(W, V, Y, X, C[P + 10], N, 4294925233); X = u(X, W, V, Y, C[P + 11], M, 2304563134); Y = u(Y, X, W, V, C[P + 12], S, 1804603682); V = u(V, Y, X, W, C[P + 13], Q, 4254626195); W = u(W, V, Y, X, C[P + 14], N, 2792965006); X = u(X, W, V, Y, C[P + 15], M, 1236535329); Y = f(Y, X, W, V, C[P + 1], A, 4129170786); V = f(V, Y, X, W, C[P + 6], z, 3225465664); W = f(W, V, Y, X, C[P + 11], y, 643717713); X = f(X, W, V, Y, C[P + 0], w, 3921069994); Y = f(Y, X, W, V, C[P + 5], A, 3593408605); V = f(V, Y, X, W, C[P + 10], z, 38016083); W = f(W, V, Y, X, C[P + 15], y, 3634488961); X = f(X, W, V, Y, C[P + 4], w, 3889429448); Y = f(Y, X, W, V, C[P + 9], A, 568446438); V = f(V, Y, X, W, C[P + 14], z, 3275163606); W = f(W, V, Y, X, C[P + 3], y, 4107603335); X = f(X, W, V, Y, C[P + 8], w, 1163531501); Y = f(Y, X, W, V, C[P + 13], A, 2850285829); V = f(V, Y, X, W, C[P + 2], z, 4243563512); W = f(W, V, Y, X, C[P + 7], y, 1735328473); X = f(X, W, V, Y, C[P + 12], w, 2368359562); Y = D(Y, X, W, V, C[P + 5], o, 4294588738); V = D(V, Y, X, W, C[P + 8], m, 2272392833); W = D(W, V, Y, X, C[P + 11], l, 1839030562); X = D(X, W, V, Y, C[P + 14], j, 4259657740); Y = D(Y, X, W, V, C[P + 1], o, 2763975236); V = D(V, Y, X, W, C[P + 4], m, 1272893353); W = D(W, V, Y, X, C[P + 7], l, 4139469664); X = D(X, W, V, Y, C[P + 10], j, 3200236656); Y = D(Y, X, W, V, C[P + 13], o, 681279174); V = D(V, Y, X, W, C[P + 0], m, 3936430074); W = D(W, V, Y, X, C[P + 3], l, 3572445317); X = D(X, W, V, Y, C[P + 6], j, 76029189); Y = D(Y, X, W, V, C[P + 9], o, 3654602809); V = D(V, Y, X, W, C[P + 12], m, 3873151461); W = D(W, V, Y, X, C[P + 15], l, 530742520); X = D(X, W, V, Y, C[P + 2], j, 3299628645); Y = t(Y, X, W, V, C[P + 0], U, 4096336452); V = t(V, Y, X, W, C[P + 7], T, 1126891415); W = t(W, V, Y, X, C[P + 14], R, 2878612391); X = t(X, W, V, Y, C[P + 5], O, 4237533241); Y = t(Y, X, W, V, C[P + 12], U, 1700485571); V = t(V, Y, X, W, C[P + 3], T, 2399980690); W = t(W, V, Y, X, C[P + 10], R, 4293915773); X = t(X, W, V, Y, C[P + 1], O, 2240044497); Y = t(Y, X, W, V, C[P + 8], U, 1873313359); V = t(V, Y, X, W, C[P + 15], T, 4264355552); W = t(W, V, Y, X, C[P + 6], R, 2734768916); X = t(X, W, V, Y, C[P + 13], O, 1309151649); Y = t(Y, X, W, V, C[P + 4], U, 4149444226); V = t(V, Y, X, W, C[P + 11], T, 3174756917); W = t(W, V, Y, X, C[P + 2], R, 718787259); X = t(X, W, V, Y, C[P + 9], O, 3951481745); Y = K(Y, h); X = K(X, E); W = K(W, v); V = K(V, g) } var i = B(Y) + B(X) + B(W) + B(V); return i.toLowerCase() };

/// checker.js
var Checker = function () {
    var eos_minute = 5;
    // 해시문자열을 모두 더한 값을 최대값으로 나눈 나머지 반환
    function makeNumberFromHash(hash, max) {
        let arrHash = hash.toString().split('');
        let sum = 0;

        for (let i = 0; i < arrHash.length; i++) {
            let number = parseInt(arrHash[i], 16);
            sum = sum + number;
        }
        return sum % max + 1;
    }
    function randomString(n) {
        var text = "";
        var possible = "0123456789abcdef";

        for (var i = 0; i < n; i++)
            text += possible.charAt(Math.floor(Math.random() * possible.length));

        return text;
    };
    // SHA256 해시 함수
    function SHA256(s) {
        var chrsz = 8;
        var hexcase = 0;

        function safe_add(x, y) {
            var lsw = (x & 0xFFFF) + (y & 0xFFFF);
            var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
            return (msw << 16) | (lsw & 0xFFFF);
        }

        function S(X, n) { return (X >>> n) | (X << (32 - n)); }
        function R(X, n) { return (X >>> n); }
        function Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }
        function Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }
        function Sigma0256(x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }
        function Sigma1256(x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }
        function Gamma0256(x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }
        function Gamma1256(x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }

        function core_sha256(m, l) {
            var K = new Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1,
                0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
                0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786,
                0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
                0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147,
                0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
                0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B,
                0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
                0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A,
                0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
                0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);

            var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);

            var W = new Array(64);
            var a, b, c, d, e, f, g, h, i, j;
            var T1, T2;

            m[l >> 5] |= 0x80 << (24 - l % 32);
            m[((l + 64 >> 9) << 4) + 15] = l;

            for (var i = 0; i < m.length; i += 16) {
                a = HASH[0];
                b = HASH[1];
                c = HASH[2];
                d = HASH[3];
                e = HASH[4];
                f = HASH[5];
                g = HASH[6];
                h = HASH[7];

                for (var j = 0; j < 64; j++) {
                    if (j < 16) W[j] = m[j + i];
                    else W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]);

                    T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]);
                    T2 = safe_add(Sigma0256(a), Maj(a, b, c));

                    h = g;
                    g = f;
                    f = e;
                    e = safe_add(d, T1);
                    d = c;
                    c = b;
                    b = a;
                    a = safe_add(T1, T2);
                }

                HASH[0] = safe_add(a, HASH[0]);
                HASH[1] = safe_add(b, HASH[1]);
                HASH[2] = safe_add(c, HASH[2]);
                HASH[3] = safe_add(d, HASH[3]);
                HASH[4] = safe_add(e, HASH[4]);
                HASH[5] = safe_add(f, HASH[5]);
                HASH[6] = safe_add(g, HASH[6]);
                HASH[7] = safe_add(h, HASH[7]);
            }
            return HASH;
        }

        function str2binb(str) {
            var bin = Array();
            var mask = (1 << chrsz) - 1;
            for (var i = 0; i < str.length * chrsz; i += chrsz) {
                bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i % 32);
            }
            return bin;
        }

        function Utf8Encode(string) {
            string = string.replace(/\r\n/g, "\n");
            var utftext = "";

            for (var n = 0; n < string.length; n++) {

                var c = string.charCodeAt(n);

                if (c < 128) {
                    utftext += String.fromCharCode(c);
                }
                else if ((c > 127) && (c < 2048)) {
                    utftext += String.fromCharCode((c >> 6) | 192);
                    utftext += String.fromCharCode((c & 63) | 128);
                }
                else {
                    utftext += String.fromCharCode((c >> 12) | 224);
                    utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                    utftext += String.fromCharCode((c & 63) | 128);
                }

            }

            return utftext;
        }

        function binb2hex(binarray) {
            var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
            var str = "";
            for (var i = 0; i < binarray.length * 4; i++) {
                str += hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) +
                    hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF);
            }
            return str;
        }

        s = Utf8Encode(s);
        return binb2hex(core_sha256(str2binb(s), s.length * chrsz));
    }

    // 해시문자열을 모두 더한 값을 반환
    function makeSumFromHash(hash) {
        let arrHash = hash.toString().split('');
        let sum = 0;

        for (let i = 0; i < arrHash.length; i++) {
            let number = parseInt(arrHash[i], 16);
            sum = sum + number;
        }
        return sum;
    };

    /**
     * @param eos_value   : 이오스 조합 문자열
     * @param entry       : 생성할 숫자 갯수
     * @param max_number  : 숫자 최대값 (1부터 시작)
     */
    function createNumberSet(eos_block, eos_tran, entry, max_number, start_cnt = 0) {
        eos_tran = eos_tran ? eos_tran : '';
        let eos_value = eos_block + '' + eos_tran;
        let hashs = [];
        let numbers = [];
        let count = 0;
        let str = '';
        let str_class = entry == 22 ? 'speedkeno' : 'powerball';
        start_cnt = start_cnt ? start_cnt : 0;

        for (let i = start_cnt; i < 1000; i++) {
            hashs[i] = SHA256(eos_value + '' + i);
            let sum = makeSumFromHash(hashs[i]);
            let number = makeNumberFromHash(hashs[i], max_number);
            // 중복 숫자 체크
            if (numbers.indexOf(number) == -1) {
                numbers[count] = number;
                count++;

                if (entry == 1) {
                    number = number - 1;
                }
                let str_plus = '';
                if (max_number != 10) str_plus = ' +1';
                number = number + ' <span style="font-weight:normal;color:#999;"> (hash 숫자합계 : ' + sum + ' 을 ' + max_number + ' 로 나눈 나머지값' + str_plus + ')</span>';
            } else {
                number = number + ' <span style="font-weight:normal;color:red;">(중복값 이어서 패스!!)</span>'
            }

            str += `<li>
                        <div>
                            <span class="tit_badge">검증번호</span>
                            <p style="margin-bottom: 0px;">${eos_block}(블록번호) + ${eos_tran}(블록해시 마지막5자리) + ${i}(증가값) = <strong>${eos_value + '' + i}</strong></p>
                        </div>
                        <div>
                            <span class="tit_badge">hash</span>
                            <p style="margin-bottom: 0px;">${hashs[i]}</p>
                        </div>
                        <div>
                            <span class="tit_badge ${str_class}">결과값</span>                        
                            <p style="margin-bottom: 0px;"><strong>${number}</strong></p>
                        </div>
                    </li>`;

            if (count >= entry) break;
        }
        // 숫자 리스트 정렬
        // numbers.sort(function(a, b) { return a - b; });

        if (entry == 1) {
            $(".result_step").append(str);
        } else {
            $(".result_step").html(str);
        }

        return numbers;
    };
    return {
        handleEosPopUp: function (type) {
            $('#eos_value').val('');
            $("#eos_block").html('');
            $(".result_balls").html('');
            let str = `<li class="none_result">
                            <img src="${BASE_URL + 'assets/img/checker/eos_popup_guide.png?v=04'}">
                            <p>상단 이미지에 표기된 부분과 같이<br/><strong>블록번호/블록해시 마지막5자리</strong>로 검색하시면 검증이 가능합니다.</p>
                        </li>`;
            $('.result_step').html(str);

            $('#eos_check').toggle();
        },
        handleEosType: function (type) {
            var otherType = type === 'speedkeno' ? 'powerball' : 'speedkeno';
            $('.eos_type .' + otherType).removeClass('active');
            $('.eos_type .' + type).addClass('active');
            if (type === 'speedkeno') {
                $('.powerball_tabs').hide();
                $('.input_number .powerball').hide();
                $('.input_number .speedkeno').show();
            } else {
                $('.powerball_tabs').css('display', 'flex');
                $('.input_number .powerball').show();
                $('.input_number .speedkeno').hide();
            }
        },
        init: function () {
            this.initEventListner();
        },
        initEventListner: function () {
            $(document).on('click', '.btn_powerball', function (e) {
                let eos_value = $("#eos_value").val();
                if (!eos_value) {
                    return false;
                }
                eos_value = eos_value.toLowerCase();

                let start_cnt = 500;
                switch (eos_minute) {
                    case '1':
                        start_cnt = 100;
                        break;
                    case '2':
                        start_cnt = 200;
                        break;
                    case '3':
                        start_cnt = 300;
                        break;
                    case '4':
                        start_cnt = 400;
                        break;
                    case '5':
                        start_cnt = 500;
                        break;
                }

                let arr_eos_value = eos_value.toString().split('/');
                let eos_blocknumber = arr_eos_value[0];
                let eos_trancount = arr_eos_value[1] ? arr_eos_value[1] : '';

                if (arr_eos_value.length != 2) {
                    eos_blocknumber = arr_eos_value[0].toString().substr(0, 9);
                    eos_trancount = arr_eos_value[0].toString().substr(9);
                }
                $('#eos_block').html('<strong>랜덤박스 파워볼</strong> <strong>' + eos_blocknumber + '/' + eos_trancount + '</strong> 검증 결과입니다.');
                // 파워볼
                let numbers_normalball = createNumberSet(eos_blocknumber, eos_trancount, 5, 28, start_cnt + 1);
                if (eos_blocknumber < 155660600) {
                    numbers_normalball = createNumberSet(eos_blocknumber, eos_trancount, 5, 28, start_cnt);
                }
                let numbers_powerball = createNumberSet(eos_blocknumber, eos_trancount, 1, 10, start_cnt) - 1;
                let str_result = '';
                for (let i = 0; i < numbers_normalball.length; i++) {
                    str_result += '<div class="result_ball n' + numbers_normalball[i] + '"></div>';
                }
                str_result += '<div class="result_ball p' + numbers_powerball + '"></div>';
                $(".result_balls").html(str_result);
            });
            $(document).on('click', '.eos_minute', function () {
                let minute = $(this).attr('ref');
                eos_minute = minute;

                $('.eos_minute').removeClass('active');
                $('.eos_minute[ref=' + minute + ']').addClass('active');

                $("#eos_block").html('');
                $(".result_balls").html('');
                let str = `<li class="none_result">
                                <img src="${BASE_URL + 'assets/img/checker/eos_popup_guide.png?v=04'}">
                                <p>상단 이미지에 표기된 부분과 같이<br/><strong>블록번호/블록해시 마지막5자리</strong>로 검색하시면 검증이 가능합니다.</p>
                            </li>`;
                $('.result_step').html(str);

                $('.btn_powerball').click();
            });
        }
    }
}();
Checker.init();

//// app.js
var App = function () {
    return {
        SUCCESS: '0',
        ERROR: '1',
        init: function () {
            this.initEventListener();
        },
        notify: function (type, msg) {
            Lobibox.notify(type, {
                showClass: 'fadeInDown',
                hideClass: 'fadeUpDown',
                position: 'bottom right',
                msg: msg,
                sound: false,
                size: 'mini',
                rounded: false,
                delay: 1000
            });
        },
        money_format: function (str) {
            str = String(str);
            return str.replace(/(\d)(?=(?:\d{3})+(?!\d))/g, '$1,');
        },
        money_unformat: function (str) {
            str = String(str);
            return str.replace(/[^\d]+/g, '');
        },
        confirm: function (msg) {
            return confirm(msg);
        },
        post: function (url, data, callback, type, beforeSend, isFormData) {
            var token = $(`input[name='my_token']`).val();
            if (typeof data == "string") {
                data += `&my_token=${token}`;
            } else {
                data['my_token'] = token;
            }
            if (beforeSend != undefined) {
                var params = {
                    url: url,
                    data: data,
                    type: 'post',
                    dataType: type,
                    beforSend: beforeSend,
                    success: function (resp) {
                        callback(resp)
                    },
                    error: function (error) {
                        console.log(error);
                    }
                };
                if (isFormData != undefined) {
                    params.cache = false;
                    params.contentType = false;
                    params.processData = false;
                }
                $.ajax(params);
            } else {
                var params = {
                    url: url,
                    data: data,
                    type: 'post',
                    dataType: type,
                    success: function (resp) {
                        callback(resp)
                    },
                    error: function (error) {
                        console.log(error);
                    }
                };
                if (isFormData != undefined) {
                    params.cache = false;
                    params.contentType = false;
                    params.processData = false;
                }
                $.ajax(params);
            }
        },
        initTableSorting: function () {
            var self = this;
            var orderKey = jQuery("#orderKey").val();
            var orderVal = jQuery("#orderVal").val();
            if (orderVal == 'ASC') {
                jQuery("th[aria-name=" + orderKey + "]").removeClass('sorting');
                jQuery("th[aria-name=" + orderKey + "]").addClass('sorting_asc');
            } else if (orderVal == 'DESC') {
                jQuery("th[aria-name=" + orderKey + "]").removeClass('sorting');
                jQuery("th[aria-name=" + orderKey + "]").addClass('sorting_desc');
            }
            // _______________Table Sorting
            jQuery(".table thead tr th").on('click', function (e) {
                if (jQuery(this).hasClass('sorting')) {
                    var orderKey = $(this).attr('aria-name');
                    jQuery("#orderKey").val(orderKey);
                    jQuery("#orderVal").val('ASC');
                    jQuery(this).removeClass('sorting');
                    jQuery('.sorting_asc').addClass('sorting');
                    jQuery('.sorting_asc').removeClass('sorting_asc');
                    jQuery('.sorting_desc').addClass('sorting');
                    jQuery('.sorting_desc').removeClass('sorting_desc');
                    jQuery(this).addClass('sorting_asc');
                    self.sortTable();
                } else if (jQuery(this).hasClass('sorting_desc')) {
                    var orderKey = jQuery(this).attr('aria-name');
                    jQuery("#orderKey").val(orderKey);
                    jQuery("#orderVal").val('ASC');
                    jQuery('.sorting_desc').addClass('sorting');
                    jQuery('.sorting_desc').removeClass('sorting_desc');
                    jQuery(this).addClass('sorting_asc');
                    self.sortTable();
                } else if ($(this).hasClass('sorting_asc')) {
                    var orderKey = $(this).attr('aria-name');
                    jQuery("#orderKey").val(orderKey);
                    jQuery("#orderVal").val('DESC');
                    jQuery('.sorting_asc').addClass('sorting');
                    jQuery('.sorting_asc').removeClass('sorting_asc');
                    jQuery(this).addClass('sorting_desc');
                    self.sortTable();
                }
            });
        },
        initEventListener: function () {
            var self = this;
            jQuery("#searchFrm").on('keypress', (event) => {
                if (event.keyCode == 13) {
                    var page = jQuery("#page").val();
                    self.searchData(page);
                }
            });
            jQuery(".nav-item.dropdown").on('click', function () {
                if ($(this).hasClass("show")) {
                    $(this).removeClass("show");
                    $(".dropdown-menu", this).removeClass('show');
                } else {
                    $(this).addClass("show");
                    $(".dropdown-menu", this).addClass('show');
                }
            });
        },
        writeCookie: function (key, value, days, Tdom) {
            var Tdom = (Tdom) ? Tdom : "/";
            if (days) {
                var date = new Date();
                date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
                var expires = "; expires=" + date.toGMTString();
            } else {
                var expires = "";
            }
            document.cookie = key + "=" + value + expires + "; path=" + Tdom;
        },
        readCookie: function (key) {
            var nameEQ = key + "=";
            var ca = document.cookie.split(';');
            for (var i = 0; i < ca.length; i++) {
                var c = ca[i];
                while (c.charAt(0) == ' ') { c = c.substring(1, c.length); }
                if (c.indexOf(nameEQ) == 0) { return c.substring(nameEQ.length, c.length); }
            }
            return null;
        },
        setPageUrl: function (url) {
            this.writeCookie("pageUrl", url);
        },
        getPageUrl: function (url) {
            var url = this.readCookie("pageUrl");
            if (url == null) url = "";
            return url;
        },
        getBack: function () {
            location.href = this.getPageUrl();
        },
        getDate: function (time) {
            var _t = new Date(time);
            var _y = _t.getFullYear();
            var _m = _t.getMonth() + 1;
            _m = (_m >= 10) ? _m : "0" + _m;
            var _d = _t.getDate();
            _d = (_d >= 10) ? _d : "0" + _d;
            return _y + "-" + _m + "-" + _d;
        },
        getShortDate: function (time) {
            var _t = new Date(time);
            var _m = _t.getMonth() + 1;
            _m = (_m >= 10) ? _m : "0" + _m;
            var _d = _t.getDate();
            _d = (_d >= 10) ? _d : "0" + _d;
            return _m + "월 " + _d + "일";
        },
        _getShortDate: function (time) {
            var _t = new Date(time);
            var _m = _t.getMonth() + 1;
            _m = (_m >= 10) ? _m : "0" + _m;
            var _d = _t.getDate();
            _d = (_d >= 10) ? _d : "0" + _d;
            return _m + "-" + _d;
        },
        toDate: function (dateString) {
            var _t = new Date(dateString);
            return _t.getTime();
        },
        searchData: function (page) {
            jQuery("#page").val(page);
            var url = jQuery("#searchFrm").attr("action") + "?" + jQuery("#searchFrm").serialize();
            this.setPageUrl(url);
            jQuery("#searchFrm").submit();
        },
        sortTable: function () {
            var page = $("#page").val();
            this.searchData(page);
        },
        goto: function (url) {
            location.href = url;
        },
        getBgColor(result) {
            var bgColors = {
                '홀': 'bg-blue',
                '짝': 'bg-red',
                '언더': 'bg-blue',
                '오버': 'bg-red',
                '좌': 'bg-blue',
                '우': 'bg-red',
                '3': 'bg-blue',
                '4': 'bg-red',
                '대': 'bg-blue',
                '중': 'bg-red',
                '소': 'bg-green',
                'Power': 'bg-blue',
                'Tie': 'bg-red',
                'Ball': 'bg-green',
                'Dragon': 'bg-green',
                'Tiger': 'bg-green'
            };
            return bgColors[result];
        },
        getPickStatus(status) {
            var statusKo = ['대기', '적중', '미적중'];
            return statusKo[status];
        }
    };
}();

App.init();