﻿/*
 -機能名称：-

 -更新履歴	：
 
 -バージョン：4.0.0
 -○ＫＲリニューアル
 
 -バージョン：4.1.1
 -更新担当  ：NES 中村
 -○課題5311: 支払いシュミレーターの価格が書き換え不可 
*/


// クッキーにセットするローン返済早見表条件名
var sfloan_cookie_search_loan = "ssloan";
// ローン返済早見表関連(Cookieパラメータ名)
var sfloan_cookie_prm = ["LOAA", "LOAB", "LOAC", "LOAD"];
// ローン返済早見表関連(Formパラメータ名)
var sfloan_form_prm = ["deposit", "rate", "bonus1", "loany1"];
// テキストボックスの中に入れる数の定義
var kamin = "";
// 閉じるボタンフラグ 
/* ※課題5311対策で追加。
   テキストボックスがフォーカスを失った時、OnBlurで検知し再計算を行なうが、
  「閉じる」ボタン押下時によって起こるOnBlurでは再計算をしたくない。
   なので、「閉じる」ボタン押下時にフラグ"closeBtnFlg"を立てて判断する。
   <使い方>
    テキストボックスがフォーカスを得た時 closeBtnFlg に "0"を設定する。
   「閉じる」ボタン押下時には closeBtnFlg に"1"を設定する。
    再計算関数"sfloan_setKakaku"では closeBtnFlg を参照し、"1"だったら何もしない。
*/
var closeBtnFlg = 0;

/**
 * ローン試算表パネルを表示します。
 * 一覧共通（テキスト、画像、左右表示）
 **/
function sfloan_window(my, lrview_id, ka)
{
	// パネル名、閉じるボタンの名前を特定します
	var panel_element_id = sfloan_getPanelElementId(lrview_id);
	var close_name = "LoanPanel" + panel_element_id + "_close";
	var panel_name = "LoanPanel" + panel_element_id;
	var ka_name="LoanPanel" + panel_element_id + "_Ka";

	// 閉じる画像先読み促進
	var close_bt = document.getElementById(close_name);
	var pre_img = new Image();
	pre_img.src = close_bt.src;
	var sougaku_obj = sfkapmd_divisionStr(ka);
	kamin = eval(sougaku_obj.kapmdmin);
	
	// 物件価格をセット
	document.getElementById(ka_name).innerHTML = '<input type="text" size="6" value="' + kamin + '" onforcus="javascript:closeBtnFlg=0;" onkeyup="javascript:closeBtnFlg=0; sfloan_setKakaku(\'\', this.value, event);" onblur="javascript:sfloan_setKakaku(\'\', this.value, \'\');">';
	// Cookieに登録されている条件を取得し、パネルにセット
	sfloan_setValueFromCookie(lrview_id);
	// 表示
	open_popup(my, panel_name);
}

/**
 * ローン試算表パネルを閉じます。
 **/
function sfloan_closePopup(lrview_id)
{
	// パネル名を特定します
	var panel_element_id = sfloan_getPanelElementId(lrview_id);
	var panel_name = "LoanPanel" + panel_element_id;

	// 入力された内容をCookieに登録する
	var ret = sfloan_setParamToCookie(lrview_id);
	if( ret != undefined ){
		return;
	}
	// 閉じる
	close_popup2(panel_name);
}

/**
 * Cookieに登録されている条件を取得し、ローン試算表パネルにセットします
 **/
function sfloan_setValueFromCookie(lrview_id)
{
	// ○Cookieから取得
	var cookie_obj = sfloan_getParamFromCookie(lrview_id);	
	if( cookie_obj == null ){
		return;
	}

	// 初期値
	var rate_val = 2.8;
	var deposit_val = 0;
	var bonus_val = 0;
	var loany_val = 25;

	for( var i = 0; i < cookie_obj.length; i++ ){
		// 登録されている条件取得
		// 金利
		if( cookie_obj[i][0] == "rate" ){
			if( cookie_obj[i][1] != undefined ){
				rate_val = eval(cookie_obj[i][1]);
			}
		}
		// 頭金
		if( cookie_obj[i][0] == "deposit" ){
			if( cookie_obj[i][1] != undefined ){
				deposit_val = eval(cookie_obj[i][1]);
			}
		}
		// ボーナス(1行目に表示されている金額)
		if( cookie_obj[i][0] == "bonus1" ){
			if( cookie_obj[i][1] != undefined ){
				bonus_val = eval(cookie_obj[i][1]);
			}
		}
		// 返済年数(右列に表示されている年数)
		if( cookie_obj[i][0] == "loany1" ){
			if( cookie_obj[i][1] != undefined ){
				loany_val = eval(cookie_obj[i][1]);
			}
		}
	}
	// ローン試算表パネルの各欄に値をセットします
	sfloan_setPanel(lrview_id, deposit_val, rate_val, bonus_val, loany_val);
}

