if(document.body.id != 'calc_interest') {
    function open_calc_interest(i) {
        var e_scripts = document.getElementsByTagName('script');
        var url_this = e_scripts[e_scripts.length - 1].src;
        var url_html = url_this.replace(/js$/,'html');
        if(i) {
            url_html = 'http://www.c-shinsa.com/calc_interest/calc_interest' + i + '.html';
        }
        else url_html = 'http://www.c-shinsa.com/calc_interest/calc_interest.html';
        open(url_html,'','width=300,height=530');
    }
}

else {
    var monitor = document.getElementById('monitor_amount');

    document.getElementById('amount').checked = true;

    var bts_num = getElementsByClassName('all','bt_num');
    for(var i = 0 ; i < bts_num.length ; i++) {
        bts_num[i].onclick = function() {
            var num = monitor.value + this.value;
            var ptn = /^0*([0-9])/;
            ptn.test(num);
            num = num.replace(ptn,RegExp.$1);
            monitor.value = num;
        }
    }

    document.getElementById('bt_dot').onclick = function () {
        if(monitor.id != 'monitor_opt') {
            if(!monitor.value.match(/\./)) {
                monitor.value = monitor.value + this.value;
            }
        }
    }

    document.getElementById('bt_clear').onclick = function () {
        monitor.value = '0';
    }

    document.getElementById('bt_allclear').onclick = function () {
        input_amount.value = 0;
        input_opt.value = 0;
        input_interest.value = 0;
        document.getElementById('output1').innerHTML = '0円';
        document.getElementById('output2').innerHTML = '0円';
    }

    var selectmonitors = getElementsByName('all','selectmonitor');
    for(var i = 0 ; i < selectmonitors.length ; i++) {
        var radio = selectmonitors[i];
        radio.onclick = function () {
            monitor = document.getElementById('monitor_' + this.id);
            monitor.focus();
        }
    }

    var input_amount = document.getElementById('monitor_amount');
    var input_opt = document.getElementById('monitor_opt');
    var input_interest = document.getElementById('monitor_interest');

    input_amount.onfocus = input_opt.onfocus = input_interest.onfocus = function () {
        var radio = document.getElementById(this.id.replace(/^monitor_/,''));
        radio.checked = true;
        monitor = this;
    }


    var selectFunction = document.getElementById('selectFunction');

    function setFormat_yen (y) {
        var ptn = /^(.*)(\d{4})$/;
        var r = '';
        ptn.test(y);
        if(y >= 10000) { r += RegExp.$1 + '万'; }
        r += RegExp.$2.replace(/^0*/,'') + '円';
        return r;
    }

    function calc_times() {
        document.getElementById('label_opt').innerHTML = '月の支払';
        document.getElementById('th_output1').innerHTML = '支払い回数は';
        document.getElementById('unit_opt').innerHTML = '円　';
        document.getElementById('output1').innerHTML = '0回';
        document.getElementById('output2').innerHTML = '0円';

        document.getElementById('bt_calc').onclick = function () {
            var amount = Number(document.getElementById('monitor_amount').value);
            var payment = Number(document.getElementById('monitor_opt').value);
            var interest = Number(document.getElementById('monitor_interest').value);

            var amount_left = amount * 10000 ;
            var alpha = 1 + ( interest / 1200 );
            var n = 0;

            if((interest * amount * 10000) < (1200 * payment)) {
                while(amount_left >= payment) {
                    amount_left = alpha * amount_left - payment;
                    n++;
                }
                var interest_total = payment * n  + amount_left -  amount * 10000 ;
                n++;
                interest_total = Math.ceil(interest_total);

                if(n == 0) {
                    document.getElementById('output1').innerHTML = '1回';
                    document.getElementById('output2').innerHTML = setFormat_yen(amount * 10000 * interest / 100);
                }
                else {
                    document.getElementById('output1').innerHTML = n + '回';
                    document.getElementById('output2').innerHTML = setFormat_yen(interest_total);
                }
            }
            else {
                document.getElementById('output1').innerHTML = '返済不能です';
                document.getElementById('output2').innerHTML = '-';
            }
        }
    }

    function calc_month() {
        document.getElementById('label_opt').innerHTML = '返済回数';
        document.getElementById('th_output1').innerHTML = '月の支払いは';

        document.getElementById('unit_opt').innerHTML = '回　';
        document.getElementById('output1').innerHTML = '0円';
        document.getElementById('output2').innerHTML = '0円';

        document.getElementById('bt_calc').onclick = function () {
            var amount = Number(document.getElementById('monitor_amount').value);
            var times = Number(document.getElementById('monitor_opt').value) ;
            var interest = Number(document.getElementById('monitor_interest').value);
            /*
             * alpha = 1 + (interest / 1200 として、
             * (月の支払額:x) = {alpha^n * (alpha-1) / alpha^n - 1 } * amount
             */

            var alpha = 1 + (interest / 1200);
            var an = Math.pow(alpha, times);
            var x = Math.ceil(an * (alpha - 1) * amount * 10000 / (an - 1));
            var interest_total = setFormat_yen(x * times - amount * 10000);
            x = setFormat_yen(x);

            document.getElementById('output1').innerHTML = x;
            document.getElementById('output2').innerHTML = interest_total;

        }
    }

    function setSelectFunction () {
        var th_caption = document.getElementById('th_caption');
        if(selectFunction.value == 'month') {
            th_caption.innerHTML = '利用金額、返済回数、実質年率から<br />毎月の支払い額を計算';
            calc_month();
        }
        else if (selectFunction.value == 'times') {
            th_caption.innerHTML = '利用金額、実質年率、毎月の支払い額から<br />支払回数を計算';
            calc_times();
        }
    }

    setSelectFunction();
    selectFunction.onchange = setSelectFunction;


}

function getElementsByClassName (el,str) {
    if(el == "all") {
        var childs = document.getElementsByTagName("*");
    }
    else {
        var childs = el.getElementsByTagName("*");
    }

    var pattern = new RegExp('(^| +)' + str + '( +|$)');
    var r = new Array();
    var j = 0;
    for ( var i = 0; i < childs.length; i++ ) {
        if ( pattern.test(childs[i].className) ) {
            r[j] = childs[i];
            j++;
        }
    }
    return r;
}

function getElementsByName (el,str) {
    if(el == "all") {
        var childs = document.getElementsByTagName("*");
    }
    else {
        var childs = el.getElementsByTagName("*");
    }

    var r = new Array();
    var j = 0;
    for ( var i = 0; i < childs.length; i++ ) {
        if ( str == childs[i].name ) {
            r[j] = childs[i];
            j++;
        }
    }
    return r;
}

