function calculate(){

	//  rate ローン年利率
	//　roan_amount ローン計算の対象金額
	//　atamakin 頭金
	//  kaisuu 支払い回数
	//  bonus_count ボーナス回数

	var theErr=0;
	var theMsg="";

	//借り入れ金額
	if(document.form1.amount.value==''){
		roan_amount = 0;
	}else{
		roan_amount = parseFloat(document.form1.amount.value)*10000;
	}
	//利率
	if(document.form1.rate.value==''){
		rate = 0;
	}else{
		rate = parseFloat(document.form1.rate.value);
	}
	//頭金金額
	if(document.form1.atama.value==''){
		atamakin=0;
	}else{
		atamakin = parseFloat(document.form1.atama.value)*10000;
	}
	//返済月数
	kaisuu = parseFloat(document.form1.kaisuu.value);
	//ボーナス金額
	if(document.form1.bonus.value==''){
		bonus_kasan_gaku=0;
	}else{
		bonus_kasan_gaku = parseFloat(document.form1.bonus.value)*10000;
	}
	
	//エラーチェック
	if ( roan_amount <= 0 ) {
		theMsg=theMsg+"金額を入力してください。\n";
		theErr=1;
	}
	if ( rate <= 0 ) {
		theMsg=theMsg+"利率を入力してください。\n";
		theErr=1;
	}
	if ( kaisuu <=0 ) {
		theMsg=theMsg+"期間を選択してください。\n";
		theErr=1;
	}
		
	//頭金ぶん減らす
	roan_amount = roan_amount-atamakin;
	//ボーナス回数
	bonus_count = Math.floor(kaisuu / 6 );
	//一ヶ月あたりの利率
	month_rate = rate / 12 / 100 ;
	//一ヶ月の利率を返済月数ぶん乗じると最終支払い率に
	final_rate = Math.pow( 1 + month_rate , kaisuu);
	
	risoku_rate = Math.round(( month_rate * final_rate /(final_rate-1) * kaisuu -1) * 10000 ) / 10000;
	risoku = Math.round( roan_amount * risoku_rate );
	roan_pay_all = roan_amount + risoku;
	
	//2回目以降支払い金額
	nikaime_ikou =Math.floor(((roan_pay_all-bonus_kasan_gaku*bonus_count)/kaisuu)/100)*100;
	//2回目以降支払い回数
	f11 = kaisuu - 1;
	
	shokai = roan_pay_all - bonus_kasan_gaku * bonus_count - nikaime_ikou * f11;
	if (bonus_kasan_gaku == 0) {
		bonus_month_gaku = 0;
	} else {
		bonus_month_gaku = bonus_kasan_gaku + nikaime_ikou;
	}
	
	if(theErr==1){
		shokai2.innerHTML = "入力内容をご確認ください。";
		nikaime_ikou2.innerHTML = "入力内容をご確認ください。";
		bonus2.innerHTML = "入力内容をご確認ください。";
		alert(theMsg);
	}else{
		//結果表示
		shokai2.innerHTML = FormatNumber(shokai)+"円";
		nikaime_ikou2.innerHTML = FormatNumber(nikaime_ikou)+"円";
		if( bonus_month_gaku == 0 ){
			bonus_count2 = 0;
		}else{
			bonus_count2 = bonus_count;
		}
		bonus2.innerHTML = FormatNumber(bonus_month_gaku)+"円／" + FormatNumber(bonus_count2) + "回";
		if ( nikaime_ikou < 0) {
			alert("支払額が不正な数値です。\nボーナス、期間等を変更してください。");
		}
	}
}

function FormatNumber(x) {
    var s = "" + x;
    var p = s.indexOf(".");
    if (p < 0) {
        p = s.length;
    }
    var r = s.substring(p, s.length);
    for (var i = 0; i < p; i++) {
        var c = s.substring(p - 1 - i, p - 1 - i + 1);
        if (c < "0" || c > "9") {
            r = s.substring(0, p - i) + r;
            break;
        }
        if (i > 0 && i % 3 == 0) {
            r = "," + r;
        }
        r = c + r;
    }
    return r;
}