/**
 * ローン試算表パネルの各欄に値をセットします
 **/
function sfloan_setPanel(lrview_id, deposit, rate, bonus, loany)
{
	// オブジェクトの名称を設定します
	var panel_element_id = sfloan_getPanelElementId(lrview_id);
	// 頭金
	var deposit_text_name = "deposit" + panel_element_id;
	// 金利
	var rate_text_name = "rate" + panel_element_id;
	// 支払額ID
	var payment_text_name = new Array(3);
	for( var a = 0; a < 3; a++ ){
		payment_text_name[a] = new Array(6);
		var nm = "";
		for( var b = 0; b < 6; b++ ){
			if( a == 0 ){
				payment_text_name[0][b] = "minpayment" + (b+1) + panel_element_id;
			}else if( a == 1 ){
				payment_text_name[1][b] = "payment" + (b+1) + panel_element_id;
			}else {
				payment_text_name[2][b] = "maxpayment" + (b+1) + panel_element_id;
			}
		}
	}
	// 返済期間範囲リンクID(+,-)
	var maxloany_text_name = "maxloany" + panel_element_id;
	var minloany_text_name = "minloany" + panel_element_id;
	// 返済期間(見出し)ID(+,-)
	var loany_text_name = new Array(3);
	for( var a = 0; a < 3; a++ ){
		loany_text_name[a] = "loany" + (a+1) + panel_element_id;
	}
	// ボーナス範囲リンクID(+,-)
	var maxbonus_text_name = "maxbonus" + panel_element_id;
	var minbonus_text_name = "minbonus" + panel_element_id;
	// ボーナス金額(見出し)ID
	var bonus_text_name = new Array(5);
	for( var a = 0; a < 6; a++ ){
		bonus_text_name[a] = "bonus" + (a+1) + panel_element_id;
	}
	
	// パネルのセッティング
	// 頭金セレクトボックスをセットします
	var deposit_obj = document.getElementById(deposit_text_name);	
	for( var a = 0; a < deposit_obj.length; a++ ){
		if( deposit_obj[a].value == deposit ){
			deposit_obj[a].selected = true;
		}
	}

	// 金利セレクトボックスをセットします
	var rate_obj = document.getElementById(rate_text_name);	
	for( var a = 0; a < rate_obj.length; a++ ){
		if( rate_obj[a].value == rate ){
			rate_obj[a].selected = true;
		}
	}
	
	// 返済期間
	var loany_eval = eval(loany);
	if( loany_eval >= 5 && loany_eval <= 35 ){
		// 返済期間をセットします
		for( var a = 0; a < loany_text_name.length; a++ ){
			document.getElementById(loany_text_name[a]).innerHTML = (loany_eval + (a*5));
		}
		// 返済期間の遷移リンクをセットします
		var loany_link_min = "<a href=\"javascript:sfloan_setPanel(\'" + lrview_id + "\',\'" + deposit + "\',\'" + rate + "\',\'" + bonus + "\',\'" + (loany_eval-5) + "\');\">－</a>";
		var loany_link_max = "<a href=\"javascript:sfloan_setPanel(\'" + lrview_id + "\',\'" + deposit + "\',\'" + rate + "\',\'" + bonus + "\',\'" + (loany_eval+5) + "\');\">＋</a>";
		if( loany_eval == 5 ){
			loany_link_min = "－";
		}else if( loany_eval == 35 ){
			loany_link_max = "＋";
		}
		document.getElementById(minloany_text_name).innerHTML = loany_link_min;
		document.getElementById(maxloany_text_name).innerHTML = loany_link_max;
	}

	// ボーナス金額
	var bonus_eval = eval(bonus);
	if( bonus_eval >= 0 && bonus_eval <= 25 ){
		// ボーナス金額をセットします
		for( var a = 0; a < bonus_text_name.length; a++ ){
			document.getElementById(bonus_text_name[a]).innerHTML = (bonus_eval + (a*5));
		}
		// ボーナス金額の遷移リンクをセットします
		var bonus_link_min = "<a href=\"javascript:sfloan_setPanel(\'" + lrview_id + "\',\'" + deposit + "\',\'" + rate + "\',\'" + (bonus_eval-5) + "\',\'" + loany + "\');\">－</a>";
		var bonus_link_max = "<a href=\"javascript:sfloan_setPanel(\'" + lrview_id + "\',\'" + deposit + "\',\'" + rate + "\',\'" + (bonus_eval+5) + "\',\'" + loany + "\');\">＋</a>";
		if( bonus_eval == 0 ){
			bonus_link_min = "－";
		}else if( bonus_eval == 25 ){
			bonus_link_max = "＋";
		}
		document.getElementById(minbonus_text_name).innerHTML = bonus_link_min;
		document.getElementById(maxbonus_text_name).innerHTML = bonus_link_max;
	}

	// 支払金額
	for( var i = 0; i < 3; i++ ){
		// 返済年数
		var loany_val = loany_eval + (i*5);
		// 総額取得(My月額で使用している編集仕様を呼び出す)
		var sougaku_val = kamin;
		
		if( sougaku_val != null ){

			for( var j = 0; j < 6; j++ ){
				// 月額
				var mykapmd_val = "";
				// 総額(min)
				var soumin_val = sougaku_val;
				// ボーナス
				var bonus_val = bonus_eval + (j*5);
				// ボーナス比率は50%まで
				var bhiritsu_val = sfloan_calcBhiritsu(soumin_val, deposit, rate, bonus_val, loany_val);
				if( bhiritsu_val > 50 ){
					mykapmd_val = '<font color="#999999">ボーナス50%超</font>';
				}else {
					// 月額(min)
					var mykapmdmin = "";
					// 元利計算
					mykapmdmin = sfloan_calcKapmd_a(soumin_val, deposit, rate, bonus_val, loany_val);
					if( !isNaN(mykapmdmin) ){
						mykapmd_val += "" + mykapmdmin;
					}			
					// 金額が未定の場合はハイフンを表示
					if( mykapmd_val == "" ){
						mykapmd_val = "－";
					}else {
						// 3桁ごとに区切る
						var mykapmd_val_tst = mykapmd_val;						
						var xx = mykapmd_val.match(/\d+/g);
						if( xx != null ){
							for( var k = 0; k < xx.length; k++ ){
								var revtst = xx[k].split("");
								revtst = revtst.reverse().join("");
								revtst = revtst.replace(/(\d{3})(?=\d)(?!\d*\.)/g , "$1,");
								revtst = revtst.split("");
								mykapmd_val_tst = mykapmd_val_tst.replace(xx[k], revtst.reverse().join("") + "円");
							}
						}
						// 単位をつける
						mykapmd_val = mykapmd_val_tst + "/月";
					}
				}
				// 支払金額をセット
				document.getElementById(payment_text_name[i][j]).innerHTML = mykapmd_val;
			}
		}
	}
}

