//ローンシミュレーションスクリプト

//設定リセット
function resetf(f){
	f.n_kari.value = "";
	f.b_kari.value = "";
	f.kikan.value = "";
}

//シミュレーションメインルーチン
function sim_main(f){
	//入力項目チェック
	if (!(n_kari_chk(f) && b_kari_chk(f) && kikan_chk(f) && kinri_chk(f))){
		return;
	}

	//現在の月からボーナスの回を取得
	//dat = new Date()
	//b_month = (dat.getMonth()+1) % 6;

	//入力月からボーナス月の回を取得
	b_month = f.p_month.value;

	
	//諸費用返済用変数宣言
	wk_n_kari = eval(f.n_kari.value * 10000);

	//各返済額の計算
	mon_hensai = Math.ceil(mon_hensai_calc(f));
	bon_hensai = Math.ceil(bon_hensai_calc(f));
	tot_hensai = tot_hensai_calc(f);

	//各返済額の出力
	f.mon_hensai.value = mon_hensai;
	f.bon_hensai.value = bon_hensai;
	f.year_hensai.value = (mon_hensai * 12) +(bon_hensai * 2);
	f.tot_hensai.value = tot_hensai;
	f.mon_hensai.value = k_hensyu(f.mon_hensai.value);
	f.bon_hensai.value = k_hensyu(f.bon_hensai.value);
	f.tot_hensai.value = k_hensyu(f.tot_hensai.value);
	f.year_hensai.value = k_hensyu(f.year_hensai.value);
}

//返済予定表メインルーチン
function hyo_main(f){
	//入力項目チェック
	if (!(n_kari_chk(f) && b_kari_chk(f) && kikan_chk(f) && kinri_chk(f))){
		return;
		}

	//試算結果表示
	sim_main(f)

	//各返済額の計算
	mon_hensai = Math.ceil(mon_hensai_calc(f));	//毎月の返済額
	bon_hensai = Math.ceil(bon_hensai_calc(f));	//ボーナス返済額
	wk_m_zandaka = (eval(f.n_kari.value) - eval(f.b_kari.value)) * 10000;
	mon_zandaka = 100 * Math.floor(wk_m_zandaka / 100);
	wk_b_zandaka = eval(f.b_kari.value) * 10000;
	bon_zandaka = 100 * Math.floor(wk_b_zandaka / 100);
	w=window.open("","hensai_hyo","width=600,height=500,resizable=1,scrollbars=1");
	w.document.open();

	//表のヘッダー部分を出力
	hyo_head();

	//表の繰り返し部分を出力
	hyo_repeat(mon_hensai,bon_hensai,mon_zandaka,bon_zandaka,f);

	//表の合計部分を出力
	hyo_total(mon_hensai,bon_hensai,mon_zandaka,bon_zandaka,f);

	//表の最後の部分を出力
	hyo_bottom();
	
}

//返済表のヘッダー部出力
function hyo_head(){
	html_str = "";
	html_str = "<HTML><HEAD><META http-equiv='Content-Type' content='text/html; charset=Shift_JIS'><TITLE>返済予定表（元利均等返済）</TITLE></HEAD>";
	html_str = html_str + "<BODY BGCOLOR='#f8f8f0'>";
	html_str = html_str + "<CENTER><table width='500' border='0' cellspacing='0'><tr><td COLSPAN='2' align='center'><FONT size=+1><B>返済予定表（元利均等返済）</B></FONT><BR><BR></td></tr>";
	html_str = html_str + "<tr><td align='right'><form name='close'>";
	html_str = html_str + "</form></td></tr></table></CENTER>";
	html_str = html_str + "<CENTER>";
	html_str = html_str + "<TABLE BORDER='0' CELLPADDING='3' CELLSPACING='1'>";
	html_str = html_str + "<TR BGCOLOR='#CCCCFF'>";
	html_str = html_str + "<TH ROWSPAN='2'>回数</TH>";
	html_str = html_str + "<TH ROWSPAN='2'>毎月の返済額</TH>";
	html_str = html_str + "<TH COLSPAN='2'>毎月返済部分</TH>";
	html_str = html_str + "<TH COLSPAN='2'>ボーナス返済部分</TH>";
	html_str = html_str + "<TH ROWSPAN='2'>元本残高</TH></TR>";
	html_str = html_str + "<TR BGCOLOR='#CCCCFF'><TH>内元金</TH>";
	html_str = html_str + "<TH>内利息</TH>";
	html_str = html_str + "<TH>内元金</TH>";
	html_str = html_str + "<TH>内利息</TH></TR>";
	w.document.write(html_str);
}

