//ローンシミュレーション関係の処理
<!--

//ユーザ定義関数
//ラジオボタンの選択されている値を取得する
function GetRadioValue(targetradio) {
	var value = "";																//取得した値
	for (i = 0; i < targetradio.length; i++) {
		//チェック状態かどうか
		if (targetradio[i].checked) {
			// 値を取得する
			value = targetradio[i].value;
			break;
		}
	}
	return value;
}

//文字列をHTMLエスケープする
function htmlspecialchars(ch) { 
	ch = ch.replace(/&/g,"&amp;") ;
	ch = ch.replace(/"/g,"&quot;") ;
	ch = ch.replace(/'/g,"&#039;") ;
	ch = ch.replace(/</g,"&lt;") ;
	ch = ch.replace(/>/g,"&gt;") ;
	return ch ;
}

//数値に3桁区切りのコンマをつける
function addFigure(str) {
	var num = new String(str).replace(/,/g, "");
	
	var t_num = num;
	var t_str = "";
	var ret = "";
	
	//小数点が含まれている場合、小数点未満はそのまま
	if (t_num.indexOf(".") > -1) {
		while (t_str != ".") {
			//最後の文字を取り出す
			t_str = t_num.charAt(t_num.length - 1);
			//最後の文字をカットする
			t_num = t_num.substring(0, t_num.length - 1);
			//取り出した文字を追加する
			ret = t_str + ret;
		}
	}
	
	var i = 0;
	//3文字おきに","を挿入する
	while (t_num.length > 0) {
		i++;
		//最後の文字を取り出す
		t_str = t_num.charAt(t_num.length - 1);
		
		//取り出した文字が数値以外の場合は処理終了
		data = t_str.match(/[^0-9]/g);
		if (data) {
			break;
		}
		
		//最後の文字をカットする
		t_num = t_num.substring(0, t_num.length - 1);
		//取り出した文字を追加する
		ret = t_str + ret;
		
		//","を追加する
		if (i % 3 == 0) {
			ret = "," + ret;
			i = 0;
		}
	}
	//先頭が","になった場合はカットする
	if (ret.charAt(0) == ",") {
		ret = ret.substring(1, ret.length);
	}
	//残りの文字がある場合は追加する
	if (t_num.length > 0) {
		ret = t_num + ret;
		t_num = "";
	}
	
	return ret;
}

//必須項目と値の入力範囲をチェックする
function chkval_input_henkin(){
	var dispstr = "";																					//メッセージ表示文字列
	var errcount = 0;																					//チェックエラーカウント
	var resultflg = false;																				//チェック結果フラグ
	var arremptyitem = new Array();																		//未入力項目名
	var arrngitem = new Array();																		//値が不正な項目
	
	
	//必須項目の未入力チェック
	//借入金
	if (document.getElementById("debt").value == ""){
		arremptyitem.push("[借入金]");
		errcount++;
	}
	//返済金利(1)(終了年)
	if (document.getElementById("int_ey1").value == ""){
		arremptyitem.push("[返済金利(1)(終了年)]");
		errcount++;
	}
	//返済金利(1)(利率)
	if (document.getElementById("int_per1").value == ""){
		arremptyitem.push("[返済金利(1)(利率)]");
		errcount++;
	}
	
	//未入力項目があった場合
	if (errcount > 0){
		dispstr = "必須項目で未入力の項目があります";
		
		for (index in arremptyitem) {
			dispstr = dispstr + "\n\n　・" + arremptyitem[index];
		}
		window.alert(dispstr);
		
		return resultflg;
	}
	
	//正しい値が入力されているかどうかのチェック
	//ボーナス月
	var bonus_month_1 = document.getElementById("bonus_month_1").value;
	var bonus_month_2 = document.getElementById("bonus_month_2").value;
	//2つのボーナス月が同じ場合
	if (bonus_month_1 == bonus_month_2) {
		var msgtemp = "";
		msgtemp = msgtemp + "ボーナス月はそれぞれ違う月を選択して下さい。";
		
		arrngitem.push(msgtemp);
		errcount++;
	}
	
	//入力エラー項目があった場合
	if (errcount > 0){
		dispstr = "入力エラーの項目があります";
		
		for (index in arrngitem) {
			dispstr = dispstr + "\n\n　・" + arrngitem[index];
		}
		window.alert(dispstr);
		
		return resultflg;
	}
	
	
	resultflg = true;
	
	if (resultflg) {
		document.getElementById("input_henkin").submit();
	}
}

//必須項目と値の入力範囲をチェックする
function chkval_input_henhi(){
	var dispstr = "";																					//メッセージ表示文字列
	var errcount = 0;																					//チェックエラーカウント
	var resultflg = false;																				//チェック結果フラグ
	var arremptyitem = new Array();																		//未入力項目名
	var arrngitem = new Array();																		//値が不正な項目
	
	
	//必須項目の未入力チェック
	//借入金
	if (document.getElementById("debt").value == ""){
		arremptyitem.push("[借入金]");
		errcount++;
	}
	//返済金利(1)(終了年)
	if (document.getElementById("int_ey1").value == ""){
		arremptyitem.push("[返済金利(1)(終了年)]");
		errcount++;
	}
	//返済金利(1)(利率)
	if (document.getElementById("int_per1").value == ""){
		arremptyitem.push("[返済金利(1)(利率)]");
		errcount++;
	}
	
	//未入力項目があった場合
	if (errcount > 0){
		dispstr = "必須項目で未入力の項目があります";
		
		for (index in arremptyitem) {
			dispstr = dispstr + "\n\n　・" + arremptyitem[index];
		}
		window.alert(dispstr);
		
		return resultflg;
	}
	
	//正しい値が入力されているかどうかのチェック
	//ボーナス月
	var bonus_month_1 = document.getElementById("bonus_month_1").value;
	var bonus_month_2 = document.getElementById("bonus_month_2").value;
	//2つのボーナス月が同じ場合
	if (bonus_month_1 == bonus_month_2) {
		var msgtemp = "";
		msgtemp = msgtemp + "ボーナス月はそれぞれ違う月を選択して下さい。";
		
		arrngitem.push(msgtemp);
		errcount++;
	}
	
	//入力エラー項目があった場合
	if (errcount > 0){
		dispstr = "入力エラーの項目があります";
		
		for (index in arrngitem) {
			dispstr = dispstr + "\n\n　・" + arrngitem[index];
		}
		window.alert(dispstr);
		
		return resultflg;
	}
	
	
	resultflg = true;
	
	if (resultflg) {
		document.getElementById("input_henhi").submit();
	}
}

//必須項目と値の入力範囲をチェックする
//引数: 償還表のパターン
function chkval_input_kari(pat){
	var dispstr = "";																					//メッセージ表示文字列
	var errcount = 0;																					//チェックエラーカウント
	var resultflg = false;																				//チェック結果フラグ
	var arremptyitem = new Array();																		//未入力項目名
	var arrngitem = new Array();																		//値が不正な項目
	
	
	//必須項目の未入力チェック
	//当初借入金額
	if (document.getElementById("debt").value == ""){
		arremptyitem.push("[当初借入金額]");
		errcount++;
	}
	//返済開始からの経過年月(年)
	if (document.getElementById("pas_y").value == ""){
		arremptyitem.push("[返済開始からの経過年月(年)]");
		errcount++;
	}
	//返済金利(現在のローン)
	if (document.getElementById("int_rat_b").value == ""){
		arremptyitem.push("[返済金利(現在のローン)]");
		errcount++;
	}
	//返済金利(借換えプラン)
	if (document.getElementById("int_rat_a").value == ""){
		arremptyitem.push("[返済金利(借換えプラン)]");
		errcount++;
	}
	//返済年数(現在のローン)
	if (document.getElementById("years_b").value == ""){
		arremptyitem.push("[返済年数(現在のローン)]");
		errcount++;
	}
	//返済年数(借換えプラン)
	if (document.getElementById("years_a").value == ""){
		arremptyitem.push("[返済年数(借換えプラン)]");
		errcount++;
	}
	
	//未入力項目があった場合
	if (errcount > 0){
		dispstr = "必須項目で未入力の項目があります";
		
		for (index in arremptyitem) {
			dispstr = dispstr + "\n\n　・" + arremptyitem[index];
		}
		window.alert(dispstr);
		
		return resultflg;
	}
	
	//正しい値が入力されているかどうかのチェック
	//ボーナス月
	var bonus_month_1 = document.getElementById("bonus_month_1").value;
	var bonus_month_2 = document.getElementById("bonus_month_2").value;
	//2つのボーナス月が同じ場合
	if (bonus_month_1 == bonus_month_2) {
		var msgtemp = "";
		msgtemp = msgtemp + "ボーナス月はそれぞれ違う月を選択して下さい。";
		
		arrngitem.push(msgtemp);
		errcount++;
	}
	
	//入力エラー項目があった場合
	if (errcount > 0){
		dispstr = "入力エラーの項目があります";
		
		for (index in arrngitem) {
			dispstr = dispstr + "\n\n　・" + arrngitem[index];
		}
		window.alert(dispstr);
		
		return resultflg;
	}
	
	
	resultflg = true;
	
	if (resultflg) {
		document.getElementById("pat").value = pat;
		document.getElementById("input_kari").submit();
	}
}

//必須項目と値の入力範囲をチェックする
function chkval_input_kuri(pat){
	var dispstr = "";																					//メッセージ表示文字列
	var errcount = 0;																					//チェックエラーカウント
	var resultflg = false;																				//チェック結果フラグ
	var arremptyitem = new Array();																		//未入力項目名
	var arrngitem = new Array();																		//値が不正な項目
	
	
	//必須項目の未入力チェック
	//繰上げ返済金(年)(1)
	if (document.getElementById("adv_y_1").value == ""){
		arremptyitem.push("[繰上げ返済金(年)(1)]");
		errcount++;
	}
	//繰上げ返済金(金額)(1)
	if (document.getElementById("adv_mo_1").value == ""){
		arremptyitem.push("[繰上げ返済金(金額)(1)]");
		errcount++;
	}
	//当初借入金額(万円)
	if (document.getElementById("debt").value == ""){
		arremptyitem.push("[当初借入金額(万円)]");
		errcount++;
	}
	//返済金利(1)(終了年)
	if (document.getElementById("int_ey1").value == ""){
		arremptyitem.push("[返済金利(1)(終了年)]");
		errcount++;
	}
	//返済金利(1)(利率)
	if (document.getElementById("int_per1").value == ""){
		arremptyitem.push("[返済金利(1)(利率)]");
		errcount++;
	}
	
	//未入力項目があった場合
	if (errcount > 0){
		dispstr = "必須項目で未入力の項目があります";
		
		for (index in arremptyitem) {
			dispstr = dispstr + "\n\n　・" + arremptyitem[index];
		}
		window.alert(dispstr);
		
		return resultflg;
	}
	
	//正しい値が入力されているかどうかのチェック
	//ボーナス月
	var bonus_month_1 = document.getElementById("bonus_month_1").value;
	var bonus_month_2 = document.getElementById("bonus_month_2").value;
	//2つのボーナス月が同じ場合
	if (bonus_month_1 == bonus_month_2) {
		var msgtemp = "";
		msgtemp = msgtemp + "ボーナス月はそれぞれ違う月を選択して下さい。";
		
		arrngitem.push(msgtemp);
		errcount++;
	}
	
	//入力エラー項目があった場合
	if (errcount > 0){
		dispstr = "入力エラーの項目があります";
		
		for (index in arrngitem) {
			dispstr = dispstr + "\n\n　・" + arrngitem[index];
		}
		window.alert(dispstr);
		
		return resultflg;
	}
	
	
	resultflg = true;
	
	if (resultflg) {
		document.getElementById("pat").value = pat;
		document.getElementById("input_kuri").submit();
	}
}

//入力された値をもとにローンの金額を計算する
function repayment_result_henkin(){
	//フォームに入力された値を取得する
	var mode = document.getElementById("mode").value;													//画面表示モード
	var ctype = GetRadioValue(document.getElementsByName("ctype"));										//計算方式
	var debt = document.getElementById("debt").value;													//借入金
	var bo_pay = document.getElementById("bo_pay").value;												//ボーナス返済分
	var int_ey1 = document.getElementById("int_ey1").value;												//返済金利(1)(終了年)
	var int_per1 = document.getElementById("int_per1").value;											//返済金利(1)(利率)
	var int_ey2 = document.getElementById("int_ey2").value;												//返済金利(2)(終了年)
	var int_per2 = document.getElementById("int_per2").value;											//返済金利(2)(利率)
	var int_ey3 = document.getElementById("int_ey3").value;												//返済金利(3)(終了年)
	var int_per3 = document.getElementById("int_per3").value;											//返済金利(3)(利率)
	var int_ey4 = document.getElementById("int_ey4").value;												//返済金利(4)(終了年)
	var int_per4 = document.getElementById("int_per4").value;											//返済金利(4)(利率)
	var inc = document.getElementById("inc").value;														//現在の年収
	var ps_year = document.getElementById("ps_year").value;												//支払開始年月(年)
	var ps_month = document.getElementById("ps_month").value;											//支払開始年月(月)
	var bonus_month_1 = document.getElementById("bonus_month_1").value;									//ボーナス月(1)
	var bonus_month_2 = document.getElementById("bonus_month_2").value;									//ボーナス月(2)
	
	//念のためタグをhtmlエンティティに変換する処理をする
	mode = htmlspecialchars(mode);																		//画面表示モード
	ctype = htmlspecialchars(ctype);																	//計算方式
	debt = htmlspecialchars(debt);																		//借入金
	bo_pay = htmlspecialchars(bo_pay);																	//ボーナス返済分
	int_ey1 = htmlspecialchars(int_ey1);																//返済金利(1)(終了年)
	int_per1 = htmlspecialchars(int_per1);																//返済金利(1)(利率)
	int_ey2 = htmlspecialchars(int_ey2);																//返済金利(2)(終了年)
	int_per2 = htmlspecialchars(int_per2);																//返済金利(2)(利率)
	int_ey3 = htmlspecialchars(int_ey3);																//返済金利(3)(終了年)
	int_per3 = htmlspecialchars(int_per3);																//返済金利(3)(利率)
	int_ey4 = htmlspecialchars(int_ey4);																//返済金利(4)(終了年)
	int_per4 = htmlspecialchars(int_per4);																//返済金利(4)(利率)
	inc = htmlspecialchars(inc);																		//現在の年収
	ps_year = htmlspecialchars(ps_year);																//支払開始年月(年)
	
	
	//返済金利の終了年の翌年を次の返済金利の開始年にし、最後に入力されている返済金利の終了年をトータルの返済年数とする。
	var pay_years_max = -1;
	var int_sy1 = "1";																					//返済金利(1)(開始年)
	var int_sy2 = "";																					//返済金利(2)(開始年)
	var int_sy3 = "";																					//返済金利(3)(開始年)
	var int_sy4 = "";																					//返済金利(4)(開始年)
	var int_sy2_disp = " ";
	var int_sy3_disp = " ";
	var int_sy4_disp = " ";
	if (int_ey1 != "" && int_per1 != "") {
		var t_int_ey = int_ey1;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		var int_sy2 = t_int_ey + 1;
		var int_sy2_disp = String(int_sy2);
		pay_years_max = String(t_int_ey);
	}
	if (int_ey2 != "" && int_per2 != "") {
		var t_int_ey = int_ey2;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		var int_sy3 = t_int_ey + 1;
		var int_sy3_disp = String(int_sy3);
		pay_years_max = String(t_int_ey);
	}
	if (int_ey3 != "" && int_per3 != "") {
		var t_int_ey = int_ey3;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		var int_sy4 = t_int_ey + 1;
		var int_sy4_disp = String(int_sy4);
		pay_years_max = String(t_int_ey);
	}
	if (int_ey4 != "" && int_per4 != "") {
		var t_int_ey = int_ey4;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		pay_years_max = String(t_int_ey);
	}
	if (pay_years_max < 0) {
		pay_years_max = "";
	}
	//返済金利開始年
	document.getElementById("int_sy1").value = int_sy1;
	document.getElementById("int_sy2").value = int_sy2;
	document.getElementById("int_sy3").value = int_sy3;
	document.getElementById("int_sy4").value = int_sy4;
	document.getElementById("int_sy2_disp").childNodes[0].nodeValue = int_sy2_disp;
	document.getElementById("int_sy3_disp").childNodes[0].nodeValue = int_sy3_disp;
	document.getElementById("int_sy4_disp").childNodes[0].nodeValue = int_sy4_disp;
	
	var pay_years = pay_years_max;																		//トータルの返済年数
	var pay_years_disp = String(pay_years);
	document.getElementById("pay_years").value = pay_years;
	document.getElementById("pay_years_disp").childNodes[0].nodeValue = pay_years_disp;
	
	
	//計算に必要な項目が入力されているかどうか
	//借入金、返済金利(1)、トータルの返済年数は必須
	//ボーナス月はそれぞれ違う月を選択する
	if (debt != "" && int_sy1 != "" && int_ey1 != "" && int_per1 != "" && pay_years != "" && bonus_month_1 != bonus_month_2) {
		//データ処理
		//単位を「万円」から「円」にする
		//借入金
		var debt_conv = "";
		if (debt != "") {
			debt_conv = parseInt(debt) * 10000;
		}
		//ボーナス返済分
		var bo_pay_conv = "0";
		if (bo_pay != "") {
			bo_pay_conv = parseInt(bo_pay) * 10000;
		}
		//現在の年収
		var inc_conv = "";
		if (inc != "") {
			inc_conv = parseInt(inc) * 10000;
		}
		
		//返済金利が最大4回変化する
		//開始年、終了年、利率を配列にまとめる
		var arr_interest = new Array();
		var i = 0;
		if (int_per1 != "") {
			var t_int_sy = int_sy1;
			var t_int_ey = int_ey1;
			var t_int_per = int_per1;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		if (int_per2 != "") {
			var t_int_sy = int_sy2;
			var t_int_ey = int_ey2;
			var t_int_per = int_per2;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		if (int_per3 != "") {
			var t_int_sy = int_sy3;
			var t_int_ey = int_ey3;
			var t_int_per = int_per3;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		if (int_per4 != "") {
			var t_int_sy = int_sy4;
			var t_int_ey = int_ey4;
			var t_int_per = int_per4;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		
		var arr_repayment = calc_repayment_fund(ctype, debt_conv, bo_pay_conv, arr_interest, pay_years, inc_conv, 
												ps_year, ps_month, bonus_month_1, bonus_month_2);
	} else {
		var arr_repayment = new Array();
		arr_repayment["debt"] = "-";																	//借入金
		arr_repayment["result"] = new Array();															//計算結果
		//空データを作成する
		var r = 0;
		while (r < 5) {
			arr_repayment["result"][r] = new Array();
			arr_repayment["result"][r]["years"] = "-";													//返済年数
			arr_repayment["result"][r]["payment_per_m"] = "-";											//返済額(毎月分)
			arr_repayment["result"][r]["payment_per_b"] = "-";											//返済額(ボーナス分)
			arr_repayment["result"][r]["payment_per_y"] = "-";											//返済額(年間)
			arr_repayment["result"][r]["payment_total"] = "-";											//返済額(総額)
			arr_repayment["result"][r]["payment_ratio"] = "-";											//返済比率
			r++;
		}
	}
	
	document.getElementById("rv_debt").childNodes[0].nodeValue = arr_repayment["debt"];					//借入金
	var arr_repayment_result = arr_repayment["result"];
	//配列の最後から2番目の行まで繰り返す（最終行は合計）
	for (i = 0; i < arr_repayment_result.length - 1; i++) {
		var arr_repayment_result_row = arr_repayment_result[i];
		document.getElementById("rv_years_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["years"];					//返済年数
		document.getElementById("rv_payment_per_m_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_per_m"];	//返済額(毎月)
		document.getElementById("rv_payment_per_b_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_per_b"];	//返済額(ボーナス分)
		document.getElementById("rv_payment_per_y_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_per_y"];	//返済額(年間)
		document.getElementById("rv_payment_total_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_total"];	//返済額(総額)
		document.getElementById("rv_payment_ratio_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_ratio"];	//返済比率
	}
	
	//合計行を表示する
	var arr_repayment_result_row = arr_repayment_result[i];
	document.getElementById("rv_years_total").childNodes[0].nodeValue = arr_repayment_result_row["years"];					//返済年数(合計)
	document.getElementById("rv_payment_per_m_total").childNodes[0].nodeValue = arr_repayment_result_row["payment_per_m"];	//返済額(毎月)(合計)
	document.getElementById("rv_payment_per_b_total").childNodes[0].nodeValue = arr_repayment_result_row["payment_per_b"];	//返済額(ボーナス分)(合計)
	document.getElementById("rv_payment_per_y_total").childNodes[0].nodeValue = arr_repayment_result_row["payment_per_y"];	//返済額(年間)(合計)
	document.getElementById("rv_payment_total_total").childNodes[0].nodeValue = arr_repayment_result_row["payment_total"];	//返済額(総額)(合計)
	document.getElementById("rv_payment_ratio_total").childNodes[0].nodeValue = arr_repayment_result_row["payment_ratio"];	//返済比率(合計)
}

//入力された値をもとにローンの金額を計算する
function repayment_result_henhi(){
	//フォームに入力された値を取得する
	var mode = document.getElementById("mode").value;													//画面表示モード
	var ctype = GetRadioValue(document.getElementsByName("ctype"));										//計算方式
	var debt = document.getElementById("debt").value;													//借入金
	var bo_rat = document.getElementById("bo_rat").value;												//ボーナス比率
	var int_ey1 = document.getElementById("int_ey1").value;												//返済金利(1)(終了年)
	var int_per1 = document.getElementById("int_per1").value;											//返済金利(1)(利率)
	var int_ey2 = document.getElementById("int_ey2").value;												//返済金利(2)(終了年)
	var int_per2 = document.getElementById("int_per2").value;											//返済金利(2)(利率)
	var int_ey3 = document.getElementById("int_ey3").value;												//返済金利(3)(終了年)
	var int_per3 = document.getElementById("int_per3").value;											//返済金利(3)(利率)
	var int_ey4 = document.getElementById("int_ey4").value;												//返済金利(4)(終了年)
	var int_per4 = document.getElementById("int_per4").value;											//返済金利(4)(利率)
	var inc = document.getElementById("inc").value;														//現在の年収
	var ps_year = document.getElementById("ps_year").value;												//支払開始年月(年)
	var ps_month = document.getElementById("ps_month").value;											//支払開始年月(月)
	var bonus_month_1 = document.getElementById("bonus_month_1").value;									//ボーナス月(1)
	var bonus_month_2 = document.getElementById("bonus_month_2").value;									//ボーナス月(2)
	
	//念のためタグをhtmlエンティティに変換する処理をする
	mode = htmlspecialchars(mode);																		//画面表示モード
	ctype = htmlspecialchars(ctype);																	//計算方式
	debt = htmlspecialchars(debt);																		//借入金
	bo_rat = htmlspecialchars(bo_rat);																	//ボーナス比率
	int_ey1 = htmlspecialchars(int_ey1);																//返済金利(1)(終了年)
	int_per1 = htmlspecialchars(int_per1);																//返済金利(1)(利率)
	int_ey2 = htmlspecialchars(int_ey2);																//返済金利(2)(終了年)
	int_per2 = htmlspecialchars(int_per2);																//返済金利(2)(利率)
	int_ey3 = htmlspecialchars(int_ey3);																//返済金利(3)(終了年)
	int_per3 = htmlspecialchars(int_per3);																//返済金利(3)(利率)
	int_ey4 = htmlspecialchars(int_ey4);																//返済金利(4)(終了年)
	int_per4 = htmlspecialchars(int_per4);																//返済金利(4)(利率)
	inc = htmlspecialchars(inc);																		//現在の年収
	ps_year = htmlspecialchars(ps_year);																//支払開始年月(年)
	
	
	//返済金利の終了年の翌年を次の返済金利の開始年にし、最後に入力されている返済金利の終了年をトータルの返済年数とする。
	var pay_years_max = -1;
	var int_sy1 = "1";																					//返済金利(1)(開始年)
	var int_sy2 = "";																					//返済金利(2)(開始年)
	var int_sy3 = "";																					//返済金利(3)(開始年)
	var int_sy4 = "";																					//返済金利(4)(開始年)
	var int_sy2_disp = " ";
	var int_sy3_disp = " ";
	var int_sy4_disp = " ";
	if (int_ey1 != "" && int_per1 != "") {
		var t_int_ey = int_ey1;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		var int_sy2 = t_int_ey + 1;
		var int_sy2_disp = String(int_sy2);
		pay_years_max = String(t_int_ey);
	}
	if (int_ey2 != "" && int_per2 != "") {
		var t_int_ey = int_ey2;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		var int_sy3 = t_int_ey + 1;
		var int_sy3_disp = String(int_sy3);
		pay_years_max = String(t_int_ey);
	}
	if (int_ey3 != "" && int_per3 != "") {
		var t_int_ey = int_ey3;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		var int_sy4 = t_int_ey + 1;
		var int_sy4_disp = String(int_sy4);
		pay_years_max = String(t_int_ey);
	}
	if (int_ey4 != "" && int_per4 != "") {
		var t_int_ey = int_ey4;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		pay_years_max = String(t_int_ey);
	}
	if (pay_years_max < 0) {
		pay_years_max = "";
	}
	//返済金利開始年
	document.getElementById("int_sy1").value = int_sy1;
	document.getElementById("int_sy2").value = int_sy2;
	document.getElementById("int_sy3").value = int_sy3;
	document.getElementById("int_sy4").value = int_sy4;
	document.getElementById("int_sy2_disp").childNodes[0].nodeValue = int_sy2_disp;
	document.getElementById("int_sy3_disp").childNodes[0].nodeValue = int_sy3_disp;
	document.getElementById("int_sy4_disp").childNodes[0].nodeValue = int_sy4_disp;
	
	var pay_years = pay_years_max;																		//トータルの返済年数
	var pay_years_disp = String(pay_years);
	document.getElementById("pay_years").value = pay_years;
	document.getElementById("pay_years_disp").childNodes[0].nodeValue = pay_years_disp;
	
	
	//計算に必要な項目が入力されているかどうか
	//借入金、返済金利(1)、トータルの返済年数は必須
	//ボーナス月はそれぞれ違う月を選択する
	if (debt != "" && int_sy1 != "" && int_ey1 != "" && int_per1 != "" && pay_years != "" && bonus_month_1 != bonus_month_2) {
		//データ処理
		//単位を「万円」から「円」にする
		//借入金
		var debt_conv = "";
		if (debt != "") {
			debt_conv = parseInt(debt) * 10000;
		}
		//現在の年収
		var inc_conv = "";
		if (inc != "") {
			inc_conv = parseInt(inc) * 10000;
		}
		
		//ボーナス返済分の金額を計算する
		var bo_pay_conv = "0";
		if (debt_conv != "" && bo_rat != "") {
			bo_pay_conv = Math.round(debt_conv * (bo_rat / 100));
		}
		
		//返済金利が最大4回変化する
		//開始年、終了年、利率を配列にまとめる
		var arr_interest = new Array();
		var i = 0;
		if (int_per1 != "") {
			var t_int_sy = int_sy1;
			var t_int_ey = int_ey1;
			var t_int_per = int_per1;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		if (int_per2 != "") {
			var t_int_sy = int_sy2;
			var t_int_ey = int_ey2;
			var t_int_per = int_per2;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		if (int_per3 != "") {
			var t_int_sy = int_sy3;
			var t_int_ey = int_ey3;
			var t_int_per = int_per3;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		if (int_per4 != "") {
			var t_int_sy = int_sy4;
			var t_int_ey = int_ey4;
			var t_int_per = int_per4;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		
		var arr_repayment = calc_repayment_fund(ctype, debt_conv, bo_pay_conv, arr_interest, pay_years, inc_conv, 
												ps_year, ps_month, bonus_month_1, bonus_month_2);
	} else {
		var arr_repayment = new Array();
		arr_repayment["debt"] = "-";																	//借入金
		arr_repayment["result"] = new Array();															//計算結果
		//空データを作成する
		var r = 0;
		while (r < 5) {
			arr_repayment["result"][r] = new Array();
			arr_repayment["result"][r]["years"] = "-";													//返済年数
			arr_repayment["result"][r]["payment_per_m"] = "-";											//返済額(毎月分)
			arr_repayment["result"][r]["payment_per_b"] = "-";											//返済額(ボーナス分)
			arr_repayment["result"][r]["payment_per_y"] = "-";											//返済額(年間)
			arr_repayment["result"][r]["payment_total"] = "-";											//返済額(総額)
			arr_repayment["result"][r]["payment_ratio"] = "-";											//返済比率
			r++;
		}
	}
	
	document.getElementById("rv_debt").childNodes[0].nodeValue = arr_repayment["debt"];					//借入金
	var arr_repayment_result = arr_repayment["result"];
	//配列の最後から2番目の行まで繰り返す（最終行は合計）
	for (i = 0; i < arr_repayment_result.length - 1; i++) {
		var arr_repayment_result_row = arr_repayment_result[i];
		document.getElementById("rv_years_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["years"];					//返済年数
		document.getElementById("rv_payment_per_m_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_per_m"];	//返済額(毎月)
		document.getElementById("rv_payment_per_b_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_per_b"];	//返済額(ボーナス分)
		document.getElementById("rv_payment_per_y_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_per_y"];	//返済額(年間)
		document.getElementById("rv_payment_total_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_total"];	//返済額(総額)
		document.getElementById("rv_payment_ratio_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_ratio"];	//返済比率
	}
	
	//合計行を表示する
	var arr_repayment_result_row = arr_repayment_result[i];
	document.getElementById("rv_years_total").childNodes[0].nodeValue = arr_repayment_result_row["years"];					//返済年数(合計)
	document.getElementById("rv_payment_per_m_total").childNodes[0].nodeValue = arr_repayment_result_row["payment_per_m"];	//返済額(毎月)(合計)
	document.getElementById("rv_payment_per_b_total").childNodes[0].nodeValue = arr_repayment_result_row["payment_per_b"];	//返済額(ボーナス分)(合計)
	document.getElementById("rv_payment_per_y_total").childNodes[0].nodeValue = arr_repayment_result_row["payment_per_y"];	//返済額(年間)(合計)
	document.getElementById("rv_payment_total_total").childNodes[0].nodeValue = arr_repayment_result_row["payment_total"];	//返済額(総額)(合計)
	document.getElementById("rv_payment_ratio_total").childNodes[0].nodeValue = arr_repayment_result_row["payment_ratio"];	//返済比率(合計)
}

//入力された値をもとにローンの金額を計算する
function repayment_result_kari(){
	//フォームに入力された値を取得する
	var mode = document.getElementById("mode").value;													//画面表示モード
	var ctype = GetRadioValue(document.getElementsByName("ctype"));										//計算方式
	var debt = document.getElementById("debt").value;													//当初借入金額
	var pas_y = document.getElementById("pas_y").value;													//返済開始からの経過年月(年)
	var pas_m = document.getElementById("pas_m").value;													//返済開始からの経過年月(月)
	var inc = document.getElementById("inc").value;														//現在の年収
	var int_rat_b = document.getElementById("int_rat_b").value;											//返済金利(現在のローン)
	var int_rat_a = document.getElementById("int_rat_a").value;											//返済金利(借換えプラン)
	var years_b = document.getElementById("years_b").value;												//返済年数(現在のローン)
	var years_a = document.getElementById("years_a").value;												//返済年数(借換えプラン)
	var bo_rat_b = document.getElementById("bo_rat_b").value;											//ボーナス比率(現在のローン)
	var bo_rat_a = document.getElementById("bo_rat_a").value;											//ボーナス比率(借換えプラン)
	var ps_year = document.getElementById("ps_year").value;												//支払開始年月(年)
	var ps_month = document.getElementById("ps_month").value;											//支払開始年月(月)
	var bonus_month_1 = document.getElementById("bonus_month_1").value;									//ボーナス月(1)
	var bonus_month_2 = document.getElementById("bonus_month_2").value;									//ボーナス月(2)
	
	//念のためタグをhtmlエンティティに変換する処理をする
	mode = htmlspecialchars(mode);																		//画面表示モード
	ctype = htmlspecialchars(ctype);																	//計算方式
	debt = htmlspecialchars(debt);																		//当初借入金額
	pas_y = htmlspecialchars(pas_y);																	//返済開始からの経過年月(年)
	pas_m = htmlspecialchars(pas_m);																	//返済開始からの経過年月(月)
	inc = htmlspecialchars(inc);																		//現在の年収
	int_rat_b = htmlspecialchars(int_rat_b);															//返済金利(現在のローン)
	int_rat_a = htmlspecialchars(int_rat_a);															//返済金利(借換えプラン)
	years_b = htmlspecialchars(years_b);																//返済年数(現在のローン)
	years_a = htmlspecialchars(years_a);																//返済年数(借換えプラン)
	bo_rat_b = htmlspecialchars(bo_rat_b);																//ボーナス比率(現在のローン)
	bo_rat_a = htmlspecialchars(bo_rat_a);																//ボーナス比率(借換えプラン)
	ps_year = htmlspecialchars(ps_year);																//支払開始年月(年)
	
	//返済開始からの経過年月(月)が省略されている場合は"0"とみなす
	if (pas_m == "") pas_m = "0";
	
	//返済年数
	var years_b = document.getElementById("years_b").value;												//当初の返済年数
	var pay_years_disp = String(years_b);
	document.getElementById("pay_years_disp").childNodes[0].nodeValue = pay_years_disp;
	
	var payment_total_b_disp = "-";																		//(借換えない)総返済金額の合計
	var payment_total_a_disp = "-";																		//(借換えする)総返済金額の合計
	var payment_per_m_diff_disp = "-";																	//返済額(毎月分)
	var payment_per_b_diff_disp = "-";																	//返済額(ボーナス分)
	var payment_total_diff_disp = "-";																	//総返済額
	var payment_ratio_diff_disp = "-";																	//返済比率
	
	//計算に必要な項目が入力されているかどうか
	//当初借入金額、返済開始からの経過年月(年)、返済開始からの経過年月(月)、返済金利(現在のローン)、返済金利(借換えプラン)、返済年数(現在のローン)、返済年数(借換えプラン)は必須
	//ボーナス月はそれぞれ違う月を選択する
	if (debt != "" && pas_y != "" && pas_m != "" && int_rat_b != "" && int_rat_a != "" && years_b != "" && years_a != "" && bonus_month_1 != bonus_month_2) {
		//データ処理
		//単位を「万円」から「円」にする
		//当初借入金額
		var debt_conv = "";
		if (debt != "") {
			debt_conv = parseInt(debt) * 10000;
		}
		//現在の年収
		var inc_conv = "";
		if (inc != "") {
			inc_conv = parseInt(inc) * 10000;
		}
		
		//型を変換する
		pas_y = Number(pas_y);
		pas_m = Number(pas_m);
		int_rat_a = Number(int_rat_a);
		years_a = Number(years_a);
		
		
		//借換え前の返済年数
		var pay_years = years_b;
		
		//ボーナス返済分の金額を計算する
		//借換え前
		var bo_pay_b_conv = "";
		if (debt_conv != "" && bo_rat_b != "") {
			bo_pay_b_conv = Math.round(debt_conv * (bo_rat_b / 100));
		}
		
		//返済金利
		//借換え前
		//開始年、終了年、利率を配列にまとめる
		var arr_interest = new Array();
		var i = 0;
		
		var t_int_sy = 1;
		var t_int_ey = pay_years;
		var t_int_per = int_rat_b;
		
		//型を変換する
		t_int_sy = Number(t_int_sy);
		t_int_ey = Number(t_int_ey);
		t_int_per = Number(t_int_per);
		
		arr_interest[i] = new Array();
		arr_interest[i]["sy"] = t_int_sy;																//開始年
		arr_interest[i]["ey"] = t_int_ey;																//終了年
		arr_interest[i]["per"] = t_int_per;																//利率
		i++;
		
		//借換え前の金額を計算する
		var arr_repayment_b = calc_repayment_fund(ctype, debt_conv, bo_pay_b_conv, arr_interest, pay_years, inc_conv, 
												  ps_year, ps_month, bonus_month_1, bonus_month_2);
		
		var payment_per_m_b = arr_repayment_b["num"]["payment_per_m"];									//返済額(毎月分)
		var payment_per_b_b = arr_repayment_b["num"]["payment_per_b"];									//返済額(ボーナス分)
		var payment_ratio_b = arr_repayment_b["num"]["payment_ratio"];									//返済比率
		var payment_total_b = arr_repayment_b["num"]["g_payment_total"];								//既払額の総額
		
		//借換え後の金額を計算する
		var arr_repayment_a = calc_repayment_rollover(ctype, debt_conv, pas_y, pas_m, int_rat_b, int_rat_a, years_b, years_a, bo_pay_b_conv, bo_rat_a, inc_conv, 
													  ps_year, ps_month, bonus_month_1, bonus_month_2);
		
		var payment_per_m_a = arr_repayment_a["num"]["payment_per_m"];									//返済額(毎月分)
		var payment_per_b_a = arr_repayment_a["num"]["payment_per_b"];									//返済額(ボーナス分)
		var payment_ratio_a = arr_repayment_a["num"]["payment_ratio"];									//返済比率
		var payment_total_a = arr_repayment_a["num"]["g_payment_total"];								//既払額の総額
		
		
		//データ処理
		//借換えの比較
		var payment_per_m_diff = "";																	//返済額(毎月分)
		var payment_per_b_diff = "";																	//返済額(ボーナス分)
		var payment_ratio_diff = "";																	//返済比率
		var payment_total_diff = "";																	//総返済額
		//計算方式が「元利金等方式」のとき
		if (ctype == "1") {
			//返済額(毎月分)
			if (payment_per_m_b != "" && payment_per_m_a != "") {
				payment_per_m_diff = payment_per_m_a - payment_per_m_b;
			}
			//返済額(ボーナス分)
			if (payment_per_b_b != "" && payment_per_b_a != "") {
				payment_per_b_diff = payment_per_b_a - payment_per_b_b;
			}
		}
		//返済比率
		if (payment_ratio_b != "" && payment_ratio_a != "") {
			//小数の計算では誤差が出るため一旦整数に直す
			payment_ratio_diff = Math.round(((payment_ratio_a * 100 - payment_ratio_b * 100) / 100) * 100) / 100;
		}
		//総返済額
		if (payment_total_b != "" && payment_total_a != "") {
			payment_total_diff = payment_total_a - payment_total_b;
		}
		
		//表示用に加工する
		//(借換えない)総返済金額の合計
		payment_total_b_disp = addFigure(payment_total_b) + "円";
		//(借換えする)総返済金額の合計
		payment_total_a_disp = addFigure(payment_total_a) + "円";
		
		//返済額(毎月分)
		if (payment_per_m_diff != "") {
			if (payment_per_m_diff > 0) {
				payment_per_m_diff_disp = addFigure(payment_per_m_diff) + "円" + "増えます";
			} else if (payment_per_m_diff < 0) {
				payment_per_m_diff_disp = addFigure(-payment_per_m_diff) + "円" + "減ります";
			} else {
				payment_per_m_diff_disp = "変わりません";
			}
		}
		//返済額(ボーナス分)
		if (payment_per_b_diff != "") {
			if (payment_per_b_diff > 0) {
				payment_per_b_diff_disp = addFigure(payment_per_b_diff) + "円" + "増えます";
			} else if (payment_per_b_diff < 0) {
				payment_per_b_diff_disp = addFigure(-payment_per_b_diff) + "円" + "減ります";
			} else {
				payment_per_b_diff_disp = "変わりません";
			}
		}
		//返済比率
		if (payment_ratio_diff != "") {
			if (payment_ratio_diff > 0) {
				payment_ratio_diff_disp = String(payment_ratio_diff) + "%" + "増えます";
			} else if (payment_ratio_diff < 0) {
				payment_ratio_diff_disp = String(-payment_ratio_diff) + "%" + "減ります";
			} else {
				payment_ratio_diff_disp = "変わりません";
			}
		}
		//総返済額
		if (payment_total_diff != "") {
			if (payment_total_diff > 0) {
				payment_total_diff_disp = addFigure(payment_total_diff) + "円" + "増えます";
			} else if (payment_total_diff < 0) {
				payment_total_diff_disp = addFigure(-payment_total_diff) + "円" + "減ります";
			} else {
				payment_total_diff_disp = "変わりません";
			}
		}
		
	} else {
		var arr_repayment_b = new Array();
		var arr_repayment_a = new Array();
		arr_repayment_b["debt"] = "-";																	//借入金
		arr_repayment_b["result"] = new Array();														//計算結果
		arr_repayment_a["debt"] = "-";																	//借入金
		arr_repayment_a["result"] = new Array();														//計算結果
		//空データを作成する
		var r = 0;
		while (r < 5) {
			arr_repayment_b["result"][r] = new Array();
			arr_repayment_b["result"][r]["years"] = "-";												//返済年数
			arr_repayment_b["result"][r]["payment_per_m"] = "-";										//返済額(毎月分)
			arr_repayment_b["result"][r]["payment_per_b"] = "-";										//返済額(ボーナス分)
			arr_repayment_b["result"][r]["payment_per_y"] = "-";										//返済額(年間)
			arr_repayment_b["result"][r]["payment_total"] = "-";										//返済額(総額)
			arr_repayment_b["result"][r]["payment_ratio"] = "-";										//返済比率
			
			arr_repayment_a["result"][r] = new Array();
			arr_repayment_a["result"][r]["years"] = "-";												//返済年数
			arr_repayment_a["result"][r]["payment_per_m"] = "-";										//返済額(毎月分)
			arr_repayment_a["result"][r]["payment_per_b"] = "-";										//返済額(ボーナス分)
			arr_repayment_a["result"][r]["payment_per_y"] = "-";										//返済額(年間)
			arr_repayment_a["result"][r]["payment_total"] = "-";										//返済額(総額)
			arr_repayment_a["result"][r]["payment_ratio"] = "-";										//返済比率
			r++;
		}
	}
	
	//計算結果を表示する
	document.getElementById("rv_payment_per_m_diff").childNodes[0].nodeValue = payment_per_m_diff_disp;										//返済額(毎月分)差分
	document.getElementById("rv_payment_per_b_diff").childNodes[0].nodeValue = payment_per_b_diff_disp;										//返済額(ボーナス分)差分
	document.getElementById("rv_g_payment_total_b").childNodes[0].nodeValue = payment_total_b_disp;											//借換えない場合の総返済金額の合計
	document.getElementById("rv_g_payment_total_a").childNodes[0].nodeValue = payment_total_a_disp;											//借換えた場合の総返済金額の合計
	document.getElementById("rv_payment_total_diff").childNodes[0].nodeValue = payment_total_diff_disp;										//総返済額差分
	document.getElementById("rv_payment_ratio_diff").childNodes[0].nodeValue = payment_ratio_diff_disp;										//返済比率差分
	document.getElementById("rv_years_b").childNodes[0].nodeValue = arr_repayment_b["result"][4]["years"];									//(借換えない)返済年数
	document.getElementById("rv_int_rat_b").childNodes[0].nodeValue = int_rat_b + "%";														//(借換えない)金利
	document.getElementById("rv_payment_per_m_b").childNodes[0].nodeValue = arr_repayment_b["result"][0]["payment_per_m"];					//(借換えない)返済額(毎月分)
	document.getElementById("rv_payment_per_b_b").childNodes[0].nodeValue = arr_repayment_b["result"][0]["payment_per_b"];					//(借換えない)返済額(ボーナス分)
	document.getElementById("rv_payment_per_y_b").childNodes[0].nodeValue = arr_repayment_b["result"][0]["payment_per_y"];					//(借換えない)返済額(年間)
	document.getElementById("rv_payment_total_b").childNodes[0].nodeValue = arr_repayment_b["result"][4]["payment_total"];					//(借換えない)返済額(総額)
	document.getElementById("rv_payment_ratio_b").childNodes[0].nodeValue = arr_repayment_b["result"][4]["payment_ratio"];					//(借換えない)返済比率
	document.getElementById("rv_years_a").childNodes[0].nodeValue = arr_repayment_a["result"][4]["years"];									//(借換えする)返済年数
	document.getElementById("rv_int_rat_a").childNodes[0].nodeValue = int_rat_a + "%";														//(借換えする)金利
	document.getElementById("rv_payment_per_m_a").childNodes[0].nodeValue = arr_repayment_a["result"][0]["payment_per_m"];					//(借換えする)返済額(毎月分)
	document.getElementById("rv_payment_per_b_a").childNodes[0].nodeValue = arr_repayment_a["result"][0]["payment_per_b"];					//(借換えする)返済額(ボーナス分)
	document.getElementById("rv_payment_per_y_a").childNodes[0].nodeValue = arr_repayment_a["result"][0]["payment_per_y"];					//(借換えする)返済額(年間)
	document.getElementById("rv_payment_total_a").childNodes[0].nodeValue = arr_repayment_a["result"][4]["payment_total"];					//(借換えする)返済額(総額)
	document.getElementById("rv_payment_ratio_a").childNodes[0].nodeValue = arr_repayment_a["result"][4]["payment_ratio"];					//(借換えする)返済比率
}

//入力された値をもとにローンの金額を計算する
function repayment_result_kuri(){
	//フォームに入力された値を取得する
	var mode = document.getElementById("mode").value;													//画面表示モード
	var ctype = GetRadioValue(document.getElementsByName("ctype"));										//計算方式
	var cway = GetRadioValue(document.getElementsByName("cway"));										//計算方法
	var adv_y_1 = document.getElementById("adv_y_1").value;												//繰上げ返済金(年)(1)
	var adv_m_1 = document.getElementById("adv_m_1").value;												//繰上げ返済金(月)(1)
	var adv_mo_1 = document.getElementById("adv_mo_1").value;											//繰上げ返済金(金額)(1)
	var adv_y_2 = document.getElementById("adv_y_2").value;												//繰上げ返済金(年)(2)
	var adv_m_2 = document.getElementById("adv_m_2").value;												//繰上げ返済金(月)(2)
	var adv_mo_2 = document.getElementById("adv_mo_2").value;											//繰上げ返済金(金額)(2)
	var adv_y_3 = document.getElementById("adv_y_3").value;												//繰上げ返済金(年)(3)
	var adv_m_3 = document.getElementById("adv_m_3").value;												//繰上げ返済金(月)(3)
	var adv_mo_3 = document.getElementById("adv_mo_3").value;											//繰上げ返済金(金額)(3)
	var adv_y_4 = document.getElementById("adv_y_4").value;												//繰上げ返済金(年)(4)
	var adv_m_4 = document.getElementById("adv_m_4").value;												//繰上げ返済金(月)(4)
	var adv_mo_4 = document.getElementById("adv_mo_4").value;											//繰上げ返済金(金額)(4)
	var debt = document.getElementById("debt").value;													//当初借入金額(万円)
	var int_ey1 = document.getElementById("int_ey1").value;												//返済金利(1)(終了年)
	var int_per1 = document.getElementById("int_per1").value;											//返済金利(1)(利率)
	var int_ey2 = document.getElementById("int_ey2").value;												//返済金利(2)(終了年)
	var int_per2 = document.getElementById("int_per2").value;											//返済金利(2)(利率)
	var int_ey3 = document.getElementById("int_ey3").value;												//返済金利(3)(終了年)
	var int_per3 = document.getElementById("int_per3").value;											//返済金利(3)(利率)
	var int_ey4 = document.getElementById("int_ey4").value;												//返済金利(4)(終了年)
	var int_per4 = document.getElementById("int_per4").value;											//返済金利(4)(利率)
	var bo_rat = document.getElementById("bo_rat").value;												//ボーナス比率
	var inc = document.getElementById("inc").value;														//現在の年収
	var ps_year = document.getElementById("ps_year").value;												//支払開始年月(年)
	var ps_month = document.getElementById("ps_month").value;											//支払開始年月(月)
	var bonus_month_1 = document.getElementById("bonus_month_1").value;									//ボーナス月(1)
	var bonus_month_2 = document.getElementById("bonus_month_2").value;									//ボーナス月(2)
	
	//念のためタグをhtmlエンティティに変換する処理をする
	mode = htmlspecialchars(mode);																		//画面表示モード
	ctype = htmlspecialchars(ctype);																	//計算方式
	cway = htmlspecialchars(cway);																		//計算方法
	adv_y_1 = htmlspecialchars(adv_y_1);																//繰上げ返済金(年)(1)
	adv_m_1 = htmlspecialchars(adv_m_1);																//繰上げ返済金(月)(1)
	adv_mo_1 = htmlspecialchars(adv_mo_1);																//繰上げ返済金(金額)(1)
	adv_y_2 = htmlspecialchars(adv_y_2);																//繰上げ返済金(年)(2)
	adv_m_2 = htmlspecialchars(adv_m_2);																//繰上げ返済金(月)(2)
	adv_mo_2 = htmlspecialchars(adv_mo_2);																//繰上げ返済金(金額)(2)
	adv_y_3 = htmlspecialchars(adv_y_3);																//繰上げ返済金(年)(3)
	adv_m_3 = htmlspecialchars(adv_m_3);																//繰上げ返済金(月)(3)
	adv_mo_3 = htmlspecialchars(adv_mo_3);																//繰上げ返済金(金額)(3)
	adv_y_4 = htmlspecialchars(adv_y_4);																//繰上げ返済金(年)(4)
	adv_m_4 = htmlspecialchars(adv_m_4);																//繰上げ返済金(月)(4)
	adv_mo_4 = htmlspecialchars(adv_mo_4);																//繰上げ返済金(金額)(4)
	debt = htmlspecialchars(debt);																		//当初借入金額(万円)
	int_ey1 = htmlspecialchars(int_ey1);																//返済金利(1)(終了年)
	int_per1 = htmlspecialchars(int_per1);																//返済金利(1)(利率)
	int_ey2 = htmlspecialchars(int_ey2);																//返済金利(2)(終了年)
	int_per2 = htmlspecialchars(int_per2);																//返済金利(2)(利率)
	int_ey3 = htmlspecialchars(int_ey3);																//返済金利(3)(終了年)
	int_per3 = htmlspecialchars(int_per3);																//返済金利(3)(利率)
	int_ey4 = htmlspecialchars(int_ey4);																//返済金利(4)(終了年)
	int_per4 = htmlspecialchars(int_per4);																//返済金利(4)(利率)
	bo_rat = htmlspecialchars(bo_rat);																	//ボーナス比率
	inc = htmlspecialchars(inc);																		//現在の年収
	ps_year = htmlspecialchars(ps_year);																//支払開始年月(年)
	
	
	//返済金利の終了年の翌年を次の返済金利の開始年にし、最後に入力されている返済金利の終了年をトータルの返済年数とする。
	var pay_years_max = -1;
	var int_sy1 = "1";																					//返済金利(1)(開始年)
	var int_sy2 = "";																					//返済金利(2)(開始年)
	var int_sy3 = "";																					//返済金利(3)(開始年)
	var int_sy4 = "";																					//返済金利(4)(開始年)
	var int_sy2_disp = " ";
	var int_sy3_disp = " ";
	var int_sy4_disp = " ";
	if (int_ey1 != "" && int_per1 != "") {
		var t_int_ey = int_ey1;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		var int_sy2 = t_int_ey + 1;
		var int_sy2_disp = String(int_sy2);
		pay_years_max = String(t_int_ey);
	}
	if (int_ey2 != "" && int_per2 != "") {
		var t_int_ey = int_ey2;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		var int_sy3 = t_int_ey + 1;
		var int_sy3_disp = String(int_sy3);
		pay_years_max = String(t_int_ey);
	}
	if (int_ey3 != "" && int_per3 != "") {
		var t_int_ey = int_ey3;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		var int_sy4 = t_int_ey + 1;
		var int_sy4_disp = String(int_sy4);
		pay_years_max = String(t_int_ey);
	}
	if (int_ey4 != "" && int_per4 != "") {
		var t_int_ey = int_ey4;
		
		//型を変換する
		t_int_ey = Number(t_int_ey);
		
		pay_years_max = String(t_int_ey);
	}
	if (pay_years_max < 0) {
		pay_years_max = "";
	}
	//返済金利開始年
	document.getElementById("int_sy1").value = int_sy1;
	document.getElementById("int_sy2").value = int_sy2;
	document.getElementById("int_sy3").value = int_sy3;
	document.getElementById("int_sy4").value = int_sy4;
	document.getElementById("int_sy2_disp").childNodes[0].nodeValue = int_sy2_disp;
	document.getElementById("int_sy3_disp").childNodes[0].nodeValue = int_sy3_disp;
	document.getElementById("int_sy4_disp").childNodes[0].nodeValue = int_sy4_disp;
	
	var pay_years = pay_years_max;																		//トータルの返済年数
	var pay_years_disp = String(pay_years);
	document.getElementById("pay_years").value = pay_years;
	document.getElementById("pay_years_disp").childNodes[0].nodeValue = pay_years_disp;
	
	
	//繰上げ返済金(月)(1)が省略されている場合は"0"とみなす
	if (adv_m_1 == "") adv_m_1 = "0";
	//繰上げ返済金(年)(2～4)が入力されていて繰上げ返済金(月)(2～4)が省略されている場合は"0"とみなす
	if (adv_y_2 != "" && adv_m_2 == "") adv_m_2 = "0";
	if (adv_y_3 != "" && adv_m_3 == "") adv_m_3 = "0";
	if (adv_y_4 != "" && adv_m_4 == "") adv_m_4 = "0";
	
	var payment_per_m_diff_disp = "-";																	//返済額(毎月分)(差額)
	var payment_per_b_diff_disp = "-";																	//返済額(ボーナス分)(差額)
	var payment_per_y_diff_disp = "-";																	//返済額(年間)(差額)
	var payment_total_diff_disp = "-";																	//返済額(総額)(差額)
	var payment_total_exc_adv_diff_disp = "-";															//繰上げ返済金を差し引いた差額
	var rv_passage = "-年 -ヶ月経過後";																	//○○年○○ヶ月経過後
	var years_b_disp = "-";																				//返済年数(繰上げない)
	var years_a_disp = "-";																				//返済年数(繰上げする)
	var years_diff_disp = "-";																			//返済年数(差額)
	
	//計算に必要な項目が入力されているかどうか
	//繰上げ返済金(年)(1)、繰上げ返済金(月)(1)、繰上げ返済金(金額)(1)、当初借入金額(万円)、当初の返済年数、返済金利(1)(開始年)、返済金利(1)(終了年)、返済金利(1)(利率)は必須
	//ボーナス月はそれぞれ違う月を選択する
	if (adv_y_1 != "" && adv_m_1 != "" && adv_mo_1 != "" && debt != "" && pay_years != "" && int_sy1 != "" && int_ey1 != "" && int_per1 != "" && bonus_month_1 != bonus_month_2) {
		//データ処理
		//単位を「万円」から「円」にする
		//繰上げ返済金(金額)(1)
		var adv_mo_1_conv = "";
		if (adv_mo_1 != "") {
			adv_mo_1_conv = parseInt(adv_mo_1) * 10000;
		}
		//繰上げ返済金(金額)(2)
		var adv_mo_2_conv = "";
		if (adv_mo_2 != "") {
			adv_mo_2_conv = parseInt(adv_mo_2) * 10000;
		}
		//繰上げ返済金(金額)(3)
		var adv_mo_3_conv = "";
		if (adv_mo_3 != "") {
			adv_mo_3_conv = parseInt(adv_mo_3) * 10000;
		}
		//繰上げ返済金(金額)(4)
		var adv_mo_4_conv = "";
		if (adv_mo_4 != "") {
			adv_mo_4_conv = parseInt(adv_mo_4) * 10000;
		}
		//当初借入金額(万円)
		var debt_conv = "";
		if (debt != "") {
			debt_conv = parseInt(debt) * 10000;
		}
		//現在の年収
		var inc_conv = "";
		if (inc != "") {
			inc_conv = parseInt(inc) * 10000;
		}
		
		
		//ボーナス返済分の金額を計算する
		//繰上げ前
		var bo_pay_b_conv = "";
		if (debt_conv != "" && bo_rat != "") {
			bo_pay_b_conv = Math.round(debt_conv * (bo_rat / 100));
		}
		
		//返済金利が最大4回変化する
		//開始年、終了年、利率を配列にまとめる
		var arr_interest = new Array();
		var i = 0;
		if (int_per1 != "") {
			var t_int_sy = int_sy1;
			var t_int_ey = int_ey1;
			var t_int_per = int_per1;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		if (int_per2 != "") {
			var t_int_sy = int_sy2;
			var t_int_ey = int_ey2;
			var t_int_per = int_per2;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		if (int_per3 != "") {
			var t_int_sy = int_sy3;
			var t_int_ey = int_ey3;
			var t_int_per = int_per3;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		if (int_per4 != "") {
			var t_int_sy = int_sy4;
			var t_int_ey = int_ey4;
			var t_int_per = int_per4;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;																//開始年
			arr_interest[i]["ey"] = t_int_ey;																//終了年
			arr_interest[i]["per"] = t_int_per;																//利率
			i++;
		}
		
		
		//繰上げ前の金額を計算する
		var arr_repayment_b = calc_repayment_fund(ctype, debt_conv, bo_pay_b_conv, arr_interest, pay_years, inc_conv, 
												  ps_year, ps_month, bonus_month_1, bonus_month_2);
		
		var payment_per_m_b = arr_repayment_b["num"]["payment_per_m"];									//返済額(毎月分)
		var payment_per_b_b = arr_repayment_b["num"]["payment_per_b"];									//返済額(ボーナス分)
		var payment_total_b = arr_repayment_b["num"]["g_payment_total"];								//既払額の総額
		var years_b = Number(pay_years) * 12;															//返済年数(月数)
		
		//繰上げ前の返済年数(表示用)
		//計算方法によって処理を分ける
		switch (cway) {
			//期間短縮
			case "1":
				var t_years_y = String(Math.floor(years_b / 12));
				var t_years_m = String(years_b % 12);
				years_b_disp = t_years_y + "年" + t_years_m + "ヶ月";
				
				break;
		}
		
		//返済額(年間)を計算する
		var payment_per_y_b = payment_per_m_b * 12 + payment_per_b_b * 2;
		
		
		//繰上げ返済が最大4回ある
		//経過月数、金額を配列にまとめる
		var arr_advanced = new Array();
		i = 0;
		if (adv_mo_1_conv != "") {
			var t_adv_y = adv_y_1;
			var t_adv_m = adv_m_1;
			var t_adv_mo = adv_mo_1_conv;
			
			//型を変換する
			t_adv_y = Number(t_adv_y);
			t_adv_m = Number(t_adv_m);
			t_adv_mo = Number(t_adv_mo);
			
			arr_advanced[i] = new Array();
			arr_advanced[i]["ay"] = t_adv_y;															//経過年
			arr_advanced[i]["am"] = t_adv_m;															//経過月
			arr_advanced[i]["mo"] = t_adv_mo;															//金額
			i++;
		}
		if (adv_mo_2_conv != "") {
			var t_adv_y = adv_y_2;
			var t_adv_m = adv_m_2;
			var t_adv_mo = adv_mo_2_conv;
			
			//型を変換する
			t_adv_y = Number(t_adv_y);
			t_adv_m = Number(t_adv_m);
			t_adv_mo = Number(t_adv_mo);
			
			arr_advanced[i] = new Array();
			arr_advanced[i]["ay"] = t_adv_y;															//経過年
			arr_advanced[i]["am"] = t_adv_m;															//経過月
			arr_advanced[i]["mo"] = t_adv_mo;															//金額
			i++;
		}
		if (adv_mo_3_conv != "") {
			var t_adv_y = adv_y_3;
			var t_adv_m = adv_m_3;
			var t_adv_mo = adv_mo_3_conv;
			
			//型を変換する
			t_adv_y = Number(t_adv_y);
			t_adv_m = Number(t_adv_m);
			t_adv_mo = Number(t_adv_mo);
			
			arr_advanced[i] = new Array();
			arr_advanced[i]["ay"] = t_adv_y;															//経過年
			arr_advanced[i]["am"] = t_adv_m;															//経過月
			arr_advanced[i]["mo"] = t_adv_mo;															//金額
			i++;
		}
		if (adv_mo_4_conv != "") {
			var t_adv_y = adv_y_4;
			var t_adv_m = adv_m_4;
			var t_adv_mo = adv_mo_4_conv;
			
			//型を変換する
			t_adv_y = Number(t_adv_y);
			t_adv_m = Number(t_adv_m);
			t_adv_mo = Number(t_adv_mo);
			
			arr_advanced[i] = new Array();
			arr_advanced[i]["ay"] = t_adv_y;															//経過年
			arr_advanced[i]["am"] = t_adv_m;															//経過月
			arr_advanced[i]["mo"] = t_adv_mo;															//金額
			i++;
		}
		
		
		//繰上げ後の金額を計算する
		var arr_repayment_a = calc_repayment_advanced(ctype, cway, debt_conv, arr_advanced, arr_interest, pay_years, bo_rat, inc_conv, 
													  ps_year, ps_month, bonus_month_1, bonus_month_2);
		
		var payment_per_m_a = arr_repayment_a["num"]["payment_per_m"];									//最終回時点の返済額(毎月分)
		var payment_per_b_a = arr_repayment_a["num"]["payment_per_b"];									//最終回時点の返済額(ボーナス分)
		var payment_total_a = arr_repayment_a["num"]["g_payment_total"];								//既払額の総額
		var payment_total_sho_a = arr_repayment_a["num"]["payment_total_sho"];							//繰上げ返済額合計
		var years_a = Number(pay_years) * 12 - arr_repayment_a["num"]["pay_times_m_sho"];				//返済年数(月数)
		
		//繰上げ後の返済年数(表示用)
		//計算方法によって処理を分ける
		switch (cway) {
			//期間短縮
			case "1":
				var t_years_y = String(Math.floor(years_a / 12));
				var t_years_m = String(years_a % 12);
				years_a_disp = t_years_y + "年" + t_years_m + "ヶ月";
				
				break;
		}
		
		//返済額(年間)を計算する
		var payment_per_y_a = payment_per_m_a * 12 + payment_per_b_a * 2;
		
		
		//データ処理
		//繰上げの比較
		var payment_per_m_diff = "";																	//返済額(毎月分)(差額)
		var payment_per_b_diff = "";																	//返済額(ボーナス分)(差額)
		var payment_per_y_diff = "";																	//返済額(年間)(差額)
		var payment_total_diff = "";																	//返済額(総額)(差額)
		var payment_total_exc_adv_diff = "";															//繰上げ返済金を差し引いた差額
		var years_diff = "";																			//返済年数(差額)
		//計算方法によって処理を分ける
		switch (cway) {
			//期間短縮
			case "1":
				//返済年数
				if (years_b != "" && years_a != "") {
					years_diff = years_b - years_a;
				}
				
				break;
			//支払額減額
			case "2":
				//計算方式が「元利金等方式」のとき
				if (ctype == "1") {
					//返済額(毎月分)
					if (payment_per_m_b != "" && payment_per_m_a != "") {
						payment_per_m_diff = payment_per_m_b - payment_per_m_a;
					}
					//返済額(ボーナス分)
					if (payment_per_b_b != "" && payment_per_b_a != "") {
						payment_per_b_diff = payment_per_b_b - payment_per_b_a;
					}
					//返済額(年間)
					if (payment_per_y_b != "" && payment_per_y_a != "") {
						payment_per_y_diff = payment_per_y_b - payment_per_y_a;
					}
				}
				
				break;
		}
		//返済額(総額)
		if (payment_total_b != "" && payment_total_a != "") {
			payment_total_diff = payment_total_b - payment_total_a;
		}
		//繰上げ返済金を差し引いた差額
		if (payment_total_diff != "" && payment_total_sho_a != "") {
			payment_total_exc_adv_diff = payment_total_diff - payment_total_sho_a;
		}
		
		//表示用に加工する
		//計算方法によって処理を分ける
		switch (cway) {
			//期間短縮
			case "1":
				//返済年数(差額)
				if (years_diff != "") {
					var t_years_y = String(Math.floor(years_diff / 12));
					var t_years_m = String(years_diff % 12);
					years_diff_disp = t_years_y + "年" + t_years_m + "ヶ月";
				}
				
				break;
			//支払額減額
			case "2":
				//返済額(毎月分)(差額)
				if (payment_per_m_diff != "") {
					payment_per_m_diff_disp = addFigure(payment_per_m_diff);
				}
				//返済額(ボーナス分)(差額)
				if (payment_per_b_diff != "") {
					payment_per_b_diff_disp = addFigure(payment_per_b_diff);
				}
				//返済額(年間)(差額)
				if (payment_per_y_diff != "") {
					payment_per_y_diff_disp = addFigure(payment_per_y_diff);
				}
				
				break;
		}
		//返済額(総額)(差額)
		if (payment_total_diff != "") {
			payment_total_diff_disp = addFigure(payment_total_diff);
		}
		//繰上げ返済金を差し引いた差額
		if (payment_total_exc_adv_diff != "") {
			payment_total_exc_adv_diff_disp = addFigure(payment_total_exc_adv_diff);
		}
		
		//○○年○○ヶ月経過後
		rv_passage = String(adv_y_1) + "年 " + String(adv_m_1) + "ヶ月経過後";
		
	} else {
		var arr_repayment_b = new Array();
		arr_repayment_b["result"] = new Array();														//計算結果
		var arr_repayment_a = new Array();
		arr_repayment_a["result"] = new Array();														//計算結果
		//空データを作成する
		var r = 0;
		while (r < 5) {
			arr_repayment_b["result"][r] = new Array();
			arr_repayment_b["result"][r]["years"] = "-";												//返済年数
			arr_repayment_b["result"][r]["payment_per_m"] = "-";										//返済額(毎月分)
			arr_repayment_b["result"][r]["payment_per_b"] = "-";										//返済額(ボーナス分)
			arr_repayment_b["result"][r]["payment_per_y"] = "-";										//返済額(年間)
			arr_repayment_b["result"][r]["payment_total"] = "-";										//返済額(総額)
			arr_repayment_b["result"][r]["payment_ratio"] = "-";										//返済比率
			r++;
		}
		
		arr_repayment_a["result_b"] = new Array();
		arr_repayment_a["result_b"]["balance"] = "-";													//借入金残高
		arr_repayment_a["result_b"]["payment_per_m"] = "-";												//返済額(毎月分)
		arr_repayment_a["result_b"]["payment_per_b"] = "-";												//返済額(ボーナス分)
		arr_repayment_a["result_b"]["payment_per_y"] = "-";												//返済額(年間)
		arr_repayment_a["result_b"]["payment_total"] = "-";												//返済額(総額)
		arr_repayment_a["result_b"]["payment_ratio"] = "-";												//返済比率
		var r = 0;
		while (r < 4) {
			arr_repayment_a["result"][r] = new Array();
			arr_repayment_a["result"][r]["balance"] = "-";												//借入金残高
			arr_repayment_a["result"][r]["payment_per_m"] = "-";										//返済額(毎月分)
			arr_repayment_a["result"][r]["payment_per_b"] = "-";										//返済額(ボーナス分)
			arr_repayment_a["result"][r]["payment_per_y"] = "-";										//返済額(年間)
			arr_repayment_a["result"][r]["payment_total"] = "-";										//返済額(総額)
			arr_repayment_a["result"][r]["payment_ratio"] = "-";										//返済比率
			r++;
		}
	}
	
	//「○○年○○ヶ月経過後」の部分を表示する
	document.getElementById("rv_passage").childNodes[0].nodeValue = rv_passage;							//○○年○○ヶ月経過後
	
	//タイトル行の表示を変更する
	document.getElementById("rv_years_title_1").childNodes[0].nodeValue = "-";							//返済年数
	document.getElementById("rv_years_title_2").childNodes[0].nodeValue = " ";
	document.getElementById("rv_years_title_3").childNodes[0].nodeValue = " ";
	//計算方法によって処理を分ける
	switch (cway) {
		//期間短縮
		case "1":
			document.getElementById("rv_years_title_1").childNodes[0].nodeValue = "返済";			//返済年数
			document.getElementById("rv_years_title_2").childNodes[0].nodeValue = "年数";
			document.getElementById("rv_years_title_3").childNodes[0].nodeValue = "(年)";
			
			break;
	}
	
	var arr_repayment_result;
	
	arr_repayment_result = new Array();
	arr_repayment_result = arr_repayment_a["result_b"];
	
	//繰り上げない場合のデータを表示する
	var arr_repayment_result_row = arr_repayment_result;
	document.getElementById("rv_balance_b").childNodes[0].nodeValue = arr_repayment_result_row["balance"];				//借入金残高
	document.getElementById("rv_years_b").childNodes[0].nodeValue = years_b_disp;										//返済年数
	document.getElementById("rv_payment_per_m_b").childNodes[0].nodeValue = arr_repayment_result_row["payment_per_m"];	//返済額(毎月分)
	document.getElementById("rv_payment_per_b_b").childNodes[0].nodeValue = arr_repayment_result_row["payment_per_b"];	//返済額(ボーナス分)
	document.getElementById("rv_payment_per_y_b").childNodes[0].nodeValue = arr_repayment_result_row["payment_per_y"];	//返済額(年間)
	document.getElementById("rv_payment_total_b").childNodes[0].nodeValue = arr_repayment_b["result"][4]["payment_total"];	//返済額(総額)
	document.getElementById("rv_payment_ratio_b").childNodes[0].nodeValue = arr_repayment_b["result"][4]["payment_ratio"];	//返済比率
	
	arr_repayment_result = new Array();
	arr_repayment_result = arr_repayment_a["result"];
	
	//配列の最後の行まで繰り返す
	for (i = 0; i < arr_repayment_result.length; i++) {
		var arr_repayment_result_row = arr_repayment_result[i];
		document.getElementById("rv_balance_a_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["balance"];				//借入金残高
		document.getElementById("rv_payment_per_m_a_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_per_m"];	//返済額(毎月分)
		document.getElementById("rv_payment_per_b_a_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_per_b"];	//返済額(ボーナス分)
		document.getElementById("rv_payment_per_y_a_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_per_y"];	//返済額(年間)
		document.getElementById("rv_payment_total_a_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_total"];	//返済額(総額)
		document.getElementById("rv_payment_ratio_a_" + String(i + 1)).childNodes[0].nodeValue = arr_repayment_result_row["payment_ratio"];	//返済比率
	}
	//繰上げ後の返済年数を表示する
	document.getElementById("rv_years_a").childNodes[0].nodeValue = years_a_disp;														//返済年数
	
	//差額の行を表示する
	document.getElementById("rv_payment_per_m_diff").childNodes[0].nodeValue = payment_per_m_diff_disp;						//返済額(毎月分)(差額)
	document.getElementById("rv_payment_per_b_diff").childNodes[0].nodeValue = payment_per_b_diff_disp;						//返済額(ボーナス分)(差額)
	document.getElementById("rv_payment_per_y_diff").childNodes[0].nodeValue = payment_per_y_diff_disp;						//返済額(年間)(差額)
	document.getElementById("rv_payment_total_diff").childNodes[0].nodeValue = payment_total_diff_disp;						//返済額(総額)(差額)
	document.getElementById("rv_payment_total_exc_adv_diff").childNodes[0].nodeValue = payment_total_exc_adv_diff_disp;		//繰上げ返済金を差し引いた差額
	document.getElementById("rv_years_diff").childNodes[0].nodeValue = years_diff_disp;										//返済年数
}

//入力内容をクリアする
function clear_form_henkin(){
	document.getElementById("ctype_1").checked = true;													//計算方式
	document.getElementById("ctype_2").checked = false;													//計算方式
	document.getElementById("debt").value = "";															//借入金
	document.getElementById("debt_exc_bonus").value = "";												//毎月分
	document.getElementById("bo_pay").value = "";														//ボーナス返済分
	document.getElementById("int_ey1").value = "";														//返済金利(1)(終了年)
	document.getElementById("int_per1").value = "";														//返済金利(1)(利率)
	document.getElementById("int_ey2").value = "";														//返済金利(2)(終了年)
	document.getElementById("int_per2").value = "";														//返済金利(2)(利率)
	document.getElementById("int_ey3").value = "";														//返済金利(3)(終了年)
	document.getElementById("int_per3").value = "";														//返済金利(3)(利率)
	document.getElementById("int_ey4").value = "";														//返済金利(4)(終了年)
	document.getElementById("int_per4").value = "";														//返済金利(4)(利率)
	document.getElementById("inc").value = "";															//現在の年収
	repayment_result_henkin();
}

//入力内容をクリアする
function clear_form_henhi(){
	document.getElementById("ctype_1").checked = true;													//計算方式
	document.getElementById("ctype_2").checked = false;													//計算方式
	document.getElementById("debt").value = "";															//借入金
	document.getElementById("bo_rat").value = "";														//ボーナス比率
	document.getElementById("int_ey1").value = "";														//返済金利(1)(終了年)
	document.getElementById("int_per1").value = "";														//返済金利(1)(利率)
	document.getElementById("int_ey2").value = "";														//返済金利(2)(終了年)
	document.getElementById("int_per2").value = "";														//返済金利(2)(利率)
	document.getElementById("int_ey3").value = "";														//返済金利(3)(終了年)
	document.getElementById("int_per3").value = "";														//返済金利(3)(利率)
	document.getElementById("int_ey4").value = "";														//返済金利(4)(終了年)
	document.getElementById("int_per4").value = "";														//返済金利(4)(利率)
	document.getElementById("inc").value = "";															//現在の年収
	repayment_result_henhi();
}

//入力内容をクリアする
function clear_form_kari(){
	document.getElementById("ctype_1").checked = true;													//計算方式
	document.getElementById("ctype_2").checked = false;													//計算方式
	document.getElementById("debt").value = "";															//当初借入金額
	document.getElementById("pas_y").value = "";														//返済開始からの経過年月(年)
	document.getElementById("pas_m").value = "";														//返済開始からの経過年月(月)
	document.getElementById("inc").value = "";															//現在の年収
	document.getElementById("int_rat_b").value = "";													//返済金利(現在のローン)
	document.getElementById("int_rat_a").value = "";													//返済金利(借換えプラン)
	document.getElementById("years_b").value = "";														//返済年数(現在のローン)
	document.getElementById("years_a").value = "";														//返済年数(借換えプラン)
	document.getElementById("bo_rat_b").value = "";														//ボーナス比率(現在のローン)
	document.getElementById("bo_rat_a").value = "";														//ボーナス比率(借換えプラン)
	repayment_result_kari();
}

//入力内容をクリアする
function clear_form_kuri(){
	document.getElementById("ctype_1").checked = true;													//計算方式
	document.getElementById("ctype_2").checked = false;													//計算方式
	document.getElementById("cway_1").checked = true;													//計算方法
	document.getElementById("cway_2").checked = false;													//計算方法
	document.getElementById("adv_y_1").value = "";														//繰上げ返済金(年)(1)
	document.getElementById("adv_m_1").value = "";														//繰上げ返済金(月)(1)
	document.getElementById("adv_mo_1").value = "";														//繰上げ返済金(金額)(1)
	document.getElementById("adv_y_2").value = "";														//繰上げ返済金(年)(2)
	document.getElementById("adv_m_2").value = "";														//繰上げ返済金(月)(2)
	document.getElementById("adv_mo_2").value = "";														//繰上げ返済金(金額)(2)
	document.getElementById("adv_y_3").value = "";														//繰上げ返済金(年)(3)
	document.getElementById("adv_m_3").value = "";														//繰上げ返済金(月)(3)
	document.getElementById("adv_mo_3").value = "";														//繰上げ返済金(金額)(3)
	document.getElementById("adv_y_4").value = "";														//繰上げ返済金(年)(4)
	document.getElementById("adv_m_4").value = "";														//繰上げ返済金(月)(4)
	document.getElementById("adv_mo_4").value = "";														//繰上げ返済金(金額)(4)
	document.getElementById("debt").value = "";															//当初借入金額(万円)
	document.getElementById("int_ey1").value = "";														//返済金利(1)(終了年)
	document.getElementById("int_per1").value = "";														//返済金利(1)(利率)
	document.getElementById("int_ey2").value = "";														//返済金利(2)(終了年)
	document.getElementById("int_per2").value = "";														//返済金利(2)(利率)
	document.getElementById("int_ey3").value = "";														//返済金利(3)(終了年)
	document.getElementById("int_per3").value = "";														//返済金利(3)(利率)
	document.getElementById("int_ey4").value = "";														//返済金利(4)(終了年)
	document.getElementById("int_per4").value = "";														//返済金利(4)(利率)
	document.getElementById("bo_rat").value = "";														//ボーナス比率
	document.getElementById("inc").value = "";															//現在の年収
	repayment_result_kuri();
}

//入力された値をもとにローンの金額を計算する
//引数: 計算方式, 借入金, ボーナス返済額, ローン利率(開始年、終了年、利率)[配列], 返済年数, 現在の年収, 
//      支払開始年月(年), 支払開始年月(月), ボーナス月(1), ボーナス月(2)
function calc_repayment_fund(ctype, debt, bo_pay, arr_interest, pay_years, inc, 
							 ps_year, ps_month, bonus_month_1, bonus_month_2){
	var arr_repayment = new Array();
	arr_repayment["debt"] = addFigure((debt / 10000));													//借入金
	arr_repayment["result"] = new Array();																//計算結果
	arr_repayment["num"] = new Array();																	//表示形式加工前の値
	arr_repayment["num"]["payment_per_m"] = "";															//返済額(毎月分)（表示形式加工前）
	arr_repayment["num"]["payment_per_b"] = "";															//返済額(ボーナス分)（表示形式加工前）
	arr_repayment["num"]["payment_ratio"] = "";															//返済比率（表示形式加工前）
	arr_repayment["num"]["g_payment_total"] = "";														//既払額の総額（表示形式加工前）
	
	//ボーナス返済分総額を除いた返済総額を計算する
	var debt_exc_bonus = debt - bo_pay;
	
	//毎月の返済
	//返済回数を求める
	var pay_times_m = pay_years * 12;
	
	//ボーナスの返済
	//返済回数を求める
	var pay_times_b = pay_years * 2;
	
	//借入金残高
	var balance_m = debt_exc_bonus;																		//毎月分
	var balance_b = bo_pay;																				//ボーナス分
	
	var payment_ratio = "";																				//返済比率
	
	
	//計算方式が「元金均等方式」の場合
	if (ctype == "2") {
		//毎回の元金は均等になるので、1回あたりの元金を計算する（端数四捨五入）
		//ボーナス分
		var pri_per_b = Math.round(bo_pay / pay_times_b);
	}
	
	
	//現在処理中の年月
	var t_year = Number(ps_year);
	var t_month = Number(ps_month);
	
	//ボーナス月を数値化
	bonus_month_1 = Number(bonus_month_1);
	bonus_month_2 = Number(bonus_month_2);
	
	var bonus_interval_1;
	var bonus_interval_2;
	
	//ボーナス返済開始までの月数とボーナス返済月の間隔
	var blank_m_b = 0;
	//返済開始月がボーナス月と一致する場合
	if (t_month == bonus_month_1 || t_month == bonus_month_2) {
		blank_m_b = 0;
		//返済開始月がボーナス月の早い方と一致する場合
		if (t_month == Math.min(bonus_month_1, bonus_month_2)) {
			//ボーナス返済月の間隔
			bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
			bonus_interval_2 = 12 - bonus_interval_1;
		} else {
			//ボーナス返済月の間隔
			bonus_interval_2 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
			bonus_interval_1 = 12 - bonus_interval_2;
		}
	//返済開始月がボーナス月の早い方よりも早い場合
	} else if (t_month < Math.min(bonus_month_1, bonus_month_2)) {
		blank_m_b = Math.min(bonus_month_1, bonus_month_2) - t_month;
		//ボーナス返済月の間隔
		bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
		bonus_interval_2 = 12 - bonus_interval_1;
	//返済開始月がボーナス月の遅い方よりも早い場合
	} else if (t_month < Math.max(bonus_month_1, bonus_month_2)) {
		blank_m_b = Math.max(bonus_month_1, bonus_month_2) - t_month;
		//ボーナス返済月の間隔
		bonus_interval_2 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
		bonus_interval_1 = 12 - bonus_interval_2;
	//返済開始月がボーナス月の遅い方よりも遅い場合
	} else {
		blank_m_b = Math.min(bonus_month_1, bonus_month_2) - (t_month - 12);
		//ボーナス返済月の間隔
		bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
		bonus_interval_2 = 12 - bonus_interval_1;
	}
	blank_m_b++;
	
	
	//前回のボーナス月からの経過月数
	var smp_b = 0;
	
	var before_intrate_b = 0;																			//利率が変わる直前までの金利相当額(ボーナス分)
	
	var b_int_per_calc_m = 0;																			//利率が変わる直前の1ヶ月あたりの利率
	var b_smp_b = 0;																					//利率が変わる直前までのボーナス月からの経過月数
	
	
	var r = 0;
	var g_payment_total = 0;																			//既払額の総額
	//入力されたローン利率の分だけ繰り返す
	for (var inr = 0; inr < arr_interest.length; inr++) {
		var t_int_sy = arr_interest[inr]["sy"];															//開始年
		var t_int_ey = arr_interest[inr]["ey"];															//終了年
		var t_int_per = arr_interest[inr]["per"];														//利率
		
		//返済年数を求める
		var t_pay_years = t_int_ey - t_int_sy + 1;
		
		//ローン利率を100で割る
		var int_per_calc_y = t_int_per / 100;
		
		//毎月の返済
		//返済1回あたりの利率を求める
		var int_per_calc_m = int_per_calc_y / 12;
		
		//計算開始回数、計算終了回数を求める
		var pay_s_times_m = (t_int_sy - 1) * 12 + 1;
		var pay_e_times_m = t_int_ey * 12;
		
		//残りの返済回数を求める
		var t_pay_times_m = (pay_times_m - (pay_s_times_m - 1));
		
		//この利率での残りの返済回数を求める
		var this_pay_times_m = pay_e_times_m - pay_s_times_m + 1;
		
		//ボーナスの返済
		//返済1回あたりの利率を求める
		var int_per_calc_b = int_per_calc_y / 2;
		
		//計算開始回数、計算終了回数を求める
		var pay_s_times_b = (t_int_sy - 1) * 2 + 1;
		var pay_e_times_b = t_int_ey * 2;
		
		//残りの返済回数を求める
		var t_pay_times_b = (pay_times_b - (pay_s_times_b - 1));
		
		//この利率での残りの返済回数を求める
		var this_pay_times_b = pay_e_times_b - pay_s_times_b + 1;
		
		//計算方式によって処理を分ける
		switch (ctype) {
			//元利均等方式
			case "1":
				//毎月の返済
				//毎回の返済額を計算する
				//式: (借入金額（毎月分） × 利率 × Math.pow((1 + 利率), 返済回数)) ÷ (Math.pow((1 + 利率), 返済回数) - 1)
				var payment_per_m = Math.round((balance_m * int_per_calc_m * Math.pow((1 + int_per_calc_m), t_pay_times_m)) / (Math.pow((1 + int_per_calc_m), t_pay_times_m) - 1));
				
				//ボーナスの返済
				//毎回の返済額を計算する
				var value_1 = 1 / ((1 + bonus_interval_1 * int_per_calc_m) * (1 + bonus_interval_2 * int_per_calc_m));
				var value_2 = 1 / ((1 + blank_m_b * int_per_calc_m) * (1 + b_smp_b * b_int_per_calc_m));
				var value_3 = 1 / (((1 + blank_m_b * int_per_calc_m) * (1 + b_smp_b * b_int_per_calc_m)) * (1 + bonus_interval_1 * int_per_calc_m));
				var value_4 = (1 - Math.pow(value_1, (t_pay_times_b / 2))) / (1 - value_1);
				var value_5 = (1 - Math.pow(value_1, (t_pay_times_b / 2))) / (1 - value_1);
				var payment_per_b = Math.round(balance_b / (value_2 * value_4 + value_3 * value_5));
				
				//この利率の最終回時点での借受残元金を計算する
				//式: (毎回の返済額 × {Math.pow((1 + 利率), (返済回数 - n)) - 1}) ÷ (利率 × Math.pow((1 + 利率), (返済回数 - n)))
				//毎月分
				balance_m = Math.round((payment_per_m * (Math.pow((1 + int_per_calc_m), (t_pay_times_m - this_pay_times_m)) - 1)) / (int_per_calc_m * Math.pow((1 + int_per_calc_m), (t_pay_times_m - this_pay_times_m))));
				
				//ボーナス分
				//毎月の返済回数の分だけ繰り返す
				var b = 0;
				var balance_b_rem = balance_b;															//借受残元金
				for (i = 0; i < pay_e_times_m - pay_s_times_m + 1; i++) {
					var gb = (pay_s_times_b - 1) + b;
					
					//前回のボーナス月からの経過月数
					smp_b++;
					
					//ボーナス月の処理
					if (t_month == bonus_month_1 || t_month == bonus_month_2) {
						//（ボーナス部分の）今回の金利相当額を計算する
						//式: (前回返済時点の借受残元金 × (1ヶ月あたりの利率 × 前回のボーナス月からの経過月数))
						var t_intrate_b = Math.floor(balance_b_rem * (int_per_calc_m * smp_b));
						
						//もし利率が変わっている場合は変更前の金利相当額を加算する
						t_intrate_b += before_intrate_b;
						before_intrate_b = 0;
						
						//（ボーナス部分の）今回の元金相当額を計算する
						//式: 今回の返済額 - 今回の金利相当額
						var t_balance_b = payment_per_b - t_intrate_b;
						
						//（ボーナス部分の）各回の借受残元金を計算する
						balance_b_rem -= t_balance_b;
						//借受残元金が0未満またはボーナス払いの最終回の場合は借受残元金を0にする
						if (balance_b_rem < 0 || pay_times_b <= gb + 1) {
							balance_b_rem = 0;
						}
						
						//前回のボーナス月からの経過月数
						smp_b = 0;
						
						b++;
					}
					
					//次の年月
					t_month++;
					//年が変わる
					if (t_month > 12) {
						t_year++;
						t_month -= 12;
					}
				}
				
				
				//年間返済額を計算する
				var payment_per_y = payment_per_m * 12 + payment_per_b * 2;
				
				//この利率での返済額(総額)を計算する
				var payment_total = payment_per_y * t_pay_years;
				
				//既払額の総額を計算する
				g_payment_total += payment_total;
				
				//現在の年収が入力されている場合
				if (inc != "") {
					//返済比率を計算する
					payment_ratio = Math.round(payment_per_y / inc * 100 * 100) / 100;
				} else {
					payment_ratio = "";
				}
				
				
				//表示形式に加工する
				var years_disp = String(t_int_sy) + "～" + String(t_int_ey);							//返済年数
				var payment_per_m_disp = "-";
				if (payment_per_m > 0) {
					payment_per_m_disp = addFigure(payment_per_m);										//返済額(毎月分)
				}
				var payment_per_b_disp = "-";
				if (payment_per_b > 0) {
					payment_per_b_disp = addFigure(payment_per_b);										//返済額(ボーナス分)
				}
				var payment_per_y_disp = "-";
				if (payment_per_y > 0) {
					payment_per_y_disp = addFigure(payment_per_y);										//返済額(年間)
				}
				var payment_total_disp = "-";
				if (payment_total > 0) {
					payment_total_disp = addFigure(payment_total);										//返済額(総額)
				}
				var payment_ratio_disp = "-";
				if (payment_ratio != "") {
					if (payment_ratio > 0) {
						payment_ratio_disp = String(payment_ratio) + "%";									//返済比率
					}
				}
				
				//計算結果
				arr_repayment["result"][r] = new Array();
				arr_repayment["result"][r]["years"] = years_disp;										//返済年数
				arr_repayment["result"][r]["payment_per_m"] = payment_per_m_disp;						//返済額(毎月分)
				arr_repayment["result"][r]["payment_per_b"] = payment_per_b_disp;						//返済額(ボーナス分)
				arr_repayment["result"][r]["payment_per_y"] = payment_per_y_disp;						//返済額(年間)
				arr_repayment["result"][r]["payment_total"] = payment_total_disp;						//返済額(総額)
				arr_repayment["result"][r]["payment_ratio"] = payment_ratio_disp;						//返済比率
				
				break;
			//元金均等方式
			case "2":
				//毎月の返済回数の分だけ繰り返す
				var b = 0;
				var balance_b_rem = balance_b;															//借受残元金
				var payment_total_m = 0;																//既払額(毎月分)
				var payment_total_b = 0;																//既払額(ボーナス分)
				for (var ii = 0; ii < pay_e_times_m - pay_s_times_m + 1; ii++) {
					var gi = (pay_s_times_m - 1) + ii;
					var gb = (pay_s_times_b - 1) + b;
					
					//前回のボーナス月からの経過月数
					smp_b++;
					
					//毎月の返済
					//毎回の返済額を計算する
					//式: (借入金額（毎月分） ÷ 返済回数) × {1 + (返済回数 - 計算対象の回数 + 1) × 利率}
					var payment_per_m = Math.round((debt_exc_bonus / pay_times_m) * (1 + (pay_times_m - (gi + 1) + 1) * int_per_calc_m));
					
					//既払額を計算する
					payment_total_m += payment_per_m;
					
					//ボーナス月の処理
					if (t_month == bonus_month_1 || t_month == bonus_month_2) {
						//ボーナスの返済
						//（ボーナス部分の）今回の金利相当額を計算する
						//式: (借受残元金(ボーナス分) × (1ヶ月あたりの利率 × 前回のボーナス月からの経過月数))
						t_intrate_b = Math.ceil(balance_b_rem * (int_per_calc_m * smp_b));
						
						//もし利率が変わっている場合は変更前の金利相当額を加算する
						t_intrate_b += before_intrate_b;
						before_intrate_b = 0;
						
						//毎回の返済額を計算する
						//式: (1回あたりの元金 + 今回の金利相当額)
						var payment_per_b = pri_per_b + t_intrate_b;
						
						//（ボーナス部分の）各回の借受残元金を計算する
						//最後だけは0円にする
						if ((gb + 1) < pay_times_b) {
							balance_b_rem -= pri_per_b;
						} else {
							balance_b_rem = 0;
						}
						
						//（ボーナス部分の）既払額を計算する
						payment_total_b += payment_per_b;
						
						//前回のボーナス月からの経過月数
						smp_b = 0;
						
						b++;
					}
					
					//次の年月
					t_month++;
					//年が変わる
					if (t_month > 12) {
						t_year++;
						t_month -= 12;
					}
				}
				
				//この利率での返済額(総額)を計算する
				var payment_total = payment_total_m + payment_total_b;
				
				//既払額の総額を計算する
				g_payment_total += payment_total;
				
				//現在の年収が入力されている場合
				if (inc != "") {
					//返済比率を計算する
					var payment_ratio = Math.round(payment_total / (inc * t_pay_years) * 100 * 100) / 100;
				} else {
					payment_ratio = "";
				}
				
				//表示形式に加工する
				var years_disp = String(t_int_sy) + "～" + String(t_int_ey);						//返済年数
				var payment_per_m_disp = "-";
				var payment_per_b_disp = "-";
				var payment_per_y_disp = "-";
				var payment_total_disp = "-";
				if (payment_total > 0) {
					payment_total_disp = addFigure(payment_total);								//返済額(総額)
				}
				var payment_ratio_disp = "-";
				if (payment_ratio != "") {
					if (payment_ratio > 0) {
						payment_ratio_disp = String(payment_ratio) + "%";									//返済比率
					}
				}
				
				//計算結果
				arr_repayment["result"][r] = new Array();
				arr_repayment["result"][r]["years"] = years_disp;										//返済年数
				arr_repayment["result"][r]["payment_per_m"] = payment_per_m_disp;						//返済額(毎月分)
				arr_repayment["result"][r]["payment_per_b"] = payment_per_b_disp;						//返済額(ボーナス分)
				arr_repayment["result"][r]["payment_per_y"] = payment_per_y_disp;						//返済額(年間)
				arr_repayment["result"][r]["payment_total"] = payment_total_disp;						//返済額(総額)
				arr_repayment["result"][r]["payment_ratio"] = payment_ratio_disp;						//返済比率
				
				break;
		}
		
		//この利率での最終回時点での金利相当額(ボーナス分)
		//式: (前回返済時点の借受残元金 × (1ヶ月あたりの利率 × 前回のボーナス月からの経過月数))
		before_intrate_b += Math.floor(balance_b_rem * (int_per_calc_m * smp_b));
		b_smp_b = smp_b;
		smp_b = 0;
		
		b_int_per_calc_m = int_per_calc_m;
		
		//この利率の最終回時点での借受残元金
		balance_b = balance_b_rem;
		
		r++;
	}
	
	//行が足りない場合は空行を作成する
	while (r < 4) {
		arr_repayment["result"][r] = new Array();
		arr_repayment["result"][r]["years"] = "-";													//返済年数
		arr_repayment["result"][r]["payment_per_m"] = "-";									//返済額(毎月分)
		arr_repayment["result"][r]["payment_per_b"] = "-";									//返済額(ボーナス分)
		arr_repayment["result"][r]["payment_per_y"] = "-";									//返済額(年間)
		arr_repayment["result"][r]["payment_total"] = "-";									//返済額(総額)
		arr_repayment["result"][r]["payment_ratio"] = "-";									//返済比率
		r++;
	}
	
	//合計欄
	//現在の年収が入力されている場合
	if (inc != "") {
		//返済比率を計算する
		payment_ratio = Math.round(g_payment_total / (inc * pay_years) * 100 * 100) / 100;
	} else {
		payment_ratio = "";
	}
	
	//表示形式に加工する
	years_disp = String(pay_years);																//返済年数
	payment_per_m_disp = "-";																			//返済額(毎月分)
	payment_per_b_disp = "-";																			//返済額(ボーナス分)
	payment_per_y_disp = "-";																			//返済額(年間)
	payment_total_disp = "-";
	if (g_payment_total > 0) {
		payment_total_disp = addFigure(g_payment_total);											//返済額(総額)
	}
	payment_ratio_disp = "-";
	if (payment_ratio != "-") {
		if (payment_ratio > 0) {
			payment_ratio_disp = String(payment_ratio) + "%";											//返済比率
		}
	}
	
	//計算結果
	arr_repayment["result"][r] = new Array();
	arr_repayment["result"][r]["years"] = years_disp;													//返済年数
	arr_repayment["result"][r]["payment_per_m"] = payment_per_m_disp;									//返済額(毎月分)
	arr_repayment["result"][r]["payment_per_b"] = payment_per_b_disp;									//返済額(ボーナス分)
	arr_repayment["result"][r]["payment_per_y"] = payment_per_y_disp;									//返済額(年間)
	arr_repayment["result"][r]["payment_total"] = payment_total_disp;									//返済額(総額)
	arr_repayment["result"][r]["payment_ratio"] = payment_ratio_disp;									//返済比率
	
	var t_payment_per_m;																				//返済額(毎月分)
	var t_payment_per_b;																				//返済額(ボーナス分)
	//計算方式が「元利均等方式」の場合
	if (ctype == "1") {
		t_payment_per_m = payment_per_m;
		t_payment_per_b = payment_per_b;
	} else {
		t_payment_per_m = "-";
		t_payment_per_b = "-";
	}
	
	arr_repayment["num"]["payment_per_m"] = t_payment_per_m;											//返済額(毎月分)
	arr_repayment["num"]["payment_per_b"] = t_payment_per_b;											//返済額(ボーナス分)
	arr_repayment["num"]["payment_ratio"] = payment_ratio;												//返済比率
	arr_repayment["num"]["g_payment_total"] = g_payment_total;											//既払額の総額
	
	return arr_repayment;
}

//入力された値をもとにローンの金額を計算する
//引数: 計算方式, 当初借入金, 返済開始からの経過年月(年), 返済開始からの経過年月(月), 返済金利(現在のローン), 返済金利(借換えプラン), 返済年数(現在のローン), 返済年数(借換えプラン), ボーナス返済額(現在のローン), ボーナス割合(借換えプラン), 現在の年収, 
//      支払開始年月(年), 支払開始年月(月), ボーナス月(1), ボーナス月(2)
function calc_repayment_rollover(ctype, debt, pas_y, pas_m, int_rat_b, int_rat_a, years_b, years_a, bo_pay_b, bo_rat_a, inc, 
								 ps_year, ps_month, bonus_month_1, bonus_month_2) {
	var arr_repayment = new Array();
	
	//借換え後の支払い開始年月を計算する
	pas_y = Number(pas_y);
	pas_m = Number(pas_m);
	ps_year = Number(ps_year);
	ps_month = Number(ps_month);
	
	var ps_year_a = ps_year + pas_y;
	var ps_month_a = ps_month + pas_m;
	if (ps_month_a > 12) {
		ps_year_a++;
		ps_month_a -= 12;
	}
	
	//ボーナス返済分総額を除いた返済総額を計算する
	var debt_exc_bonus = debt - bo_pay_b;
	
	//毎月の返済
	//返済回数を求める
	var pay_times_m = years_b * 12;
	
	//ボーナスの返済
	//返済回数を求める
	var pay_times_b = years_b * 2;
	
	//借入金残高
	var balance_m = debt_exc_bonus;																		//毎月分
	var balance_b = bo_pay_b;																			//ボーナス分
	
	var payment_ratio = "";																				//返済比率
	
	
	var pri_per_m;
	var pri_per_b;
	//計算方式が「元金均等方式」の場合
	if (ctype == "2") {
		//毎回の元金は均等になるので、1回あたりの元金を計算する（端数四捨五入）
		//毎月分
		pri_per_m = Math.round(debt_exc_bonus / pay_times_m);
		
		//ボーナス分
		pri_per_b = Math.round(bo_pay_b / pay_times_b);
	}
	
	
	//現在処理中の年月
	var t_year = Number(ps_year);
	var t_month = Number(ps_month);
	
	//ボーナス月を数値化
	bonus_month_1 = Number(bonus_month_1);
	bonus_month_2 = Number(bonus_month_2);
	
	var bonus_interval_1;
	var bonus_interval_2;
	
	//ボーナス返済開始までの月数とボーナス返済月の間隔
	var blank_m_b = 0;
	//返済開始月がボーナス月と一致する場合
	if (t_month == bonus_month_1 || t_month == bonus_month_2) {
		blank_m_b = 0;
		//返済開始月がボーナス月の早い方と一致する場合
		if (t_month == Math.min(bonus_month_1, bonus_month_2)) {
			//ボーナス返済月の間隔
			bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
			bonus_interval_2 = 12 - bonus_interval_1;
		} else {
			//ボーナス返済月の間隔
			bonus_interval_2 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
			bonus_interval_1 = 12 - bonus_interval_2;
		}
	//返済開始月がボーナス月の早い方よりも早い場合
	} else if (t_month < Math.min(bonus_month_1, bonus_month_2)) {
		blank_m_b = Math.min(bonus_month_1, bonus_month_2) - t_month;
		//ボーナス返済月の間隔
		bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
		bonus_interval_2 = 12 - bonus_interval_1;
	//返済開始月がボーナス月の遅い方よりも早い場合
	} else if (t_month < Math.max(bonus_month_1, bonus_month_2)) {
		blank_m_b = Math.max(bonus_month_1, bonus_month_2) - t_month;
		//ボーナス返済月の間隔
		bonus_interval_2 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
		bonus_interval_1 = 12 - bonus_interval_2;
	//返済開始月がボーナス月の遅い方よりも遅い場合
	} else {
		blank_m_b = Math.min(bonus_month_1, bonus_month_2) - (t_month - 12);
		//ボーナス返済月の間隔
		bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
		bonus_interval_2 = 12 - bonus_interval_1;
	}
	blank_m_b++;
	
	var before_intrate_b = 0;																			//利率が変わる直前までの金利相当額(ボーナス分)
	
	
	var g_payment_total = 0;																			//既払額の総額
	
	//まずは現在のローンの部分を計算する
	var t_int_sy = 1;																					//開始年
	var t_int_ey = years_b;																				//終了年
	var t_int_per = int_rat_b;																			//利率
	
	//ローン利率を100で割る
	var int_per_calc_y = t_int_per / 100;
	
	//毎月の返済
	//返済1回あたりの利率を求める
	var int_per_calc_m = int_per_calc_y / 12;
	
	//計算開始回数、計算終了回数を求める
	var pay_s_times_m = (t_int_sy - 1) * 12 + 1;
	var pay_e_times_m = t_int_ey * 12;
	
	//残りの返済回数を求める
	var t_pay_times_m = (pay_times_m - (pay_s_times_m - 1));
	
	//ボーナスの返済
	//返済1回あたりの利率を求める
	var int_per_calc_b = int_per_calc_y / 2;
	
	//計算開始回数、計算終了回数を求める
	var pay_s_times_b = (t_int_sy - 1) * 2 + 1;
	var pay_e_times_b = t_int_ey * 2;
	
	//残りの返済回数を求める
	var t_pay_times_b = (pay_times_b - (pay_s_times_b - 1));
	
	//繰上げ返済開始直前の回数を計算する
	//毎月分
	var just_before_m = pas_y * 12 + pas_m;
	//ボーナス分
	var just_before_b = pas_y * 2 + Math.floor(pas_m / 6);
	
	//計算方式によって処理を分ける
	switch (ctype) {
		//元利均等方式
		case "1":
			//毎月の返済
			//毎回の返済額を計算する
			//式: (借入金額（毎月分） × 利率 × Math.pow((1 + 利率), 返済回数)) ÷ (Math.pow((1 + 利率), 返済回数) - 1)
			var payment_per_m = Math.round((balance_m * int_per_calc_m * Math.pow((1 + int_per_calc_m), t_pay_times_m)) / (Math.pow((1 + int_per_calc_m), t_pay_times_m) - 1));
			
			//ボーナスの返済
			//毎回の返済額を計算する
			var value_1 = 1 / ((1 + bonus_interval_1 * int_per_calc_m) * (1 + bonus_interval_2 * int_per_calc_m));
			var value_2 = 1 / (1 + blank_m_b * int_per_calc_m);
			var value_3 = 1 / ((1 + blank_m_b * int_per_calc_m) * (1 + bonus_interval_1 * int_per_calc_m));
			var value_4 = (1 - Math.pow(value_1, (t_pay_times_b / 2))) / (1 - value_1);
			var value_5 = (1 - Math.pow(value_1, (t_pay_times_b / 2))) / (1 - value_1);
			var payment_per_b = Math.round(balance_b / (value_2 * value_4 + value_3 * value_5));
			
			//この利率の最終回時点での返済総額を計算する
			var payment_total_m = payment_per_m * just_before_m;										//既払額(毎月分)
			var payment_total_b = payment_per_b * just_before_b;										//既払額(ボーナス分)
			//この利率での返済額(総額)を計算する
			var payment_total = payment_total_m + payment_total_b;
			
			var i = just_before_m - 1;
			var b = just_before_b - 1;
			
			//この利率の最終回時点での借受残元金を計算する
			//式: (毎回の返済額 × {pow((1 + 利率), (返済回数 - n)) - 1}) ÷ (利率 × pow((1 + 利率), (返済回数 - n)))
			//毎月分
			var balance_m_rem = Math.round((payment_per_m * (Math.pow((1 + int_per_calc_m), (t_pay_times_m - (i + 1))) - 1)) / (int_per_calc_m * Math.pow((1 + int_per_calc_m), (t_pay_times_m - (i + 1)))));
			//ボーナス分
			//ループを回す
			//毎月の返済回数の分だけ繰り返す
			var b = 0;
			var balance_b_rem = balance_b;																//借受残元金
			var sev_m_prog = Number(pas_y) * 12 + Number(pas_m);										//返済開始からの経過年月までの月数
			
			//前回のボーナス月からの経過月数
			var smp_b = 0;
			
			for (var i = 0; i < sev_m_prog; i++) {
				var gb = (pay_s_times_b - 1) + b;
				
				//前回のボーナス月からの経過月数
				smp_b++;
				
				//ボーナス月の処理
				if (t_month == bonus_month_1 || t_month == bonus_month_2) {
					//（ボーナス部分の）今回の金利相当額を計算する
					//式: (前回返済時点の借受残元金 × (1ヶ月あたりの利率 × 前回のボーナス月からの経過月数))
					var t_intrate_b = Math.floor(balance_b_rem * (int_per_calc_m * smp_b));
					
					//もし利率が変わっている場合は変更前の金利相当額を加算する
					t_intrate_b += before_intrate_b;
					before_intrate_b = 0;
					
					//（ボーナス部分の）今回の元金相当額を計算する
					//式: 今回の返済額 - 今回の金利相当額
					var t_balance_b = payment_per_b - t_intrate_b;
					
					//（ボーナス部分の）各回の借受残元金を計算する
					balance_b_rem -= t_balance_b;
					//借受残元金が0未満またはボーナス払いの最終回の場合は借受残元金を0にする
					if (balance_b_rem < 0 || pay_times_b <= gb + 1) {
						balance_b_rem = 0;
					}
					
					//前回のボーナス月からの経過月数
					smp_b = 0;
					
					b++;
				}
				
				
				//次の年月
				t_month++;
				//年が変わる
				if (t_month > 12) {
					t_year++;
					t_month -= 12;
				}
			}
			
			//一度借受残元金の合計を計算し、借換え後のボーナス割合をもとに毎月分とボーナス分の借受残元金を計算する
			var balance_rem = balance_m_rem + balance_b_rem;
			//ボーナス返済分の金額を計算する
			//借換え後
			var bo_pay_conv = Math.round(balance_rem * (bo_rat_a / 100));
			balance_m_rem = balance_rem - bo_pay_conv;
			balance_b_rem = bo_pay_conv;
			
			//返済金利
			//借換え後
			//開始年、終了年、利率を配列にまとめる
			var arr_interest = new Array();
			i = 0;
			
			t_int_sy = 1;
			t_int_ey = years_a;
			t_int_per = int_rat_a;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;													//開始年
			arr_interest[i]["ey"] = t_int_ey;													//終了年
			arr_interest[i]["per"] = t_int_per;													//利率
			i++;
			
			//借換え時点の元金をもとに借換え後の金額を計算する
			arr_repayment = calc_repayment_fund(ctype, balance_rem, balance_b_rem, arr_interest, years_a, inc, 
												ps_year_a, ps_month_a, bonus_month_1, bonus_month_2);
			
			//戻り値を必要な分だけ加工する
			//借換え前と借換え後の既払額の合計
			g_payment_total = payment_total + arr_repayment["num"]["g_payment_total"];
			arr_repayment["num"]["g_payment_total"] = g_payment_total;											//既払額の総額
			
			break;
		//元金均等方式
		case "2":
			//返済年数
			var t_pay_years = years_b;
			
			//毎月の返済回数の分だけ繰り返す
			var b = 0;
			var payment_total_m = 0;																//既払額(毎月分)
			var payment_total_b = 0;																//既払額(ボーナス分)
			for (var ii = 0; ii < pay_e_times_m - pay_s_times_m + 1; ii++) {
				var gi = (pay_s_times_m - 1) + ii;
				var gb = (pay_s_times_b - 1) + b;
				
				//返済開始からの経過年月に達した場合はループを抜ける
				if (gi > just_before_m - 1) break;
				
				//毎月の返済
				//毎回の返済額を計算する
				//式: (借入金額（毎月分） ÷ 返済回数) × {1 + (返済回数 - 計算対象の回数 + 1) × 利率}
				var payment_per_m = Math.round((debt_exc_bonus / pay_times_m) * (1 + (pay_times_m - (gi + 1) + 1) * int_per_calc_m));
				
				//既払額を計算する
				payment_total_m += payment_per_m;
				
				//半年ごとの処理
				if ((gi + 1) % 6 == 0) {
					//ボーナスの返済
					//毎回の返済額を計算する
					//式: (借入金額（ボーナス分） ÷ 返済回数) × {1 + (返済回数 - 計算対象の回数 + 1) × 利率}
					var payment_per_b = Math.round((bo_pay_b / pay_times_b) * (1 + (pay_times_b - (gb + 1) + 1) * int_per_calc_b));
					
					//（ボーナス部分の）既払額を計算する
					payment_total_b += payment_per_b;
					
					b++;
				}
			}
			
			//この利率での返済額(総額)を計算する
			var payment_total = payment_total_m + payment_total_b;
			
			//既払額の総額を計算する
			g_payment_total = payment_total;
			
			//現在の年収が入力されている場合
			if (inc != "") {
				//返済比率を計算する
				var payment_ratio = Math.round(payment_total / (inc * t_pay_years) * 100 * 100) / 100;
			} else {
				payment_ratio = "";
			}
			
			
			var i = just_before_m - 1;
			var b = just_before_b - 1;
			
			//この利率の最終回時点での借受残元金を計算する
			//毎月分
			var balance_m_rem;
			//最後だけは0円にする
			if ((i + 1) < pay_times_m) {
				balance_m_rem = balance_m - (pri_per_m * (i + 1));
			} else {
				balance_m_rem = 0;
			}
			//ボーナス分
			var balance_b_rem;
			//最後だけは0円にする
			if ((b + 1) < pay_times_b) {
				balance_b_rem = balance_b - (pri_per_b * (b + 1));
			} else {
				balance_b_rem = 0;
			}
			
			//一度借受残元金の合計を計算し、借換え後のボーナス割合をもとに毎月分とボーナス分の借受残元金を計算する
			var balance_rem = balance_m_rem + balance_b_rem;
			//ボーナス返済分の金額を計算する
			//借換え後
			var bo_pay_conv = Math.round(balance_rem * (bo_rat_a / 100));
			balance_m_rem = balance_rem - bo_pay_conv;
			balance_b_rem = bo_pay_conv;
			
			//返済金利
			//借換え後
			//開始年、終了年、利率を配列にまとめる
			var arr_interest = new Array();
			i = 0;
			
			t_int_sy = 1;
			t_int_ey = years_a;
			t_int_per = int_rat_a;
			
			//型を変換する
			t_int_sy = Number(t_int_sy);
			t_int_ey = Number(t_int_ey);
			t_int_per = Number(t_int_per);
			
			arr_interest[i] = new Array();
			arr_interest[i]["sy"] = t_int_sy;													//開始年
			arr_interest[i]["ey"] = t_int_ey;													//終了年
			arr_interest[i]["per"] = t_int_per;													//利率
			i++;
			
			//借換え時点の元金をもとに借換え後の金額を計算する
			arr_repayment = calc_repayment_fund(ctype, balance_rem, balance_b_rem, arr_interest, years_a, inc, 
												ps_year_a, ps_month_a, bonus_month_1, bonus_month_2);
			
			//戻り値を必要な分だけ加工する
			//借換え前と借換え後の既払額の合計
			g_payment_total += arr_repayment["num"]["g_payment_total"];
			arr_repayment["num"]["g_payment_total"] = g_payment_total;											//既払額の総額
			
			break;
	}
	
	return arr_repayment;
}

//入力された値をもとにローンの金額を計算する
//引数: 計算方式, 計算方法, 当初借入金, 繰上げ返済金[配列], ローン利率(開始年、終了年、利率)[配列], 返済年数, ボーナス比率, 現在の年収, 
//      支払開始年月(年), 支払開始年月(月), ボーナス月(1), ボーナス月(2)
function calc_repayment_advanced(ctype, cway, debt, arr_advanced, arr_interest, pay_years, bo_rat, inc, 
								 ps_year, ps_month, bonus_month_1, bonus_month_2) {
	var arr_repayment = new Array();
	arr_repayment["result_b"] = new Array();															//繰り上げない場合の計算結果
	arr_repayment["result"] = new Array();																//計算結果
	arr_repayment["num"] = new Array();																	//表示形式加工前の値
	arr_repayment["num"]["payment_per_m"] = "";															//返済額(毎月分)（表示形式加工前）
	arr_repayment["num"]["payment_per_b"] = "";															//返済額(ボーナス分)（表示形式加工前）
	arr_repayment["num"]["payment_ratio"] = "";															//返済比率（表示形式加工前）
	arr_repayment["num"]["g_payment_total"] = "";														//既払額の総額（表示形式加工前）
	arr_repayment["num"]["payment_total_sho"] = "";														//繰上げ返済額合計
	arr_repayment["num"]["pay_times_m_sho"] = "";														//繰上げ返済によって短縮された回数(毎月分)
	arr_repayment["num"]["pay_times_b_sho"] = "";														//繰上げ返済によって短縮された回数(ボーナス分)
	
	//繰上げ返済金とローン利率を1つの配列にまとめる
	var arr_advint = new Array();
	var ai = 0;
	//入力されたローン利率の分だけ繰り返す
	for (var i = 0; i < arr_interest.length; i++) {
		var rdata = arr_interest[i];
		var t_int_sy = rdata["sy"];																		//開始年
		var t_int_per = rdata["per"];																		//利率
		ai = (t_int_sy - 1) * 12 + 1;																	//開始月数
		
		if (typeof(arr_advint[ai]) == 'undefined') {
			arr_advint[ai] = new Array();
			arr_advint[ai]["per"] = "";																//利率
			arr_advint[ai]["mo"] = "";																//繰上げ額
		}
		arr_advint[ai]["per"] = t_int_per;															//利率
	}
	//入力された繰上げ返済金の分だけ繰り返す
	for (var i = 0; i < arr_advanced.length; i++) {
		var rdata = arr_advanced[i];
		var t_adv_y = rdata["ay"];																		//経過年
		var t_adv_m = rdata["am"];																		//経過月
		var t_adv_mo = rdata["mo"];																		//金額
		ai = t_adv_y * 12 + t_adv_m + 1;																//開始月数
		
		if (typeof(arr_advint[ai]) == 'undefined') {
			arr_advint[ai] = new Array();
			arr_advint[ai]["per"] = "";																//利率
			arr_advint[ai]["mo"] = "";																//繰上げ額
		}
		arr_advint[ai]["mo"] = t_adv_mo;																//繰上げ額
	}
	
	//毎月の返済
	//返済回数を求める
	var pay_times_m = pay_years * 12;
	
	//ボーナスの返済
	//返済回数を求める
	var pay_times_b = pay_years * 2;
	
	//ボーナス返済分の金額を計算する
	var bo_pay = Math.round(debt * (bo_rat / 100));
	
	//ボーナス返済分総額を除いた返済総額を計算する
	var debt_exc_bonus = debt - bo_pay;
	
	//借入金残高
	var balance_m = debt_exc_bonus;																		//毎月分
	var balance_b = bo_pay;																				//ボーナス分
	
	//その月ごとの借入金残高
	var balance_m_rem = balance_m;																		//毎月分
	var balance_b_rem = balance_b;																		//ボーナス分
	
	//繰上げ返済時点の借入残元金
	var balance_m_rem_adv = balance_m_rem;																//毎月分
	var balance_b_rem_adv = balance_b_rem;																//ボーナス分
	
	var pri_per_m;
	var pri_per_b;
	//計算方式によって処理を分ける
	switch (ctype) {
		//元金均等方式
		case "2":
			//毎回の元金は均等になるので、1回あたりの元金を計算する（端数四捨五入）
			//毎月分
			pri_per_m = Math.round(balance_m / pay_times_m);
			
			//ボーナス分
			pri_per_b = Math.round(balance_b / pay_times_b);
			
			break;
	}
	
	
	//現在処理中の年月
	var t_year = Number(ps_year);
	var t_month = Number(ps_month);
	
	//ボーナス月を数値化
	bonus_month_1 = Number(bonus_month_1);
	bonus_month_2 = Number(bonus_month_2);
	
	var bonus_interval_1;
	var bonus_interval_2;
	
	//ボーナス返済開始までの月数とボーナス返済月の間隔
	var blank_m_b = 0;
	//返済開始月がボーナス月と一致する場合
	if (t_month == bonus_month_1 || t_month == bonus_month_2) {
		blank_m_b = 0;
		//返済開始月がボーナス月の早い方と一致する場合
		if (t_month == Math.min(bonus_month_1, bonus_month_2)) {
			//ボーナス返済月の間隔
			bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
			bonus_interval_2 = 12 - bonus_interval_1;
		} else {
			//ボーナス返済月の間隔
			bonus_interval_2 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
			bonus_interval_1 = 12 - bonus_interval_2;
		}
	//返済開始月がボーナス月の早い方よりも早い場合
	} else if (t_month < Math.min(bonus_month_1, bonus_month_2)) {
		blank_m_b = Math.min(bonus_month_1, bonus_month_2) - t_month;
		//ボーナス返済月の間隔
		bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
		bonus_interval_2 = 12 - bonus_interval_1;
	//返済開始月がボーナス月の遅い方よりも早い場合
	} else if (t_month < Math.max(bonus_month_1, bonus_month_2)) {
		blank_m_b = Math.max(bonus_month_1, bonus_month_2) - t_month;
		//ボーナス返済月の間隔
		bonus_interval_2 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
		bonus_interval_1 = 12 - bonus_interval_2;
	//返済開始月がボーナス月の遅い方よりも遅い場合
	} else {
		blank_m_b = Math.min(bonus_month_1, bonus_month_2) - (t_month - 12);
		//ボーナス返済月の間隔
		bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
		bonus_interval_2 = 12 - bonus_interval_1;
	}
	blank_m_b++;
	
	
	//前回のボーナス月からの経過月数
	var smp_b = 0;
	
	var payment_total_m = 0;																			//既払額(毎月分)
	var payment_total_b = 0;																			//既払額(ボーナス分)
	
	var before_intrate_b = 0;																			//利率が変わる直前までの金利相当額(ボーナス分)
	
	var b_int_per_calc_m = 0;																			//利率が変わる直前の1ヶ月あたりの利率
	var b_smp_b = 0;																					//利率が変わる直前までのボーナス月からの経過月数
	
	var int_per = "";
	var adv_mo = "";
	var pay_times_m_rem = pay_times_m;																	//残りの返済回数(毎月分)
	var pay_times_b_rem = pay_times_b;																	//残りの返済回数(ボーナス分)
	var pay_times_m_sho = 0;																			//短縮した返済回数(毎月分)
	var pay_times_b_sho = 0;																			//短縮した返済回数(ボーナス分)
	var payment_total_m_sho = 0;																		//繰上げ返済した金額(毎月分)
	var payment_total_b_sho = 0;																		//繰上げ返済した金額(ボーナス分)
	var payment_total_sho = 0;																			//繰上げ返済した金額
	var gy = 0;
	var gb = 0;
	var m = 0;
	var r = 0;
	var advm = 0;																						//繰上げ返済した時点の回数(毎月分)
	var advb = 0;																						//繰上げ返済した時点の回数(ボーナス分)
	//ローンの返済月数分だけ繰り返す
	for (var gm = 0; gm < pay_times_m; gm++) {
		//前回のボーナス月からの経過月数
		smp_b++;
		
		//利率が変わったまたは繰上げ返済をした月の場合
		if (typeof(arr_advint[gm + 1]) != 'undefined') {
			var t_int_per = arr_advint[gm + 1]["per"];													//利率
			var t_adv_mo = arr_advint[gm + 1]["mo"];													//繰上げ額
			
			//利率が変わった場合
			if (t_int_per != "") {
				//一番最初の月より後の場合
				if (gm > 0) {
					smp_b -= 1;
					
					//前の利率での最終回時点での金利相当額(ボーナス分)
					//式: (前回返済時点の借受残元金 × (1ヶ月あたりの利率 × 前回のボーナス月からの経過月数))
					before_intrate_b += Math.floor(balance_b_rem * (int_per_calc_m * smp_b));
					b_smp_b = smp_b;
					smp_b = 1;
					
					b_int_per_calc_m = int_per_calc_m;
				}
				
				int_per = t_int_per;
				
				//ローン利率を100で割る
				var int_per_calc_y = int_per / 100;
				
				//毎月の返済
				//返済1回あたりの利率を求める
				var int_per_calc_m = int_per_calc_y / 12;
				
				//ボーナスの返済
				//計算開始回数、計算終了回数を求める
				var pay_s_times_b = (t_int_sy - 1) * 2 + 1;
				
				//残りの返済回数を求める
				var t_pay_times_b = (pay_times_b - (pay_s_times_b - 1));
				
				//計算方式によって処理を分ける
				switch (ctype) {
					//元利均等方式
					case "1":
						//毎回の返済額を計算する
						//毎月の返済
						//式: (借入金額（毎月分） × 利率 × pow((1 + 利率), 返済回数)) ÷ (pow((1 + 利率), 返済回数) - 1)
						//式: (残りの借入金額（毎月分） × 利率 × pow((1 + 利率), 残りの返済回数)) ÷ (pow((1 + 利率), 残りの返済回数) - 1)
						var payment_per_m = Math.round((balance_m_rem * int_per_calc_m * Math.pow((1 + int_per_calc_m), (pay_times_m_rem - pay_times_m_sho))) / (Math.pow((1 + int_per_calc_m), (pay_times_m_rem - pay_times_m_sho)) - 1));
						
						//ボーナスの返済
						var value_1 = 1 / ((1 + bonus_interval_1 * int_per_calc_m) * (1 + bonus_interval_2 * int_per_calc_m));
						var value_2 = 1 / ((1 + blank_m_b * int_per_calc_m) * (1 + b_smp_b * b_int_per_calc_m));
						var value_3 = 1 / (((1 + blank_m_b * int_per_calc_m) * (1 + b_smp_b * b_int_per_calc_m)) * (1 + bonus_interval_1 * int_per_calc_m));
						var value_4 = (1 - Math.pow(value_1, ((pay_times_b_rem - pay_times_b_sho) / 2))) / (1 - value_1);
						var value_5 = (1 - Math.pow(value_1, ((pay_times_b_rem - pay_times_b_sho) / 2))) / (1 - value_1);
						var payment_per_b = Math.round(balance_b / (value_2 * value_4 + value_3 * value_5));
						
						break;
				}
			}
			
			//初めて繰上げ返済をした場合
			if (t_adv_mo != "" && r == 0) {
				//繰り上げ返済前の返済情報を記憶する
				var t_payment_per_y = payment_per_m * 12 + payment_per_b * 2;							//返済額(年間)
				
				
				//現在の年収が入力されている場合
				if (inc != "") {
					//返済比率を計算する
					payment_ratio = Math.round(t_payment_per_y / inc * 100 * 100) / 100;
				} else {
					payment_ratio = "";
				}
				
				
				//表示形式に加工する
				var balance_disp = "-";																	//借入金残高
				var payment_per_m_disp = "-";															//返済額(毎月分)
				var payment_per_b_disp = "-";															//返済額(ボーナス分)
				var payment_per_y_disp = "-";															//返済額(年間)
				var payment_total_disp = "-";															//返済額(総額)
				var payment_ratio_disp = "-";															//返済比率
				if (balance_rem > 0) {
					balance_disp = addFigure(balance_rem);										//借入金残高
				}
				
				//計算方式が「元利均等方式」のとき
				if (ctype == "1") {
					if (payment_per_m > 0) {
						payment_per_m_disp = addFigure(payment_per_m);								//返済額(毎月分)
					}
					if (payment_per_b > 0) {
						payment_per_b_disp = addFigure(payment_per_b);								//返済額(ボーナス分)
					}
					if (t_payment_per_y > 0) {
						payment_per_y_disp = addFigure(t_payment_per_y);								//返済額(年間)
					}
					
					if (payment_ratio != "") {
						if (payment_ratio > 0) {
							payment_ratio_disp = String(payment_ratio) + "%";								//返済比率
						}
					}
				}
				
				//計算結果
				arr_repayment["result_b"] = new Array();
				arr_repayment["result_b"]["balance"] = balance_disp;									//借入金残高
				arr_repayment["result_b"]["payment_per_m"] = payment_per_m_disp;						//返済額(毎月分)
				arr_repayment["result_b"]["payment_per_b"] = payment_per_b_disp;						//返済額(ボーナス分)
				arr_repayment["result_b"]["payment_per_y"] = payment_per_y_disp;						//返済額(年間)
				arr_repayment["result_b"]["payment_total"] = payment_total_disp;						//返済額(総額)
				arr_repayment["result_b"]["payment_ratio"] = payment_ratio_disp;						//返済比率
			}
			
			//計算方式によって処理を分ける
			switch (ctype) {
				//元利均等方式
				case "1":
					//さらに計算方法によって処理を分ける
					switch (cway) {
						//期間短縮
						case "1":
							adv_mo = 0;
							var adv_mo_m = 0;
							var adv_mo_b = 0;
							//繰上げ返済をした場合
							if (t_adv_mo != "") {
								adv_mo = t_adv_mo;														//今回繰上げ返済した金額
								advm = gm;																//繰上げ返済した時点の回数(毎月分)
								advb = gb;																//繰上げ返済した時点の回数(ボーナス分)
								
								var t_adv_year = t_year;												//繰上げ返済した時点の年
								var t_adv_month = t_month;												//繰上げ返済した時点の月
								
								//前回のボーナス月からの経過月数
								var adv_smp_b = smp_b;
								//（ボーナス部分の）借受残元金
								var t_adv_balance_b_rem = balance_b_rem;
								//利率が変わった場合の変更前の金利相当額
								var adv_before_intrate_b = before_intrate_b;
								
								//毎回の返済額はそのまま、返済期間短縮(半年単位)
								//残りの返済期間を求める
								//繰上げ返済した分の元金相当額を満たすまでループを回す
								var t_pay_times_m_sho = 0;
								var t_pay_times_b_sho = 0;
								for (t_pay_times_m_sho = 1; t_pay_times_m_sho < pay_times_m_rem; t_pay_times_m_sho++) {
									//各回の借受残元金を計算する
									//式: (毎回の返済額 × {pow((1 + 利率), (返済回数 - n)) - 1}) ÷ (利率 × pow((1 + 利率), (返済回数 - n)))
									var t_balance_m_rem = Math.round((payment_per_m * (Math.pow((1 + int_per_calc_m), (pay_times_m - (gm + t_pay_times_m_sho + pay_times_m_sho))) - 1)) / (int_per_calc_m * Math.pow((1 + int_per_calc_m), (pay_times_m - (gm + t_pay_times_m_sho + pay_times_m_sho)))));
									
									//借受残元金の差分を求める
									var t_principal_m_diff = balance_m_rem - t_balance_m_rem;
									
									//前回のボーナス月からの経過月数
									adv_smp_b++;
									
									//ボーナス分
									var t_principal_b_diff = 0;											//仮計算期間中の返済元金相当額差額(ボーナス分)
									//ボーナス月の処理
									if (t_adv_month == bonus_month_1 || t_adv_month == bonus_month_2) {
										t_pay_times_b_sho++;
										//（ボーナス部分の）今回の金利相当額を計算する
										//式: (前回返済時点の借受残元金 × (1ヶ月あたりの利率 × 前回のボーナス月からの経過月数))
										var t_intrate_b = Math.floor(t_adv_balance_b_rem * (int_per_calc_m * adv_smp_b));
										
										//もし利率が変わっている場合は変更前の金利相当額を加算する
										t_intrate_b += adv_before_intrate_b;
										adv_before_intrate_b = 0;
										
										//（ボーナス部分の）今回の元金相当額を計算する
										//式: 今回の返済額 - 今回の金利相当額
										var t_balance_b = payment_per_b - t_intrate_b;
										
										//（ボーナス部分の）各回の借受残元金を計算する
										t_adv_balance_b_rem -= t_balance_b;
										//借受残元金が0未満またはボーナス払いの最終回の場合は借受残元金を0にする
										if (t_adv_balance_b_rem < 0 || pay_times_b <= gb + 1) {
											t_adv_balance_b_rem = 0;
										}
										
										//借受残元金の差分を求める
										t_principal_b_diff = balance_b_rem - t_adv_balance_b_rem;
										
										//前回のボーナス月からの経過月数
										adv_smp_b = 0;
									}
									
									//繰上げ返済分の元金相当額を満たした場合はループを抜ける
									if (t_principal_m_diff + t_principal_b_diff >= adv_mo) break;
									
									//次の年月
									t_adv_month++;
									//年が変わる
									if (t_adv_month > 12) {
										t_adv_year++;
										t_adv_month -= 12;
									}
								}
								
								//今回繰り上げられる回数を1年単位にする
								//切り上げ
								t_pay_times_m_sho += (12 - (t_pay_times_m_sho % 12) % 12);
								
								
								//実際に繰り上げ返済する金額を求める
								var t_principal_m_diff = 0;
								if (t_pay_times_m_sho > 0) {
									//繰上げ返済後の借受残元金を計算する
									//式: (毎回の返済額 × {pow((1 + 利率), (返済回数 - n)) - 1}) ÷ (利率 × pow((1 + 利率), (返済回数 - n)))
									var t_balance_m_rem = Math.round((payment_per_m * (Math.pow((1 + int_per_calc_m), (pay_times_m - (gm + t_pay_times_m_sho + pay_times_m_sho))) - 1)) / (int_per_calc_m * Math.pow((1 + int_per_calc_m), (pay_times_m - (gm + t_pay_times_m_sho + pay_times_m_sho)))));
									
									//借受残元金の差分を求める
									t_principal_m_diff = balance_m_rem - t_balance_m_rem;
								}
								
								//ボーナス分
								if (t_pay_times_m_sho > 0) {
									//（ボーナス部分の）繰上げ返済後の借受残元金を計算する
									t_adv_year = t_year;												//繰上げ返済した時点の年
									t_adv_month = t_month;												//繰上げ返済した時点の月
									
									//前回のボーナス月からの経過月数
									adv_smp_b = smp_b;
									//（ボーナス部分の）借受残元金
									t_adv_balance_b_rem = balance_b_rem;
									//利率が変わった場合の変更前の金利相当額
									adv_before_intrate_b = before_intrate_b;
									
									//ボーナス月の処理
									//今回繰り上げられる回数分ループを回す
									t_pay_times_b_sho = 0;
									for (i = 0; i < t_pay_times_m_sho; i++) {
										//前回のボーナス月からの経過月数
										adv_smp_b++;
										
										if (t_adv_month == bonus_month_1 || t_adv_month == bonus_month_2) {
											//（ボーナス部分の）今回の金利相当額を計算する
											//式: (前回返済時点の借受残元金 × (1ヶ月あたりの利率 × 前回のボーナス月からの経過月数))
											t_intrate_b = Math.floor(t_adv_balance_b_rem * (int_per_calc_m * adv_smp_b));
											
											//もし利率が変わっている場合は変更前の金利相当額を加算する
											t_intrate_b += adv_before_intrate_b;
											adv_before_intrate_b = 0;
											
											//（ボーナス部分の）今回の元金相当額を計算する
											//式: 今回の返済額 - 今回の金利相当額
											t_adv_balance_b = payment_per_b - t_intrate_b;
											
											//（ボーナス部分の）各回の借受残元金を計算する
											t_adv_balance_b_rem -= t_adv_balance_b;
											//借受残元金が0未満またはボーナス払いの最終回の場合は借受残元金を0にする
											if (t_adv_balance_b_rem < 0 || pay_times_b <= gb + 1) {
												t_adv_balance_b_rem = 0;
											}
											
											//借受残元金の差分を求める
											t_adv_principal_b_diff = balance_b_rem - t_adv_balance_b_rem;
											
											t_pay_times_b_sho++;
											
											//前回のボーナス月からの経過月数
											adv_smp_b = 0;
										}
										
										//次の年月
										t_adv_month++;
										//年が変わる
										if (t_adv_month > 12) {
											t_adv_year++;
											t_adv_month -= 12;
										}
									}
									
									//借受残元金の差分を求める
									t_principal_b_diff = balance_b_rem - t_adv_balance_b_rem;
								}
								
								pay_times_m_sho += t_pay_times_m_sho;										//繰り上げられた回数の合計(毎月分)
								pay_times_b_sho += t_pay_times_b_sho;										//繰り上げられた回数の合計(ボーナス分)
								
								adv_mo_m = t_principal_m_diff;										//今回繰上げ返済した金額(毎月分)
								adv_mo_b = t_principal_b_diff;										//今回繰上げ返済した金額(ボーナス分)
								adv_mo = adv_mo_m + adv_mo_b;										//今回繰上げ返済した金額の合計
								
								//借入残元金から繰上げ分を差し引く
								balance_m_rem -= adv_mo_m;															//借入残元金(毎月分)
								balance_b_rem -= adv_mo_b;															//借入残元金(ボーナス分)
								
								balance_rem = balance_m_rem + balance_b_rem;							//借入残元金合計
								
								//繰上げ返済時点の借入残元金
								balance_m_rem_adv = balance_m_rem;													//毎月分
								balance_b_rem_adv = balance_b_rem;													//ボーナス分
								
								payment_total_m_sho += adv_mo_m;														//繰上げ返済した金額(毎月分)
								payment_total_b_sho += adv_mo_b;														//繰上げ返済した金額(ボーナス分)
								payment_total_sho += adv_mo;															//繰上げ返済した金額
							}
							
							break;
						//支払額減額
						case "2":
							adv_mo = 0;
							var adv_mo_m = 0;
							var adv_mo_b = 0;
							//繰上げ返済をした場合
							if (t_adv_mo != "") {
								adv_mo = t_adv_mo;																	//今回繰上げ返済した金額
								advm = gm;																			//繰上げ返済した時点の回数(毎月分)
								advb = gb;																			//繰上げ返済した時点の回数(ボーナス分)
								
								adv_mo_b = Math.round(adv_mo * (bo_rat / 100));											//今回繰上げ返済した金額(ボーナス分)
								adv_mo_m = adv_mo - adv_mo_b;														//今回繰上げ返済した金額(毎月分)
								
								balance_m_rem -= adv_mo_m;															//借入残元金(毎月分)
								balance_b_rem -= adv_mo_b;															//借入残元金(ボーナス分)
								
								balance_rem = balance_m_rem + balance_b_rem;							//借入残元金合計
								
								//繰上げ返済時点の借入残元金
								balance_m_rem_adv = balance_m_rem;													//毎月分
								balance_b_rem_adv = balance_b_rem;													//ボーナス分
								
								payment_total_m_sho += adv_mo_m;														//繰上げ返済した金額(毎月分)
								payment_total_b_sho += adv_mo_b;														//繰上げ返済した金額(ボーナス分)
								payment_total_sho += adv_mo;															//繰上げ返済した金額
								
								//前回のボーナス月からの経過月数をリセットする
								smp_b = 1;
								
								//毎回の返済額減額、返済期間はそのまま
								//毎回の返済額を計算する
								//毎月の返済
								//式: (残りの借入金額（毎月分） × 利率 × pow((1 + 利率), 残りの返済回数)) ÷ (pow((1 + 利率), 残りの返済回数) - 1)
								var payment_per_m = Math.round((balance_m_rem * int_per_calc_m * Math.pow((1 + int_per_calc_m), pay_times_m_rem)) / (Math.pow((1 + int_per_calc_m), pay_times_m_rem) - 1));
								
								var t_adv_year = t_year;													//繰上げ返済した時点の年
								var t_adv_month = t_month;													//繰上げ返済した時点の月
								
								var adv_bonus_interval_1;
								var adv_bonus_interval_2;
								
								//繰上げ返済からボーナス返済月までの月数
								var t_blank_m_b = 0;
								//繰上げ返済月がボーナス月と一致する場合
								if (t_adv_month == bonus_month_1 || t_adv_month == bonus_month_2) {
									t_blank_m_b = 0;
									//繰上げ返済月がボーナス月の早い方と一致する場合
									if (t_adv_month == Math.min(bonus_month_1, bonus_month_2)) {
										//ボーナス返済月の間隔
										adv_bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
										adv_bonus_interval_2 = 12 - adv_bonus_interval_1;
									} else {
										//ボーナス返済月の間隔
										adv_bonus_interval_2 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
										adv_bonus_interval_1 = 12 - adv_bonus_interval_2;
									}
								//繰上げ返済月がボーナス月の早い方よりも早い場合
								} else if (t_adv_month < Math.min(bonus_month_1, bonus_month_2)) {
									t_blank_m_b = Math.min(bonus_month_1, bonus_month_2) - t_adv_month;
									//ボーナス返済月の間隔
									adv_bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
									adv_bonus_interval_2 = 12 - adv_bonus_interval_1;
								//繰上げ返済月がボーナス月の遅い方よりも早い場合
								} else if (t_adv_month < Math.max(bonus_month_1, bonus_month_2)) {
									t_blank_m_b = Math.max(bonus_month_1, bonus_month_2) - t_adv_month;
									//ボーナス返済月の間隔
									adv_bonus_interval_2 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
									adv_bonus_interval_1 = 12 - adv_bonus_interval_2;
								//繰上げ返済月がボーナス月の遅い方よりも遅い場合
								} else {
									t_blank_m_b = Math.min(bonus_month_1, bonus_month_2) - (t_adv_month - 12);
									//ボーナス返済月の間隔
									adv_bonus_interval_1 = Math.max(bonus_month_1, bonus_month_2) - Math.min(bonus_month_1, bonus_month_2);
									adv_bonus_interval_2 = 12 - adv_bonus_interval_1;
								}
								t_blank_m_b++;
								
								//残りの返済回数
								var pay_times_b_rem_1 = Math.floor(pay_times_b_rem / 2);
								var pay_times_b_rem_2 = Math.floor(pay_times_b_rem / 2);
								//返済開始月がボーナス月の早い方以前またはボーナス月の遅い方よりも遅い場合
								if (Number(ps_month) <= Math.min(bonus_month_1, bonus_month_2) || Number(ps_month) > Math.max(bonus_month_1, bonus_month_2)) {
									//繰上げ返済月がボーナス月の早い方よりも遅い場合かつ遅い方以前の場合
									if (t_adv_month > Math.min(bonus_month_1, bonus_month_2) && t_adv_month <= Math.max(bonus_month_1, bonus_month_2)) {
										pay_times_b_rem_1++;
									}
								//返済開始月がボーナス月の遅い方以前の場合
								} else {
									//繰上げ返済月がボーナス月の早い方以前の場合または遅い方よりも遅い場合
									if (t_adv_month <= Math.min(bonus_month_1, bonus_month_2) || t_adv_month > Math.max(bonus_month_1, bonus_month_2)) {
										pay_times_b_rem_1++;
									}
								}
								
								//繰上げ返済後の金額で計算する
								var value_1 = 1 / ((1 + adv_bonus_interval_1 * int_per_calc_m) * (1 + adv_bonus_interval_2 * int_per_calc_m));
								var value_2 = 1 / (1 + t_blank_m_b * int_per_calc_m);
								var value_3 = 1 / ((1 + t_blank_m_b * int_per_calc_m) * (1 + adv_bonus_interval_1 * int_per_calc_m));
								var value_4 = (1 - Math.pow(value_1, pay_times_b_rem_1)) / (1 - value_1);
								var value_5 = (1 - Math.pow(value_1, pay_times_b_rem_2)) / (1 - value_1);
								var payment_per_b = Math.round(balance_b_rem / (value_2 * value_4 + value_3 * value_5));
							}
							
							break;
					}
					
					break;
				//元金均等方式
				case "2":
					//さらに計算方法によって処理を分ける
					switch (cway) {
						//期間短縮
						case "1":
							adv_mo = 0;
							var adv_mo_m = 0;
							var adv_mo_b = 0;
							//繰上げ返済をした場合
							if (t_adv_mo != "") {
								adv_mo = t_adv_mo;																	//今回繰上げ返済した金額
								advm = gm;																			//繰上げ返済した時点の回数(毎月分)
								advb = gb;																			//繰上げ返済した時点の回数(ボーナス分)
								
								var t_pay_times_m_sho;
								var t_pay_times_b_sho;
								
								var t_adv_year = t_year;												//繰上げ返済した時点の年
								var t_adv_month = t_month;												//繰上げ返済した時点の月
								
								//毎回の返済額はそのまま、返済期間短縮(半年単位)
								//残りの返済期間を求める
								//繰上げ返済した分の元金相当額を満たすまでループを回す
								var t_balance_m_rem = balance_m_rem;
								var t_balance_b_rem = balance_b_rem;
								for (t_pay_times_m_sho = 1; t_pay_times_m_sho < pay_times_m_rem; t_pay_times_m_sho++) {
									//各回の借受残元金を計算する
									//最後だけは0円にする
									if ((gi + 1) < pay_times_m) {
										t_balance_m_rem -= pri_per_m;
									} else {
										t_balance_m_rem = 0;
									}
									
									//借受残元金の差分を求める
									var t_principal_m_diff = balance_m_rem - t_balance_m_rem;
									
									//ボーナス分
									t_principal_b_diff = 0;												//仮計算期間中の返済元金相当額差額(ボーナス分)
									//ボーナス月の処理
									if (t_adv_month == bonus_month_1 || t_adv_month == bonus_month_2) {
										//（ボーナス部分の）各回の借受残元金を計算する
										t_balance_b_rem -= pri_per_b;
										//借受残元金が0未満またはボーナス払いの最終回の場合は借受残元金を0にする
										if (t_balance_b_rem < 0 || pay_times_b <= gb + 1) {
											t_balance_b_rem = 0;
										}
										
										//借受残元金の差分を求める
										t_principal_b_diff = balance_b_rem - t_balance_b_rem;
									}
									
									//繰上げ返済分の元金相当額を満たした場合はループを抜ける
									if (t_principal_m_diff + t_principal_b_diff >= adv_mo) break;
									
									//次の年月
									t_adv_month++;
									//年が変わる
									if (t_adv_month > 12) {
										t_adv_year++;
										t_adv_month -= 12;
									}
								}
								
								//今回繰り上げられる回数を1年単位にする
								//切り上げ
								t_pay_times_m_sho += (12 - (t_pay_times_m_sho % 12) % 12);
								t_pay_times_b_sho = t_pay_times_m_sho / 6;
								
								//実際に繰り上げ返済する金額を求める
								var t_balance_m_rem;
								//繰上げ返済後の借受残元金を計算する
								//最後だけは0円にする
								if ((gm + 1 + pay_times_m_sho + t_pay_times_m_sho) < pay_times_m) {
									t_balance_m_rem = balance_m_rem - pri_per_m * t_pay_times_m_sho;
								} else {
									t_balance_m_rem = 0;
								}
								
								var t_balance_b_rem;
								//（ボーナス部分の）繰上げ返済後の借受残元金を計算する
								//最後だけは0円にする
								if ((gb + 1 + pay_times_b_sho + t_pay_times_b_sho) < pay_times_b) {
									t_balance_b_rem = balance_b_rem - pri_per_b * t_pay_times_b_sho;
								} else {
									t_balance_b_rem = 0;
								}
								
								//借受残元金の差分を求める
								var t_principal_m_diff = balance_m_rem - t_balance_m_rem;
								var t_principal_b_diff = balance_b_rem - t_balance_b_rem;
								
								
								pay_times_m_sho += t_pay_times_m_sho;									//繰り上げられた回数の合計(毎月分)
								pay_times_b_sho += t_pay_times_b_sho;									//繰り上げられた回数の合計(ボーナス分)
								
								adv_mo_m = t_principal_m_diff;										//今回繰上げ返済した金額(毎月分)
								adv_mo_b = t_principal_b_diff;										//今回繰上げ返済した金額(ボーナス分)
								adv_mo = adv_mo_m + adv_mo_b;										//今回繰上げ返済した金額の合計
								
								//借入残元金から繰上げ分を差し引く
								balance_m_rem -= adv_mo_m;											//借入残元金(毎月分)
								balance_b_rem -= adv_mo_b;											//借入残元金(ボーナス分)
								
								balance_rem = balance_m_rem + balance_b_rem;							//借入残元金合計
								
								//繰上げ返済時点の借入残元金
								balance_m_rem_adv = balance_m_rem;									//毎月分
								balance_b_rem_adv = balance_b_rem;									//ボーナス分
								
								payment_total_m_sho += adv_mo_m;										//繰上げ返済した金額(毎月分)
								payment_total_b_sho += adv_mo_b;										//繰上げ返済した金額(ボーナス分)
								payment_total_sho += adv_mo;											//繰上げ返済した金額
							}
							
							break;
						//支払額減額
						case "2":
							adv_mo = 0;
							var adv_mo_m = 0;
							var adv_mo_b = 0;
							//繰上げ返済をした場合
							if (t_adv_mo != "") {
								adv_mo = t_adv_mo;																	//今回繰上げ返済した金額
								advm = gm;																			//繰上げ返済した時点の回数(毎月分)
								advb = gb;																			//繰上げ返済した時点の回数(ボーナス分)
								
								adv_mo_b = Math.round(adv_mo * (bo_rat / 100));											//今回繰上げ返済した金額(ボーナス分)
								adv_mo_m = adv_mo - adv_mo_b;														//今回繰上げ返済した金額(毎月分)
								
								balance_m_rem -= adv_mo_m;															//借入残元金(毎月分)
								balance_b_rem -= adv_mo_b;															//借入残元金(ボーナス分)
								
								balance_rem = balance_m_rem + balance_b_rem;							//借入残元金合計
								
								//繰上げ返済時点の借入残元金
								balance_m_rem_adv = balance_m_rem;													//毎月分
								balance_b_rem_adv = balance_b_rem;													//ボーナス分
								
								payment_total_m_sho += adv_mo_m;														//繰上げ返済した金額(毎月分)
								payment_total_b_sho += adv_mo_b;														//繰上げ返済した金額(ボーナス分)
								payment_total_sho += adv_mo;															//繰上げ返済した金額
							}
							
							//毎回の返済額減額、返済期間はそのまま
							//毎回の元金は均等になるので、1回あたりの元金を計算する（端数四捨五入）
							//毎月分
							pri_per_m = Math.round(balance_m_rem / pay_times_m_rem);
							
							//ボーナス分
							pri_per_b = Math.round(balance_b_rem / pay_times_b_rem);
							
							break;
					}
					
					break;
			}
			
			//繰上げ返済をした場合
			if (t_adv_mo != "") {
				var t_payment_per_y = payment_per_m * 12 + payment_per_b * 2;							//返済額(年間)
				
				
				//現在の年収が入力されている場合
				if (inc != "") {
					//返済比率を計算する
					payment_ratio = Math.round(t_payment_per_y / inc * 100 * 100) / 100;
				} else {
					payment_ratio = "";
				}
				
				
				//表示形式に加工する
				var balance_disp = "-";																	//借入金残高
				var payment_per_m_disp = "-";															//返済額(毎月分)
				var payment_per_b_disp = "-";															//返済額(ボーナス分)
				var payment_per_y_disp = "-";															//返済額(年間)
				var payment_total_disp = "-";															//返済額(総額)
				var payment_ratio_disp = "-";															//返済比率
				if (balance_rem > 0) {
					balance_disp = addFigure(balance_rem);										//借入金残高
				}
				//計算方法によって処理を分ける
				switch (cway) {
					//支払額減額
					case "2":
						//計算方式が「元利均等方式」のとき
						if (ctype == "1") {
							if (payment_per_m > 0) {
								payment_per_m_disp = addFigure(payment_per_m);								//返済額(毎月分)
							}
							if (payment_per_b > 0) {
								payment_per_b_disp = addFigure(payment_per_b);								//返済額(ボーナス分)
							}
							if (t_payment_per_y > 0) {
								payment_per_y_disp = addFigure(t_payment_per_y);								//返済額(年間)
							}
							
							if (payment_ratio != "") {
								if (payment_ratio > 0) {
									payment_ratio_disp = String(payment_ratio) + "%";								//返済比率
								}
							}
						}
						
						break;
				}
				
				//計算結果
				arr_repayment["result"][r] = new Array();
				arr_repayment["result"][r]["balance"] = balance_disp;									//借入金残高
				arr_repayment["result"][r]["payment_per_m"] = payment_per_m_disp;						//返済額(毎月分)
				arr_repayment["result"][r]["payment_per_b"] = payment_per_b_disp;						//返済額(ボーナス分)
				arr_repayment["result"][r]["payment_per_y"] = payment_per_y_disp;						//返済額(年間)
				arr_repayment["result"][r]["payment_total"] = payment_total_disp;						//返済額(総額)
				arr_repayment["result"][r]["payment_ratio"] = payment_ratio_disp;						//返済比率
				
				r++;
			}
		}
		
		
		//計算方式によって処理を分ける
		switch (ctype) {
			//元利均等方式
			case "1":
				var gi = gm;
				
				//1年ごとの処理(1)
				if (gi % 12 == 0) {
					//年間返済額を0クリア
					payment_per_y = 0;
					
					m = 0;
				}
				
				//各回の借受残元金を計算する
				//式: (毎回の返済額 × {pow((1 + 利率), (返済回数 - n)) - 1}) ÷ (利率 × pow((1 + 利率), (返済回数 - n)))
				balance_m_rem = Math.round((payment_per_m * (Math.pow((1 + int_per_calc_m), (pay_times_m - (gi + 1 + pay_times_m_sho))) - 1)) / (int_per_calc_m * Math.pow((1 + int_per_calc_m), (pay_times_m - (gi + 1 + pay_times_m_sho)))));
				
				//既払額を計算する
				payment_total_m += payment_per_m;
				
				//年間返済額を計算する
				payment_per_y += payment_per_m;
				
				var t_payment_per_b = 0;																//今回の返済額(ボーナス分)
				//ボーナス月の処理
				if (t_month == bonus_month_1 || t_month == bonus_month_2) {
					//（ボーナス部分の）今回の金利相当額を計算する
					//式: (前回返済時点の借受残元金 × (1ヶ月あたりの利率 × 前回のボーナス月からの経過月数))
					var t_intrate_b = Math.floor(balance_b_rem * (int_per_calc_m * smp_b));
					
					//もし利率が変わっている場合は変更前の金利相当額を加算する
					t_intrate_b += before_intrate_b;
					before_intrate_b = 0;
					
					//（ボーナス部分の）今回の元金相当額を計算する
					//式: 今回の返済額 - 今回の金利相当額
					var t_balance_b = payment_per_b - t_intrate_b;
					
					//（ボーナス部分の）各回の借受残元金を計算する
					balance_b_rem -= t_balance_b;
					//借受残元金が0未満またはボーナス払いの最終回の場合は借受残元金を0にする
					if (balance_b_rem < 0 || (pay_times_b - pay_times_b_sho) <= gb + 1) {
						balance_b_rem = 0;
					}
					
					t_payment_per_b = payment_per_b;
					//（ボーナス部分の）既払額を計算する
					payment_total_b += payment_per_b;
					
					//年間返済額を計算する
					payment_per_y += payment_per_b;
					
					gb++;
					pay_times_b_rem--;																//残りの返済回数(ボーナス分)
					
					//前回のボーナス月からの経過月数
					smp_b = 0;
				}
				
				//既払額の総額を計算する
				var payment_total = payment_total_m + payment_total_b;
				
				//借入金残高の総額を計算する
				balance_rem = balance_m_rem + balance_b_rem;
				
				//現在の年収が入力されている場合
				if (inc != "") {
					//返済比率を計算する
					payment_ratio = Math.round(payment_per_y / inc * 100 * 100) / 100;
				} else {
					payment_ratio = "";
				}
				
				//次の年月
				t_month++;
				//年が変わる
				if (t_month > 12) {
					t_year++;
					t_month -= 12;
				}
				
				m++;
				
				break;
			//元金均等方式
			case "2":
				var gi = gm;
				
				//1年ごとの処理(1)
				if (gi % 12 == 0) {
					//年間返済額を0クリア
					payment_per_y = 0;
					
					m = 0;
				}
				
				//毎月の返済
				var payment_per_m;
				//毎回の返済額を計算する
				//さらに計算方法によって処理を分ける
				switch (cway) {
					//期間短縮
					case "1":
						//式: (借入金額（毎月分） ÷ 返済回数) × {1 + (返済回数 - (計算対象の回数 + 繰上げられた回数の合計) + 1) × 利率}
						payment_per_m = Math.round((debt_exc_bonus / pay_times_m) * (1 + (pay_times_m - (gi + 1 + pay_times_m_sho) + 1) * int_per_calc_m));
						
						break;
					//支払額減額
					case "2":
						//式: (繰上げ返済時点の残りの借入金額（毎月分） ÷ 繰上げ返済時点の残りの返済回数) × {1 + (繰上げ返済時点の残りの返済回数 - 繰上げ返済時点からの計算対象の回数 + 1) × 利率}
						payment_per_m = Math.round((balance_m_rem_adv / (pay_times_m - advm)) * (1 + ((pay_times_m - advm) - (gi + 1 - advm) + 1) * int_per_calc_m));
						
						break;
				}
				
				//各回の借受残元金を計算する
				//最後だけは0円にする
				if ((gi + 1 + pay_times_m_sho) < pay_times_m) {
					balance_m_rem -= pri_per_m;
				} else {
					balance_m_rem = 0;
				}
				
				//既払額を計算する
				payment_total_m += payment_per_m;
				
				//年間返済額を計算する
				payment_per_y += payment_per_m;
				
				var t_payment_per_b = 0;																//今回の返済額(ボーナス分)
				//ボーナス月の処理
				if (t_month == bonus_month_1 || t_month == bonus_month_2) {
					//ボーナスの返済
					var payment_per_b;
					//毎回の返済額を計算する
					//さらに計算方法によって処理を分ける
					switch (cway) {
						//期間短縮
						case "1":
							//式: (借入金額（ボーナス分） ÷ 返済回数) × {1 + (返済回数 - (計算対象の回数 + 繰上げられた回数の合計) + 1) × (1ヶ月あたりの利率 × 前回のボーナス月からの経過月数)}
							payment_per_b = Math.round((bo_pay / pay_times_b) * (1 + (pay_times_b - (gb + 1 + pay_times_b_sho) + 1) * (int_per_calc_m * smp_b)));
							
							break;
						//支払額減額
						case "2":
							//式: (繰上げ返済時点の残りの借入金額（ボーナス分） ÷ 繰上げ返済時点の残りの返済回数) × {1 + (繰上げ返済時点の残りの返済回数 - 繰上げ返済時点からの計算対象の回数 + 1) × (1ヶ月あたりの利率 × 前回のボーナス月からの経過月数)}
							payment_per_b = Math.round((balance_b_rem_adv / (pay_times_b - advb)) * (1 + ((pay_times_b - advb) - (gb + 1 - advb) + 1) * (int_per_calc_m * smp_b)));
							
							break;
					}
					
					//（ボーナス部分の）各回の借受残元金を計算する
					//最後だけは0円にする
					if ((gb + 1 + pay_times_b_sho) < pay_times_b) {
						balance_b_rem -= pri_per_b;
					} else {
						balance_b_rem = 0;
					}
					
					t_payment_per_b = payment_per_b;
					//（ボーナス部分の）既払額を計算する
					payment_total_b += payment_per_b;
					
					//年間返済額を計算する
					payment_per_y += payment_per_b;
					
					gb++;
					pay_times_b_rem--;																//残りの返済回数(ボーナス分)
					
					//前回のボーナス月からの経過月数
					smp_b = 0;
				}
				
				//既払額の総額を計算する
				var payment_total = payment_total_m + payment_total_b;
				
				//借入金残高の総額を計算する
				balance_rem = balance_m_rem + balance_b_rem;
				
				//次の年月
				t_month++;
				//年が変わる
				if (t_month > 12) {
					t_year++;
					t_month -= 12;
				}
				
				m++;
				
				break;
		}
		
		
		//この利率での最終回時点での借入金残高
		balance_m = balance_m_rem;																	//毎月分
		balance_b = balance_b_rem;																	//ボーナス分
		
		pay_times_m_rem--;																				//残りの返済回数(毎月分)
		
		//繰上げた回数を引いて残り0回の場合はループを抜ける
		if (pay_times_m_rem - pay_times_m_sho <= 0) break;
	}
	
	
	//既払額の総額を計算する
	g_payment_total = payment_total_m + payment_total_b;
	
	//最後の行の返済額(総額)
	var payment_total_disp = "-";																		//返済額(総額)
	if (g_payment_total > 0) {
		payment_total_disp = addFigure(g_payment_total);
	}
	
	//1回でも繰上げ返済をしている場合
	if (r > 0) {
		arr_repayment["result"][r - 1]["payment_total"] = payment_total_disp;								//返済額(総額)
	}
	
	
	//行が足りない場合は空行を作成する
	while (r < 4) {
		arr_repayment["result"][r] = new Array();
		arr_repayment["result"][r]["balance"] = "-";													//借入金残高
		arr_repayment["result"][r]["payment_per_m"] = "-";												//返済額(毎月分)
		arr_repayment["result"][r]["payment_per_b"] = "-";												//返済額(ボーナス分)
		arr_repayment["result"][r]["payment_per_y"] = "-";												//返済額(年間)
		arr_repayment["result"][r]["payment_total"] = "-";												//返済額(総額)
		arr_repayment["result"][r]["payment_ratio"] = "-";												//返済比率
		r++;
	}
	
	arr_repayment["num"]["payment_per_m"] = payment_per_m;												//最終回時点の返済額(毎月分)（表示形式加工前）
	arr_repayment["num"]["payment_per_b"] = payment_per_b;												//最終回時点の返済額(ボーナス分)（表示形式加工前）
	arr_repayment["num"]["payment_ratio"] = payment_ratio;												//最終回時点の返済比率（表示形式加工前）
	arr_repayment["num"]["g_payment_total"] = g_payment_total;											//既払額の総額（表示形式加工前）
	arr_repayment["num"]["payment_total_sho"] = payment_total_sho;										//繰上げ返済額合計
	arr_repayment["num"]["pay_times_m_sho"] = pay_times_m_sho;											//繰上げ返済によって短縮された回数(毎月分)
	arr_repayment["num"]["pay_times_b_sho"] = pay_times_b_sho;											//繰上げ返済によって短縮された回数(ボーナス分)
	
	return arr_repayment;
}

//返済額試算(ボーナスを金額で入力)の借入金(毎月分)、借入金(ボーナス分)を自動計算する
function calc_repayment_details(mode){
	var debt = document.getElementById("debt").value;													//借入金
	var debt_exc_bonus = document.getElementById("debt_exc_bonus").value;								//毎月返済分
	var bo_pay = document.getElementById("bo_pay").value;												//ボーナス返済分
	
	debt = htmlspecialchars(debt);																		//借入金
	debt_exc_bonus = htmlspecialchars(debt_exc_bonus);													//毎月返済分
	bo_pay = htmlspecialchars(bo_pay);																	//ボーナス返済分
	
	//数値変換用の変数
	var t_debt;
	var t_debt_exc_bonus;
	var t_bo_pay;
	
	//入力されたテキストボックスによって計算対象が変化する
	switch (mode) {
		//借入金
		case "debt":
			//借入金が入力されている場合
			if (debt != "") {
				//型を変換する
				t_debt = Number(debt);
				
				//借入金(毎月分)が入力されている場合
				if (debt_exc_bonus != "") {
					//型を変換する
					t_debt_exc_bonus = Number(debt_exc_bonus);
					
					//ボーナス分の金額を自動計算する
					t_bo_pay = t_debt - t_debt_exc_bonus;
					
					//自動計算した値を表示する
					document.getElementById("bo_pay").value = String(t_bo_pay);
					
				//借入金(ボーナス分)が入力されている場合
				} else if (bo_pay != "") {
					//型を変換する
					t_bo_pay = Number(bo_pay);
					
					//毎月分の金額を自動計算する
					t_debt_exc_bonus = t_debt - t_bo_pay;
					
					//自動計算した値を表示する
					document.getElementById("debt_exc_bonus").value = String(t_debt_exc_bonus);
					
				}
			}
			
			break;
		//借入金(毎月分)
		case "debt_exc_bonus":
			//借入金(毎月分)が入力されている場合
			if (debt_exc_bonus != "") {
				//型を変換する
				t_debt_exc_bonus = Number(debt_exc_bonus);
				
				//借入金が入力されている場合
				if (debt != "") {
					//型を変換する
					t_debt = Number(debt);
					
					//ボーナス分の金額を自動計算する
					t_bo_pay = t_debt - t_debt_exc_bonus;
					
					//自動計算した値を表示する
					document.getElementById("bo_pay").value = String(t_bo_pay);
				}
			}
			
			break;
		//借入金(ボーナス分)
		case "bo_pay":
			//借入金(ボーナス分)が入力されている場合
			if (bo_pay != "") {
				//型を変換する
				t_bo_pay = Number(bo_pay);
				
				//借入金が入力されている場合
				if (debt != "") {
					//型を変換する
					t_debt = Number(debt);
					
					//毎月分の金額を自動計算する
					t_debt_exc_bonus = t_debt - t_bo_pay;
					
					//自動計算した値を表示する
					document.getElementById("debt_exc_bonus").value = String(t_debt_exc_bonus);
					
				}
			}
			
			break;
	}
}

// -->