/**
 * 元利均等返済方法
 * My月額で使用している計算関数：sfkapmd_calcKapmd_a()を呼び出す
 **/
function sfloan_calcKapmd_a(kakaku, atama, kinri, bonus, loany)
{	
	// ボーナス比率
	var bhiritsu_val = sfloan_calcBhiritsu(kakaku, atama, kinri, bonus, loany);

	// 元利計算(mykapmd.js)
	var ret_val = sfkapmd_calcKapmd_a((kakaku*10000), (atama*10000), kinri, bhiritsu_val, loany);

	return Math.round( ret_val );
}

/**
 * ボーナス比率を求める
 **/
function sfloan_calcBhiritsu(kakaku, atama, kinri, bonus, loany)
{
	// 価格＝総額－頭金
	var kakaku_val = kakaku - atama;
	// ボーナス総額＝年2回×返済年数
	var bonus_val = (bonus * 2) * loany;

	// ボーナス比率（小数第2位まで求める）
	//var bhiritsu_val = Math.round( (bonus_val/kakaku_val)*100 );
	// ボーナス比率（小数第3位まで求める）
	var bhiritsu_val = Math.round((bonus_val/kakaku_val)*1000) * 0.1;

	return bhiritsu_val;
}

/**
 * Cookieに登録されている条件を取得します
 **/
function sfloan_getParamFromCookie(lrview_id)
{	
	// エラー発生時はクッキーから取得しない
	var err_val = document.getElementById("ErrorDisp01");
	if ( (err_val != null) && (err_val.firstChild.innerHTML != "") ) {
		return null;
	}
	
	var joken_val = sfloan_cookie_search_loan;
		
	// クッキーから条件取得(cookieparam.js)
	var objCond = getSearchCondFromCookie( joken_val );
	var param_obj = new Array(sfloan_cookie_prm.length);
	var cookie_val = "";	
	for( var i = 0; i < sfloan_cookie_prm.length; i++ ){
		param_obj[i] = new Array(2);

		// 登録されている条件取得
		cookie_val = objCond[sfloan_cookie_prm[i]];
		param_obj[i][0] = sfloan_form_prm[i];
		param_obj[i][1] = cookie_val;
	}
	return param_obj;
}

/**
 * 入力された内容をCookieに登録します。
 **/
