﻿// -------------------------------------------------------------------------------------------------
// Copyright(C) ZEROSKY All Rights Reserved.
// http://www.zero-sky.net/
// Copyright (C) SKYONLINE, Inc. All Rights Reserved.
// http://www.skyonline.co.jp/
// -------------------------------------------------------------------------------------------------
// このスクリプトは（株）スカイオンラインに著作権があり、ZERO-SKYにて無料配布しているものです。
// 法人・個人・商用目的などの制限なく利用は無料ですが、サポートや質問の受付は一切行っておりません。
// また、以下のルールを必ず守ってください。
//
// [1] 再配布（販売含む）・流用を禁止します。
// [2] 本スクリプト（sim.js）内に記載している著作権表示・署名（コピーライト）を改変・削除・見えなく
//     するなど、著作権の侵害行為を固く禁じます。
// [3] 本スクリプト（sim.js）の改変を固く禁じます。但し、各値の部分は自己責任において変更することを
//     認めます。
// [4] HTML部分に当サービスや著作者の署名（コピーライト）を表示する必要はありません。
// [5] 設置代行される場合は、必ず「事業者登録」を行ってください。登録料は【無料】です。
// [6] スクリプトの使用で起きた全ての損害に対し、弊社はその責任を一切負いません。
// [7] 使用の際は、フリーウェア利用規定（以下参照）を遵守してください。
//     http://www.zero-sky.net/html/rule_free.html
// -------------------------------------------------------------------------------------------------


function k2_hensyu(f,loan04){
	loan041 = f.loan04.value;
	f.loan04.value = k_delete(loan041);
	loan041 = f.loan04.value;
	return true;
}


function reset(f){
	f.loan03.value = "";
	f.loan04.value = "";
	f.loan05.value  = "";
}


//シミュレーションメインルーチン
function sim_main(f){
	f.loan03.value = k_delete(f.loan03.value);
	f.loan04.value = k_delete(f.loan04.value);
	if (!(loan03_chk(f) && loan04_chk(f) && loan05_chk(f) && loan06_chk(f))){
		return;
	}


	//諸費用返済用変数宣言
	wk_loan03 = eval(f.loan03.value * 10000);


	//	各返済額の計算
	result01 = Math.ceil(result01_calc(f));
	result02 = Math.ceil(result02_calc(f));
	result04 = result04_calc(f);


	//	各返済額の出力
	f.result01.value = result01;
	f.result02.value = result02 + result01;
	f.result03.value = (result01 * 12) +(result02 * 2);
	f.result04.value = result04;

	f.result01.value = k_hensyu(f.result01.value);
	f.result02.value = k_hensyu(f.result02.value);
	f.result04.value = k_hensyu(f.result04.value);
	f.result03.value = k_hensyu(f.result03.value);
}


//ラジオボタンチェック
function radio(part){
	if(part == "0"){
		document.f.loan06.value = "";
		document.f.loan06.focus();
	}
	return true;
}


//毎月返済利息の計算
function m_risoku_calc(zandaka,f){
	zandaka = 100 * Math.floor(zandaka / 100);
	m_risoku = Math.floor(zandaka * (f.loan06.value) / 100 / 12);
	return(m_risoku);
}


