$(document).ready(function(){
    // 注意文言生成
    showCaution();
})

/*
 * 鉄板レース注意文言生成
 */
function showCaution()
{
    if ($("#TOP_NOWRACE_WRAPPER").css('display') == 'none') {
        $("div.caution_recom_race").hide();
        $("div.caution_recom_race_2").show();
    } else {
        if ($("div.NORMAL_ICON_STAR").css('display')   == 'block' ||
            $("div.NORMAL_ICON_STARON").css('display') == 'block' ||
            $("div.GRADE_ICON_STAR").css('display')     == 'block' ||
            $("div.GRADE_ICON_STARON").css('display')   == 'block') {
            $("div.caution_recom_race").show();
        }
    }

    if ($("#TOP_DOKANTOBOX_SHOW").css('display') == 'block') {
        $("div.caution_recom_race_2").show();
    } else {
        $("div.caution_recom_race_2").hide();
    }
}

/*
 * 鉄板レース表示の生成
 */
function makeTeppanSter(is, starStr, selectBank)
{
    $(is).closest('div').attr('class', "NORMAL_ICON_STARON");

    var ids = $(is).closest('div').attr('id');

    var teppanList = starStr.split("_");
    var teppanHtml = '<div class=\"NORMAL_ICON_STARON_INNER\">';
    for (key in teppanList) {
        if (key == (teppanList.length - 1)) {
            teppanHtml += '<span class=\"txt_clr_red_1 txt_size_bold\">' + teppanList[key] + '</span> レース';
        } else {
            teppanHtml += '<span class=\"txt_clr_red_1 txt_size_bold\">' + teppanList[key] + '</span> / ';
        }
    }
    teppanHtml += '</div>';

    $('.NORMAL_ICON_STARON').each(function() {
        var bank_cd = $(this).attr('bank_cd');
        if (selectBank == bank_cd) {
            $(this).hover(
            function() {
            $(this).html(teppanHtml);
            },
            function() {
            $(this).attr('class', "NORMAL_ICON_STAR")
            $(this).html('<a href=\"\" onMouseOver=\"makeTeppanSter(this, \''+starStr+'\', \''+selectBank+'\'); return false;\"><img src=\"images/common/icon_star.png\" alt=\"鉄板\" width=\"40\" height=\"41\" /></a>')
            }
            );
        }

    });
}


/*
 * 鉄板レース表示の生成
 */
function makeGradeTeppanSter(is, starStr, selectBank)
{
    $(is).closest('div').attr('class', "GRADE_ICON_STARON");

    var ids = $(is).closest('div').attr('id');

    var teppanList = starStr.split("_");
    var teppanHtml = '<div class=\"GRADE_ICON_STARON_INNER\">';
    for (key in teppanList) {
        if (key == (teppanList.length - 1)) {
            teppanHtml += '<span class=\"txt_clr_red_1 txt_size_bold\">' + teppanList[key] + '</span> レース';
        } else {
            teppanHtml += '<span class=\"txt_clr_red_1 txt_size_bold\">' + teppanList[key] + '</span> / ';
        }
    }
    teppanHtml += '</div>';

    $('.GRADE_ICON_STARON').each(function() {
        var bank_cd = $(this).attr('bank_cd');
        if (selectBank == bank_cd) {
            $(this).hover(
            function() {
            $(this).html(teppanHtml);
            },
            function() {
            $(this).attr('class', "GRADE_ICON_STAR")
            $(this).html('<a href=\"\" onMouseOver=\"makeTeppanSter(this, \''+starStr+'\', \''+selectBank+'\'); return false;\"><img src=\"images/common/icon_star.png\" alt=\"鉄板\" width=\"40\" height=\"41\" /></a>')
            }
            );
        }

    });
}


/*
 * レース別賭式遷移ボタンの吹き出し生成
 */