//返済表の合計部出力
function hyo_total(mon_hen,bon_hen,mon_zan,bon_zan,f){
	wk_m_zandaka = mon_zan;
	wk_b_zandaka = bon_zan;
	wk_zandaka = mon_zan + bon_zan;
	wk_kaisu = eval(f.kikan.value) * 12;

	//毎月返済元金合計
	tot_m_gankin = (eval(f.n_kari.value) - eval(f.b_kari.value)) * 10000;

	//ボーナス返済元金合計
	tot_b_gankin = eval(f.b_kari.value) * 10000;

	//毎月返済＆ボーナス返済利息合計
	tot_m_risoku = 0;
	tot_b_risoku = 0;
	for (i = 1; i <= wk_kaisu; i++){
		wk_m_risoku = m_risoku_calc(wk_m_zandaka,f);
		tot_m_risoku = tot_m_risoku + wk_m_risoku;
		wk_m_gankin = mon_hen - wk_m_risoku;
		wk_m_zandaka = wk_m_zandaka - wk_m_gankin;
		if(i % 6 == b_month){
			wk_b_risoku = b_risoku_calc(wk_b_zandaka,f);
			tot_b_risoku = tot_b_risoku + wk_b_risoku;
			wk_b_gankin = bon_hen - wk_b_risoku;
			wk_b_zandaka = wk_b_zandaka - wk_b_gankin;
			wk_m_hensai = mon_hen + wk_b_risoku + wk_b_gankin;
			}
		else{
			wk_b_risoku = "-";
			wk_b_gankin = "-";
			wk_m_hensai = mon_hen;
			}
		wk_zandaka = wk_m_zandaka + wk_b_zandaka;
	}

	//毎月返済額合計
	tot_m_hensai = tot_m_gankin + tot_b_gankin + tot_m_risoku + tot_b_risoku;//(mon_hen * wk_kaisu) + (bon_hen * wk_kaisu / 6);

	//各合計出力
	html_str = "";
	html_str = html_str + "<TR BGCOLOR='#eeeee8'><TD ALIGN=right><B>合計</B></TD>";
	html_str = html_str + "<TD ALIGN=right><B>" + tot_m_hensai + "</B></TD>";
	html_str = html_str + "<TD ALIGN=right><B>" + tot_m_gankin + "</B></TD>";
	html_str = html_str + "<TD ALIGN=right><B>" + tot_m_risoku + "</B></TD>";
	html_str = html_str + "<TD ALIGN=right><B>" + tot_b_gankin + "</B></TD>";
	html_str = html_str + "<TD ALIGN=right><B>" + tot_b_risoku + "</B></TD>";
	html_str = html_str + "<TD ALIGN=center><B>-</B></TD>" + "</TR>";
	w.document.write(html_str);
	}

//返済表の繰り返し部分出力
function hyo_repeat(mon_hen,bon_hen,mon_zan,bon_zan,f){
	wk_kaisu = eval(f.kikan.value) * 12;
	wk_m_zandaka = mon_zan;
	wk_b_zandaka = bon_zan;
	//残高初期値
	wk_zandaka = mon_zan + bon_zan;
	//非ボーナス月用ハイフン
	b_bar = "";
	for (i = 1; i <= wk_kaisu; i++){
		wk_m_risoku = m_risoku_calc(wk_m_zandaka,f);
		wk_m_gankin = mon_hen - wk_m_risoku;
		wk2_m_zandaka = wk_m_zandaka;
		wk_m_zandaka = wk_m_zandaka - wk_m_gankin;
		//ボーナス時の処理
		if(i % 6  == b_month){
			wk_b_risoku = b_risoku_calc(wk_b_zandaka,f);
			wk_b_gankin = bon_hen - wk_b_risoku;
			wk2_b_zandaka = wk_b_zandaka;
			wk_b_zandaka = wk_b_zandaka - wk_b_gankin;
			wk_m_hensai = mon_hen + wk_b_risoku + wk_b_gankin;
			}
		else{
			wk_b_risoku = "-";
			wk_b_gankin = "-";
			wk_m_hensai = mon_hen;
			}
		wk_zandaka = wk_m_zandaka + wk_b_zandaka;

		//最終行の処理
		if(i == wk_kaisu){
			if(b_month == 0 ){
			wk_m_gankin = wk2_m_zandaka;
			wk_b_gankin = wk2_b_zandaka;
			wk_m_hensai = wk_m_gankin + wk_b_gankin + wk_m_risoku + wk_b_risoku;
			wk_zandaka = 0;
			}
		else{
			wk_zandaka = 0;
		}

//			wk_m_gankin = wk2_m_zandaka;
//			wk_b_gankin = wk2_b_zandaka;
//			wk_m_hensai = wk_m_gankin + wk_b_gankin + wk_m_risoku + wk_b_risoku;
//			wk_zandaka = 0;
			}

//		html_str = "";
		html_str = "<TR BGCOLOR='#eeeee8'>";
		html_str = html_str + "<TD ALIGN=right>" + i + "</TD>";
		html_str = html_str + "<TD ALIGN=right>" + wk_m_hensai + "</TD>";
		html_str = html_str + "<TD ALIGN=right>" + wk_m_gankin + "</TD>";
		html_str = html_str + "<TD ALIGN=right>" + wk_m_risoku + "</TD>";
		html_str = html_str + "<TD ALIGN=right>" + wk_b_gankin + "</TD>";
		html_str = html_str + "<TD ALIGN=right>" + wk_b_risoku + "</TD>";
		html_str = html_str + "<TD ALIGN=right>" + wk_zandaka + "</TD>";
		html_str = html_str + "</TR>";
		w.document.write(html_str);

	}
}

