// -------------------------------------------------------------------------------------------------
// 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 kariset(){
	f.n_kari.value = k_delete(f.n_buken.value) - k_delete(f.n_jiko.value);
}


function k2_hensyu(f,b_kari){
	b_kari1 = f.b_kari.value;
	f.b_kari.value = k_delete(b_kari1);
	b_kari1 = f.b_kari.value;
	return true;
}


function reset(f){
	f.n_kari.value = "";
	f.b_kari.value = "";
	f.kikan.value  = "";
	}


//シミュレーションメインルーチン
function sim_main(f){
	f.n_buken.value = k_delete(f.n_buken.value);
	f.n_jiko.value = k_delete(f.n_jiko.value);
	f.n_kari.value = k_delete(f.n_kari.value);
	f.b_kari.value = k_delete(f.b_kari.value);
	if (!(n_buken_chk(f) && n_jiko_chk(f) && n_kari_chk(f) && b_kari_chk(f) && kikan_chk(f) && kinri_chk(f))){
		return;
	}


	//諸費用返済用変数宣言
	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 + mon_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 radio(part){
	if(part == "0"){
		document.f.kinri.value = "";
		document.f.kinri.focus();
	}
	return true;
}


//毎月返済利息の計算
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 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 n_buken_chk(f) {
	wk = f.n_buken.value;
	if (wk == ""){
		alert("物件価格が入力されていません。");
		f.n_buken.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("物件価格は半角数字で入力してください。");
		f.n_buken.focus();
		return false;
	}
	if(wk < 50 || wk > 9999){
		alert ("物件価格は５０万円～９９９９万円の間で入力してください。");
		f.n_buken.focus();
		return false;
	}
	return true;
}


//自己資金の入力チェック
function n_jiko_chk(f) {
	wk = f.n_jiko.value;
	if (wk == ""){
		alert("自己資金が入力されていません。");
		f.n_jiko.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("自己資金は半角数字で入力してください。");
		f.n_jiko.focus();
		return false;
	}
	if(wk < 0 || wk > 9999){
		alert ("自己資金は５０万円～９９９９万円の間で入力してください。");
		f.n_jiko.focus();
		return false;
	}
	return true;
}


//お借入額の入力チェック
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 < 50 || wk > 9999){
		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 < 3 || 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 > 15.00){
		alert ("金利は0.001～15.00%の間で入力して下さい。");
		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(ff){
	f.n_jiko.value = 0;//自己資金初期値
	f.kikan.value = 35;//借入期間初期値
	init_focus.string = '';
	init_focus.string = unescape(window.location.search.substring(1));//?をサプレス
	if (!(init_focus.string == '')){
		f.n_buken.value = init_focus.string;
		kariset();
		f.n_jiko.focus();
		f.n_jiko.select();
	}else{
		f.n_buken.focus();
	}
}

//ブラウザの判別 
var agent = navigator.userAgent; var nv = 0;
if(agent.indexOf("Mozilla/2") == 0){var nv= 1} 
//--><!--
function kariset(){
	f.n_kari.value = k_delete(f.n_buken.value) - k_delete(f.n_jiko.value);
}


function k2_hensyu(f,b_kari){
	b_kari1 = f.b_kari.value;
	f.b_kari.value = k_delete(b_kari1);
	b_kari1 = f.b_kari.value;
	return true;
}


function reset(f){
	f.n_kari.value = "";
	f.b_kari.value = "";
	f.kikan.value  = "";
	}


//シミュレーションメインルーチン
function sim_main(f){
	f.n_buken.value = k_delete(f.n_buken.value);
	f.n_jiko.value = k_delete(f.n_jiko.value);
	f.n_kari.value = k_delete(f.n_kari.value);
	f.b_kari.value = k_delete(f.b_kari.value);
	if (!(n_buken_chk(f) && n_jiko_chk(f) && n_kari_chk(f) && b_kari_chk(f) && kikan_chk(f) && kinri_chk(f))){
		return;
	}


	//諸費用返済用変数宣言
	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 + mon_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 radio(part){
	if(part == "0"){
		document.f.kinri.value = "";
		document.f.kinri.focus();
	}
	return true;
}


//毎月返済利息の計算
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 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 n_buken_chk(f) {
	wk = f.n_buken.value;
	if (wk == ""){
		alert("物件価格が入力されていません。");
		f.n_buken.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("物件価格は半角数字で入力してください。");
		f.n_buken.focus();
		return false;
	}
	if(wk < 50 || wk > 9999){
		alert ("物件価格は５０万円～９９９９万円の間で入力してください。");
		f.n_buken.focus();
		return false;
	}
	return true;
}


//自己資金の入力チェック
function n_jiko_chk(f) {
	wk = f.n_jiko.value;
	if (wk == ""){
		alert("自己資金が入力されていません。");
		f.n_jiko.focus();
		return false;
	}
	if (!com_num_chk(wk)){
		alert ("自己資金は半角数字で入力してください。");
		f.n_jiko.focus();
		return false;
	}
	if(wk < 0 || wk > 9999){
		alert ("自己資金は５０万円～９９９９万円の間で入力してください。");
		f.n_jiko.focus();
		return false;
	}
	return true;
}


//お借入額の入力チェック
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 < 50 || wk > 9999){
		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 < 3 || 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 > 15.00){
		alert ("金利は0.001～15.00%の間で入力して下さい。");
		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(ff){
	f.n_jiko.value = 0;//自己資金初期値
	f.kikan.value = 35;//借入期間初期値
	init_focus.string = '';
	init_focus.string = unescape(window.location.search.substring(1));//?をサプレス
	if (!(init_focus.string == '')){
		f.n_buken.value = init_focus.string;
		kariset();
		f.n_jiko.focus();
		f.n_jiko.select();
	}else{
		f.n_buken.focus();
	}
}

//ブラウザの判別 
var agent = navigator.userAgent; var nv = 0;
if(agent.indexOf("Mozilla/2") == 0){var nv= 1} 