var outFlg = false;
function popUpInfo(kakeshikiInfo, no, location, cnt)
{
    // グレードレース存在チェック
    var positionNums = 0;
//    var gradeAreaHtml = $('#TOP_NOWRACE > div#TOP_NOWRACE_WRAPPER').find('div#TOP_NOWRACE_GRADE').html();
    var gradeCnt = $('#TOP_NOWRACE > div#TOP_NOWRACE_WRAPPER').find('div#TOP_NOWRACE_GRADE').size();
    if (gradeCnt > 0) {
        positionNums = (gradeCnt * 97);
    }

    // 各クラス名称生成
    var fukiClassName = 'FukiNum' + ("0" + String(no)).slice(-2);
    var ulClassName   = 'ulId' + ("0" + String(no)).slice(-2);
    var fukidashiLocation = 'NORMAL_ICON_FUKIDASHI_' + location + '_L' + cnt;
    // 同類のクラス名が存在したら削除
    $('div#TOP_NOWRACE > div#TOP_NOWRACE_WRAPPER').find($('div[id^=FukiNum]')).each(function() {
        $(this).remove();
    });

    // ulリスト生成
    $('div#TOP_NOWRACE > div#TOP_NOWRACE_WRAPPER').append('<div id=\"'+fukiClassName+'\" class=\"' + fukidashiLocation + '\"></div>');

    var fuki = $('#'+fukiClassName);

    fuki.append('<ul id=\"'+ulClassName+'\"></ul>');

    $('#'+fukiClassName).css('top', parseInt(fuki.css('top').match(/\d+/)) + parseInt(positionNums));

    var kakeshiki = makeKakeshikiInfo(kakeshikiInfo);
    for (var key in kakeshiki) {
        var className = "racename" + kakeshiki[key]['cd']
        var url = $("input#FUKIDASHI_KAKESHIKI_NEXT_"+kakeshiki[key]['seq']).val();

        $('#'+ulClassName).append('<li id=\"'+kakeshiki[key]['seq']+'\"></li>');

        if (kakeshiki[key]['status'] == 1) {
            var cssLists = $('#'+kakeshiki[key]['seq']).append('<p class=\"racename ' + className + '\"><a href=\"\" onClick=\"window.open(\'' + url + '\'); return false;\">' + kakeshiki[key]['name'] + '</a></p><p class=\"grade01 top_nowrace_gradeStatus\"><a href=\"\" onClick=\"window.open(\'' + url + '\'); return false;\">発売中</a></p>');
        } else if (kakeshiki[key]['status'] == 2) {
            var cssLists = $('#'+kakeshiki[key]['seq']).append('<p class=\"racename ' + className + '\">' + kakeshiki[key]['name'] + '</p><p class=\"grade04 top_nowrace_gradeStatus\"><a href=\"javascript:void(0);\" onClick=\"return false;\">締切り</a></p>');
        } else if (kakeshiki[key]['status'] == 3) {
            var cssLists = $('#'+kakeshiki[key]['seq']).append('<p class=\"racename ' + className + '\"><a href=\"\" onClick=\"window.open(\'' + url + '\'); return false;\">' + kakeshiki[key]['name'] + '</a></p><p class=\"grade03 top_nowrace_gradeStatus\"><a href=\"\" onClick=\"window.open(\'' + url + '\'); return false;\">結果</a></p>');
        } else if (kakeshiki[key]['status'] == 4) {
            var cssLists = $('#'+kakeshiki[key]['seq']).append('<p class=\"racename ' + className + '\"><a href=\"\" onClick=\"window.open(\'' + url + '\'); return false;\">' + kakeshiki[key]['name'] + '</a></p><p class=\"grade02 top_nowrace_gradeStatus\"><a href=\"\" onClick=\"window.open(\'' + url + '\'); return false;\">経過</a></p>');
        } else {
            var cssLists = $('#'+kakeshiki[key]['seq']).append('<p class=\"racename ' + className + '\">' + kakeshiki[key]['name'] + '</p><p class=\"grade04 top_nowrace_gradeStatus\"><a href=\"javascript:void(0);\" onClick=\"return false;\">締切り</a></p>');
        }
    }

    fuki.hover(
        function(){
            outFlg = true;
            return;
        },
        function(){
            $(this).remove();
        }
    );
}

/*
 * レース別賭式遷移ボタンの吹き出し削除
 */
function popUpOut()
{
    if (outFlg == true) {
        return;
    } else if (outFlg == false) {
        $('div#TOP_NOWRACE > div#TOP_NOWRACE_WRAPPER').find($('div[id^=FukiNum]')).each(function() {
            $(this).remove();
        });
    }
}

/*
 * 開催レース情報対象レース賭式一覧加工処理
 */
function makeKakeshikiInfo(info)
{
    var res = {}
    var parentArr = info.split("|")
    for (var i=0; i<parentArr.length; i++) {
        res[i] = {}
        var childArr = parentArr[i].split(",")
        for (var j=0; j<childArr.length; j++) {
            var grandChildArr = childArr[j].split(":")
            res[i][grandChildArr[0]] = grandChildArr[1];
        }
    }
    return res
}


/*
 * ドカント払戻総額ソート処理
 */