//表の最後出力
function hyo_bottom(){
	html_str = "";
	html_str = "</TABLE></CENTER>";
	html_str = html_str + "<CENTER><BR><table width='500' border='0' cellspacing='0'><tr><td COLSPAN='2'><font size='+1' color='#FF6633'>ご留意事項：</font></td></tr>";
	html_str = html_str + "<tr><td valign='top' align='right' nowrap><font color='#FF6633'>　１．</font></td><td><font color='#FF6633'>お借り入れ期間中を通して、お借り入れ利率は変わらないものと仮定しております。</font></td></tr>";
	html_str = html_str + "<tr><td valign='top' align='right' nowrap><font color='#FF6633'>　２．</font></td><td><font color='#FF6633'>将来の金利動向により、実際のご返済額は、試算結果と異なることにご注意ください。</font></td></tr></table></CENTER></BODY></HTML>";
	w.document.write(html_str);
}

//毎月返済利息の計算
function m_risoku_calc(zandaka,f){
	zandaka = 100 * Math.floor(zandaka / 100);
	m_risoku = Math.floor(zandaka * (f.kinri.value) / 100 / 12);
	return(m_risoku);
}

//ボーナス返済利息の計算
function b_risoku_calc(zandaka,f){
	zandaka = 100 * Math.floor(zandaka / 100);
	b_risoku = Math.floor(zandaka * (f.kinri.value) / 100 / 2);
	return(b_risoku);
}

//Numericチェック
function com_num_chk(n) {
	for(i = 0; i <  n.length; i++){
		t = n.substring(i,i+1);
		if (t == "0" || t == "1" || t == "2" || t == "3" || t == "4" ||
		t == "5" || t == "6" || t == "7" || t == "8" || t == "9" ||
		t == "."){
 			continue;
			}
		else{
			return false;
		}
	}
	return true;
}

//カンマ編集
function k_hensyu(n) {
        cnt = 0;
        ans = "";
        len = n.length;
        for(i = 0; i < n.length; i++){
                t = n.substring(i,i+1);
                ans = ans + t;
                cnt = cnt + 1;
                if(n.length - cnt == 9 || n.length - cnt == 6 || n.length - cnt == 3){
                        ans = ans + ",";
                }
        }
        return(ans);
}

//お借入額の入力チェック
function n_kari_chk(f) {
	wk = f.n_kari.value;
	if (wk == ""){
		alert("お借入額が入力されていません。");
		f.n_kari.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("お借入額は半角数字で入力してください。");
		f.n_kari.focus();
		return false;
	}
	if(wk < 10 || wk > 5000){
		alert ("お借入額は１０万円〜５０００万円の間で入力して下さい。");
		f.n_kari.focus();
		return false;
	}
	return true;
}

//ボーナス返済額の入力チェック
function b_kari_chk(f) {
	wk_n = f.n_kari.value;
	wk_b = f.b_kari.value;
	if (wk_b == ""){
		f.b_kari.value = "0";
		return true;
	}
	if (!com_num_chk(wk_b)){
		alert ("ボーナス返済額は半角数字で入力してください。");
		f.b_kari.focus();
		return false;
	}
	if((wk_b * 2) > wk_n){
	alert ("ボーナス返済額はお借入額の半分以下を入力して下さい。");
		f.b_kari.focus();
		return false;
	}
	return true;
}

//借入期間の入力チェック
function kikan_chk(f) {
	wk = f.kikan.value;
	if (wk == ""){
		alert("返済期間が入力されていません。");
		f.kikan.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("返済期間は半角数字で入力してください。");
		f.kikan.focus();
		return false;
	}
	if(wk < 1 || wk > 35){
		alert ("返済期間は１〜３５年の間で入力して下さい。");
		f.kikan.focus();
		return false;
	}
	return true;
}