//ボーナス返済利息の計算
function b_risoku_calc(zandaka,f){
	zandaka = 100 * Math.floor(zandaka / 100);
	b_risoku = Math.floor(zandaka * (f.loan06.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 lost_hensyu(obj){
	obj.value = k_delete(obj.value);
}


//カンマ編集
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 k_delete(n) {
	ans = "";
	len = n.length;
	for(i = 0; i < n.length; i++){
		t = n.substring(i,i+1);
		if(t == ","){
			t = "";
		}
		ans = ans + t;
	}
	return(ans);
}


//お借り入れ金額の入力チェック
function loan03_chk(f) {
	wk = f.loan03.value;
	if (wk == ""){
		alert("お借り入れ金額が入力されていません。");
		f.loan03.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("お借り入れ金額は半角数字で入力してください。");
		f.loan03.focus();
		return false;
	}
	if(wk < 50 || wk > 9999){
		alert ("お借り入れ金額は50万円～9999万円の間で入力してください。");
		f.loan03.focus();
		return false;
	}
	return true;
}


//ボーナス月のご返済金額の入力チェック
function loan04_chk(f) {
	wk_n = f.loan03.value;
	wk_b = f.loan04.value;
	if (wk_b == ""){
		f.loan04.value = "0";
		return true;
	}
	if (!com_num_chk(wk_b)){
		alert ("ボーナス月のご返済金額は半角数字で入力してください。");
		f.loan04.focus();
		return false;
	}
	if((wk_b * 2) > wk_n){
		alert ("ボーナス月のご返済金額はお借り入れ金額の半分以下を入力して下さい。");
		f.loan04.focus();
		return false;
	}
	return true;
}


//借入期間の入力チェック
function loan05_chk(f) {
	wk = f.loan05.value;
	if (wk == ""){
		alert("お借り入れ期間が入力されていません。");
		f.loan05.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("お借り入れ期間は半角数字で入力して下さい。");
		f.loan05.focus();
		return false;
	}
	if(wk < 3 || wk > 35){
		alert ("お借り入れ期間は3～35年の間で入力して下さい。");
		f.loan05.focus();
		return false;
	}
	return true;
}


//お借り入れ利率（年利）の入力チェック
function loan06_chk(f) {
	wk = f.loan06.value;
	if (wk == ""){
		alert("お借り入れ利率（年利）が入力されていません。");
		f.loan06.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("お借り入れ利率（年利）は半角数字で入力してください。");
		f.loan06.focus();
		return false;
	}
	if(wk < 0.001 || wk > 15.00){
		alert ("お借り入れ利率（年利）は0.001～15.00％の間で入力して下さい。");
		f.loan06.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 result01_calc(f){
	wk_kari = eval(f.loan03.value * 10000) - eval(f.loan04.value * 10000);
	wk_loan06 = eval(f.loan06.value / 100);
	wk_kaisu = eval(f.loan05.value * 12);
	wk_bunsi = wk_kari * (wk_loan06 / 12) * Math.pow((1 + (wk_loan06 / 12)),wk_kaisu);
	wk_bunbo = Math.pow((1 + (wk_loan06 / 12)),wk_kaisu) - 1;
	kingaku = wk_bunsi / wk_bunbo;
	return(kingaku);
}


//ボーナス月のご返済金額の計算
function result02_calc(f){
	wk_loan04 = eval(f.loan04.value * 10000);
	wk_loan06 = eval(f.loan06.value / 100);
	wk_kaisu = eval(f.loan05.value * 2);
	wk_bunsi = wk_loan04 * wk_loan06 * 6 / 12 * Math.pow((1 + wk_loan06 * 6 / 12),wk_kaisu);
	wk_bunbo = Math.pow(1 + (wk_loan06 * 6 / 12),wk_kaisu) - 1;
	kingaku = wk_bunsi / wk_bunbo;
	return(kingaku);
}


//総返済額の計算
function result04_calc(f){
	wk_m_zandaka = (eval(f.loan03.value) - eval(f.loan04.value)) * 10000;
	mon_zandaka = 100 * Math.floor(wk_m_zandaka / 100);
	wk_b_zandaka = eval(f.loan04.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.loan05.value) * 12;
	//	毎月返済元金合計
	tot_m_gankin = (eval(f.loan03.value) - eval(f.loan04.value)) * 10000;
	//	ボーナス返済元金合計
	tot_b_gankin = eval(f.loan04.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 = result01 - 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 = result02 - wk_b_risoku;
			wk_b_zandaka = wk_b_zandaka - wk_b_gankin;
			wk_m_hensai = result01 + wk_b_risoku + wk_b_gankin;
			}
		else{
			//wk_b_risoku = "-";
			//wk_b_gankin = "-";
			wk_m_hensai = result01;
			}
		}
	//	毎月返済額合計
	kingaku = tot_m_gankin + tot_b_gankin + tot_m_risoku + tot_b_risoku;
	return(kingaku);
}

//ブラウザの判別 
var agent = navigator.userAgent; var nv = 0;
if(agent.indexOf("Mozilla/2") == 0){var nv= 1} 
//--><!--

function k2_hensyu(f,loan04){
	loan041 = f.loan04.value;
	f.loan04.value = k_delete(loan041);
	loan041 = f.loan04.value;
	return true;
}


function reset(f){
	f.loan03.value = "";
	f.loan04.value = "";
	f.loan05.value  = "";
	}


//シミュレーションメインルーチン
function sim_main(f){
	f.loan03.value = k_delete(f.loan03.value);
	f.loan04.value = k_delete(f.loan04.value);
	if (!(loan03_chk(f) && loan04_chk(f) && loan05_chk(f) && loan06_chk(f))){
		return;
	}


	//諸費用返済用変数宣言
	wk_loan03 = eval(f.loan03.value * 10000);


	//	各返済額の計算
	result01 = Math.ceil(result01_calc(f));
	result02 = Math.ceil(result02_calc(f));
	result04 = result04_calc(f);


	//	各返済額の出力
	f.result01.value = result01;
	f.result02.value = result02 + result01;
	f.result03.value = (result01 * 12) +(result02 * 2);
	f.result04.value = result04;

	f.result01.value = k_hensyu(f.result01.value);
	f.result02.value = k_hensyu(f.result02.value);
	f.result04.value = k_hensyu(f.result04.value);
	f.result03.value = k_hensyu(f.result03.value);
}


//ラジオボタンチェック
function radio(part){
	if(part == "0"){
		document.f.loan06.value = "";
		document.f.loan06.focus();
	}
	return true;
}


//毎月返済利息の計算
function m_risoku_calc(zandaka,f){
	zandaka = 100 * Math.floor(zandaka / 100);
	m_risoku = Math.floor(zandaka * (f.loan06.value) / 100 / 12);
	return(m_risoku);
}


//ボーナス返済利息の計算
function b_risoku_calc(zandaka,f){
	zandaka = 100 * Math.floor(zandaka / 100);
	b_risoku = Math.floor(zandaka * (f.loan06.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 lost_hensyu(obj){
	obj.value = k_delete(obj.value);
}


//カンマ編集
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 k_delete(n) {
	ans = "";
	len = n.length;
	for(i = 0; i < n.length; i++){
		t = n.substring(i,i+1);
		if(t == ","){
			t = "";
		}
		ans = ans + t;
	}
	return(ans);
}


//お借り入れ金額の入力チェック
function loan03_chk(f) {
	wk = f.loan03.value;
	if (wk == ""){
		alert("お借り入れ金額が入力されていません。");
		f.loan03.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("お借り入れ金額は半角数字で入力してください。");
		f.loan03.focus();
		return false;
	}
	if(wk < 50 || wk > 9999){
		alert ("お借り入れ金額は50万円～9999万円の間で入力してください。");
		f.loan03.focus();
		return false;
	}
	return true;
}


//ボーナス月のご返済金額の入力チェック
function loan04_chk(f) {
	wk_n = f.loan03.value;
	wk_b = f.loan04.value;
	if (wk_b == ""){
		f.loan04.value = "0";
		return true;
	}
	if (!com_num_chk(wk_b)){
		alert ("ボーナス月のご返済金額は半角数字で入力してください。");
		f.loan04.focus();
		return false;
	}
	if((wk_b * 2) > wk_n){
		alert ("ボーナス月のご返済金額はお借り入れ金額の半分以下を入力して下さい。");
		f.loan04.focus();
		return false;
	}
	return true;
}


//借入期間の入力チェック
function loan05_chk(f) {
	wk = f.loan05.value;
	if (wk == ""){
		alert("お借り入れ期間が入力されていません。");
		f.loan05.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("お借り入れ期間は半角数字で入力して下さい。");
		f.loan05.focus();
		return false;
	}
	if(wk < 3 || wk > 35){
		alert ("お借り入れ期間は3～35年の間で入力して下さい。");
		f.loan05.focus();
		return false;
	}
	return true;
}


//お借り入れ利率（年利）の入力チェック
function loan06_chk(f) {
	wk = f.loan06.value;
	if (wk == ""){
		alert("お借り入れ利率（年利）が入力されていません。");
		f.loan06.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("お借り入れ利率（年利）は半角数字で入力してください。");
		f.loan06.focus();
		return false;
	}
	if(wk < 0.001 || wk > 15.00){
		alert ("お借り入れ利率（年利）は0.001～15.00％の間で入力して下さい。");
		f.loan06.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 result01_calc(f){
	wk_kari = eval(f.loan03.value * 10000) - eval(f.loan04.value * 10000);
	wk_loan06 = eval(f.loan06.value / 100);
	wk_kaisu = eval(f.loan05.value * 12);
	wk_bunsi = wk_kari * (wk_loan06 / 12) * Math.pow((1 + (wk_loan06 / 12)),wk_kaisu);
	wk_bunbo = Math.pow((1 + (wk_loan06 / 12)),wk_kaisu) - 1;
	kingaku = wk_bunsi / wk_bunbo;
	return(kingaku);
}


//ボーナス月のご返済金額の計算
function result02_calc(f){
	wk_loan04 = eval(f.loan04.value * 10000);
	wk_loan06 = eval(f.loan06.value / 100);
	wk_kaisu = eval(f.loan05.value * 2);
	wk_bunsi = wk_loan04 * wk_loan06 * 6 / 12 * Math.pow((1 + wk_loan06 * 6 / 12),wk_kaisu);
	wk_bunbo = Math.pow(1 + (wk_loan06 * 6 / 12),wk_kaisu) - 1;
	kingaku = wk_bunsi / wk_bunbo;
	return(kingaku);
}


//総返済額の計算
function result04_calc(f){
	wk_m_zandaka = (eval(f.loan03.value) - eval(f.loan04.value)) * 10000;
	mon_zandaka = 100 * Math.floor(wk_m_zandaka / 100);
	wk_b_zandaka = eval(f.loan04.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.loan05.value) * 12;
	//	毎月返済元金合計
	tot_m_gankin = (eval(f.loan03.value) - eval(f.loan04.value)) * 10000;
	//	ボーナス返済元金合計
	tot_b_gankin = eval(f.loan04.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 = result01 - 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 = result02 - wk_b_risoku;
			wk_b_zandaka = wk_b_zandaka - wk_b_gankin;
			wk_m_hensai = result01 + wk_b_risoku + wk_b_gankin;
			}
		else{
			//wk_b_risoku = "-";
			//wk_b_gankin = "-";
			wk_m_hensai = result01;
			}
		}
	//	毎月返済額合計
	kingaku = tot_m_gankin + tot_b_gankin + tot_m_risoku + tot_b_risoku;
	return(kingaku);
}

//ブラウザの判別 
var agent = navigator.userAgent; var nv = 0;
if(agent.indexOf("Mozilla/2") == 0){var nv= 1}