function makeKeirinjouSort(is)
{
    var div_table_obj = $('div#TOP_DOKANTOBOX_SHOW > table.'+$(is).closest('table').attr('class')+' > tbody');
    var ref_sort_array = new Array();
    var car_sort_array = new Array();
    var setInfoHtml = '';
    var setHtml     = '';

    // 昇順降順変更
    div_table_obj.children('tr').children('th').each(function(){
        if ($(this).attr('class').indexOf("placeTitle") != -1) {
            var sortFlg = 0;
            var sortClass = 'placeSelect1';
            var sortClassArr = $(this).attr('class').split(' ');
            sortClassArr[0] = (sortClass == sortClassArr[0])? 'placeSelect2' : 'placeSelect1';
            if (sortClassArr[0] == 'placeSelect2') {
                sortFlg = 1;
            }
            $(this).attr('class', sortClassArr[0]+' '+sortClassArr[1]);

            var ref_array = new Array();
            var cay_array = new Array();
            div_table_obj.children('tr.selectInfo').each(function(){
                var trTags = '<tr class=\"selectInfo\">OKIKAE</tr>'
                ref_array.push( {'sort': parseInt($(this).children('td').attr('selectkyogi')), 'html': trTags.replace('OKIKAE', $(this).closest('tr').html())} );
            });
            if (sortFlg == 1) {
                ref_sort_array = asort(ref_array, 'sort');
            } else {
                ref_sort_array = ksort(ref_array, 'sort');
            }

            div_table_obj.children('tr.selectCarry').each(function(){
                var trTags = '<tr class=\"selectCarry\">OKIKAE</tr>'
                cay_array.push( {'sort': parseInt($(this).children('td').attr('selectkyogi')), 'html': trTags.replace('OKIKAE', $(this).html())} );
            });

            if (sortFlg == 1) {
                car_sort_array = asort(cay_array, 'sort');
            } else {
                car_sort_array = ksort(cay_array, 'sort');
            }

            var firstBoxClass  = 'dokantoBox1';
            var secondBoxClass = 'dokantoBox2';
            for (key in ref_sort_array) {
                ref_sort_array[key]['html'] = replaceAll(ref_sort_array[key]['html'], secondBoxClass, firstBoxClass);

                setInfoHtml += ref_sort_array[key]['html'];

                firstBoxClass  = (firstBoxClass  == 'dokantoBox1')? 'dokantoBox2' : 'dokantoBox1';
                secondBoxClass = (secondBoxClass == 'dokantoBox2')? 'dokantoBox1' : 'dokantoBox2';
            }

            var firstBoxClass  = 'dokantoBox3';
            var secondBoxClass = 'dokantoBox4';
            for (key in car_sort_array) {
                car_sort_array[key]['html'] = replaceAll(car_sort_array[key]['html'], secondBoxClass, firstBoxClass);

                setInfoHtml += car_sort_array[key]['html'];

                firstBoxClass  = (firstBoxClass  == 'dokantoBox3')? 'dokantoBox4' : 'dokantoBox3';
                secondBoxClass = (secondBoxClass == 'dokantoBox4')? 'dokantoBox3' : 'dokantoBox4';
            }
        }
    });

    trTags = '<tr>OKIKAE</tr>'
    setHtml = trTags.replace('OKIKAE', div_table_obj.children('tr').html()) + setInfoHtml;
    div_table_obj.html(setHtml)
}


/*
 * ドカント払戻総額ソート処理
 */