function sfloan_setParamToCookie(lrview_id)
{
	var cookie_val = "";

	// 入力項目（テキストボックス、セレクトボックス）の名前を特定します
	var panel_element_id = sfloan_getPanelElementId(lrview_id);
	
	// クッキー条件名を取得
	var joken_val = sfloan_cookie_search_loan;

	var deposit_val = document.getElementById("deposit" + panel_element_id);
	if ( (deposit_val != null) && (deposit_val.value != "") ) {
		cookie_val += "LOAA" + DELIMITA_PRM + escape(deposit_val.value) + DELIMITA_VAL;
	}
	var rate_val = document.getElementById("rate" + panel_element_id);
	if ( (rate_val != null) && (rate_val.value != "") ) {
		cookie_val += "LOAB" + DELIMITA_PRM + escape(rate_val.value) + DELIMITA_VAL;
	}
	var bonus_val = document.getElementById("bonus1" + panel_element_id);
	if ( (bonus_val != null) && (bonus_val.innerHTML != "") ) {
		cookie_val += "LOAC" + DELIMITA_PRM + escape(bonus_val.innerHTML) + DELIMITA_VAL;
	}
	var loany_val = document.getElementById("loany1" + panel_element_id);
	if ( (loany_val != null) && (loany_val.innerHTML != "") ) {
		cookie_val += "LOAD" + DELIMITA_PRM + escape(loany_val.innerHTML) + DELIMITA_VAL;
	}
	if (cookie_val.length == 0) {
		return;
	}
	
	cookie_val = cookie_val.substr(0, cookie_val.length-1);

	// クッキーに表示条件をセット
	var strExpire = getExpirationDateString();
	document.cookie = joken_val + DELIMITA_PRM + cookie_val+ "; " + strExpire + ';  path=/ ; domain=' + document.domain;
}

/**
 * 一覧ごとのパネルを区別する文字列を返します
 * テキスト、画像/左右表示(左)/左右表示(右)
 **/
function sfloan_getPanelElementId(lrview_id)
{
	var panel_element_id = "";
	if( lrview_id == "L" ){
		// 左右表示－左
		panel_element_id = "_L";
	}else if( lrview_id == "R" ){
		// 左右表示－右
		panel_element_id = "_R";
	}else {
		// テキスト、画像
		panel_element_id = "";
	}
	return panel_element_id;
}

/**
 * 金利セレクトボックスを変更した場合、再計算を行います
 **/
function sfloan_setRate(lrview_id, value)
{
	var panel_element_id = sfloan_getPanelElementId(lrview_id);

	var deposit_val = document.getElementById("deposit" + panel_element_id).value;
	var bonus_val = document.getElementById("bonus1" + panel_element_id).innerHTML;
	var loany_val = document.getElementById("loany1" + panel_element_id).innerHTML;
	
	// ローン試算表パネルの各欄に値をセットします
	sfloan_setPanel(lrview_id, deposit_val, value, bonus_val, loany_val);
}

/**
 * 頭金セレクトボックスを変更した場合、再計算を行います
 **/
function sfloan_setDeposit(lrview_id, value)
{
	var panel_element_id = sfloan_getPanelElementId(lrview_id);

	var rate_val = document.getElementById("rate" + panel_element_id).value;
	var bonus_val = document.getElementById("bonus1" + panel_element_id).innerHTML;
	var loany_val = document.getElementById("loany1" + panel_element_id).innerHTML;

	// ローン試算表パネルの各欄に値をセットします
	sfloan_setPanel(lrview_id, value, rate_val, bonus_val, loany_val);
}

/**
 * 価格を変更した場合、再計算を行ないます
 * ※フォーカスを失った時＆[Enter]押下時に再計算する
 **/
function sfloan_setKakaku(lrview_id, value, keyevent){
	
	// *** 再計算を行なうか？判定 *** //
	// * 何かのキーが押下されたとき...[Enter]押下時のみ再計算を行なう * //
	if(keyevent != null && keyevent != ''){
		if(keyevent.keyCode != 13){
			return;
		}
	}
	// * フォーカスを失った時は常に再計算を行なう。* //
	/*
	else{
	}
	*/
	// * 閉じるボタン押下で来た時は、何もしない * //
	if(closeBtnFlg == 1){
		return;
	}
	
	
	// *** 再計算を行なう *** //
	var panel_element_id = sfloan_getPanelElementId(lrview_id);
	
	kamin = value;
	var rate_val = document.getElementById("rate" + panel_element_id).value;
	var deposit_val = document.getElementById("deposit" + panel_element_id).value;
	var bonus_val = document.getElementById("bonus1" + panel_element_id).innerHTML;
	var loany_val = document.getElementById("loany1" + panel_element_id).innerHTML;
	
	// ローン試算表パネルの各欄に値をセットします
	sfloan_setPanel(lrview_id, deposit_val, rate_val, bonus_val, loany_val);
}