//金利の入力チェック
function kinri_chk(f) {
	wk = f.kinri.value;
	if (wk == ""){
		alert("金利が入力されていません。");
		f.kinri.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("金利は半角数字で入力してください。");
		f.kinri.focus();
		return false;
	}
	if(wk < 0.001 || wk > 99.999){
		alert ("金利は0.001〜99.999%の間で入力して下さい。");
		f.kinri.focus();
		return false;
	}
	return true;
}

//ブラウザのチェック
function br_chk(m){
	e_lit = "";
	ee_lit = "";
	msg = "";
	e_msg = "";
	ee_msg = "";
	flg = "off";

	if(navigator.appName == "Netscape" && navigator.appVersion.substring(0,3) == "3.0"){

		for(i=0; i<m.length; i++){
			lit = m.substring(i,i+1);
			e_lit = escape(lit);
			e_len = e_lit.length;

			for(j=0; j<e_lit.length; j++){
				ee_lit = e_lit.substring(j,j+1);
				if(ee_lit == "%" && e_len == 3){
					ee_lit = e_lit.substring(j,j+3);
					j = j + 3;
				}
				if(ee_lit == "%8E"){
					e_msg = e_msg + "%8E%8E";
				}
				e_msg = e_msg + e_lit;
			}
			msg = unescape(e_msg);
		}
		return(msg);
	}else{
		return(m);
	}
}

//毎月返済額の計算
function mon_hensai_calc(f){
	wk_kari = eval(f.n_kari.value * 10000) - eval(f.b_kari.value * 10000);
	wk_kinri = eval(f.kinri.value / 100);
	wk_kaisu = eval(f.kikan.value * 12);
	wk_bunsi = wk_kari * (wk_kinri / 12) * Math.pow((1 + (wk_kinri / 12)),wk_kaisu);
	wk_bunbo = Math.pow((1 + (wk_kinri / 12)),wk_kaisu) - 1;
	kingaku = wk_bunsi / wk_bunbo;
	return(kingaku);
}

//ボーナス返済額の計算
function bon_hensai_calc(f){
	wk_b_kari = eval(f.b_kari.value * 10000);
	wk_kinri = eval(f.kinri.value / 100);
	wk_kaisu = eval(f.kikan.value * 2);
	wk_bunsi = wk_b_kari * wk_kinri * 6 / 12 * Math.pow((1 + wk_kinri * 6 / 12),wk_kaisu);
	wk_bunbo = Math.pow(1 + (wk_kinri * 6 / 12),wk_kaisu) - 1;
	kingaku = wk_bunsi / wk_bunbo;
	return(kingaku);
}

//総返済額の計算
function tot_hensai_calc(f){
	wk_m_zandaka = (eval(f.n_kari.value) - eval(f.b_kari.value)) * 10000;
	mon_zandaka = 100 * Math.floor(wk_m_zandaka / 100);
	wk_b_zandaka = eval(f.b_kari.value) * 10000;
	bon_zandaka = 100 * Math.floor(wk_b_zandaka / 100);
	wk_m_zandaka = mon_zandaka;
	wk_b_zandaka = bon_zandaka;
	wk_zandaka = mon_zandaka + bon_zandaka;
	wk_kaisu = eval(f.kikan.value) * 12;

	//毎月返済元金合計
	tot_m_gankin = (eval(f.n_kari.value) - eval(f.b_kari.value)) * 10000;

	//ボーナス返済元金合計
	tot_b_gankin = eval(f.b_kari.value) * 10000;

	//毎月返済＆ボーナス返済利息合計
	tot_m_risoku = 0;
	tot_b_risoku = 0;
	for (i = 1; i <= wk_kaisu; i++){
		wk_m_risoku = m_risoku_calc(wk_m_zandaka,f);
		tot_m_risoku = tot_m_risoku + wk_m_risoku;
		wk_m_gankin = mon_hensai - wk_m_risoku;
		wk_m_zandaka = wk_m_zandaka - wk_m_gankin;
		if(i % 6 == 0){
			wk_b_risoku = b_risoku_calc(wk_b_zandaka,f);
			tot_b_risoku = tot_b_risoku + wk_b_risoku;
			wk_b_gankin = bon_hensai - wk_b_risoku;
			wk_b_zandaka = wk_b_zandaka - wk_b_gankin;
			wk_m_hensai = mon_hensai + wk_b_risoku + wk_b_gankin;
			}
		else{
			wk_b_risoku = "-";
			wk_b_gankin = "-";
			wk_m_hensai = mon_hensai;
			}
		}

	//毎月返済額合計
	kingaku = tot_m_gankin + tot_b_gankin + tot_m_risoku + tot_b_risoku;
	return(kingaku);
}

//フォーカス処理
function init_focus(f){
	f.forms[0].elements[0].focus();
	}