function makeDokantoSelectSort(is)
{
    // 昇順降順変更
    var KakeshikiTableCl = $(is).closest('th').closest('tr').closest('table').attr('class');
    var beClickClasss = $(is).closest('th').attr('class')
    var clickClass    = beClickClasss.split(' ');
    var clickClassNumber = escape(clickClass[0].match(/\d+/));
    var sortTypeFlg = null;
    var clickCnt = $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' tbody > tr:eq(0)').children().index($('th.' + clickClass[0]))
    if (clickClassNumber.length == 2) {
        afClickClass = clickClass[0].replace(clickClassNumber, clickClassNumber[0]);
    } else {
        afClickClass = clickClass[0].replace(clickClassNumber, (clickClassNumber + clickClassNumber));
        sortTypeFlg = 1;
    }
    beClickClasss = beClickClasss.replace(clickClass[0], afClickClass);
    $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody > tr > th.' + clickClass[0]).attr("class", beClickClasss);

    // 各初期値セット
    var htmlStr    = null;
    var replaceStr = null;
    var numSummary = 0;

    // 発売中 ソート
    var infoSize  = $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody > tr.selectInfo').size();
    var sortList = new Array();
    for (var i=0; i<infoSize; i++) {
        numSummary = 0;
        htmlStr = $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody > tr.selectInfo:eq(' + i + ') > td:eq(' + clickCnt + ') > dl > dt').html()
        if (htmlStr != null) {
            // 半角空白削除
            numSummary = charactersToNumbers(htmlStr);
            if (numSummary == 0) {
                numSummary = 1;
            }
            sortList.push({'sort': parseInt(numSummary), 'html': $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody > tr.selectInfo:eq(' + i + ')').html()})
        } else {
            sortList.push({'sort': 0, 'html': $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody > tr.selectInfo:eq(' + i + ')').html()})
        }
    }
    if (!sortTypeFlg) {
        sortList = ksort(sortList, 'sort');
    } else {
        sortList = asort(sortList, 'sort');
    }

    // キャリーオーバー ソート
    infoSize = $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody > tr.selectCarry').size();
    var carrySortList = new Array();
    for (var i=0; i<infoSize; i++) {
        numSummary = 0;
        htmlStr = $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody > tr.selectCarry:eq(' + i + ') > td:eq(' + clickCnt + ') > dl > dt').html()
        if (htmlStr != null) {
            // 半角空白削除
            numSummary = charactersToNumbers(htmlStr);
            if (numSummary == 0) {
                numSummary = 1;
            }
            carrySortList.push({'sort': parseInt(numSummary), 'html': $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody > tr.selectCarry:eq(' + i + ')').html()})
        } else {
            carrySortList.push({'sort': 0, 'html': $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody > tr.selectCarry:eq(' + i + ')').html()})
        }
    }
    if (!sortTypeFlg) {
        carrySortList = ksort(carrySortList, 'sort');
    } else {
        carrySortList = asort(carrySortList, 'sort');
    }

    var j = 0;
    $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody > tr').each(function() {
        if (j > 0) {
            $(this).remove();
        }
        j++;
    });
    var sortHtml = '';
    var firstBoxClass  = 'dokantoBox1';
    var secondBoxClass = 'dokantoBox2';
    for (key in sortList) {
        sortList[key]['html'] = replaceAll(sortList[key]['html'], secondBoxClass, firstBoxClass);
        sortHtml += '<tr class=\"selectInfo\">' + sortList[key]['html'] + '</tr>';

        firstBoxClass  = (firstBoxClass  == 'dokantoBox1')? 'dokantoBox2' : 'dokantoBox1';
        secondBoxClass = (secondBoxClass == 'dokantoBox2')? 'dokantoBox1' : 'dokantoBox2';
    }

    firstBoxClass  = 'dokantoBox3';
    secondBoxClass = 'dokantoBox4';
    for (key in carrySortList) {
        carrySortList[key]['html'] = replaceAll(carrySortList[key]['html'], secondBoxClass, firstBoxClass);
        sortHtml += '<tr class=\"selectCarry\">' + carrySortList[key]['html'] + '</tr>';

        firstBoxClass  = (firstBoxClass  == 'dokantoBox3')? 'dokantoBox4' : 'dokantoBox3';
        secondBoxClass = (secondBoxClass == 'dokantoBox4')? 'dokantoBox3' : 'dokantoBox4';
    }
    $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.' + KakeshikiTableCl + ' > tbody').append(sortHtml)
}

/*
 * 開催レース・ドカント払戻総額タブ切替え
 */
function changeTab(is)
{
    var clickClass = $(is).closest('h3').closest('li').attr('class');
    if (clickClass.match(/_stay/)) {
        return;
    }

    var clickNumber = $('div#TOP_NOWRACE > div#TOP_NOWRACE_TAB > ul > li').index($('.' + clickClass));

    for (var i=0; i<$('div#TOP_NOWRACE > div#TOP_NOWRACE_TAB > ul > li').size(); i++) {
        if (i == clickNumber) {
            $('div#TOP_NOWRACE > div#TOP_NOWRACE_TAB > ul > li:eq(' + i + ')').attr('class', clickClass + '_stay');
            $('div#TOP_NOWRACE > div#TOP_NOWRACE_TAB > ul > li:eq(' + i + ') > h3').html('<a href=\"\" onClick=\"return false;\">' + $('div#TOP_NOWRACE > div#TOP_NOWRACE_TAB > ul > li:eq(' + i + ') > h3 > a').text() + '</a>')
        } else {
            $('div#TOP_NOWRACE > div#TOP_NOWRACE_TAB > ul > li:eq(' + i + ')').attr('class', $('div#TOP_NOWRACE > div#TOP_NOWRACE_TAB > ul > li:eq(' + i + ')').attr('class').replace('_stay', '') );
            $('div#TOP_NOWRACE > div#TOP_NOWRACE_TAB > ul > li:eq(' + i + ') > h3').html('<a href=\"\" onClick=\"changeTab($(this)); return false;\">' + $('div#TOP_NOWRACE > div#TOP_NOWRACE_TAB > ul > li:eq(' + i + ') > h3 > a').text() + '</a>')
        }
    }

    if (clickClass == 'top_nowraceTab1') {
        $('div#TOP_NOWRACE > div#TOP_NOWRACE_WRAPPER').css('display', '');
        $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW').css('display', 'none');
    } else {
        $('div#TOP_NOWRACE > div#TOP_NOWRACE_WRAPPER').css('display', 'none');
        $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW').css('display', '');
    }

    // 鉄板レース注意文言表示切替え
    showCaution();
}

/*
 * ドカント払戻総額
 * ドカント・セレクト、ドカント・ランダム タブ切り替え
 */
function changeTabChild(is)
{
    var clickClass = $(is).closest('p').closest('li').attr('class');
    if (clickClass.match(/_stay/)) {
        return;
    }

    var clickNumber = $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > div#TOP_DOKANTOBOX_TAB > ul > li').index($('.' + clickClass))
    for (var i=0; i<$('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > div#TOP_DOKANTOBOX_TAB > ul > li').size(); i++) {
        if (i == clickNumber) {
            $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > div#TOP_DOKANTOBOX_TAB > ul > li:eq(' + i + ')').attr('class', clickClass + '_stay');
            $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > div#TOP_DOKANTOBOX_TAB > ul > li:eq(' + i + ') > p').html('<a href=\"\" onClick=\"return false;\">' + $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > div#TOP_DOKANTOBOX_TAB > ul > li:eq(' + i + ') > p > a').text() + '</a>')
        } else {
            $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > div#TOP_DOKANTOBOX_TAB > ul > li:eq(' + i + ')').attr('class', $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > div#TOP_DOKANTOBOX_TAB > ul > li:eq(' + i + ')').attr('class').replace('_stay', '') );
            $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > div#TOP_DOKANTOBOX_TAB > ul > li:eq(' + i + ') > p').html('<a href=\"\" onClick=\"changeTabChild($(this)); return false;\">' + $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > div#TOP_DOKANTOBOX_TAB > ul > li:eq(' + i + ') > p > a').text() + '</a>')
        }
    }

    if (clickClass == 'top_dokantoboxTab1') {
//        $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.TOP_DOKANTO_REPAYMENT').css('display', '');
//        $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.TOP_DOKANTO_REPAYMENT_RDM').css('display', 'none');

        $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.TOP_DOKANTO_REPAYMENT_HALF').css('display', '');
        $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.TOP_DOKANTO_REPAYMENT_WIDE').css('display', 'none');
    } else {
//        $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.TOP_DOKANTO_REPAYMENT').css('display', 'none');
//        $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.TOP_DOKANTO_REPAYMENT_RDM').css('display', '');

        $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.TOP_DOKANTO_REPAYMENT_HALF').css('display', 'none');
        $('div#TOP_NOWRACE > div#TOP_DOKANTOBOX_SHOW > table.TOP_DOKANTO_REPAYMENT_WIDE').css('display', '');
    }
}

/*
 * 全ての置換対象文字列を置換します
 */
function replaceAll(expression, org, dest){
    return expression.split(org).join(dest);
}

/*
 * 漢数字を数字に変換します
 */
function charactersToNumbers(info)
{
    var kanjiUnitList = {"京": 16, "兆": 12, "億": 8, "万": 4, "円": 0};
    var sum = 0;

    // 半角スペースの削除
    var replaceInfo = info.replace(/ /g, '');

    for (kanji in kanjiUnitList) {
        if (replaceInfo.match(kanji) != null) {
            var replaceInfo = replaceInfo.split(kanji);
            var num = replaceInfo[0]
            replaceInfo = replaceInfo[1]
            sum += num * Math.pow(10, kanjiUnitList[kanji]);
        }
    }
    return sum
}

/*
 * 昇順ソート
 */
function asort(info, key)
{
   info.sort(function (b1, b2) {
       return b1[key] > b2[key] ? 1 : -1;
   });
   return info;
}

/*
 * 降順ソート
 */
function ksort(info, key)
{
   info.sort(function (b1, b2) {
       return b1[key] < b2[key] ? 1 : -1;
   });
   return info;
}

